Install the "visualize-plan" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/visualize-plan into .claude/skills/visualize-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualize-plan", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add yonatangross/orchestkit --skill visualize-plan -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "visualize-plan" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/visualize-plan into .agents/skills/visualize-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualize-plan", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add yonatangross/orchestkit --skill visualize-plan -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "visualize-plan" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/visualize-plan into .cursor/skills/visualize-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualize-plan", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add yonatangross/orchestkit --skill visualize-plan -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "visualize-plan" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/visualize-plan into .gemini/skills/visualize-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualize-plan", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add yonatangross/orchestkit --skill visualize-plan -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "visualize-plan" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/visualize-plan into .github/skills/visualize-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualize-plan", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add yonatangross/orchestkit --skill visualize-plan -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "visualize-plan" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/visualize-plan into .opencode/skills/visualize-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualize-plan", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
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+.
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
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.
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.
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:
Decision
When
How
Source
before
Auto-detect. Ask only if detection is genuinely ambiguous (STEP 0).
Sections
never
Default to all. The tier-1 header is the progressive-disclosure layer.
Format
after ASCII
One 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).
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:
Section
Reference
Key Convention
[0] Before/After Arch
(load references/before-after-arch-patterns.md)
Side-by-side base vs head; mark [+]/[~]/[-]; skip if nothing structural changed
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").
Format
Action
ASCII
Native render (above) — always, the floor
Playground
Classify 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)
Infographic
Run the notebooklmstudio_create(artifact_type=infographic|slides) flow — fire-and-notify, poll studio_status, never await
All
ASCII 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:
Rendering conventions for all 6 core sections ([0]–[5])
ASCII diagrams
MEDIUM
Via glyph skill (box-drawing, file trees, workflows)
References
Load on demand with Read("references/<file>"):
File
Content
visualization-tiers.md
Progressive disclosure tiers and header field computation
change-manifest-patterns.md
Change manifest ASCII patterns
execution-swimlane-patterns.md
Execution swimlane ASCII patterns
risk-dashboard-patterns.md
Risk dashboard ASCII patterns
decision-log-patterns.md
Decision log ASCII patterns
blast-radius-patterns.md
Blast radius ASCII patterns
deep-dives.md
Cross-layer consistency and migration checklist
format-dispatch.md
Output-format capability probe, ASCII-floor rule, delegation to playground/notebooklm
before-after-arch-patterns.md
Section [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.
File
Shows
examples/01-dashboard-run.md
The 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.md
Update 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>"):
File
Content
plan-report.md
Full mustache-style report template
impact-dashboard.md
Impact table template
tier1-header.md
5-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.
Related Skills
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
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.
Full NotebookLM API via notebooklm-py CLI: create notebooks, add sources, generate podcasts, videos, infographics, slides, quizzes, flashcards, mind maps.
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…
Mines a Plannotator archive of denied plans for feedback patterns and prompt improvements, then writes an HTML dashboard report, with a Claude Code fallback.
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.
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).
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.