MCP HubMCP Hub
Volver a habilidades

create-r-package

pjt222
Actualizado 2 days ago
4 vistas
17
2
17
Ver en GitHub
Metaaitesting

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

Recomendado
Principal
npx skills add pjt222/agent-almanac -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativo
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-r-package

Copia 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
  • .Rprofile loads 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-8 in 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 create
  • write-testthat-tests - add tests for package
  • setup-github-actions-ci - detailed CI/CD configuration
  • manage-renv-dependencies - manage package dependencies
  • write-claude-md - create effective AI assistant instructions

Repositorio GitHub

pjt222/agent-almanac
Ruta: i18n/caveman/skills/create-r-package
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Habilidades relacionadas

content-collections

Meta

Esta 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.

Ver habilidad

polymarket

Meta

Esta 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.

Ver habilidad

creating-opencode-plugins

Meta

Esta 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.

Ver habilidad

sglang

Meta

SGLang 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.

Ver habilidad