submit-to-cran
关于
This skill provides a complete workflow for submitting R packages to CRAN, handling both initial submissions and updates. It automates pre-submission checks (local, win-builder, R-hub), prepares the required `cran-comments.md` file, and manages the final submission process. Use it when your R package is ready for its first CRAN release, for submitting updated versions, or for resubmitting after reviewer feedback.
快速安装
Claude Code
推荐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/submit-to-cran在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
name: submit-to-cran description: > Procedimiento completo para enviar un paquete R a CRAN, incluyendo verificaciones previas al envío (local, win-builder, R-hub), preparación de cran-comments.md, comprobación de URLs y ortografía, y el envío en sí. Cubre primeros envíos y actualizaciones. Usar cuando un paquete está listo para su publicación inicial en CRAN, al enviar una versión actualizada de un paquete ya en CRAN, o al reenviar tras recibir comentarios del revisor de CRAN. locale: es source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: r-packages complexity: advanced language: R tags: r, cran, submission, release, publishing
Enviar a CRAN
Ejecutar el flujo completo de envío a CRAN desde las verificaciones previas hasta la presentación.
Cuándo Usar
- El paquete está listo para su publicación inicial en CRAN
- Se envía una versión actualizada de un paquete ya publicado en CRAN
- Se reenvía tras recibir comentarios del revisor de CRAN
Entradas
- Obligatorio: Paquete R que pasa
R CMD checklocal con 0 errores y 0 advertencias - Obligatorio: Número de versión actualizado en DESCRIPTION
- Obligatorio: NEWS.md actualizado con los cambios de esta versión
- Opcional: Comentarios previos del revisor de CRAN (para reenvíos)
Procedimiento
Paso 1: Verificación de Versión y NEWS
Verificar que DESCRIPTION tiene la versión correcta:
desc::desc_get_version()
Verificar que NEWS.md tiene una entrada para esta versión. La entrada debe resumir los cambios visibles para el usuario.
Esperado: La versión sigue el versionado semántico. NEWS.md tiene una entrada correspondiente para esta versión.
En caso de fallo: Actualizar la versión con usethis::use_version() (elegir "major", "minor" o "patch"). Añadir una entrada en NEWS.md resumiendo los cambios visibles para el usuario.
Paso 2: Verificación Local de R CMD Check
devtools::check()
Esperado: 0 errores, 0 advertencias, 0 notas (1 nota aceptable en primeros envíos: "New submission").
En caso de fallo: Corregir todos los errores y advertencias antes de continuar. Leer el registro en <pkg>.Rcheck/00check.log para más detalles. Las notas deben explicarse en cran-comments.md.
Paso 3: Verificación Ortográfica
devtools::spell_check()
Añadir palabras legítimas a inst/WORDLIST (una palabra por línea, ordenadas alfabéticamente).
Esperado: Sin errores ortográficos inesperados. Todas las palabras marcadas se corrigen o se añaden a inst/WORDLIST.
En caso de fallo: Corregir los errores ortográficos genuinos. Para términos técnicos legítimos, añadirlos a inst/WORDLIST (una palabra por línea, ordenadas alfabéticamente).
Paso 4: Verificación de URLs
urlchecker::url_check()
Esperado: Todas las URLs devuelven HTTP 200. Sin enlaces rotos ni redirigidos.
En caso de fallo: Reemplazar las URLs rotas. Usar \doi{} para enlaces DOI en lugar de URLs directas. Eliminar enlaces a recursos que ya no existen.
Paso 5: Verificaciones en Win-Builder
devtools::check_win_devel()
devtools::check_win_release()
Esperar los resultados por correo electrónico (generalmente 15-30 minutos).
Esperado: 0 errores, 0 advertencias en Win-builder release y devel. Los resultados llegan por correo en 15-30 minutos.
En caso de fallo: Resolver los problemas específicos de la plataforma. Causas frecuentes: advertencias de compilador distintas, dependencias de sistema faltantes, diferencias en separadores de ruta. Corregir localmente y reenviar a Win-builder.
Paso 6: Verificación en R-hub
rhub::rhub_check()
Esto verifica en múltiples plataformas (Ubuntu, Windows, macOS).
Esperado: Todas las plataformas pasan con 0 errores y 0 advertencias.
En caso de fallo: Si una plataforma específica falla, revisar el registro de compilación de R-hub para errores específicos de esa plataforma. Usar testthat::skip_on_os() o código condicional para comportamientos dependientes de la plataforma.
Paso 7: Preparar cran-comments.md
Crear o actualizar cran-comments.md en la raíz del paquete:
## R CMD check results
0 errors | 0 warnings | 1 note
* This is a new release.
## Test environments
* local: Windows 11, R 4.5.0
* win-builder: R-release, R-devel
* R-hub: ubuntu-latest (R-release), windows-latest (R-release), macos-latest (R-release)
## Downstream dependencies
There are currently no downstream dependencies for this package.
Para actualizaciones, incluir:
- Qué cambió (brevemente)
- Respuesta a comentarios previos del revisor
- Resultados de la verificación de dependencias inversas si corresponde
Esperado: cran-comments.md resume con precisión los resultados de verificación en todos los entornos de prueba y explica cualquier nota.
En caso de fallo: Si los resultados difieren entre plataformas, documentar todas las variaciones. Los revisores de CRAN cotejarán estas declaraciones con sus propias pruebas.
Paso 8: Verificación Final Previa al Envío
# Una última verificación
devtools::check()
# Verificar el tarball compilado
devtools::build()
Esperado: El devtools::check() final pasa sin problemas. Se genera un tarball .tar.gz en el directorio padre.
En caso de fallo: Si aparece un problema de última hora, corregirlo y repetir todas las verificaciones desde el Paso 2. No enviar con fallos conocidos.
Paso 9: Envío
devtools::release()
Esto ejecuta verificaciones interactivas y envía. Responder todas las preguntas con honestidad.
Alternativamente, enviar manualmente en https://cran.r-project.org/submit.html subiendo el tarball.
Esperado: El correo de confirmación de CRAN llega en minutos. Hacer clic en el enlace de confirmación para finalizar el envío.
En caso de fallo: Revisar el correo para los motivos del rechazo. Problemas comunes: ejemplos demasiado lentos, etiquetas \value faltantes, código no portable. Corregir los problemas y reenviar, indicando en cran-comments.md qué cambió.
Paso 10: Acciones Posteriores al Envío
Tras la aceptación:
# Etiquetar la versión
usethis::use_github_release()
# Incrementar a versión de desarrollo
usethis::use_dev_version()
Esperado: Se crea la versión de GitHub con la etiqueta de la versión aceptada. DESCRIPTION se incrementa a la versión de desarrollo (x.y.z.9000).
En caso de fallo: Si la versión de GitHub falla, crearla manualmente con gh release create. Si la aceptación de CRAN se retrasa, esperar el correo de confirmación antes de etiquetar.
Validación
-
R CMD checkdevuelve 0 errores, 0 advertencias en la máquina local - Win-builder pasa (release + devel)
- R-hub pasa en todas las plataformas probadas
-
cran-comments.mddescribe con precisión los resultados de verificación - Todas las URLs son válidas
- Sin errores ortográficos
- El número de versión es correcto e incrementado
- NEWS.md está actualizado
- Los metadatos de DESCRIPTION están completos y son precisos
Errores Comunes
- Ejemplos demasiado lentos: Envolver los ejemplos costosos en
\donttest{}. CRAN impone límites de tiempo. - Nombres de archivos/directorios no estándar: Evitar archivos que generen notas de CRAN (revisar
.Rbuildignore) - Falta
\valueen la documentación: Todas las funciones exportadas necesitan una etiqueta@return - Fallos en la compilación de viñetas: Asegurarse de que las viñetas compilan en un entorno limpio sin tu
.Renviron - Formato del título en DESCRIPTION: Debe ser en Mayúsculas de Título, sin punto al final, sin "A Package for..."
- Olvidar las verificaciones de dependencias inversas: Para actualizaciones, ejecutar
revdepcheck::revdep_check()
Ejemplos
# Flujo completo previo al envío
devtools::spell_check()
urlchecker::url_check()
devtools::check()
devtools::check_win_devel()
rhub::rhub_check()
# Esperar resultados...
devtools::release()
Habilidades Relacionadas
release-package-version- incremento de versión y etiquetado gitwrite-roxygen-docs- asegurar que la documentación cumple los estándares de CRANsetup-github-actions-ci- verificaciones de CI que reflejan las expectativas de CRANbuild-pkgdown-site- sitio de documentación para paquetes aceptados
GitHub 仓库
相关推荐技能
content-collections
元Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
polymarket
元这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。
creating-opencode-plugins
元该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。
sglang
元SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
