alt-text
Generate and improve accessible alt text for data visualizations and images in R packages and Quarto documents.
Skill by Emil Hvitfeldt (@emilhvitfeldt)
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/posit-dev-alt-text
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, data, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/alt-text
What's inside
- Skill name
alt-text- Description
- Generate and improve accessible alt text for data visualizations and images in R packages and Quarto documents. Use when the user wants to add, improve, or audit alt text for figures in a pkgdown site or .qmd files. Activate for requests that mention fig-alt, fig.alt, figure descriptions, or alt text in the context of an R package or Quarto document.
- License
- MIT
- Metadata
- author: Emil Hvitfeldt (@emilhvitfeldt) · version: 1.0
- Instructions
- 178 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- pkgdown.md · references/
- quarto.md · references/
SKILL.md (first lines)
# Write Accessible Alt Text Generate accessible alt text for data visualizations and images in this project. ARGUMENTS - label: (optional) specific figure label or chunk to target - file: (optional) specific file to process ## Detect project type Before proceeding, identify the project context and read the relevant reference. Check for a `_pkgdown.yml` file in the project root to detect a pkgdown site: ```bash ls _pkgdown.yml 2>/dev/null && echo "pkgdown" || echo "not pkgdown" ``` - **pkgdown site** (`_pkgdown.yml` present) → read `references/pkgdown.md` - **Quarto documents** (no `_pkgdown.yml`, `.qmd` files present) → read `references/quarto.md` If the context is still ambiguous, ask the user which format they are working in. ## Key advantage: source code access Unlike typical alt text scenarios where you only see an image, **we have access to the code that generates each chart**. Use this to extract precise details: **From plotting code:** - Variable mappings → exact variable names for axes - Color/fill mappings → what color encodes - Plot type functions → scatter, histogram, line chart, etc. - Trend lines or fitted curves → overlaid statistical fits - Faceting/subplots → number of panels and what varies - Color scales → encoding scheme (sequential, diverging, categorical) - Axis labels and titles → customized labels **From data generation code:** - Random distributions → expected distribution shape - Transformations → what was done to data - Feature engineering → preprocessing applied - Filtering/subsetting → what subset is shown **From surrounding prose:** - Text before/after the chunk explains the **purpose** and **key insight** - Chapter context tells you what the figure is meant to teach - This is often the best source for the "key insight" part of alt text ## Three-part structure (Amy Cesal's formula) 1. **Chart type** — first words identify the format 2. **Data description** — axes, variables, what is shown 3. **Key insight** — the pattern or takeaway (often found in surrounding text) ## Relationship to captions Read the caption (`fig-cap`, `fig.cap`) first. Alt text should **complement, not duplicate** it: - If the caption states the insight, alt text can focus on describing the visual structure - If the caption is generic, alt text should include the key insight - Together they should give a complete understanding ## Content rules **Include:** - Chart type as first words - Axis labels and what they represent - Specific values/ranges when code reveals them (e.g., "peaks between 25–50") - Number of panels/facets - What color/size encodes if used - The key pattern that supports the surrounding point **Exclude:** - "Image of…" or "Chart showing…" (screen readers announce this) - Decorative color descriptions (unless color encodes data) - Information already in the caption - Implementation details (package names, function internals) ## Length guidelines | Complexity | Sentences | When to use | |------------|-----------|----------------------------------------------| | Simple | 2–3 | Single geom, no facets, obvious pattern | | Standard | 3–4 | Multiple geoms or color encoding | | Complex | 4–5 | Faceted, multiple overlays, nuanced insight | ## Quality checklist - [ ] Starts with chart type (Scatter chart, Histogram, Faceted bar chart, etc.) - [ ] Names the axis variables - [ ] Includes specific values/ranges from code when informative - [ ] States the key insight from surrounding prose - [ ] Complements (not duplicates) the caption - [ ] Would make sense to someone who cannot see the image - [ ] Uses plain language (avoid jargon like "geom" or "aesthetic") ## Template patterns **Scatter chart:** ``` Scatter chart. [X var] along the x-axis, [Y var] along the y-axis. [Shape: linear/curved/clustered]. [Specific pattern, e.g., "peaks when X is 25–50"]. [Any overlaid fits or annotations]. ``` **Histogram:** ``` Histogram of [variable]. [Shape: right-skewed/bimodal/normal/uniform]. [If transformed: "after [transformation], the distribution [result]"]. [Notable features: outliers, gaps, multiple modes]. ``` **Bar chart:** ``` Bar chart. [Categories] along the x-axis, [measure] along the y-axis. [Key comparison: which is highest/lowest, relative differences]. [Pattern: increasing/decreasing/grouped]. ``` **Tile/raster chart:** ``` Tile chart [or heatmap]. [Row variable] along the y-axis, [column variable] along the x-axis.
From posit-dev/skills, MIT.
More from posit-dev/skills
- 0.815score
r-cli
Garrick Aden-Buie (@gadenbuie)
Comprehensive R package for command-line interface styling, semantic messaging, and user communication.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
r-lifecycle
Garrick Aden-Buie (@gadenbuie)
Guidance for managing R package lifecycle according to tidyverse principles using the lifecycle package.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
pr-create
Garrick Aden-Buie (@gadenbuie)
Creates a pull request from current changes, monitors GitHub CI, and debugs any failures until CI passes.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
r-testthat
Garrick Aden-Buie (@gadenbuie)
Best practices for writing R package tests with testthat version 3+.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
shiny-r-optimize
Garrick Aden-Buie (@gadenbuie)
Diagnose and fix performance problems in Shiny for R apps — slow startup, sluggish interactions, long-running blocking operations, and apps that struggle…
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
shiny-py-optimize
Garrick Aden-Buie (@gadenbuie)
Diagnose and fix performance problems in Shiny for Python apps — slow startup, sluggish interactions, blocking operations, and apps that struggle beyond a…
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
r-mirai
Charlie Gao (@shikokuchuo)
Help users write correct R code for async, parallel, and distributed computing using mirai.
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
critical-code-reviewer
Garrick Aden-Buie (@gadenbuie)
Rigorously review code or pull requests for correctness, security, accessibility, maintainability, tests, and edge cases.
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
r-cran-extrachecks
Garrick Aden-Buie (@gadenbuie)
Prepare R packages for CRAN submission by checking for common ad-hoc requirements not caught by devtools::check().
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
review-testing
Garrick Aden-Buie (@gadenbuie)
Review test code for quality, design, and completeness after implementing a feature or fixing a bug.
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
r-cran-status
Garrick Aden-Buie (@gadenbuie)
Look up an R package's live status on cran.r-project.org - submission/review state (queue, human review, waiting, archived, past version's fate) or R CMD…
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
describe-design
Garrick Aden-Buie (@gadenbuie)
Research a codebase and create architectural documentation describing how features or systems work.
SkillAFreshness: A★ 547Claude Code +9
Signals
- Stars
- 547
- Forks
- 57
- Open issues
- 6
- Last commit (this folder)
- Apr 28, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0
- License
- MIT
- Repository
- github.com/posit-dev/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
Cite this page
alt-text skill. Agent Mart. https://agentmart.dev/skills/posit-dev-alt-text (last updated 2026-10-24)