create-r-package
À propos
Cette compétence de Claude échafaude une structure complète de package R en suivant les conventions usethis et tidyverse. Elle génère les fichiers essentiels comme DESCRIPTION, NAMESPACE, et configure les tests (testthat), la documentation (roxygen2), la gestion des dépendances (renv), et l'intégration/déploiement continus (GitHub Actions). Utilisez-la pour lancer un nouveau package, convertir des scripts épars en un package structuré, ou préparer un squelette de projet collaboratif.
Installation rapide
Claude Code
Recommandénpx 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-packageCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
name: create-r-package description: > Generar la estructura inicial de un paquete R completo incluyendo DESCRIPTION, NAMESPACE, testthat, roxygen2, renv, Git, GitHub Actions CI y archivos de configuración para desarrollo (.Rprofile, .Renviron.example, CLAUDE.md). Sigue las convenciones de usethis y el estilo tidyverse. Utilizar al iniciar un paquete R desde cero, al convertir scripts R sueltos en un paquete estructurado, o al preparar un esqueleto de paquete para desarrollo colaborativo. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: r-packages complexity: basic language: R tags: r, package, usethis, scaffold, setup locale: es source_locale: en source_commit: 6a868d56 translator: Claude Opus 4.6 translation_date: 2026-03-13
Crear Paquete R
Generar la estructura de un paquete R completamente configurado con herramientas modernas y buenas prácticas.
Cuándo Usar
- Al iniciar un paquete R desde cero
- Al convertir scripts R sueltos en un paquete
- Al preparar un esqueleto de paquete para desarrollo colaborativo
Entradas
- Requerido: Nombre del paquete (minúsculas, sin caracteres especiales excepto
.) - Requerido: Descripción en una línea del propósito del paquete
- Opcional: Tipo de licencia (predeterminado: MIT)
- Opcional: Información del autor (nombre, correo electrónico, ORCID)
- Opcional: Si se debe inicializar renv (predeterminado: sí)
Procedimiento
Paso 1: Crear el Esqueleto del Paquete
usethis::create_package("packagename")
setwd("packagename")
Esperado: Directorio creado con DESCRIPTION, NAMESPACE, R/ y subdirectorios man/.
En caso de fallo: Asegurar que usethis está instalado (install.packages("usethis")). Verificar que el directorio no exista previamente.
Paso 2: Configurar DESCRIPTION
Editar DESCRIPTION con metadatos precisos:
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
Esperado: DESCRIPTION válido que pasa R CMD check sin advertencias de metadatos.
En caso de fallo: Si R CMD check advierte sobre campos de DESCRIPTION, verificar que Title esté en formato Title Case, Description tenga más de una oración y Authors@R use la sintaxis válida de person().
Paso 3: Configurar la Infraestructura
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")
Esperado: LICENSE, README.md, NEWS.md, directorio tests/, .git/ inicializado y .github/workflows/ creados.
En caso de fallo: Si alguna función usethis::use_*() falla, instalar la dependencia faltante y volver a ejecutar. Si .git/ ya existe, use_git() omitirá la inicialización.
Paso 4: Crear la Configuración de Desarrollo
Crear .Rprofile:
if (file.exists("renv/activate.R")) {
source("renv/activate.R")
}
if (requireNamespace("mcptools", quietly = TRUE)) {
mcptools::mcp_session()
}
Crear .Renviron.example:
RSTUDIO_PANDOC="C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools"
# GITHUB_PAT=your_github_token_here
Crear entradas en .Rbuildignore:
^\.Rprofile$
^\.Renviron$
^\.Renviron\.example$
^renv$
^renv\.lock$
^CLAUDE\.md$
^\.github$
^.*\.Rproj$
Esperado: .Rprofile, .Renviron.example y .Rbuildignore están creados. Los archivos de desarrollo están excluidos del paquete construido.
En caso de fallo: Si .Rprofile causa errores al iniciar, verificar problemas de sintaxis. Asegurar que las protecciones con requireNamespace() eviten fallos cuando no están instalados los paquetes opcionales.
Paso 5: Inicializar renv
renv::init()
Esperado: Directorio renv/ y renv.lock creados. La biblioteca local del proyecto está activa.
En caso de fallo: Instalar renv con install.packages("renv"). Si renv se congela durante la inicialización, verificar la conectividad de red o establecer options(timeout = 600).
Paso 6: Crear el Archivo de Documentación del Paquete
Crear R/packagename-package.R:
#' @keywords internal
"_PACKAGE"
## usethis namespace: start
## usethis namespace: end
NULL
Esperado: R/packagename-package.R existe con el centinela "_PACKAGE". Ejecutar devtools::document() genera la ayuda a nivel de paquete.
En caso de fallo: Asegurar que el nombre del archivo siga el patrón R/<packagename>-package.R. La cadena "_PACKAGE" debe ser una expresión independiente, no dentro de una función.
Paso 7: Crear CLAUDE.md
Crear CLAUDE.md en la raíz del proyecto con instrucciones específicas del proyecto para asistentes de IA.
Esperado: CLAUDE.md existe en la raíz del proyecto con convenciones de edición, comandos de compilación y notas de arquitectura específicas del proyecto.
En caso de fallo: Si no se sabe qué incluir, comenzar con el nombre del paquete, una descripción de una línea, comandos comunes de desarrollo (devtools::check(), devtools::test()) y cualquier convención no obvia.
Validación
-
devtools::check()devuelve 0 errores, 0 advertencias - La estructura del paquete coincide con el diseño esperado
-
.Rprofilese carga sin errores -
renv::status()no muestra problemas - Repositorio Git inicializado con
.gitignoreapropiado - Archivo de flujo de trabajo de GitHub Actions presente
Errores Comunes
- Conflicto de nombres de paquete: Verificar en CRAN con
available::available("packagename")antes de decidirse por un nombre - Entradas faltantes en .Rbuildignore: Los archivos de desarrollo (
.Rprofile,.Renviron,renv/) deben excluirse del paquete construido - Olvidar Encoding: Siempre incluir
Encoding: UTF-8en DESCRIPTION - Discrepancia en RoxygenNote: La versión en DESCRIPTION debe coincidir con el roxygen2 instalado
Ejemplos
# Creación mínima
usethis::create_package("myanalysis")
# Configuración completa en una sesión
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()
Habilidades Relacionadas
write-roxygen-docs- documentar las funciones creadaswrite-testthat-tests- agregar pruebas al paquetesetup-github-actions-ci- configuración detallada de CI/CDmanage-renv-dependencies- gestionar dependencias del paquetewrite-claude-md- crear instrucciones efectivas para asistentes de IA
Dépôt GitHub
Compétences associées
content-collections
MétaCette compétence propose une configuration éprouvée en production pour Content Collections, un outil axé sur TypeScript qui transforme des fichiers Markdown/MDX en collections de données typées de manière sûre avec une validation Zod. Utilisez-la lors de la création de blogs, de sites de documentation ou d'applications Vite + React riches en contenu pour garantir la sécurité de typage et la validation automatique du contenu. Elle couvre tout, de la configuration du plugin Vite et de la compilation MDX à l'optimisation des déploiements et la validation des schémas.
polymarket
MétaCette compétence permet aux développeurs de créer des applications avec la plateforme de marchés prédictifs Polymarket, incluant l'intégration d'API pour le trading et les données de marché. Elle fournit également une diffusion de données en temps réel via WebSocket pour surveiller les transactions en direct et l'activité du marché. Utilisez-la pour mettre en œuvre des stratégies de trading ou pour créer des outils traitant les mises à jour de marché en direct.
creating-opencode-plugins
MétaCette compétence aide les développeurs à créer des plugins OpenCode qui s'interconnectent avec plus de 25 types d'événements tels que les commandes, les fichiers et les opérations LSP. Elle fournit la structure du plugin, les spécifications de l'API événementielle et les modèles d'implémentation pour les modules JavaScript/TypeScript. Utilisez-la lorsque vous avez besoin d'intercepter, de surveiller ou d'étendre le cycle de vie de l'assistant IA OpenCode avec une logique personnalisée pilotée par les événements.
sglang
MétaSGLang est un framework de service LLM haute performance spécialisé dans la génération rapide et structurée pour les workflows JSON, regex et agentiques grâce à son cache de préfixe RadixAttention. Il offre une inférence nettement plus rapide, particulièrement pour les tâches avec des préfixes répétés, ce qui le rend idéal pour les sorties complexes et structurées ainsi que les conversations multi-tours. Choisissez SGLang plutôt que des alternatives comme vLLM lorsque vous avez besoin d'un décodage contraint ou que vous construisez des applications avec un partage étendu de préfixes.
