write-vignette
关于
This skill helps R developers create package vignettes using R Markdown or Quarto. It covers setup, YAML configuration, code chunk options, compilation, and CRAN requirements. Use it when you need to add introductory tutorials, document complex multi-function workflows, or meet CRAN's user-oriented documentation standards.
快速安装
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/write-vignette在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
name: write-vignette description: > Crear viñetas para paquetes R usando R Markdown o Quarto. Cubre la configuración de viñetas, la configuración YAML, las opciones de fragmentos de código, la compilación y las pruebas, y los requisitos de CRAN para viñetas. Usar al añadir un tutorial de introducción, documentar flujos de trabajo complejos que abarcan múltiples funciones, crear guías específicas de dominio, o cuando el envío a CRAN requiere documentación orientada al usuario más allá de las páginas de ayuda de funciones. 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: basic language: R tags: r, vignette, rmarkdown, documentation, tutorial
Escribir Viñetas
Crear documentación extensa en forma de viñetas para paquetes R.
Cuándo Usar
- Añadir un tutorial de "Introducción" para un paquete
- Documentar flujos de trabajo complejos que abarcan múltiples funciones
- Crear guías específicas de dominio (p. ej., metodología estadística)
- El envío a CRAN requiere documentación orientada al usuario más allá de la ayuda de funciones
Entradas
- Obligatorio: Paquete R con funciones a documentar
- Obligatorio: Título y tema de la viñeta
- Opcional: Formato (R Markdown o Quarto, predeterminado: R Markdown)
- Opcional: Si la viñeta necesita datos externos o APIs
Procedimiento
Paso 1: Crear el Archivo de Viñeta
usethis::use_vignette("getting-started", title = "Getting Started with packagename")
Esperado: vignettes/getting-started.Rmd creado con cabecera YAML. knitr y rmarkdown añadidos al campo Suggests de DESCRIPTION. El directorio vignettes/ existe.
En caso de fallo: Si usethis::use_vignette() falla, verificar que el directorio de trabajo es la raíz del paquete (contiene DESCRIPTION). Si knitr no está instalado, ejecutar primero install.packages("knitr"). Para la creación manual, crear el directorio vignettes/ y el archivo a mano, asegurándose de que la cabecera YAML incluye las tres entradas %\Vignette*.
Paso 2: Escribir el Contenido de la Viñeta
---
title: "Getting Started with packagename"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Getting Started with packagename}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
## Introduction
Brief overview of what the package does and who it's for.
## Installation
```r
install.packages("packagename")
library(packagename)
Basic Usage
Walk through the primary workflow:
# Load example data
data <- example_data()
# Process
result <- main_function(data, option = "default")
# Inspect
summary(result)
Advanced Features
Cover optional or advanced functionality.
Conclusion
Summarize and point to other vignettes or resources.
**Esperado:** El archivo Rmd de la viñeta contiene secciones de Introducción, Instalación, Uso Básico, Funciones Avanzadas y Conclusión. Los ejemplos de código usan las funciones exportadas del paquete y producen salida visible.
**En caso de fallo:** Si los ejemplos fallan al ejecutarse, verificar que el paquete está instalado con `devtools::install()`. Asegurarse de que los ejemplos usan el nombre del paquete en las llamadas `library()` (no `devtools::load_all()`). Para funciones que requieren recursos externos, usar `eval=FALSE` para mostrar el código sin ejecutarlo.
### Paso 3: Configurar los Fragmentos de Código
Usar opciones de fragmentos para distintos propósitos:
```r
# Fragmento evaluado estándar
{r example-basic}
result <- compute_something(1:10)
result
# Mostrar código pero no ejecutar (con fines ilustrativos)
{r api-example, eval=FALSE}
connect_to_api(key = "your_key_here")
# Ejecutar pero ocultar el código (mostrar solo la salida)
{r hidden-setup, echo=FALSE}
library(packagename)
# Configurar opciones globales
{r setup, include=FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5
)
Esperado: Un fragmento de configuración con include=FALSE establece las opciones globales (collapse, comment, fig.width, fig.height). Los fragmentos están configurados apropiadamente: eval=FALSE para código ilustrativo, echo=FALSE para la configuración oculta, y fragmentos estándar para los ejemplos interactivos.
En caso de fallo: Si las opciones de fragmento no surten efecto, verificar que la sintaxis usa el formato {r chunk-name, option=value} (separado por comas, sin comillas alrededor de valores lógicos). Comprobar que el fragmento de configuración se ejecuta primero colocándolo al principio del documento.
Paso 4: Gestionar Dependencias Externas
Para viñetas que necesitan acceso a la red o paquetes opcionales:
{r check-available, include=FALSE}
has_suggested <- requireNamespace("optionalpkg", quietly = TRUE)
{r use-suggested, eval=has_suggested}
optionalpkg::special_function()
Para cálculos de larga duración, precomputar y guardar los resultados:
# Guardar resultados precomputados en vignettes/
saveRDS(expensive_result, "vignettes/precomputed.rds")
# Cargar en la viñeta
{r load-precomputed}
result <- readRDS("precomputed.rds")
Esperado: Las dependencias externas se gestionan con elegancia: los paquetes opcionales se cargan condicionalmente con requireNamespace(), el código dependiente de la red usa eval=FALSE o tryCatch(), y los cálculos costosos usan archivos .rds precomputados.
En caso de fallo: Si la viñeta falla en CRAN por paquetes opcionales no disponibles, envolver esas secciones con una variable condicional (p. ej., eval=has_suggested). Para resultados precomputados, asegurarse de que el archivo .rds está incluido en el directorio vignettes/ y se referencia con una ruta relativa.
Paso 5: Compilar y Probar la Viñeta
# Compilar una única viñeta
devtools::build_vignettes()
# Compilar y verificar (detecta problemas de viñeta)
devtools::check()
Esperado: La viñeta compila sin errores. La salida HTML es legible.
En caso de fallo:
- Pandoc faltante: Configurar
RSTUDIO_PANDOCen.Renviron - Paquete no instalado: Ejecutar primero
devtools::install() - Suggests faltantes: Instalar los paquetes listados en DESCRIPTION Suggests
Paso 6: Verificar en la Comprobación del Paquete
devtools::check()
Verificaciones relacionadas con viñetas: compila correctamente, no tarda demasiado, sin errores.
Esperado: devtools::check() pasa sin errores ni advertencias relacionados con viñetas. La viñeta compila dentro de los límites de tiempo de CRAN (generalmente menos de 60 segundos).
En caso de fallo: Si la viñeta provoca fallos en la verificación, las correcciones más comunes son: añadir los paquetes Suggests faltantes a DESCRIPTION, reducir el tiempo de compilación con eval=FALSE en fragmentos lentos, y asegurarse de que VignetteIndexEntry coincide con el título. Ejecutar devtools::build_vignettes() por separado para aislar los errores específicos de la viñeta.
Validación
- La viñeta compila sin errores con
devtools::build_vignettes() - Todos los fragmentos de código se ejecutan correctamente
- VignetteIndexEntry coincide con el título
-
devtools::check()pasa sin advertencias de viñeta - La viñeta aparece en los artículos del sitio pkgdown (si corresponde)
- El tiempo de compilación es razonable (< 60 segundos para CRAN)
Errores Comunes
- Discrepancia en VignetteIndexEntry: La entrada del índice en YAML debe coincidir con lo que se quiere que los usuarios vean en
vignette(package = "pkg") - Falta el bloque YAML de
vignette: Las tres líneas%\Vignette*son obligatorias - Viñeta demasiado lenta para CRAN: Precomputar resultados o usar
eval=FALSEpara operaciones costosas - Pandoc no encontrado: Asegurarse de que la variable de entorno
RSTUDIO_PANDOCestá configurada - Referencia al propio paquete: Usar
library(packagename)nodevtools::load_all()en las viñetas
Habilidades Relacionadas
write-roxygen-docs- los documentos a nivel de función complementan los tutoriales de las viñetasbuild-pkgdown-site- las viñetas aparecen como artículos en el sitio pkgdownsubmit-to-cran- CRAN tiene requisitos específicos para las viñetascreate-quarto-report- Quarto como alternativa a las viñetas de R Markdown
GitHub 仓库
相关推荐技能
executing-plans
设计该Skill用于当开发者提供完整实施计划时,以受控批次方式执行代码实现。它会先审阅计划并提出疑问,然后分批次执行任务(默认每批3个任务),并在批次间暂停等待审查。关键特性包括分批次执行、内置检查点和架构师审查机制,确保复杂系统实现的可控性。
requesting-code-review
设计该Skill可在完成任务、实现主要功能或合并代码前自动调度代码审查子代理,确保实现符合需求和计划。它支持通过指定git SHA范围进行精准的代码变更审查,帮助开发者在关键节点及时发现潜在问题。核心原则是"早审查、勤审查",适用于开发流程的各个关键阶段。
connect-mcp-server
设计这个Skill指导开发者如何将MCP服务器连接到Claude Code,支持HTTP、stdio和SSE三种传输协议。它涵盖了从安装配置到认证安全的完整流程,适用于集成GitHub、Notion、数据库等外部服务。当开发者需要添加集成、配置外部工具或提及MCP相关功能时,这个Skill能提供实用的操作指南。
web-cli-teleport
设计该Skill帮助开发者根据任务特性选择Claude Code的Web或CLI界面,并指导如何在两种环境间无缝迁移会话。它能分析任务复杂度、迭代需求等要素,推荐最优工作界面和工作流。关键特性包括会话状态管理、环境切换指导和上下文优化建议。
