skills/visual-explainer/SKILL.md
Generate self-contained HTML pages that visually explain systems, data stories, investigations, editorial workflows, and code changes. Use when the user asks for diagrams, architecture views, visual diffs, data tables, timelines, source maps, or any structured visualization that would be painful to read as terminal output. Also activates for tables with 4+ rows or 3+ columns. Adapted from nicobailon/visual-explainer with journalism, newsroom, and academic design sensibilities.
npx skillsauth add alenazaharovaux/share visual-explainerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
Read config.md from this skill's directory. If it doesn't exist, ask the user:
~/.agent/diagrams)Write answers to config.md in this format:
output_dir: /path/to/output
language: communicate in [language]
Each question can be skipped — defaults will be used.
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.
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, comparisonsRead ./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.
| 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 |
theme: 'base' with custom themeVariables — built-in themes ignore most overrides.look: 'handDrawn' for sketch aesthetic, look: 'classic' for clean.layout: 'elk' for complex graphs (requires @mermaid-js/layout-elk CDN import)..mermaid-wrap containers.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:
node--hero).node)node--recessed)Animation: Staggered fade-ins on page load almost always worth it. Mix animation types by role:
fadeUp for cardsfadeScale for KPIs and badgesdrawIn for SVG connectorscountUp for hero numbersAlways 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:
<thead>, <th scope>, and <caption> elements<html lang="en">Output location: Read output_dir from config.md. Default: ~/.agent/diagrams/
Filename: Descriptive, based on content. Examples: authentication-flow.html, source-network.html, budget-analysis.html, editorial-pipeline.html.
Open in browser:
open [output_dir]/filename.htmlxdg-open [output_dir]/filename.htmlstart [output_dir]/filename.htmlTell user the file path.
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.
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.
Mermaid sequenceDiagram. Lifelines, messages, activation boxes, notes, loops with auto layout. Good for showing interaction between reporters, editors, sources, and systems.
Real <table> HTML element for semantic markup and accessibility. Use proactively for any structured rows/columns.
Layout patterns:
<thead>tr:nth-child(even) (2–3% lightness shift)overflow-x: auto<colgroup> or th widthsStatus indicators (styled <span>, never emoji):
Cell content:
<code> for technical references<small> with dimmed colortabular-numsVertical 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.
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.
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.
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.
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.
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.
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>
Before delivery, verify:
min-width: 0. Avoid display: flex on <li> for markers (use absolute positioning instead). See overflow protection in ./references/css-patterns.md..mermaid-wrap needs +/−/reset buttons, Ctrl/Cmd+scroll zoom, click-and-drag panning. Cursor changes to grab/grabbing.Adapted from nicobailon/visual-explainer (MIT License) Extended with journalism, newsroom, and academic design sensibilities by Alena Zakharova Published in alenazaharovaux/share
development
Full product-market fit cycle for one product — from initial hypothesis to post-launch metrics. 10 stages: setup → hypothesis (7 dimensions) → market research → risk synthesis → DVF validation → interview prep → field → interview synthesis → MVP → metrics (Sean Ellis + retention + Levels of PMF) → iterate. Resumes between sessions based on the project folder state. Bilingual (English + Russian) — picks the language during first-run setup. TRIGGER on ANY: - "do PMF for [product]" / "I need product market fit for X" / "PMF [name]" - "start PMF cycle" / "I want to go through PMF" / "help me validate [idea]" - "continue PMF" / "continue PMF [name]" - "check PMF" / "what stage is my PMF at" / "show my PMF projects" - "is my product ready to launch" - "сделай PMF для [продукта]" / "нужен product market fit для X" / "PMF [имя]" - "запусти PMF цикл" / "хочу пройти PMF" / "помоги валидировать [идею]" - "продолжаем PMF" / "продолжай PMF [имя]" - "проверь PMF" / "на каком этапе у меня PMF" / "покажи мои PMF проекты" - "готов ли мой продукт к запуску" - User mentions a product and wants to validate it systematically
testing
Use when choosing a narrative strategy before writing any text — articles, pitches, essays, reports, personal posts. Also use mid-writing to check tone, get next-block guidance, or shift narrative. Triggers: «writing guru», «подбери нарратив», «какой нарратив выбрать», «нарративная стратегия», «narrative strategy», «guru, проверь фрагмент», «guru, что дальше», «guru, хочу сменить тональность».
development
Run a full UX audit on any website: Nielsen heuristics, conversion, content, technical quality, information architecture. Produces a prioritized report with evidence-based findings and actionable recommendations. Use when asked to review a site, check a landing page, find UX problems, evaluate usability, assess conversion, or anything like "what's wrong with this site", "review the website", "audit UX", "check the forms", "why isn't the site converting".
development
Triages findings from Telegram, articles, posts, YouTube videos — explains the gist in plain language, maps to user's current projects, and recommends an action. Use this skill when the user shares a post, link (GitHub, website, YouTube), screenshot, or file (.md, .txt) and wants to understand if it's useful. Also activate when the user pastes a link or text without an explicit request — if it looks like an external finding (not part of the current task), offer to triage it. Triggers: "look what I found", "triage this", "check this out", "what should I do with this", "is this useful", "triage the link", "what do you think about this", as well as a bare link or pasted post text without instructions. Second mode: "review my ideas", "what's in the ideas folder" — review saved ideas.