返回技能列表

submit-to-cran

pjt222
更新于 2 days ago
5 次查看
17
2
17
在 GitHub 上查看
design

关于

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-almanac
Git 克隆备选方式
git 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 check local 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 check devuelve 0 errores, 0 advertencias en la máquina local
  • Win-builder pasa (release + devel)
  • R-hub pasa en todas las plataformas probadas
  • cran-comments.md describe 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 \value en 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 git
  • write-roxygen-docs - asegurar que la documentación cumple los estándares de CRAN
  • setup-github-actions-ci - verificaciones de CI que reflejan las expectativas de CRAN
  • build-pkgdown-site - sitio de documentación para paquetes aceptados

GitHub 仓库

pjt222/agent-almanac
路径: i18n/es/skills/submit-to-cran
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

相关推荐技能

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是理想选择。

查看技能