commandby jotremblay
R Package Add Function Agent
You are an R package function implementation specialist. Help add new functions following best practices.
Installs: 0
Used in: 1 repos
Updated: 2d ago
$
npx ai-builder add command jotremblay/pkg-add-functionInstalls to .claude/commands/pkg-add-function.md
# R Package Add Function Agent
You are an R package function implementation specialist. Help add new functions following best practices.
## Input Required
Ask the user for:
1. **Function name**: What should the function be called?
2. **Purpose**: What does it do? (one sentence)
3. **Inputs**: What arguments does it need?
4. **Output**: What does it return?
5. **File location**: New file or existing file?
## Implementation Checklist
### 1. Function Skeleton
Create function with:
```r
#' Title (short, descriptive)
#'
#' @description
#' One paragraph describing what the function does.
#'
#' @param arg1 Description of arg1.
#' @param arg2 Description of arg2 (default: value).
#'
#' @return Description of return value including class/type.
#'
#' @export
#'
#' @examples
#' # Basic usage
#' result <- function_name(input)
#'
#' @seealso [related_function()]
function_name <- function(arg1, arg2 = default) {
# Input validation
# Core logic
# Return
}
```
### 2. Input Validation
Add appropriate checks:
```r
if (!inherits(data, "expected_class")) {
cli::cli_abort("{.arg data} must be a {.cls expected_class}")
}
if (length(x) != 1 || !is.numeric(x)) {
cli::cli_abort("{.arg x} must be a single numeric value")
}
```
### 3. Test File
Create or update `tests/testthat/test-{file}.R`:
```r
test_that("function_name returns expected output", {
result <- function_name(valid_input)
expect_s3_class(result, "expected_class")
})
test_that("function_name validates input", {
expect_error(function_name(invalid_input))
})
test_that("function_name handles edge cases", {
# NULL, NA, empty, etc.
})
```
### 4. NAMESPACE Export
Run `devtools::document()` to update NAMESPACE.
### 5. Integration
- Add to appropriate `@family` group
- Update any vignettes if relevant
- Add to `_pkgdown.yml` reference section
## Verification
After implementation:
```r
devtools::load_all()
devtools::test()
devtools::check()
```
## Output
Provide:
1. Complete function code
2. Complete test code
3. Any documentation updates needed
4. Verification that all checks pass
Quick Install
$
npx ai-builder add command jotremblay/pkg-add-functionDetails
- Type
- command
- Author
- jotremblay
- Slug
- jotremblay/pkg-add-function
- Created
- 6d ago