visual-explainer
npx skills add https://github.com/jamditis/claude-skills-journalism --skill visual-explainer
Agent 安装分布
Skill 文档
Visual explainer
Generate self-contained HTML files for technical diagrams and data visualizations. Always open the result in the browser. Never fall back to ASCII art when this skill is loaded.
Proactive table rendering: When about to output a table with 4+ rows or 3+ columns, render it as styled HTML instead of ASCII. Open in browser.
Workflow
1. Think (5 seconds, not 5 minutes)
- Audience: Developer? Editor? Reporter? PM? Public reader?
- Diagram type: Pick from the routing table below.
- Aesthetic direction: Pick one that fits. Don’t default to the same look every time.
- Monochrome terminal
- Editorial broadsheet
- Blueprint / technical
- Neon dashboard
- Paper and ink
- Hand-drawn sketch
- IDE-inspired
- Data-dense / wire service
- Gradient mesh
- Newsroom board (cork/pushpin)
- Investigation wall (red string)
- Magazine feature
- Academic / research paper
The swap test: If you replaced your styling with a generic dark theme and nobody would notice the difference, you haven’t designed anything. Push further.
2. Structure
Read reference templates before generating:
./templates/architecture.htmlâ text-heavy architecture / editorial structure./templates/mermaid-flowchart.htmlâ flowcharts, sequences, diagrams./templates/data-table.htmlâ data tables, audits, comparisons
Read ./references/css-patterns.md for CSS and layout patterns.
Read ./references/responsive-nav.md for multi-section pages with sticky navigation.
Read ./references/libraries.md for Mermaid theming, Chart.js, anime.js, and font pairings.
Rendering approach by diagram type
| Type | Approach | Rationale |
|---|---|---|
| Architecture (text-heavy) | CSS Grid cards + flow arrows | Rich card content needs CSS control |
| Architecture (topology) | Mermaid | Connections need auto edge routing |
| Flowchart / pipeline | Mermaid | Auto node positioning and edge routing |
| Sequence diagram | Mermaid | Lifelines and activation boxes need layout |
| Data flow | Mermaid with edge labels | Connections and data descriptions |
| ER / schema | Mermaid | Relationship lines need auto-routing |
| State machine | Mermaid | State transitions with labeled edges |
| Mind map | Mermaid | Hierarchical branching positioning |
| Data table / comparison | HTML <table> |
Semantic markup and accessibility |
| Timeline / chronology | CSS (central line + cards) | Simple linear layout |
| Dashboard / metrics | CSS Grid + Chart.js | Card grid with embedded charts |
| Source network | Mermaid or CSS Grid | Map relationships between sources |
| Editorial workflow | Mermaid flowchart | Story lifecycle from pitch to publish |
| Investigation map | CSS Grid cards + Mermaid | Connect entities, documents, events |
| Story structure | CSS Grid | Visualize narrative arc and sections |
Mermaid theming
- Use
theme: 'base'with customthemeVariablesâ built-in themes ignore most overrides. - Use
look: 'handDrawn'for sketch aesthetic,look: 'classic'for clean. - Use
layout: 'elk'for complex graphs (requires@mermaid-js/layout-elkCDN import). - Always include zoom controls (+/â/reset buttons) on
.mermaid-wrapcontainers. - Support Ctrl/Cmd+scroll zoom and click-and-drag panning.
3. Style
Typography: Pick a distinctive font pairing from Google Fonts (display/heading + mono or body). Never use Inter, Roboto, Arial, or system-ui as primary. For editorial contexts, serif display fonts work well (Playfair Display, Libre Baskerville, Source Serif Pro). Load via <link> in <head>. Include system font fallback.
Color: Use CSS custom properties. Define minimum: --bg, --surface, --border, --text, --text-dim, plus 3â5 accent colors (each with full and dim variant). Name semantically. Support both themes:
/* Light-first */
:root { /* light values */ }
@media (prefers-color-scheme: dark) { :root { /* dark values */ } }
/* Dark-first */
:root { /* dark values */ }
@media (prefers-color-scheme: light) { :root { /* light values */ } }
Surfaces: Build depth through subtle lightness shifts (2â4% between levels), not dramatic color. Borders should be low-opacity rgba (rgba(255,255,255,0.08) dark, rgba(0,0,0,0.08) light).
Backgrounds: Don’t use flat solid colors. Use subtle gradients, faint grid patterns via CSS, or gentle radial glows.
Visual weight: Not every section deserves equal treatment. Executive summaries and key metrics dominate viewport. Reference sections stay compact. Use <details>/<summary> for useful but non-primary content.
Surface depth: Vary card depth to signal importance:
- Hero sections: elevated shadows, accent-tinted backgrounds (
node--hero) - Body content: flat default (
.node) - Secondary content: recessed feeling (
node--recessed)
Animation: Staggered fade-ins on page load almost always worth it. Mix animation types by role:
fadeUpfor cardsfadeScalefor KPIs and badgesdrawInfor SVG connectorscountUpfor hero numbers
Always respect prefers-reduced-motion. Use CSS transitions and keyframes primarily. For orchestrated sequences, anime.js via CDN is available.
Accessibility: All generated pages must meet WCAG 2.1 AA minimum. This means:
- Color contrast ratios: 4.5:1 for text, 3:1 for large text and UI components
- Status indicators use shape/text alongside color (never color alone)
- Tables have proper
<thead>,<th scope>, and<caption>elements - Charts include data table alternatives
- Focus indicators visible for keyboard navigation
- Language declared in
<html lang="en">
4. Deliver
Output location: ~/.agent/diagrams/
Filename: Descriptive, based on content. Examples: authentication-flow.html, source-network.html, budget-analysis.html, editorial-pipeline.html.
Open in browser:
- macOS:
open ~/.agent/diagrams/filename.html - Linux:
xdg-open ~/.agent/diagrams/filename.html
Tell user the file path.
Diagram types â detail
Architecture / system diagrams
Text-heavy overviews: CSS Grid with explicit placement, rounded cards, colored borders, monospace labels, vertical flow arrows. Good for newsroom systems, CMS architecture, data pipeline overviews.
Topology-focused: Mermaid with auto edge routing. Good for showing how systems connect.
Flowcharts / pipelines
Mermaid. Use graph TD (top-down) or graph LR (left-right). Use look: 'handDrawn' for sketch. Color-code nodes via classDef or themeVariables. Good for editorial workflows (pitch â assign â draft â edit â publish), FOIA request processes, verification workflows.
Sequence diagrams
Mermaid sequenceDiagram. Lifelines, messages, activation boxes, notes, loops with auto layout. Good for showing interaction between reporters, editors, sources, and systems.
Data tables / comparisons / audits
Real <table> HTML element for semantic markup and accessibility. Use proactively for any structured rows/columns.
Layout patterns:
- Sticky
<thead> - Alternating row backgrounds via
tr:nth-child(even)(2â3% lightness shift) - First column optionally sticky for wide tables
- Responsive wrapper with
overflow-x: auto - Column width hints via
<colgroup>orthwidths - Row hover highlight
Status indicators (styled <span>, never emoji):
- Match/pass/yes: colored dot or checkmark with green background
- Gap/fail/no: colored dot or cross with red background
- Partial/warning: amber indicator
- Neutral/info: dim text or muted badge
Cell content:
- Wrap long text naturally
- Use
<code>for technical references - Secondary detail in
<small>with dimmed color - Right-align numeric columns with
tabular-nums
Timeline / chronology
Vertical or horizontal timeline with central line (CSS pseudo-element). Phase markers as circles. Content cards branching left/right (alternating) or one side. Date labels on line. Color progression from past (muted) to future (vivid). Good for investigation timelines, event chronologies, project histories.
Dashboard / metrics overview
Card grid layout. Hero numbers large and prominent. Sparklines via inline SVG <polyline>. Progress bars via CSS linear-gradient. For real charts use Chart.js via CDN. KPI cards with trend indicators (up/down arrows, percentage deltas). Good for newsroom analytics, grant reporting dashboards, audience metrics.
Source network
Map relationships between sources in an investigation or story. Can use Mermaid for connection-heavy maps or CSS Grid cards for detail-heavy source profiles. Include: source name, role, credibility indicators, what they provided, cross-references to other sources.
Investigation map
Connect entities (people, organizations, documents, events) with visual links. CSS Grid cards for entity profiles, Mermaid for relationship diagrams. Color-code by entity type. Show strength of connections. Good for investigative reporting, following the money, mapping power structures.
Editorial workflow
Mermaid flowchart showing story lifecycle: pitch â assign â research â draft â edit â legal review â publish â distribute. Color-code stages. Show decision gates (kill/revise/approve). Include role labels on transitions.
Story structure
CSS Grid visualization of narrative arc. Show sections, word counts, source distribution, multimedia placement. Good for planning longform features or reviewing story architecture before publication.
File structure
Every diagram is a single self-contained .html file. No external assets except CDN links.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Descriptive Title</title>
<link href="https://fonts.googleapis.com/css2?family=...&display=swap" rel="stylesheet">
<style>
/* CSS custom properties, theme, layout, components â all inline */
</style>
</head>
<body>
<!-- Semantic HTML: sections, headings, lists, tables, inline SVG -->
<!-- Optional: <script> for Mermaid, Chart.js, or anime.js when used -->
</body>
</html>
Quality checks
Before delivery, verify:
- The squint test: Blur eyes. Can you still perceive hierarchy? Sections visually distinct?
- The swap test: Would generic dark theme replacement make this indistinguishable from template? If yes, push aesthetic further.
- Both themes: Toggle OS light/dark. Both should look intentional.
- Information completeness: Does diagram convey what user asked for?
- No overflow: Resize browser to different widths. No clipping. Every grid/flex child needs
min-width: 0. Avoiddisplay: flexon<li>for markers (use absolute positioning instead). See overflow protection in./references/css-patterns.md. - Mermaid zoom controls: Every
.mermaid-wrapneeds +/â/reset buttons, Ctrl/Cmd+scroll zoom, click-and-drag panning. Cursor changes tograb/grabbing. - Accessibility: Color contrast passes. Status indicators don’t rely on color alone. Tables have proper semantic markup.
- File opens cleanly: No console errors, no broken fonts, no layout shifts.
Related skills
- data-journalism â data analysis and storytelling
- accessibility-compliance â WCAG compliance, accessible charts
- zero-build-frontend â CDN patterns, React via esm.sh, Leaflet maps
- pdf-design â print-ready documents with brand system
- source-verification â SIFT method, verification trails
- editorial-workflow â assignment tracking, deadline management
Adapted from nicobailon/visual-explainer (MIT) with design principles from Anthropic’s frontend-design skill. Tailored for journalism, media, and academic workflows.