Back to Skills

write-vignette

pjt222
Updated 2 days ago
2 views
17
2
17
View on GitHub
Metawordaitestingautomationdesign

About

This skill helps developers create R package vignettes using R Markdown or Quarto. It covers setup, YAML configuration, code chunk options, and CRAN requirements for building user-facing tutorials. Use it for "Getting Started" guides, documenting multi-function workflows, or meeting CRAN documentation standards.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/write-vignette

Copy and paste this command in Claude Code to install this skill

Documentation

Write Vignette

Long-form doc vignettes for R pkgs.

Use When

  • "Getting Started" tutorial for pkg
  • Doc complex workflows across multi fns
  • Domain-specific guides (stat methodology)
  • CRAN submission requires user-facing docs beyond fn help

In

  • Required: R pkg w/ fns to doc
  • Required: Vignette title + topic
  • Optional: Format (R Markdown or Quarto, default: R Markdown)
  • Optional: Vignette needs external data|APIs?

Do

Step 1: Vignette File

usethis::use_vignette("getting-started", title = "Getting Started with packagename")

Got: vignettes/getting-started.Rmd created w/ YAML frontmatter. knitr + rmarkdown added to DESCRIPTION Suggests. vignettes/ dir exists.

If err: usethis::use_vignette() fails → verify cwd is pkg root (contains DESCRIPTION). knitr not installed → install.packages("knitr") first. Manual: create vignettes/ dir + file by hand, ensure YAML has all 3 %\Vignette* entries.

Step 2: Content

---
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.


**Got:** Vignette Rmd has Intro, Install, Basic Usage, Advanced, Conclusion. Code uses pkg's exported fns + produces visible out.

**If err:** Examples fail to run → verify pkg installed `devtools::install()`. Examples use pkg name in `library()` (not `devtools::load_all()`). Fns requiring external resources → `eval=FALSE` to show w/o exec.

### Step 3: Code Chunks

Per chunk options:

```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
)

Got: Setup chunk w/ include=FALSE sets global opts (collapse, comment, fig.width, fig.height). Chunks configured: eval=FALSE for illustrative, echo=FALSE for hidden setup, std for interactive examples.

If err: Chunk opts not taking effect → verify syntax {r chunk-name, option=value} (comma-separated, no quotes around logicals). Setup chunk runs first → place at top.

Step 4: External Deps

Vignettes needing net access|optional pkgs:

{r check-available, include=FALSE}
has_suggested <- requireNamespace("optionalpkg", quietly = TRUE)

{r use-suggested, eval=has_suggested}
optionalpkg::special_function()

Long-running computations → pre-compute + save:

# Save pre-computed results to vignettes/
saveRDS(expensive_result, "vignettes/precomputed.rds")

# Load in vignette
{r load-precomputed}
result <- readRDS("precomputed.rds")

Got: External deps handled gracefully: optional pkgs conditional via requireNamespace(), net-dep code uses eval=FALSE|tryCatch(), expensive computations use pre-computed .rds.

If err: Vignette fails on CRAN due to unavail optional pkgs → wrap w/ conditional var (eval=has_suggested). Pre-computed → ensure .rds in vignettes/ + ref'd via relative path.

Step 5: Build + Test

# Build single vignette
devtools::build_vignettes()

# Build and check (catches vignette issues)
devtools::check()

Got: Vignette builds no errs. HTML out readable.

If err:

  • Missing pandoc: Set RSTUDIO_PANDOC in .Renviron
  • Pkg not installed: devtools::install() first
  • Missing Suggests: Install pkgs in DESCRIPTION Suggests

Step 6: Verify in Pkg Check

devtools::check()

Vignette-related checks: builds correctly, doesn't take too long, no errs.

Got: devtools::check() passes no vignette-related errs|warnings. Vignette builds within CRAN time limits (typically < 60 sec).

If err: Vignette causes check failures → common fixes: add missing Suggests to DESCRIPTION, reduce build time w/ eval=FALSE on slow chunks, ensure VignetteIndexEntry matches title. Run devtools::build_vignettes() separately to isolate.

Check

  • Vignette builds no errs via devtools::build_vignettes()
  • All code chunks exec correctly
  • VignetteIndexEntry matches title
  • devtools::check() passes no vignette warnings
  • Vignette appears in pkgdown site articles (if applicable)
  • Build time reasonable (< 60 sec for CRAN)

Traps

  • VignetteIndexEntry mismatch: Index entry in YAML must match what users see in vignette(package = "pkg")
  • Missing vignette YAML block: All 3 %\Vignette* lines required
  • Vignette too slow for CRAN: Pre-compute results or eval=FALSE for expensive ops
  • Pandoc not found: Ensure RSTUDIO_PANDOC env var set
  • Self-referencing pkg: library(packagename) not devtools::load_all() in vignettes

  • write-roxygen-docs — fn-level docs complement vignette tutorials
  • build-pkgdown-site — vignettes appear as articles on pkgdown
  • submit-to-cran — CRAN has specific vignette reqs
  • create-quarto-report — Quarto as alt to R Markdown vignettes

GitHub Repository

pjt222/agent-almanac
Path: i18n/caveman-ultra/skills/write-vignette
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Related Skills

content-collections

Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill

polymarket

Meta

This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.

View skill

creating-opencode-plugins

Meta

This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.

View skill

sglang

Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill