create-r-package
Acerca de
Esta Skill de Claude estructura un paquete R completo y listo para producción desde cero, siguiendo las convenciones de usethis y el estilo de tidyverse. Genera automáticamente archivos esenciales para DESCRIPTION, documentación, pruebas, gestión de dependencias (renv), control de versiones e integración continua/despliegue con GitHub Actions. Úsalo para inicializar un nuevo paquete, convertir scripts sueltos en un proyecto estructurado o crear un esqueleto de paquete colaborativo.
Instalación rápida
Claude Code
Recomendadonpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-r-packageCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
Create R Package
Scaffold fully configured R package with modern tooling and best practices.
When Use
- Starting new R package from scratch
- Converting loose R scripts into package
- Setting up package skeleton for collaborative development
Inputs
- Required: Package name (lowercase, no special chars except
.) - Required: One-line description of package purpose
- Optional: License type (default: MIT)
- Optional: Author info (name, email, ORCID)
- Optional: Whether to init renv (default: yes)
Steps
Step 1: Create Package Skeleton
usethis::create_package("packagename")
setwd("packagename")
Got: Directory created with DESCRIPTION, NAMESPACE, R/, man/ subdirectories.
If fail: Confirm usethis installed (install.packages("usethis")). Check directory does not already exist.
Step 2: Configure DESCRIPTION
Edit DESCRIPTION with accurate metadata:
Package: packagename
Title: What the Package Does (Title Case)
Version: 0.1.0
Authors@R:
person("First", "Last", , "[email protected]", role = c("aut", "cre"),
comment = c(ORCID = "0000-0000-0000-0000"))
Description: One paragraph describing what the package does. Must be more
than one sentence. Avoid starting with "This package".
License: MIT + file LICENSE
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.2
URL: https://github.com/username/packagename
BugReports: https://github.com/username/packagename/issues
Got: Valid DESCRIPTION passing R CMD check with no metadata warnings.
If fail: R CMD check warns about DESCRIPTION fields? Verify Title in Title Case, Description more than one sentence, Authors@R uses valid person() syntax.
Step 3: Set Up Infrastructure
usethis::use_mit_license()
usethis::use_readme_md()
usethis::use_news_md()
usethis::use_testthat(edition = 3)
usethis::use_git()
usethis::use_github_action("check-standard")
Got: LICENSE, README.md, NEWS.md, tests/ directory, .git/ initialized, .github/workflows/ created.
If fail: Any usethis::use_*() function fails? Install missing dependency, rerun. .git/ already exists? use_git() skips init.
Step 4: Create Development Configuration
Create .Rprofile:
if (file.exists("renv/activate.R")) {
source("renv/activate.R")
}
if (requireNamespace("mcptools", quietly = TRUE)) {
mcptools::mcp_session()
}
Create .Renviron.example:
RSTUDIO_PANDOC="C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools"
# GITHUB_PAT=your_github_token_here
Create .Rbuildignore entries:
^\.Rprofile$
^\.Renviron$
^\.Renviron\.example$
^renv$
^renv\.lock$
^CLAUDE\.md$
^\.github$
^.*\.Rproj$
Got: .Rprofile, .Renviron.example, .Rbuildignore created. Development files dropped from built package.
If fail: .Rprofile causes startup errors? Check syntax. Confirm requireNamespace() guards stop failures when optional packages missing.
Step 5: Initialize renv
renv::init()
Got: renv/ directory and renv.lock created. Project-local library active.
If fail: Install renv with install.packages("renv"). renv hangs during init? Check network. Set options(timeout = 600).
Step 6: Create Package Documentation File
Create R/packagename-package.R:
#' @keywords internal
"_PACKAGE"
## usethis namespace: start
## usethis namespace: end
NULL
Got: R/packagename-package.R exists with "_PACKAGE" sentinel. Running devtools::document() generates package-level help.
If fail: Confirm filename matches pattern R/<packagename>-package.R. "_PACKAGE" string must be standalone expression, not inside function.
Step 7: Create CLAUDE.md
Create CLAUDE.md in project root with project-specific instructions for AI assistants.
Got: CLAUDE.md exists in project root with project-specific editing conventions, build commands, architecture notes.
If fail: Unsure what to include? Start with package name, one-line description, common dev commands (devtools::check(), devtools::test()), any non-obvious conventions.
Checks
-
devtools::check()returns 0 errors, 0 warnings - Package structure matches expected layout
-
.Rprofileloads without errors -
renv::status()shows no issues - Git repo initialized with right
.gitignore - GitHub Actions workflow file present
Pitfalls
- Package name conflicts: Check CRAN with
available::available("packagename")before committing to a name - Missing .Rbuildignore entries: Development files (
.Rprofile,.Renviron,renv/) must drop from built package - Forgetting Encoding: Always include
Encoding: UTF-8in DESCRIPTION - RoxygenNote mismatch: Version in DESCRIPTION must match installed roxygen2
Examples
# Minimal creation
usethis::create_package("myanalysis")
# Full setup in one session
usethis::create_package("myanalysis")
usethis::use_mit_license()
usethis::use_testthat(edition = 3)
usethis::use_readme_md()
usethis::use_git()
usethis::use_github_action("check-standard")
renv::init()
See Also
write-roxygen-docs- document functions you createwrite-testthat-tests- add tests for packagesetup-github-actions-ci- detailed CI/CD configurationmanage-renv-dependencies- manage package dependencieswrite-claude-md- create effective AI assistant instructions
Repositorio GitHub
Habilidades relacionadas
content-collections
MetaEsta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.
polymarket
MetaEsta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.
creating-opencode-plugins
MetaEsta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.
sglang
MetaSGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.
