Turn the current work into one polished, self-contained HTML visual page — a recap of a branch's changes, a plan, a map of a folder, endpoint set, or architecture, or an interactive drill-down map of a skill pack or system (zoom, pan, click a node for details, double-click to open its inner view). Use when the user runs /visual or asks to visualise, picture, or visually recap a branch, PR, diff, plan, or part of a codebase, or to map a skill pack, its lanes, scripts, and hooks.
npx skills add https://github.com/EricTechPro/super-board --skill visual
One command, one page. You write a data.json; scripts/visual.py render injects it into assets/template.html, which draws everything inline (SVG diagrams, file map, diffs) with no build step and no runtime CDN. Paths below are relative to this skill's folder; run the script from inside the project being visualised.
An argument wins: /visual recap [base], /visual plan [file], /visual map [skills-dir or map.json], /visual <path or thing> (explore).
With no argument, run python3 scripts/visual.py detect and take the first that holds:
suggested is recap (branch ahead of base, or uncommitted changes) → recap.planCandidates is non-empty → plan, from the newest one.Say the chosen mode and its source in one line, then keep going.
python3 scripts/visual.py facts [--base REF], then read git diff <mergeBase> once, in order, taking notes; scope is the whole work unit of this conversation. Plan: read the plan and the real files it names. Explore: read the target; hand wide sweeps to a sub-agent.data.json in the scratchpad, following references/schema.md and the section bar in references/sections.md.python3 scripts/visual.py render data.json. It prints {"out", "bytes", "missingHunks", "check"} and opens the page. Fix each missing hunk (wrong path or contains) and re-render.render runs visual.py check in headless Chrome: light and dark screenshots (plus one drilled-in view for a map), and an audit of every diagram or view: edge crossings, edges sharing a line, labels lying on a line or a node, and text overflowing its box (check.counts). Exit 2 means a problem: move nodes (col/row, or a view layout), cut edges a view does not need, shorten labels, and re-render. Read the PNGs it lists; a broken diagram or empty section means fix and re-render. --no-check skips it; --shots DIR picks where the PNGs go.For a skill pack or any system with nested levels. The page is a clean flowchart, light first with a dark mode: one top bar (breadcrumbs, ⌘K search over nodes and views, theme, export, keys), a column browser of views on the left, the map in the middle, and a short details strip under it (header, then What · When · How · Links tabs). Wheel or pinch zooms, drag pans, the minimap moves the camera, a click opens the details, and double-click or Enter on a stacked node zooms into its inner view. Run-order views get swimlanes (Ask → Check → Fix → Finish …) when their parts name the phase. Breadcrumbs, Esc, and the browser back button go up; #view=<id>&node=<id> deep-links. On a phone the details become a bottom sheet.
python3 scripts/visual.py skillmap <skills-dir> --deep --out map.json reads SKILL.md frontmatter, families.json, /skill mentions, referenced scripts, and hooks/settings-snippet.json; --deep follows every external skill into the skills it triggers. Not a skill pack? Write map.json by hand.what, when, how, and real source — the panel shows all four, so none stays empty. Main steps first: keep process views to roughly four to six columns, set mainSteps: true, and move scripts, state, and policies into a step’s child view. Every original node stays reachable. Hub views keep comb connectors. Mark outside skills kind: external with author (GitHub login) and add authors; render embeds their avatars. Fix edges and give each view a short caption. references/schema.md § Map model is the contract.python3 scripts/visual.py render --map map.json. It searches each view for a crossing-free layout and bakes it into the page, then runs the check. Publishing the page (GitHub Pages)? Add --source-base https://github.com/OWNER/REPO/blob/main/ (and --source-root <dir> when the hosted repo is a subfolder) so Source links open the hosted file. Finish with steps 4–5 of Run it.+/-, and hunks come from git through render (hunks[].file + contains); hand-typed diff lines are for plan sketches only. Prose is the one free-text surface; label anything inferred as inferred.change flags on what moved. Columns follow the flow, rows hold peers..env values in every block (sk-•••)._tmp/<date>-visual/ when the repo ignores _tmp/, else .visual/ (self-ignoring). --out overrides.references/schema.md — the data.json contract, diagram layout, and the map model; open before writing data.references/sections.md — per-mode section list and quality bar; open before writing data.THIRD_PARTY_NOTICES.md — Adapted from BuilderIO/skills (MIT); diagram style and viewer UX from tt-a1i/archify (MIT).Take erictechpro/visual from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.