Agent skill

Blog Chart

by AgriciDaniel in AgriciDaniel/claude-blog

Generate dark-mode-compatible inline SVG data visualization charts for blog posts.

MITAuto-check passedFrontend & Design

Install Blog Chart

skills CLI
$ npx skills add AgriciDaniel/claude-blog --skill blog-chart -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install AgriciDaniel/claude-blog blog-chart --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-blog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/blog-chart .claude/skills/blog-chart && rm -rf skills-src

Use ~/.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/

Facts

Skill name
blog-chart
GitHub stars
2.3k
Token cost
~2.4k tokens
SKILL.md length
811 words
Files
2 (incl. scripts)
Skills in repo
39
Repo updated
First seen
Licence
MIT

At a glance

Generate dark-mode-compatible inline SVG data visualization charts for blog posts.

  • Works in 7 steps: Define chart area: x=80, y=40,… → Calculate bar height: chartHeight /… → Calculate bar width: (value / maxValue)… → …
  • User says blog chart
  • SKILL.md covers Input Format, Chart Type Selection, Styling Rules (Non-Negotiable) and Standard SVG Shell (HTML), plus 6 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Blog Chart is an agent skill from AgriciDaniel/claude-blog. Generate dark-mode-compatible inline SVG data visualization charts for blog posts. Supports horizontal bar, grouped bar, donut, line, lollipop, area, and radar charts with automatic platform detection (HTML vs JSX/MDX). Enforces chart type diversity, accessible markup (role=img, aria-labelledby), source attribution, and transparent backgrounds. Use when user says "blog chart", "generate chart", "data visualization", "svg chart", "blog graph", or "visualize data".

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/generate_chart_svg.py`).

It sits in Frontend & Design, covering Data visualization, React components and Theming and dark mode. The repository describes itself as: Claude Code blog skill suite: 30 sub-skills, 5 agents, 5-gate v1.9.0 Blog Delivery Contract, dual-optimized for Google rankings and AI citations. Active development at… The licence is MIT.

When your agent uses it

  • User says blog chart
  • Data visualization

Example prompts

  • “blog chart”
  • “generate chart”
  • “data visualization”
  • “/blog-chart”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Define chart area: x=80, y=40, width=440, height=280
  2. Calculate bar height: chartHeight / dataCount - gap (gap=8)
  3. Calculate bar width: (value / maxValue) * chartWidth
  4. Position bars: y = chartY + index * (barHeight + gap)
  5. Label on left (right-aligned at x=75): category name
  6. Value label at end of bar: percentage or number
  7. Source text at bottom center

What it can do on your machine

Read from SKILL.md and the folder at commit 2500d4c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Blog Chart loads about 2.4k tokens when it runs. Until then it costs about 120 tokens; SKILL.md has 811 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~120
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from AgriciDaniel/claude-blog at commit 2500d4c, republished under its MIT licence (© AgriciDaniel). 811 words, ~2,435 tokens.

Download SKILL.mdSave it as .claude/skills/blog-chart/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
blog-chart
description
Generate dark-mode-compatible inline SVG data visualization charts for blog posts. Supports horizontal bar, grouped bar, donut, line, lollipop, area, and radar charts with automatic platform detection (HTML vs JSX/MDX). Enforces chart type diversity, accessible markup (role=img, aria-labelledby), source attribution, and transparent backgrounds. Use when user says "blog chart", "generate chart", "data visualization", "svg chart", "blog graph", or "visualize data".
user-invokable
false
license
MIT

Blog Chart: Built-In SVG Data Visualization

Generates dark-mode-compatible inline SVG charts for blog posts. Invoked internally by blog-write and blog-rewrite when chart-worthy data is identified. Not a standalone user-facing command.

Styling source of truth: skills/blog/references/visual-media.md

For supported chart types, prefer the deterministic CLI:

bash
python3 skills/blog-chart/scripts/generate_chart_svg.py --input chart.json --output chart.html --json

Input Format

The writer or researcher passes a chart request:

Chart Request:
- Type: horizontal bar
- Title: "Quarterly Signups by Product"
- Data: Product A 420, Product B 315, Product C 180
- Source: [Verified source], [publication date]
- Platform: mdx (or html)

Chart Type Selection

Select based on the data pattern. Prefer chart type diversity, but repeat a type when comparability or reader comprehension clearly benefits.

Data PatternBest Chart Type
Before/after comparisonGrouped bar chart
Ranked factors / correlationsLollipop chart
Parts of whole / market shareDonut chart
Trend over timeLine chart
Percentage improvementHorizontal bar chart
Distribution / rangeArea chart
Multi-dimensional scoringRadar chart

Styling Rules (Non-Negotiable)

All charts must work on both dark and light backgrounds:

Text elements:     fill="currentColor"
Grid lines:        stroke="currentColor" opacity="0.08"
Axis lines:        stroke="currentColor" opacity="0.3"
Background:        transparent (no fill on root SVG)
Subtitle text:     fill="var(--chart-muted, currentColor)"
Source text:        fill="var(--chart-muted, currentColor)"
Label text:        fill="currentColor" opacity="0.8"

Set --chart-muted to an accessible text token in the host theme. If no token exists, use #4b5563 on light backgrounds and #d1d5db on dark backgrounds. Do not rely on low-opacity source or subtitle text for visible attribution.

Color Palette
ColorHexUse Case
Orange#f97316Primary / highest value
Sky Blue#38bdf8Secondary / comparison
Purple#a78bfaTertiary / special category
Green#22c55eQuaternary / positive indicator

For text inside approved colored elements: use fill="#111827" with fontWeight="800". Only use white text after checking the contrast ratio is at least 4.5:1 against that specific fill color.

Do not rely on color alone. Add direct labels, patterns, line dashes, marker shapes, or legend text so colorblind readers can distinguish series.

Standard SVG Shell (HTML)

xml
<svg
  viewBox="0 0 560 380"
  style="max-width: 100%; height: auto; font-family: 'Inter', system-ui, sans-serif"
  role="img"
  aria-labelledby="chart-title chart-desc"
>
  <title id="chart-title">Chart Title</title>
  <desc id="chart-desc">Description for screen readers with all key data points and source</desc>

  <!-- Chart content -->

  <text x="280" y="372" text-anchor="middle" font-size="10" fill="var(--chart-muted, currentColor)">
    Source: Source Name (Year)
  </text>
</svg>

JSX/MDX Shell (camelCase attributes)

jsx
<svg
  viewBox="0 0 560 380"
  style={{maxWidth: '100%', height: 'auto', fontFamily: "'Inter', system-ui, sans-serif"}}
  role="img"
  aria-labelledby="chart-title chart-desc"
>
  <title id="chart-title">Chart Title</title>
  <desc id="chart-desc">Description for screen readers</desc>

  {/* Chart content */}

  <text x="280" y="372" textAnchor="middle" fontSize="10" fill="var(--chart-muted, currentColor)">
    Source: Source Name (Year)
  </text>
</svg>

JSX Attribute Conversion (Required for MDX)

HTMLJSX
stroke-widthstrokeWidth
stroke-dasharraystrokeDasharray
stroke-linecapstrokeLinecap
text-anchortextAnchor
font-sizefontSize
font-weightfontWeight
font-familyfontFamily
classclassName
style="..."style={{...}}

Chart Type Construction

Horizontal Bar Chart

Best for: percentage improvements, single-metric comparisons.

  1. Define chart area: x=80, y=40, width=440, height=280
  2. Calculate bar height: chartHeight / dataCount - gap (gap=8)
  3. Calculate bar width: (value / maxValue) * chartWidth
  4. Position bars: y = chartY + index * (barHeight + gap)
  5. Label on left (right-aligned at x=75): category name
  6. Value label at end of bar: percentage or number
  7. Source text at bottom center
Grouped Bar Chart

Best for: before/after, A vs B comparisons.

  1. Define groups along Y axis, bars within each group
  2. Use 2 colors (primary + secondary) for the two series
  3. Add legend at top: colored square + label for each series
  4. Gap between groups > gap within groups
Donut Chart

Best for: parts of whole, market share.

  1. Center: cx=280, cy=180, outer radius=140, inner radius=80
  2. Calculate arc segments using cumulative angles
  3. Each segment: <path d="M... A... L... A... Z" fill="color" />
  4. Center text: total or key label
  5. Legend below chart with color squares + labels + values
Line Chart

Best for: trends over time.

  1. X axis: time periods, evenly spaced
  2. Y axis: value range with 4-5 grid lines
  3. Draw grid lines: stroke="currentColor" opacity="0.08"
  4. Plot data points: <circle cx=... cy=... r="4" fill="color" />
  5. Connect with: <polyline points="..." fill="none" stroke="color" strokeWidth="2" />
  6. Optional: area fill below line with opacity="0.1"
Show full SKILL.md (313 more words)Show less
Lollipop Chart

Best for: ranked factors, correlations.

  1. Horizontal orientation (like bar chart but with circles)
  2. Thin line from axis to data point: stroke="currentColor" opacity="0.15" strokeWidth="1"
  3. Circle at data point: r="6" with fill color
  4. Value label next to circle
  5. Categories on Y axis (left-aligned)
Area Chart

Best for: distribution, cumulative data.

  1. Same as line chart but with filled area below
  2. Area fill: <path d="M... L... L... Z" fill="color" opacity="0.15" />
  3. Line on top: stroke="color" strokeWidth="2" fill="none"
  4. Grid lines behind the area
Radar Chart

Best for: multi-dimensional scoring (5-7 axes).

  1. Center: cx=280, cy=190
  2. Draw concentric polygons for grid (3-4 levels)
  3. Calculate axis endpoints at equal angles
  4. Plot data points on each axis proportional to value
  5. Connect data points with filled polygon: fill="color" opacity="0.2" stroke="color"
  6. Label each axis at the outer edge

Label Rules

  • Wrap long labels at word boundaries into <tspan> lines.
  • Truncate only when wrapping would collide with data marks, and keep the full label in <desc> or adjacent prose.
  • Use stable chart dimensions with a responsive max-width: 100%; height: auto style, or choose a justified wider viewBox for dense labels.
  • Check mobile widths so axis labels, legends, and value labels do not overlap.

Output Format

Wrap every chart in a <figure> element:

HTML:

html
<figure>
  <svg viewBox="0 0 560 380" style="max-width: 100%; height: auto; font-family: 'Inter', system-ui, sans-serif" role="img" aria-labelledby="chart-title chart-desc">
    <title id="chart-title">[Chart Title]</title>
    <desc id="chart-desc">[Full description with data points for screen readers]</desc>
    <!-- chart content -->
    <text x="280" y="372" text-anchor="middle" font-size="10" fill="var(--chart-muted, currentColor)">
      Source: [Source Name] ([Year])
    </text>
  </svg>
  <figcaption>Source: <a href="[Source URL]">[Source Name]</a>, [publication date].</figcaption>
</figure>

MDX:

mdx
<figure className="chart-container" style={{margin: '2.5rem 0', textAlign: 'center', padding: '1.5rem', borderRadius: '12px'}}>
  <svg viewBox="0 0 560 380" style={{maxWidth: '100%', height: 'auto', fontFamily: "'Inter', system-ui, sans-serif"}} role="img" aria-labelledby="chart-title chart-desc">
    <title id="chart-title">[Chart Title]</title>
    <desc id="chart-desc">[Full description]</desc>
    {/* chart content with camelCase attributes */}
    <text x="280" y="372" textAnchor="middle" fontSize="10" fill="var(--chart-muted, currentColor)">
      Source: [Source Name] ([Year])
    </text>
  </svg>
  <figcaption>Source: <a href="[Source URL]">[Source Name]</a>, [publication date].</figcaption>
</figure>

Quality Checklist (Verify Before Returning)

  • No hardcoded text colors except contrast-checked labels inside colored elements
  • No white/light backgrounds (transparent or none)
  • Source attribution text present at bottom and semantic <figcaption> present
  • role="img" and aria-labelledby present on <svg>
  • <title id> and <desc id> present inside <svg>
  • Chart type choice supports comprehension and comparability
  • If MDX: all attributes camelCased (no hyphens in attribute names)
  • Data values match the source data exactly
  • Color palette uses only approved colors
  • ViewBox is 0 0 560 380 (standard) or justified alternative
  • Labels, shapes, patterns, or line styles provide redundancy beyond color

© AgriciDaniel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in skills/blog-chart of AgriciDaniel/claude-blog.

  • SKILL.md
  • scripts/generate_chart_svg.py

Open the folder on GitHubat commit 2500d4c

Compare with similar skills

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

Blog Chart compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Blog Chart this skillAgriciDaniel/claude-blog2.3k—~2.4kAutomated safety check: PassMIT
Blog ChartInfrasity-Labs/dev-gtm-claude-skills139—~2.1kAutomated safety check: PassMIT
Data-Dense Dashboard Designerplugin87/ux-ui-agent-skills1.6k—~2.6kAutomated safety check: PassMIT
React Component Documentationgetsentry/sentry46k—~3.6kAutomated safety check: PassCustom licence
Md Reviewborghei/Claude-Skills886—~3.8kAutomated safety check: PassMIT
Chakra UI v3 Builderchakra-ui/chakra-ui41k—~3.1kAutomated safety check: PassMIT

Similar skills

  • Blog Chart

    Infrasity-Labs/dev-gtm-claude-skills

    Generate dark-mode-compatible inline SVG data visualization charts for blog posts.

    139 GitHub stars~2.1k tokensUpdated 3 mo ago
    Frontend & DesignAuto-check passed
  • Data-Dense Dashboard Designer

    plugin87/ux-ui-agent-skills

    Lays out dense analytics or trading-terminal screens in banded sections with hand-drawn SVG charts, instead of a wall of identical stat cards.

    1.6k GitHub stars~2.6k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Official

    Create or update component documentation in Sentry's MDX stories format.

    46k GitHub stars~3.6k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Md Review

    borghei/Claude-Skills

    Pre-publication quality gate for authored Markdown — heading structure, on-disk link resolution, readability, accessibility, terminology.

    886 GitHub stars~3.8k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed
  • Chakra UI v3 Builder

    chakra-ui/chakra-ui

    Builds responsive, accessible Chakra UI v3 components and layouts, sets up Chakra in new or existing projects, and designs themes with tokens, semantic tokens and recipes.

    41k GitHub stars~3.1k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed
  • Visualizing Data

    ancoleman/ai-design-components

    Builds dashboards, reports, and data-driven interfaces requiring charts, graphs, or visual analytics.

    526 GitHub stars~2.4k tokensUpdated 10 mo ago
    Frontend & DesignAuto-check passed

More from AgriciDaniel/claude-blog

All 39 skills in this repo
  • Blog Google

    AgriciDaniel/claude-blog

    Google API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity…

    2.3k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check: notes
  • Blog Audio

    AgriciDaniel/claude-blog

    Generate audio narration of blog posts using Google Gemini TTS.

    2.3k GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check: notes
  • Blog Flow

    AgriciDaniel/claude-blog

    FLOW framework integration for bloggers. An agent skill from AgriciDaniel/claude-blog.

    2.3k GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed
  • Blog Notebooklm

    AgriciDaniel/claude-blog

    Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents.

    2.3k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check: warnings
  • Blog Image

    AgriciDaniel/claude-blog

    AI image generation and editing for blog content powered by Gemini via MCP.

    2.3k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Blog Cluster

    AgriciDaniel/claude-blog

    Semantic topic cluster planning and automated execution engine for claude-blog.

    2.3k GitHub starsUsed in 1 repo~4.9k tokens
    Auto-check passed

Questions about Blog Chart

What does Blog Chart do?

Generate dark-mode-compatible inline SVG data visualization charts for blog posts. Blog Chart is an agent skill from AgriciDaniel/claude-blog. Generate dark-mode-compatible inline SVG data visualization charts for blog posts.

When should I use Blog Chart?

Blog Chart fits situations like: user says blog chart; data visualization.

How do I install Blog Chart in Claude Code?

Run `npx skills add AgriciDaniel/claude-blog --skill blog-chart -a claude-code`. Or copy the skill folder (skills/blog-chart in AgriciDaniel/claude-blog) into .claude/skills/blog-chart in your project. Claude Code loads it when a task matches its description.

How do I install Blog Chart in Codex?

Run `npx skills add AgriciDaniel/claude-blog --skill blog-chart -a codex`. Or copy the skill folder (skills/blog-chart in AgriciDaniel/claude-blog) into .agents/skills/blog-chart in your project. Codex loads it when a task matches its description.

Can I use Blog Chart in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AgriciDaniel/claude-blog --skill blog-chart -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/blog-chart, .gemini/skills/blog-chart, .github/skills/blog-chart and .opencode/skills/blog-chart in your project.

What does Blog Chart need to run?

Going by SKILL.md and its folder, Blog Chart needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Blog Chart access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Blog Chart safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Blog Chart use?

Blog Chart is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Blog Chart use?

About 2.4k tokens (SKILL.md is roughly 9.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Blog Chart?

Skills that share tags, products or a category with Blog Chart: Blog Chart (Infrasity-Labs/dev-gtm-claude-skills, 139 stars), Data-Dense Dashboard Designer (plugin87/ux-ui-agent-skills, 1.6k stars), React Component Documentation (getsentry/sentry, 46k stars) and Md Review (borghei/Claude-Skills, 886 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Blog Chart?

AgriciDaniel (a GitHub user) maintains it in AgriciDaniel/claude-blog, which has 2,347 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 9, 2026.

Source: AgriciDaniel/claude-blog on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.