← ClaudeAtlas

visual-plannerlisted

Use after a PLAN.md is written, when you want to review it visually before execution (auto-invoked by /writing-plans; also standalone as /visual-planner <slug>). Renders specs/<slug>/PLAN.md to a self-contained HTML page; optional --review mode overlays graph-derived blast-radius and risk.
minhtran3124/agent-harness · ★ 3 · AI & Automation · score 62
Install: claude install-skill minhtran3124/agent-harness
# Plan → HTML Renderer ## Purpose Render a single `specs/<slug>/PLAN.md` into a modern, self-contained `specs/<slug>/PLAN.html` so a reviewer can visually scan waves, tasks, and per-task scope without parsing raw XML or markdown. Output is **local-only** — `PLAN.html` stays untracked (gitignored as a derived artifact) next to its source in `specs/` (which is tracked). ## How it works (deterministic script, not LLM transcription) Rendering is done by `render_plan.py`, **not** by emitting HTML token-by-token. The skill's only job is to run the script and relay its report: ```bash python3 .claude/skills/visual-planner/render_plan.py <path-or-slug> [output.html] ``` Run from repo root (the script also locates `specs/` relative to its own path as a fallback). Two files own the behavior: | File | Role | |---|---| | `render_plan.py` | Parser + builder + self-check. The source of truth for parsing rules. | | `template.html` | The visual template (CSS/JS/layout) with `{{PLACEHOLDER}}` slots. Edit this to change styling — never regenerate it by hand. | | `view_plan.py` | Serves/opens the rendered `PLAN.html` and launches Chrome. Auto-renders if missing/stale. See "Viewing the plan" below. | This split is intentional. Asking the model to transcribe a ~340-line template verbatim each run is both expensive (output tokens) and the *least* deterministic part of the pipeline. A script makes the fill free and byte-for-byte reproducible. (See `CLAUDE.local.md` §8 — "if code can answer