write-vignette
关于
This Claude Skill helps developers create R package vignettes using R Markdown or Quarto for user-facing documentation. It covers setup, YAML configuration, code chunk options, and CRAN compliance requirements. Use it when adding tutorials, documenting complex workflows, or preparing CRAN submissions that need more than basic function documentation.
快速安装
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 中复制并粘贴此命令以安装该技能
技能文档
撰寫 Vignette
為 R 套件建立長篇文檔 vignette。
適用時機
- 為套件加「Getting Started」教學
- 記錄跨多個函式之複雜工作流
- 建立領域特定指引(如統計方法)
- CRAN 遞交需面向用戶之文檔,超出函式說明頁
輸入
- 必要:含欲文檔化函式之 R 套件
- 必要:vignette 標題與主題
- 選擇性:格式(R Markdown 或 Quarto,預設 R Markdown)
- 選擇性:vignette 是否需外部資料或 API
步驟
步驟一:建立 vignette 文件
usethis::use_vignette("getting-started", title = "Getting Started with packagename")
預期: vignettes/getting-started.Rmd 已建立,含 YAML frontmatter。knitr 與 rmarkdown 加至 DESCRIPTION 之 Suggests 欄位。vignettes/ 目錄存在。
失敗時: 若 usethis::use_vignette() 失敗,驗證工作目錄為套件根(含 DESCRIPTION)。若 knitr 未安裝,先跑 install.packages("knitr")。手動建立時,親手建 vignettes/ 目錄與文件,確保 YAML frontmatter 含全部三個 %\Vignette* 條目。
步驟二:撰寫 vignette 內容
---
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.
**預期:** vignette Rmd 文件含 Introduction、Installation、Basic Usage、Advanced Features 與 Conclusion 段。代碼範例用套件之匯出函式並產生可見輸出。
**失敗時:** 若範例無法運行,驗證套件已以 `devtools::install()` 安裝。確保範例於 `library()` 呼叫中用套件名(非 `devtools::load_all()`)。對需外部資源之函式,用 `eval=FALSE` 顯示代碼但不執行。
### 步驟三:配置代碼區塊
依不同用途用區塊選項:
```r
# Standard evaluated chunk
{r example-basic}
result <- compute_something(1:10)
result
# Show code but don't run (for illustrative purposes)
{r api-example, eval=FALSE}
connect_to_api(key = "your_key_here")
# Run but hide code (show only output)
{r hidden-setup, echo=FALSE}
library(packagename)
# Set global options
{r setup, include=FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5
)
預期: 含 include=FALSE 之設置區塊設全局選項(collapse、comment、fig.width、fig.height)。區塊適當配置:說明性代碼用 eval=FALSE、隱藏設置用 echo=FALSE、互動範例用標準區塊。
失敗時: 若區塊選項不生效,驗證語法用 {r chunk-name, option=value} 格式(逗號分隔、邏輯值無引號)。確保設置區塊先運行,將之置於文件頂端。
步驟四:處理外部依賴
對需網路存取或選擇性套件之 vignette:
{r check-available, include=FALSE}
has_suggested <- requireNamespace("optionalpkg", quietly = TRUE)
{r use-suggested, eval=has_suggested}
optionalpkg::special_function()
對長運行計算,預計算並儲存結果:
# Save pre-computed results to vignettes/
saveRDS(expensive_result, "vignettes/precomputed.rds")
# Load in vignette
{r load-precomputed}
result <- readRDS("precomputed.rds")
預期: 外部依賴得優雅處理:選擇性套件以 requireNamespace() 條件載入、依網路之代碼用 eval=FALSE 或 tryCatch()、昂貴計算用預計算之 .rds 文件。
失敗時: 若 vignette 於 CRAN 因不可用之選擇性套件失敗,將那些段以條件變數包裹(如 eval=has_suggested)。對預計算結果,確保 .rds 文件納入 vignettes/ 目錄,以相對路徑引用之。
步驟五:建構並測試 vignette
# Build single vignette
devtools::build_vignettes()
# Build and check (catches vignette issues)
devtools::check()
預期: vignette 建構無錯誤。HTML 輸出可讀。
失敗時:
- 缺 pandoc:於
.Renviron設RSTUDIO_PANDOC - 套件未安裝:先跑
devtools::install() - 缺 Suggests:安裝 DESCRIPTION 之 Suggests 中所列套件
步驟六:於套件檢查中驗證
devtools::check()
vignette 相關檢查:建構正確、不耗時太久、無錯誤。
預期: devtools::check() 通過,無 vignette 相關錯誤或警告。vignette 於 CRAN 時間限制內建構(典型 60 秒以下)。
失敗時: 若 vignette 致檢查失敗,常見修復含:將缺失之 Suggests 套件加至 DESCRIPTION、以 eval=FALSE 縮短建構時間(對慢區塊)、確保 VignetteIndexEntry 匹配標題。獨立跑 devtools::build_vignettes() 以隔離 vignette 特定錯誤。
驗證
- vignette 經
devtools::build_vignettes()建構無錯誤 - 所有代碼區塊正確執行
- VignetteIndexEntry 匹配標題
-
devtools::check()通過,無 vignette 警告 - vignette 出現於 pkgdown 站之文章中(若適用)
- 建構時間合理(CRAN 用 < 60 秒)
常見陷阱
- VignetteIndexEntry 不匹配:YAML 中之索引條目須匹配欲用戶於
vignette(package = "pkg")中所見者 - 缺
vignetteYAML 區塊:全部三個%\Vignette*行皆必要 - vignette 對 CRAN 太慢:對昂貴操作預計算結果或用
eval=FALSE - pandoc 找不到:確保
RSTUDIO_PANDOC環境變數已設 - 自引用套件:vignette 中用
library(packagename),非devtools::load_all()
相關技能
write-roxygen-docs— 函式級文檔補 vignette 教學build-pkgdown-site— vignette 於 pkgdown 站作為文章呈現submit-to-cran— CRAN 有特定 vignette 要求create-quarto-report— Quarto 作為 R Markdown vignette 之替代
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是理想选择。
