Blog Chart
AgriciDaniel/claude-blog
Generate dark-mode-compatible inline SVG data visualization charts for blog posts.
Lays out dense analytics or trading-terminal screens in banded sections with hand-drawn SVG charts, instead of a wall of identical stat cards.
$ npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install plugin87/ux-ui-agent-skills data-dashboard --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/plugin87/ux-ui-agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/data-dashboard .claude/skills/data-dashboard && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "data-dashboard" agent skill from https://github.com/plugin87/ux-ui-agent-skills/tree/main/.claude/skills/data-dashboard into .claude/skills/data-dashboard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-dashboard", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/plugin87/ux-ui-agent-skills/tree/main/.claude/skills/data-dashboardType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install plugin87/ux-ui-agent-skills data-dashboard --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plugin87/ux-ui-agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/data-dashboard .agents/skills/data-dashboard && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "data-dashboard" agent skill from https://github.com/plugin87/ux-ui-agent-skills/tree/main/.claude/skills/data-dashboard into .agents/skills/data-dashboard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-dashboard", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install plugin87/ux-ui-agent-skills data-dashboard --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plugin87/ux-ui-agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/data-dashboard .cursor/skills/data-dashboard && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "data-dashboard" agent skill from https://github.com/plugin87/ux-ui-agent-skills/tree/main/.claude/skills/data-dashboard into .cursor/skills/data-dashboard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-dashboard", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/plugin87/ux-ui-agent-skills.git --path .claude/skills/data-dashboard--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install plugin87/ux-ui-agent-skills data-dashboard --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plugin87/ux-ui-agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/data-dashboard .gemini/skills/data-dashboard && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "data-dashboard" agent skill from https://github.com/plugin87/ux-ui-agent-skills/tree/main/.claude/skills/data-dashboard into .gemini/skills/data-dashboard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-dashboard", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install plugin87/ux-ui-agent-skills data-dashboardInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/plugin87/ux-ui-agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/data-dashboard .github/skills/data-dashboard && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "data-dashboard" agent skill from https://github.com/plugin87/ux-ui-agent-skills/tree/main/.claude/skills/data-dashboard into .github/skills/data-dashboard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-dashboard", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install plugin87/ux-ui-agent-skills data-dashboard --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plugin87/ux-ui-agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/data-dashboard .opencode/skills/data-dashboard && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "data-dashboard" agent skill from https://github.com/plugin87/ux-ui-agent-skills/tree/main/.claude/skills/data-dashboard into .opencode/skills/data-dashboard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-dashboard", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
data-dashboardLays out dense analytics or trading-terminal screens in banded sections with hand-drawn SVG charts, instead of a wall of identical stat cards.
This skill opens by checking that a parent design-token kit is installed, then composes the page in five bands: a hero metric with its own chart, two or three secondary figures, three different chart shapes side by side, a real sortable table with a feed, and a closing footer line, all on a twelve-column grid with explicit spans rather than an auto-fit card grid.
Every chart type, from candlestick and depth to donut, gauge, sparkline, heatmap, and order book, is plain inline SVG sized by CSS and filled from design-token chart colors, with an accessibility contract per chart type and attention to the contrast traps that only surface in dark mode.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8e73a21. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodenpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Data-Dense Dashboard Designer loads about 2.6k tokens when it runs. Until then it costs about 136 tokens; SKILL.md has 1,420 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from plugin87/ux-ui-agent-skills at commit 8e73a21, republished under its MIT licence (© plugin87). 1,420 words, ~2,578 tokens.
.claude/skills/data-dashboard/SKILL.md (or your agent's skills folder).Step 0 — is the kit here? This skill reads files from the kit. Check once:
ls ${CLAUDE_SKILL_DIR}/../../../tokens >/dev/null 2>&1 && echo KIT_OK || echo KIT_MISSINGOnKIT_MISSINGonly the skill folders were installed, which is whatnpx skills adddoes. Say so plainly, point the user atnpx ux-ui-agent-skills initor the plugin install, and stop. Do not guess the contents of a file you could not open.
A dashboard is the hardest screen to keep honest: it is dense, it is mostly
non-text, and almost every default makes it worse. This is the recipe that
produced ${CLAUDE_SKILL_DIR}/../../../examples/showcase/ and ${CLAUDE_SKILL_DIR}/../../../examples/terminal/, both of which pass every
gate in both themes.
Answer these in one line each, or /grill-me them out of the user:
Four equal stat cards is the single loudest tell that nobody designed this. Compose in bands, each a different shape:
| Band | Content | Why |
|---|---|---|
| 1 | Hero metric at 3x body size + its own chart, spanning most of the width | The eye lands once |
| 2 | Two or three secondary figures, stacked or narrow | Quiet by construction |
| 3 | Three different chart shapes side by side (donut, ranked bars, sparklines) | Variety reads as intent |
| 4 | A table that really sorts, plus a feed or log | Detail after summary |
| 5 | A footer line that ends the page | A page must end on purpose |
Use a 12-column grid with explicit spans (span 8 / span 4), collapsing to 6
then 1. Never repeat(auto-fit, …) for the primary bands - it produces exactly
the equal-card wall you are avoiding.
All of these are plain inline SVG with viewBox, sized by CSS, filled from
--color-chart-*. No chart library, no runtime dependency.
| Chart | Geometry | Use it for |
|---|---|---|
| Bar / column | <rect> per bucket, rx for a soft corner | Discrete periods |
| Candlestick | <line> wick + <rect> body per period, class by up/down | OHLC price |
| Volume | Bars under the price chart, same x-scale, opacity:.45 | Conviction behind a move |
| Moving average | <polyline> over the candles, 2px, round joins | Trend through noise |
| Line / sparkline | <polyline>, pathLength="1" for a draw animation | Trend in a cell |
| Area / stacked area | <path> per band: forward along the top, reverse along the previous baseline, close | Composition over time |
| Depth | Two cumulative area paths mirrored around the mid | Book liquidity |
| Waterfall | Floating <rect> per step + dashed connectors between levels | Attribution |
| Donut | <circle> with stroke-dasharray and rotate() per segment | Share of a whole, 3-5 slices |
| Radial gauge | Same trick, stroke-linecap:round, 270-degree sweep | One value against a limit |
| Scatter / bubble | <circle>, radius = third dimension | Two measures plus weight |
| Correlation matrix | HTML table, cell tint via color-mix | Pairwise relationships |
| Heatmap | HTML table or <rect> grid, tint by value | Cohorts, calendars |
| Order book | HTML table with a depth bar per row | Bids and asks |
Generate the geometry, do not hand-place it. Write a small deterministic script (a seeded walk) that emits the SVG elements, then paste the output in. Hand-typed coordinates drift and cannot be regenerated.
Gates cannot catch a chart that is drawn beautifully and means nothing. Check by hand:
role="img" plus either aria-label or <title>+<desc>
referenced by aria-labelledby. Say what the chart shows, not that it is a
chart: "Range 182.06 to 200.10, closing at 187.84" beats "price chart".+ and an arrow; red with a
-. Up and down also carry a word in the table cell.<caption> (use .sr-only when the panel header already says it),
scope="col" / scope="row", and aria-sort only if clicking really sorts.verify_interactive.mjs clicks them and checks.Every one of these was found on a screen that looked finished. The first group a gate caught; the ones marked "no gate sees it" were caught by opening the screenshot and looking, which is why that step is not optional:
--color-chart-4
measured 2.65:1 in dark. Chart colours are tuned for large filled shapes.calc(var(--duration-fast) * 0.6 * n), never a
typed millisecond.align-content: start on the field and an
explicit block-size on the control. Measure the heights in the render - the
difference is obvious in a screenshot and invisible in the markup.grid-template-rows:auto minmax(0,1fr), and that child's own tracks go
minmax(<min>,1fr) so its rows grow too), or the rows share it out
(align-content:space-between), or the short column earns another panel.
Screenshot the row and look at the bottom edge of each panel; this never shows
up in the markup.auto-fit silently drops a column, and no gate sees it. Three gauges in a
panel about 340px wide with minmax(min(100%,7rem),1fr) resolved to two tracks
and orphaned the third beside an empty cell. When the count is fixed and
meaningful, write repeat(3,minmax(0,1fr)) and give narrow widths their own rule.aria-label is a row
of anonymous bars to everyone looking at it. Put the labels under the bars -
lay the plot out on an even pitch inside its viewBox so a matching grid of
labels lines up without a second coordinate system..sr-only needs a positioned ancestor. Inside a scroller it otherwise
resolves against the initial containing block, lands outside the viewport, and
inflates the document's scroll width by hundreds of pixels.prefers-reduced-motion. Give a radar sweep a wedge, not a 1px line..c4 as both a
four-column span and the fourth chart colour painted an entire panel pink.node ${CLAUDE_SKILL_DIR}/../../../scripts/measure_render.mjs <file> && node ${CLAUDE_SKILL_DIR}/../../../scripts/measure_render.mjs --dark <file>
node ${CLAUDE_SKILL_DIR}/../../../scripts/verify_states.mjs <file> && node ${CLAUDE_SKILL_DIR}/../../../scripts/axe_audit.mjs --dark <file>
node ${CLAUDE_SKILL_DIR}/../../../scripts/verify_responsive.mjs <file> --scale=1.25
node ${CLAUDE_SKILL_DIR}/../../../scripts/verify_interactive.mjs <file>
node ${CLAUDE_SKILL_DIR}/../../../scripts/slop_tells.mjs --strict <file> && node ${CLAUDE_SKILL_DIR}/../../../scripts/taste_audit.mjs --strict <file>Then screenshot it and look, in both themes, at 1600 and 390 wide. The gates will pass a chart that is drawn wrong. A correlation matrix that is not symmetric is 16/16 green and still embarrassing.
Worked references, both gate-verified: ${CLAUDE_SKILL_DIR}/../../../examples/showcase/index.html (revenue
console) and ${CLAUDE_SKILL_DIR}/../../../examples/terminal/index.html (trading desk, ten chart types).
© plugin87, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/data-dashboard of plugin87/ux-ui-agent-skills.
Open the folder on GitHubat commit 8e73a21
Data-Dense Dashboard Designer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Data-Dense Dashboard Designer this skillplugin87/ux-ui-agent-skills | 1.5k | — | ~2.6k | Automated safety check: Pass | MIT | |
| Blog ChartAgriciDaniel/claude-blog | 2.3k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Blog ChartInfrasity-Labs/dev-gtm-claude-skills | 139 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Color Auditrome-os/rome | 725 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Ant Designkqcoxn/MaaPipelineEditor | 408 | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Better Colorstrycompai/crm | 11k | — | ~1.9k | Automated safety check: Pass | MIT |
AgriciDaniel/claude-blog
Generate dark-mode-compatible inline SVG data visualization charts for blog posts.
Infrasity-Labs/dev-gtm-claude-skills
Generate dark-mode-compatible inline SVG data visualization charts for blog posts.
rome-os/rome
Audit a design system's color palette against measurable color-science disciplines — WCAG/APCA contrast of declared token pairs, perceptual (OKLCH) ramp uniformity, color-blindness safety of…
kqcoxn/MaaPipelineEditor
Decision guide for antd 6.x, Ant Design Pro 5/ProComponents, Ant Design X v2, and the offline @ant-design/cli.
trycompai/crm
OKLCH color space and color usage for web projects. An agent skill from trycompai/crm.
skydashnet/material-design-3-ui-skill
Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.
plugin87/ux-ui-agent-skills
Writes a complete UI component spec with anatomy, variants, sizes, eight interaction states, design-token mapping and accessibility notes before or alongside code.
plugin87/ux-ui-agent-skills
Creates a new design-product project from the kit's product-design template, then installs the engine folders and the Playwright dependency that the quality gates need.
plugin87/ux-ui-agent-skills
Audits a UI or design against WCAG 2.2 and ARIA patterns and returns findings with the criterion, severity and a specific fix for each.
plugin87/ux-ui-agent-skills
Applies a chosen visual direction, an archetype or one of 138 named design systems, by remapping design tokens, then checks contrast before it finishes.
plugin87/ux-ui-agent-skills
Builds a from-scratch brand design system as three-tier DTCG tokens plus one theme.css with light and dark modes, checked against WCAG contrast rules.
plugin87/ux-ui-agent-skills
Generates complete, accessible, token-driven UI component code for a chosen framework such as React with Tailwind, SwiftUI, Vue, Flutter or Jetpack Compose.
Categories
Lays out dense analytics or trading-terminal screens in banded sections with hand-drawn SVG charts, instead of a wall of identical stat cards. This skill opens by checking that a parent design-token kit is installed, then composes the page in five bands: a hero metric with its own chart, two or three secondary figures, three different chart shapes side by side, a real sortable table with a feed, and a closing footer line, all on a twelve-column grid with explicit spans rather than an auto-fit card grid.
Data-Dense Dashboard Designer fits situations like: building an analytics console or trading-terminal screen; laying out a data-heavy monitoring dashboard; choosing which chart shape fits a given metric.
Run `npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a claude-code`. Or copy the skill folder (.claude/skills/data-dashboard in plugin87/ux-ui-agent-skills) into .claude/skills/data-dashboard in your project. Claude Code loads it when a task matches its description.
Run `npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a codex`. Or copy the skill folder (.claude/skills/data-dashboard in plugin87/ux-ui-agent-skills) into .agents/skills/data-dashboard in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add plugin87/ux-ui-agent-skills --skill data-dashboard -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/data-dashboard, .gemini/skills/data-dashboard, .github/skills/data-dashboard and .opencode/skills/data-dashboard in your project.
Going by SKILL.md and its folder, Data-Dense Dashboard Designer needs the command-line tools its instructions call (node and npx). Our summary lists: The parent design-token kit installed alongside this skill.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Data-Dense Dashboard Designer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Data-Dense Dashboard Designer: Blog Chart (AgriciDaniel/claude-blog, 2.3k stars), Blog Chart (Infrasity-Labs/dev-gtm-claude-skills, 139 stars), Color Audit (rome-os/rome, 725 stars) and Ant Design (kqcoxn/MaaPipelineEditor, 408 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
plugin87 (a GitHub user) maintains it in plugin87/ux-ui-agent-skills, which has 1,546 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 8, 2026.
Source: plugin87/ux-ui-agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.