Agent skill

Visualize Plan

by yonatangross in yonatangross/orchestkit

Renders planned changes — architecture and before/after comparisons, risk heat maps, execution order, dependency graphs, impact metrics — in your chosen output format (ASCII + emojis, an interactive…

MITAuto-check: notesAgent Workflows

Install Visualize Plan

skills CLI
$ npx skills add yonatangross/orchestkit --skill visualize-plan -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install yonatangross/orchestkit visualize-plan --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/visualize-plan .claude/skills/visualize-plan && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
visualize-plan
GitHub stars
288
Token cost
~6.2k tokens
SKILL.md length
2,002 words
Files
26 (incl. scripts, references, assets)
Skills in repo
107
Repo updated
First seen
Licence
MIT

At a glance

Renders planned changes — architecture and before/after comparisons, risk heat maps, execution order, dependency graphs, impact metrics — in your chosen output format (ASCII + emojis, an interactive…

  • Works in 7 steps: Detect or Clarify Plan Context → 5: Probe Formats (silent — no question… → Gather Data → …
  • Reviewing implementation plans
  • SKILL.md covers Argument Resolution, Question budget: ZERO before…, CRITICAL: Task Tracking and STEP -1: Check Memory for…, plus 16 more sections
  • Calls bash and git; needs PLAN_TOKEN

What it does

Visualize Plan is an agent skill from yonatangross/orchestkit. Renders planned changes — architecture and before/after comparisons, risk heat maps, execution order, dependency graphs, impact metrics — in your chosen output format (ASCII + emojis, an interactive HTML playground, or a NotebookLM infographic). Stores visualizations in memory for cross-session reference. Use when reviewing implementation plans, comparing approaches, assessing risk, or analyzing change propagation.

Its SKILL.md is about 6.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 28 other files, including scripts, reference files and assets (for example `assets/impact-dashboard.md`, `assets/plan-report.md` and `assets/tier1-header.md`). Compatibility notes: Claude Code 2.1.277+.

It sits in Agent Workflows, covering HTML artifacts, Planning and Session handoff. It works with NotebookLM. The repository describes itself as: The Complete AI Development Toolkit for Claude Code. 106 skills, 36 agents, 171 hooks. Install ork for stable (v9.x), or ork-alpha for the v10 line, which ships daily. The licence is MIT.

When your agent uses it

  • Reviewing implementation plans
  • Comparing approaches
  • Analyzing change propagation

Example prompts

  • “Use the visualize-plan skill to render planned changes — architecture and before/after comparisons, risk heat maps, execution order, dependency…”
  • “/visualize-plan”

Requirements

  • Python 3
  • A credential in PLAN_TOKEN
  • Compatibility (from SKILL.md): Claude Code 2.1.277+.
  • Pre-approved tools (allowed-tools): Read, Grep, Glob, Agent, TaskCreate, TaskUpdate, AskUserQuestion, Bash, Write, mcp__memory__search_nodes, mcp__memory__create_entities, ToolSearch, mcp__notebooklm-mcp__studio_create

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Detect or Clarify Plan Context
  2. 5: Probe Formats (silent — no question here)
  3. Gather Data
  4. Render Tier 1 Header (Always)
  5. Select Sections (no question — default to all)
  6. Render Requested Sections
  7. Offer Actions — the ONE question

What it can do on your machine

Read from SKILL.md and the folder at commit 1f8d8f3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Grep
    • Glob
    • Agent
    • TaskCreate
    • TaskUpdate
    • AskUserQuestion
    • Bash
    • Write
    • mcp__memory__search_nodes

    …and 3 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/, which the agent can run.

    Shell commands in SKILL.md call:

    • bash
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • PLAN_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Claude Code 2.1.277+.

    From compatibility in the SKILL.md frontmatter.

Context cost

Visualize Plan loads about 6.2k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 108 tokens; SKILL.md has 2,002 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~108
When it runs · the whole SKILL.md, loaded when a task matches
~6.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~17k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Grep, Glob, Agent, TaskCreate, TaskUpdate, AskUserQuestion, Bash, Write, mcp__memory__search_n

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from yonatangross/orchestkit at commit 1f8d8f3, republished under its MIT licence (© yonatangross). 2,002 words, ~6,205 tokens.

Download SKILL.mdSave it as .claude/skills/visualize-plan/SKILL.md (or your agent's skills folder). This skill also uses 25 other files; get the full folder from GitHub.
name
visualize-plan
description
Renders planned changes — architecture and before/after comparisons, risk heat maps, execution order, dependency graphs, impact metrics — in your chosen output format (ASCII + emojis, an interactive HTML playground, or a NotebookLM infographic). Stores visualizations in memory for cross-session reference. Use when reviewing implementation plans, comparing approaches, assessing risk, or analyzing change propagation.
allowed-tools
Read, Grep, Glob, Agent, TaskCreate, TaskUpdate, AskUserQuestion, Bash, Write, mcp__memory__search_nodes, mcp__memory__create_entities, ToolSearch, mcp__notebooklm-mcp__studio_create
compatibility
Claude Code 2.1.277+.
license
MIT
argument-hint
[plan-or-issue]
context
fork
background
false
agent
workflow-architect
model
sonnet
user-invocable
true
skills
glyph, explore, architecture-decision-record, memory, remember, page-serve
metadata.category
document-asset-creation
metadata.mcp-server
memory

Plan Visualization

Render planned changes as structured ASCII visualizations with risk analysis, execution order, and impact metrics. Every section answers a specific reviewer question.

Core principle: Encode judgment into visualization, not decoration.

bash
visualize-plan                          # Auto-detect from current branch
visualize-plan billing module redesign  # Describe the plan
visualize-plan #234                     # Pull from GitHub issue
visualize-plan --quick                  # Header + changes + impact, zero questions
visualize-plan --playground             # Skip straight to the HTML dashboard
visualize-plan --infographic            # Skip straight to NotebookLM

Argument Resolution

python
PLAN_INPUT = "$ARGUMENTS"    # Full argument string
PLAN_TOKEN = "$ARGUMENTS[0]" # First token — could be issue "#234" or plan description
# If starts with "#", treat as GitHub issue number. Otherwise, plan description.
# $ARGUMENTS (full string) for multi-word descriptions (CC 2.1.59 indexed access)

# Flags are stripped from PLAN_INPUT before it is used as a description:
#   --quick        → QUICK=true: tier-1 header + [1] Changes + [5] Impact, no Explore
#                    agent, no questions at all, no memory write. The 15-second answer.
#   --playground   → FORMATS=[ascii, playground]      (no format question)
#   --infographic  → FORMATS=[ascii, infographic]     (no format question)
#   --all          → FORMATS=[ascii, + everything the probe found]

Question budget: ZERO before the first render

This skill used to ask three blocking questions (source, then format, then sections) before a single character rendered, plus a fourth after. That is why fast paths leaked to glyph and to hand-written HTML.

The format answer is not needed to render ASCII — the ASCII floor rule renders it first regardless of what the user picks. So asking up front buys nothing and costs a round-trip. The rule now:

DecisionWhenHow
SourcebeforeAuto-detect. Ask only if detection is genuinely ambiguous (STEP 0).
SectionsneverDefault to all. The tier-1 header is the progressive-disclosure layer.
Formatafter ASCIIOne post-render question (STEP 5), merged with drill-deeper.

--quick skips even that one.

Budget: at most 1 Explore agent and one post-render question (STEP 5); stop and report at the finish line or the first cap, whichever comes first.


CRITICAL: Task Tracking

--quick skips this whole block. A 15-second render does not need a dependency graph; the task overhead would cost more than the work.

python
# 1. Create main task IMMEDIATELY
TaskCreate(subject="Visualize plan: {PLAN_INPUT}", description="Plan visualization with ASCII rendering", activeForm="Analyzing plan context")

# 2. Create subtasks for each phase
TaskCreate(subject="Detect or clarify plan context", activeForm="Detecting plan context")          # id=2
TaskCreate(subject="Gather data and explore architecture", activeForm="Gathering plan data")       # id=3
TaskCreate(subject="Render tier 1 header", activeForm="Rendering header")                          # id=4
TaskCreate(subject="Render sections + dispatch to chosen format(s)", activeForm="Rendering sections") # id=5
TaskCreate(subject="Offer actions and store in memory", activeForm="Finalizing visualization")     # id=6

# 3. Set dependencies for sequential phases
TaskUpdate(taskId="3", addBlockedBy=["2"])  # Data gathering needs context first
TaskUpdate(taskId="4", addBlockedBy=["3"])  # Header needs gathered data
TaskUpdate(taskId="5", addBlockedBy=["4"])  # Sections need header rendered
TaskUpdate(taskId="6", addBlockedBy=["5"])  # Actions need sections done

# 4. Update status as you progress
TaskUpdate(taskId="2", status="in_progress")  # When starting
TaskUpdate(taskId="2", status="completed")    # When done — repeat for each subtask

STEP -1: Check Memory for Prior Plans

python
# Search for related prior visualizations
mcp__memory__search_nodes(query="plan visualization {PLAN_INPUT}")
# If found, offer to compare with previous plan

STEP 0: Detect or Clarify Plan Context

First, attempt auto-detection by running scripts/detect-plan-context.sh:

bash
bash "$SKILL_DIR/scripts/detect-plan-context.sh"

This outputs branch name, issue number (if any), commit count, and file change summary.

If auto-detection finds a clear plan (branch with commits diverging from main, or issue number in args), proceed to Step 1.

If ambiguous, clarify with AskUserQuestion:

python
AskUserQuestion(
  questions=[{
    "question": "What should I visualize?",
    "header": "Source",
    "options": [
      {"label": "Current branch changes (Recommended)", "description": "Auto-detect from git diff against main"},
      {"label": "Describe the plan", "description": "I'll explain what I'm planning to change"},
      {"label": "GitHub issue", "description": "Pull plan from a specific issue number"},
      {"label": "Quick file diff only", "description": "Just show the change manifest, skip analysis"}
    ],
    "multiSelect": false
  }]
)

STEP 0.5: Probe Formats (silent — no question here)

Probe capabilities now so STEP 5 can offer only what will actually work. Do not ask anything at this step. Full procedure: Read("references/format-dispatch.md").

Use the established MCP-probe pattern — Read("${CLAUDE_PLUGIN_ROOT}/skills/chain-patterns/references/mcp-detection.md") — not ad-hoc checks:

python
# infographic is available IFF the notebooklm studio tool resolves:
ToolSearch(query="select:mcp__notebooklm-mcp__studio_create")
# chart-encoding is available IFF the bundled /dataviz skill resolves
# (CC >= 2.1.198, disableBundledSkills off). It is a MARK-layer upgrade
# applied WITHIN a format, not a 4th format — see chart-encoding-standard.md.

Record what is available as AVAILABLE: ascii always (the floor); playground if the playground skill is installed (ships with ork); infographic if studio_create resolved above (server reachable + nlm login done). Orthogonally, if the /dataviz skill resolved, upgrade the chart marks in the non-ASCII formats via its form-heuristic + validated palette; if it did not resolve, charts stay ASCII-card — dataviz is never required.

FORMATS is then set without asking:

python
if   "--quick" in flags:        FORMATS = ["ascii"]              # and STEP 5 is skipped too
elif "--playground" in flags:   FORMATS = ["ascii", "playground"]
elif "--infographic" in flags:  FORMATS = ["ascii", "infographic"]
elif "--all" in flags:          FORMATS = AVAILABLE
else:                           FORMATS = ["ascii"]              # upgrade offered in STEP 5

ASCII floor rule: ASCII renders first/inline regardless — and because it never depends on the format choice, the choice is deferred to STEP 5 where it costs nothing. Never await the async NotebookLM job.


STEP 1: Gather Data

Run scripts/analyze-impact.sh for precise counts:

bash
bash "$SKILL_DIR/scripts/analyze-impact.sh"

This produces: files by action (add/modify/delete), line counts, test files affected, and dependency changes.

--quick stops here — the impact script alone feeds the header, [1] Changes, and [5] Impact. No Explore agent, no before/after map, no memory write.

For architecture-level understanding and the default before/after section [0], spawn an Explore agent that maps the component graph at BOTH the base and the head:

python
Agent(
  subagent_type="Explore",
  prompt="Map component architecture of {affected_directories} at TWO points: (a) base = each file as returned by `git show origin/main:<path>` (NOT the working tree, to avoid conflating uncommitted edits), (b) head = current working tree. Return per point: components, dependencies, data flows; mark what is added [+], removed [-], or changed [~] between them. Use the glyph skill for diagrams.",
  model="haiku",
  max_turns=15
)

If the diff touches frontend (*.tsx/*.css/route files), also run a design-context-extract pass so the design surface is part of before/after. Patterns: Read("references/before-after-arch-patterns.md").

Build a compact plan brief (markdown) from this data — the single interchange every non-ASCII format consumes (see format-dispatch.md).


STEP 2: Render Tier 1 Header (Always)

Use assets/tier1-header.md template. Load Read("references/visualization-tiers.md") for field computation (risk level, confidence, reversibility).

PLAN: {plan_name} ({issue_ref})  |  {phase_count} phases  |  {file_count} files  |  +{added} -{removed} lines
Risk: {risk_level}  |  Confidence: {confidence}  |  Reversible until {last_safe_phase}
Branch: {branch} -> {base_branch}

[0] Before/After  [1] Changes  [2] Execution  [3] Risks  [4] Decisions  [5] Impact  [all]

STEP 3: Select Sections (no question — default to all)

Render all six sections. They are the content; asking which ones to render is asking the reviewer to choose before they have seen anything. The tier-1 header is already the progressive-disclosure layer, and a section with nothing to say is skipped with a one-line reason (not padded), so "all" never means "bloated".

python
SECTIONS = ["0","1","2","3","4","5"]      # default
if QUICK: SECTIONS = ["1","5"]            # --quick: change manifest + impact only

Section [0] Before/After leads whenever the Explore map shows structural changes, and is skipped with a one-line note otherwise. If the user asked for specific sections in their prompt ("just the risks"), honor that — but do not prompt for it.


STEP 4: Render Requested Sections

Render each requested section following rules/section-rendering.md conventions. Use the corresponding reference for ASCII patterns:

SectionReferenceKey Convention
[0] Before/After Arch(load references/before-after-arch-patterns.md)Side-by-side base vs head; mark [+]/[~]/[-]; skip if nothing structural changed
[1] Change Manifest(load references/change-manifest-patterns.md)[A]/[M]/[D] + +N -N per file
[2] Execution Swimlane(load references/execution-swimlane-patterns.md)=== active, --- blocked, | deps
[3] Risk Dashboard(load references/risk-dashboard-patterns.md)Reversibility timeline + 3 pre-mortems
[4] Decision Log(load references/decision-log-patterns.md)ADR-lite: Context/Decision/Alternatives/Tradeoff
[5] Impact Summary(load assets/impact-dashboard.md)Table: Added/Modified/Deleted/NET + tests/API/deps

STEP 4b: Dispatch to Format(s)

Render the selected sections into the FORMATS chosen in STEP 0.5. ASCII always renders first/inline — the other formats consume the same plan brief. Full table + delegation patterns: Read("references/format-dispatch.md").

FormatAction
ASCIINative render (above) — always, the floor
PlaygroundClassify the archetype (below), then hand the plan brief to the playground skill → write docs/<branch-dir>/plan-viz.html, then serve it with page-serve docs/<branch-dir>/plan-viz.html and put the printed url= in the reply's Open section (never a bare path or a hand-started http.server)
InfographicRun the notebooklm studio_create(artifact_type=infographic|slides) flow — fire-and-notify, poll studio_status, never await
AllASCII inline now + the rest linked as they finish
Charts (marks within Playground / Infographic)For sections with quantitative marks — [3] Risk, [5] Impact, [6] Blast Radius — pick the form via /dataviz (choosing-a-form) and the palette via its 6-check formula, then run validate_palette.js. On validator FAIL or /dataviz absent, fall back to the ASCII-card layout. Chrome stays ork tokens (§2 of playground-visual-standard.md); only the data marks come from the validated palette. See ${CLAUDE_PLUGIN_ROOT}/shared/rules/chart-encoding-standard.md.

<branch-dir> = branch with / → -- (same path the PR Playground gate checks). The filename is always plan-viz.html — not index.html, not a topic name. One name is what makes slug lookup and the artifact gallery work at all.

Playground archetype: a plan visualization is usually a DASHBOARD — and as of 2026-08 that is a first-class archetype with a template, not a free pass. Copy shared/assets/playground-exemplars/plan-dashboard.template.html and swap the plan-state island; do not free-hand the CSS. It ships the §2 tokens, a sticky tier-1 header, <details> sections [0]–[5], a table twin per chart, the copy-prompt bar, and the reduced-motion gate. If the plan instead demonstrates a user-facing flow or a prioritization/decision, route to the user-story-player or decision-board archetype. Apply the §0 routing rule in Read("${CLAUDE_PLUGIN_ROOT}/shared/rules/playground-visual-standard.md") and run its §10 self-audit — including the DASHBOARD rows — before declaring done.

Backlog to dispatch? If the plan is a backlog the user must prioritize and route to execution, use the decision-router variant — each card routes to an ork strategy and emits a plan-only invocation: Read("references/decision-router.md").

Living plan (multi-wave)? If the plan executes over multiple sessions/waves, or completion is verifiable by commands, use the living-plan exemplar (living-plan.template.html): the playground embeds an lpp-state JSON block, every item carries a "done when" evidence check, and progress renders FROM state.

Update mode — detect by SLUG, never by path. The path is derived from the branch name, so a branch rename moves it and a path-keyed check silently forks the plan into a second file. Run the finder BEFORE authoring:

bash
bash "$SKILL_DIR/scripts/find-living-plan.sh" "$SLUG"   # 0=update it · 1=author new · 2=already forked, STOP

On exit 0, MERGE into the file it printed (flip statuses, append changelog, move removed items to dropped) wherever it lives. On exit 2, do not write a third file — name both paths and ask which survives. Full contract: Read("references/format-dispatch.md") §Living-plan update mode. Gated by tests/orphans/test-duplicate-living-plans.sh.


Show full SKILL.md (815 more words)Show less

STEP 5: Offer Actions — the ONE question

This is the only blocking question in a default run, and it carries the format choice that used to block at STEP 0.5. Skip it entirely when --quick, or when the format was set by flag and there is nothing left to offer. Build the option list from what the STEP 0.5 probe actually found — never offer a path that will fail.

python
options = []
if "playground" in AVAILABLE and "playground" not in FORMATS:
    options.append({"label": "Interactive dashboard (Recommended)",
                    "description": "Single-file HTML at docs/<branch-dir>/plan-viz.html, from plan-dashboard.template.html. Also satisfies the PR Playground gate. Multi-wave plans become LIVING plans, updated in place."})
if "infographic" in AVAILABLE and "infographic" not in FORMATS:
    options.append({"label": "NotebookLM infographic",
                    "description": "Stakeholder-ready infographic/slides. Async — fired and notified, never blocks."})
options.append({"label": "Drill deeper",
                "description": "Blast radius, cross-layer consistency, or migration checklist"})
options.append({"label": "Generate GitHub issues",
                "description": "One issue per execution phase, with labels, milestone, and blocked-by links"})

# AskUserQuestion caps at 4 options. "Done" must ALWAYS survive that cap — an
# actions menu with no exit is a trap — so reserve its slot instead of appending.
DONE = {"label": "Done", "description": "Plan visualization complete"}
AskUserQuestion(questions=[{"question": "What next?", "header": "Actions",
                           "options": options[:3] + [DONE], "multiSelect": False}])

Anything squeezed out by the cap stays reachable by asking — the menu is a shortcut, not the whole surface. Write to designs/{branch}.md (template: assets/plan-report.md) is one of these.

Upgrading reuses the plan brief built in STEP 1 — no recomputation (see references/format-dispatch.md). If nothing richer is available, the question drops to drill-deeper / issues / done.

Write to file: Save full report to designs/{branch-name}.md using assets/plan-report.md template.

Generate issues: For each execution phase, create a GitHub issue with title [{component}] {phase_description}, labels (component + risk:{level}), milestone, body from plan sections, and blocked-by references.

Store in memory: Save plan summary to knowledge graph for future comparison:

python
mcp__memory__create_entities(entities=[{
  "name": "Plan: {plan_name}",
  "entityType": "plan-visualization",
  "observations": [
    "Branch: {branch}",
    "Risk: {risk_level}, Confidence: {confidence}",
    "Phases: {phase_count}, Files: {file_count}",
    "Key decisions: {decision_summary}"
  ]
}])

Deep Dives (Tier 3, on request)

Available when user selects "Drill deeper". Load Read("references/deep-dives.md") for cross-layer and migration patterns.

SectionWhat It ShowsReference
[6] Blast RadiusConcentric rings of impact (direct -> transitive -> tests)(load references/blast-radius-patterns.md)
[7] Cross-Layer ConsistencyFrontend/backend endpoint alignment with gap detection(load references/deep-dives.md)
[8] Migration ChecklistOrdered runbook with sequential/parallel blocks and time estimates(load references/deep-dives.md)

Key Principles

PrincipleApplication
Progressive disclosureTier 1 header always, sections on request
Judgment over decorationEvery section answers a reviewer question
Precise over estimatedUse scripts for file/line counts
Honest uncertaintyConfidence levels, pre-mortems, tradeoff costs
Actionable outputWrite to file, generate issues, drill deeper
Anti-slopNo generic transitions, no fake precision, no unused sections

Rules Quick Reference

RuleImpactWhat It Covers
section-rendering (load rules/section-rendering.md)HIGHRendering conventions for all 6 core sections ([0]–[5])
ASCII diagramsMEDIUMVia glyph skill (box-drawing, file trees, workflows)

References

Load on demand with Read("references/<file>"):

FileContent
visualization-tiers.mdProgressive disclosure tiers and header field computation
change-manifest-patterns.mdChange manifest ASCII patterns
execution-swimlane-patterns.mdExecution swimlane ASCII patterns
risk-dashboard-patterns.mdRisk dashboard ASCII patterns
decision-log-patterns.mdDecision log ASCII patterns
blast-radius-patterns.mdBlast radius ASCII patterns
deep-dives.mdCross-layer consistency and migration checklist
format-dispatch.mdOutput-format capability probe, ASCII-floor rule, delegation to playground/notebooklm
before-after-arch-patterns.mdSection [0] before/after architecture per output format

Examples (read one before your first run)

Complete worked runs — real input, real ASCII output, real emitted artifact. The ASCII patterns in them match references/*-patterns.md exactly, so they are safe to imitate directly.

FileShows
examples/01-dashboard-run.mdThe default path end to end: detect → gather → header → all six sections → the one question → the emitted HTML. Same scenario as the sample state in plan-dashboard.template.html.
examples/02-living-plan-update.mdUpdate mode on a renamed branch: slug-keyed detection, the JSON merge, the evidence gate, and the exit-2 fork case.
examples/03-quick-run.md--quick: what is skipped, what the output looks like, and what it must never fabricate.

Assets

Load on demand with Read("assets/<file>"):

FileContent
plan-report.mdFull mustache-style report template
impact-dashboard.mdImpact table template
tier1-header.md5-line summary template

Quality Bar

Done means all of these hold:

  • The Tier 1 header always renders with every field populated — risk, confidence, reversibility, branch, and file/line counts.
  • File and line counts come from scripts/analyze-impact.sh, not estimated or guessed.
  • Every rendered section answers its reviewer question; a section with no content is skipped with a one-line reason, never padded.
  • Section [3] names the point of no return by phase id (--- POINT OF NO RETURN (after P3) ---), not by implication, and each pre-mortem states a mechanism — trigger, sequence, resulting bad state — not a category. "Migration risk" is a heading; "P2 ships while an in-flight retry queue still points at the inline charge path, so the same invoice is charged twice" is a pre-mortem. This is the section's measured failure mode, not a style preference: rules/section-rendering.md §[3] carries the falsifiable test for both.
  • Section [0] Before/After maps base (git show origin/main:<path>) against head (working tree), marking each node [+]/[~]/[-], and is skipped with a note when nothing structural changed.
  • ASCII renders first/inline regardless of chosen format; any async format (infographic) is fired-and-notified, never awaited.
  • The plan summary is stored to the memory knowledge graph for cross-session comparison (skipped under --quick).
  • Zero blocking questions before the first render. Source is auto-detected (asked only when genuinely ambiguous), sections default to all, and format is chosen after the ASCII floor is already on screen — at most one question per run, none under --quick.
  • A playground output started from plan-dashboard.template.html (or the living-plan / player / board exemplar the §0 routing rule selected) — never hand-rolled CSS — and passed the §10 self-audit including the DASHBOARD rows.
  • A living plan was located by slug via scripts/find-living-plan.sh before authoring, so an existing plan is updated in place rather than forked into a second file.
  • ork:implement - Execute planned changes
  • ork:explore - Understand current architecture
  • ork:assess - Evaluate complexity and risks
  • ork:memory - Search prior plan visualizations
  • ork:remember - Store plan decisions for future reference

© yonatangross, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 25 other files (scripts, references, assets) in src/skills/visualize-plan of yonatangross/orchestkit.

  • SKILL.md
  • assets/impact-dashboard.md
  • assets/plan-report.md
  • assets/tier1-header.md
  • examples/01-dashboard-run.md
  • examples/02-living-plan-update.md
  • examples/03-quick-run.md
  • references/before-after-arch-patterns.md
  • references/blast-radius-patterns.md
  • references/change-manifest-patterns.md
  • references/decision-log-patterns.md
  • references/decision-router.md
  • references/deep-dives.md
  • references/execution-swimlane-patterns.md
  • references/format-dispatch.md
  • references/risk-dashboard-patterns.md
  • references/visualization-tiers.md
  • rules
  • … and 8 more

Open the folder on GitHubat commit 1f8d8f3

Compare with similar skills

Visualize Plan next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Visualize Plan compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Visualize Plan this skillyonatangross/orchestkit288—~6.2kAutomated safety check: NotesMIT
Nlm Skilliusztinpaul/ai-research-os-workshop1791 repos~6.9kAutomated safety check: PassMIT
NotebooklmMathews-Tom/armory327—~4kAutomated safety check: PassMIT
Notebooklmalirezarezvani/claude-skills28k—~4kAutomated safety check: PassMIT
Notebooklm CLIItamarZand88/CLI-Anything-WEB231—~997Automated safety check: PassMIT
Plannotator Visual Explainerbacknotprop/plannotator9.2k—~1.7kAutomated safety check: PassApache-2.0

Similar skills

  • Nlm Skill

    iusztinpaul/ai-research-os-workshop

    Expert guide for the NotebookLM CLI (nlm) and MCP server - interfaces for Google NotebookLM.

    179 GitHub starsUsed in 1 repo~6.9k tokens
    Knowledge ManagementAuto-check passed
  • Notebooklm

    Mathews-Tom/armory

    Full NotebookLM API via notebooklm-py CLI: create notebooks, add sources, generate podcasts, videos, infographics, slides, quizzes, flashcards, mind maps.

    327 GitHub stars~4k tokensUpdated 2 days ago
    Knowledge ManagementAuto-check passed
  • Notebooklm

    alirezarezvani/claude-skills

    Browser automation skill for controlling Google's NotebookLM.

    28k GitHub stars~4k tokensUpdated 1 mo ago
    Knowledge ManagementAuto-check passed
  • Notebooklm CLI

    ItamarZand88/CLI-Anything-WEB

    Drives Google NotebookLM via the cli-web-notebooklm command-line tool — create and manage notebooks, add URL/text sources, ask questions grounded in the sources, and generate/download artifacts…

    231 GitHub stars~997 tokensUpdated 6 days ago
    Knowledge ManagementAuto-check passed
  • Plannotator Visual Explainer

    backnotprop/plannotator

    Builds self-contained HTML explainers for plans, pull requests and technical concepts in Plannotator's theme, then opens them in its annotation view.

    9.2k GitHub stars~1.7k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Plannotator Planning Analysis

    backnotprop/plannotator

    Mines a Plannotator archive of denied plans for feedback patterns and prompt improvements, then writes an HTML dashboard report, with a Claude Code fallback.

    9.2k GitHub stars~6.7k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from yonatangross/orchestkit

All 107 skills in this repo
  • API Design

    yonatangross/orchestkit

    API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows, RFC 9457 Problem Details error handling, and OpenAPI specs.

    288 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed
  • Architecture Decision Record

    yonatangross/orchestkit

    ADR templates in the Nygard format with context, decision, consequences, and alternatives.

    288 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Audit Full

    yonatangross/orchestkit

    Single-pass codebase analysis leveraging a 1M-token context window for comprehensive security scanning, architecture review, and dependency auditing.

    288 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check: notes
  • Code Review Playbook

    yonatangross/orchestkit

    Structured review processes, conventional comments, language-specific checklists, and feedback templates.

    288 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Create PR

    yonatangross/orchestkit

    Creates GitHub pull requests with pre-flight validation, conventional title formatting, and structured summary generation.

    288 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check: notes
  • Explore

    yonatangross/orchestkit

    Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment.

    288 GitHub stars~3.9k tokensUpdated yesterday
    Auto-check: notes

Works with

Questions about Visualize Plan

What does Visualize Plan do?

Renders planned changes — architecture and before/after comparisons, risk heat maps, execution order, dependency graphs, impact metrics — in your chosen output format (ASCII + emojis, an interactive…. Visualize Plan is an agent skill from yonatangross/orchestkit. Renders planned changes — architecture and before/after comparisons, risk heat maps, execution order, dependency graphs, impact metrics — in your chosen output format (ASCII + emojis, an interactive HTML playground, or a NotebookLM infographic).

When should I use Visualize Plan?

Visualize Plan fits situations like: reviewing implementation plans; comparing approaches; analyzing change propagation.

How do I install Visualize Plan in Claude Code?

Run `npx skills add yonatangross/orchestkit --skill visualize-plan -a claude-code`. Or copy the skill folder (src/skills/visualize-plan in yonatangross/orchestkit) into .claude/skills/visualize-plan in your project. Claude Code loads it when a task matches its description.

How do I install Visualize Plan in Codex?

Run `npx skills add yonatangross/orchestkit --skill visualize-plan -a codex`. Or copy the skill folder (src/skills/visualize-plan in yonatangross/orchestkit) into .agents/skills/visualize-plan in your project. Codex loads it when a task matches its description.

Can I use Visualize Plan in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yonatangross/orchestkit --skill visualize-plan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/visualize-plan, .gemini/skills/visualize-plan, .github/skills/visualize-plan and .opencode/skills/visualize-plan in your project.

What does Visualize Plan need to run?

Going by SKILL.md and its folder, Visualize Plan needs the command-line tools its instructions call (bash and git) and credentials named PLAN_TOKEN. Our summary lists: Python 3; A credential in PLAN_TOKEN. Its frontmatter pre-approves these tools: Read, Grep, Glob, Agent, TaskCreate, TaskUpdate, AskUserQuestion, Bash, Write, mcp__memory__search_nodes, mcp__memory__create_entities, ToolSearch, mcp__notebooklm-mcp__studio_create. Compatibility (from SKILL.md): Claude Code 2.1.277+..

Does Visualize Plan access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Visualize Plan safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Visualize Plan use?

Visualize Plan is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Visualize Plan use?

About 6.2k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 11k tokens, read only when the agent opens those files.

What are the alternatives to Visualize Plan?

Skills that share tags, products or a category with Visualize Plan: Nlm Skill (iusztinpaul/ai-research-os-workshop, 179 stars), Notebooklm (Mathews-Tom/armory, 327 stars), Notebooklm (alirezarezvani/claude-skills, 28k stars) and Notebooklm CLI (ItamarZand88/CLI-Anything-WEB, 231 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Visualize Plan?

yonatangross (a GitHub user) maintains it in yonatangross/orchestkit, which has 288 GitHub stars. The repository holds 107 skills in this directory. The repository was last updated on October 6, 2026.

Source: yonatangross/orchestkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.