plugins/visual-explainer/SKILL.md
Generate self-contained HTML visual explanations for systems, code changes, plans, data, and technical concepts. Use for diagrams, architecture overviews, diff or plan reviews, project recaps, comparison tables, slide decks, and other visual explanations.
npx skillsauth add nicobailon/visual-explainer 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 pages that explain systems, code changes, plans, data, and technical concepts visually. Use this skill for diagram requests, architecture overviews, diff/plan reviews, project recaps, comparison tables, slide decks, and any visual explanation.
~/.agent/diagrams/ or the explicit eval output path. Use descriptive filenames.<name>.md beside <name>.html when possible, and ask before replacing an existing companion file.visual_explainer with prepare for planning/context and render only after the complete HTML document exists. MCP hosts use visual-explainer-mcp, which defaults render tools to open: false. Use viewer: "glimpse" only when the user wants a native Glimpse window and glimpseui is installed; viewer: "auto" may fall back to the browser.visual_explainer.render also adds missing html lang, missing viewport metadata, and display-math escaping for raw < / > inside $$...$$.Quick mode is opt-in. Use it only when --quick appears on /generate-web-diagram, /diff-review, /plan-review, or /project-recap. Default and all other prompt behavior remains full HTML generation.
For quick mode, read ./quick/README.md and ./quick/schema.json. Gather and verify the same source facts as full mode, but emit the compact JSON spec. In Pi, call the existing visual_explainer tool with action: "render_quick", filename, spec, and optional open or viewer. In other harnesses, save the JSON and call the local ./quick/render.mjs script. The renderer validates the spec and creates the complete HTML document.
Quick mode is not suitable for custom visual composition, slides, Mermaid-rich topology, or content that the schema cannot express. If it is not a fit, schema validation fails, or rendering errors, fall back to the normal full HTML workflow and render action. Do not use quick mode for slides, fact-check, visual plans, PPTX, themes, or updates.
Before writing any HTML:
#0f172a, indigo, Inter, hero plus three cards. Revised for a CLI recap: near-black green, phosphor text, amber accent, JetBrains Mono — terminal direction, layout follows the release timeline.)Read only the references needed for the current output:
| Need | Read |
|---|---|
| Text-heavy architecture/cards | ./templates/architecture.html |
| Mermaid flowcharts, sequence, ER, state, class, C4, data flow | ./templates/mermaid-flowchart.html, Mermaid sections in ./references/libraries.md |
| Data tables, comparisons, audits | ./templates/data-table.html |
| Slide decks | ./templates/slide-deck.html, ./references/slide-patterns.md |
| CSS layout, type scale, overflow, depth, collapsibles, SVG connectors, generated images | ./references/css-patterns.md |
| Pages with 4+ major sections | ./references/responsive-nav.md |
| Switchable themes or fonts, or a named palette (Dracula, Nord, Gruvbox…) | ./references/themes.md |
| Prose-heavy pages | “Prose Page Elements” in css-patterns.md, typography sections in libraries.md |
| Content | Default representation |
|---|---|
| Flowchart, pipeline, state machine, decision tree | Mermaid |
| Sequence, ER/schema, class, C4, topology-focused architecture | Mermaid |
| Text-heavy architecture, module internals, implementation plans | CSS grid cards, optionally with a Mermaid overview |
| 15+ element architecture | Hybrid: small Mermaid overview + CSS detail cards |
| Comparison/audit/status matrix | Semantic HTML <table> |
| Timeline/roadmap | CSS timeline |
| Dashboard/metrics | CSS grid + charts/KPIs |
| Slide deck | 100dvh slides using slide template patterns |
What to draw, before how:
writes, invalidates, polls every 30s); an unlabeled arrow only says "related somehow".How to render:
theme: 'base' with custom themeVariables matching the page palette.<pre class="mermaid">.diagram-shell pattern from templates/mermaid-flowchart.html: .diagram-shell > .mermaid-wrap > .zoom-controls + .mermaid-viewport > .mermaid-canvas.flowchart TD for complex diagrams. Use LR only for simple 3–4 node linear flows.<br/> in quoted flowchart labels. Do not use escaped \n labels..node; Mermaid uses it internally. Use namespaced page classes such as .ve-card.<table>, headings, lists, <details>, captions.--bg, --surface, --border, --text, --text-dim, and 3–5 accents.:root, the prefers-color-scheme media query redefines tokens only, components styled through tokens. Pick the second theme's values; never invert. Single-theme is fine when deliberate (one-shot pages, quick mode, themes.md picker)../references/themes.md.#8b5cf6, #7c3aed, #a78bfa, #d946ef); no cyan+magenta+purple neon dashboard; no gradient-mesh blobs; no purple-to-blue gradient heroes, emoji section markers, centered-everything layouts, uniform large border-radius, or default accent bars on rounded cards.text-wrap: balance on headings, letter-spacing on uppercase labels.html { font-size: 16px } (choose a value in the 16–18px range) and express ordinary page text in rem, so a single line rescales the page. Minimum effective sizes at the chosen root: body/reading text ≥ 14px, secondary text and labels ≥ 11px, code/mono ≥ 12px. Never hard-code reading text below 14px in px — dense all-px scales render as unreadable dashboards. Mermaid SVG labels remain in px because Mermaid sizes them through configuration. Slide decks are a deliberate exception: preserve their viewport-responsive clamp(...px, ...vw, ...px) typography and autoFit() runtime fitting from slide-patterns.md and slide-deck.html; do not force slide styles into rem. Reference snippets and templates demonstrate structure; re-scale ordinary page px values when copying them.gap, not collapsing margins; tabular-nums where digits align in columns; watch specificity so classes do not silently cancel each other's spacing.min-width: 0 on grid/flex children, overflow-wrap: break-word for long text, and scroll containers for wide tables/code.display: flex directly on <li> when list markers matter.prefers-reduced-motion. Do not use continuous glow, pulse, or breathing effects on static content.Use slides only when explicitly requested or when a command asks for slides. Slides are a different medium, not a paginated article. If the user explicitly asks for PPTX or passes --pptx to /generate-slides, generate the HTML deck first, then use the best-effort static exporter in ./pptx/export.mjs or the visual-explainer-pptx binary when package or checkout dependencies are available. If they are not available, deliver the HTML deck and explain the missing export dependency path. State that HTML remains the source of truth and PPTX does not preserve animations, reader navigation, responsive layout, custom fonts, live Mermaid/Chart.js/SVG/canvas rendering, or JavaScript behavior.
Slides rules:
100dvh viewport budget with no page-level scrolling. The template's overflow: hidden can clip excess content silently, so enable prefers-reduced-motion: reduce at target and short landscape heights, then fix every vertical-overflow or autoFit() warning before delivery.slide-deck.html: prev/next controls, slide count with reading percent, keyboard navigation, expandable reader rail, outline/help overlays, #slide-N deep links, and resume state.slide-patterns.md: Title, Section Divider, Content, Split, Diagram, Dashboard, Table, Code, Quote, Full-Bleed.If surf is available, generated images may be embedded as base64 for hero banners, conceptual illustrations, or educational visuals. Skip images for data-heavy, structural, or Mermaid/CSS-suitable content. Pages must stand on CSS, typography, and diagrams without images.
Before delivery, verify:
<figure> with a claim-stating figcaption, plus role="img" and a matching aria-label on the shell wrapper, not the Mermaid SVG (re-renders replace it);diagram-shell with zoom/pan/expand;.pptx was generated after the HTML deck and its fidelity limits were stated;clamp() typography and autoFit() runtime fitting;development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.