AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Visual Plan

skill-patrickdappollonio-claude-plugins-visual-plan · by patrickdappollonio

Use when the user wants to review an implementation plan visually — "visual plan", "show me the plan in the browser", "render this plan" — or when a plan involves architecture, schema, or API changes worth reviewing before code is written. Writes the plan as markdown and serves it locally (bundled zero-dependency server) with Mermaid diagrams, rich diffs, DB migration cards, API call cards, live…

— No reviews yet
0 installs
39 views
0.0% view→install

Install

$ agentstack add skill-patrickdappollonio-claude-plugins-visual-plan

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • ✓ Prompt-injection patterns
  • ✓ Secret / credential exfiltration
  • ✓ Dangerous shell & filesystem operations
  • ✓ Untrusted network calls
  • ✓ Known-malicious package signatures

What it can access

  • ✓ Network access No
  • ✓ Filesystem access No
  • ✓ Shell / process execution No
  • ✓ Environment & secrets No
  • ✓ Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-patrickdappollonio-claude-plugins-visual-plan)

Reliability & compatibility

✓ Security review passed
0 installs to date
— no reviews yet
● 2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Visual Plan? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Visual Plan

Turn a plan into an interactive document the user reviews in their browser, served entirely from their machine. The plan is a plain markdown file — the bundled server renders it with diagrams, diffs, and styled blocks, live-reloads as you edit it, and collects the user's comments for you to read back.

Before anything else, fix who you're writing for: the CEO of the company — a tech-savvy non-developer. Not a fellow engineer, not the person who wrote the code, and not someone who will ever open the repo. This shapes every sentence you write. They decide based on business logic — what changes, why it's worth it, what could go wrong — so explain behavior in plain language and reach for code only when the reader must see it to decide. The linter warns when plain-language sections name code symbols, and those findings must be fixed like any other.

Acknowledge first, then work quietly. Before you do anything else, reply with one short sentence that acknowledges the request and says you're gathering what you need — e.g. "Got it — let me dig into the code and put together a visual plan for the rate-limiting change." This is the one message the user should get up front; never jump straight into tool calls with no reply. Then spend your tokens on the document, not on narrating: do the research and inventory silently — no step-by-step play-by-play, no restating what you found — and surface next with the link (once served) and a one-line pointer. Put the budget you'd spend narrating into the plan's coverage instead.

The sequence — do every step, in order; the last two are the ones agents skip:

  1. Research the change and write the plan file.
  2. Inventory it (silently).
  3. Lint it and fix every finding — required, not optional (§3).
  4. Self-review the rendered document — required (§3): re-read it top to

bottom against your inventory before anyone else sees it.

  1. Serve it and hand over the link.
  2. Read and act on comments.

Workflow

1. Research first, then write the plan file

Do the normal planning work first (read the code, understand the change). Then write the plan as a single markdown file. Choose the directory:

  • Default (throwaway review): let the server resolve a fresh, session-scoped

temp directory for you — cross-platform (it uses the OS temp dir under the hood), unique per session so it starts empty every session and never overlaps another project's docs. Don't hand-build paths; run this, and it prints the directory — reuse that path (referred to below as $DIR) for the file you write and the serve/comments/status commands: `` node "${CLAUDE_PLUGIN_ROOT}/server/bin/visual-docs-server.js" --docdir ` ${CLAUDEPLUGINROOT}` is the directory this plugin is installed in. Claude Code sets it automatically; on any other agent platform, substitute the plugin's install path in this and every command below.

  • User wants the plan kept: write it where they say (e.g. docs/plans/)

and serve that directory instead.

Name the file after the task, e.g. $DIR/add-rate-limiting.md.

Always start fresh. Write a new file for this session's work — do not search /tmp for an old visual-docs* directory or reuse a plan from an earlier session. Only update a pre-existing file when the user explicitly points you at one, and before you touch it, confirm it actually describes this change: a stale doc from another task or project can look deceptively similar, and overwriting it as if it were yours is the failure to avoid.

2. Take inventory before writing (silently)

A thin plan is the common failure. From your research, build — as internal reasoning, never a chat message — a checklist of every part of the system the plan will touch: components/modules, files to add or change, schema/tables/ migrations, endpoints/routes, flows or data-paths that shift, UI surfaces and states, and the decisions or risks the user must weigh. Don't print it; its only trace is the coverage it drives. It's your list for step 3's audit.

3. Author the document

Read [document-quality.md](../shared/document-quality.md) once (silently) before writing — the standard for a comprehensive, simple→complex, terse document. Use [authoring-guide.md](../shared/authoring-guide.md) for fence syntax. The plan is where your tokens go: budget you didn't spend narrating belongs here.

Write for the CEO (document-quality §0): a tech-savvy non-developer who needs the business logic — what changes, why, what could go wrong — not the implementation. Explain behavior in plain language; reach for diagrams, tables, and migration/API cards before code; include a code fence only when it's genuinely necessary to make the point. Write prose to the ASD-STE100 (Simplified Technical English) sentence rules in [document-quality.md §0](../shared/document-quality.md): short active-voice sentences, one idea each, one name per thing.

Author top to bottom against this skeleton; include a section when the inventory has items, skip one only when it had nothing there:

  1. # Title — one line, imperative. Directly under it, add a `tldr

summary card (recommended for anything non-trivial): 2–4 sentences a reader absorbs in one glance before scrolling.

  1. ## Summary — birds-eye first: a plain-terms paragraph on what you'll do and

why, no code/symbol names, then a > [!IMPORTANT] admonition (never a bold-keyword blockquote) for anything the user must decide.

  1. ## Architecture — a `mermaid / `nomnoml diagram when components or

flows change (prefer a 2-D shape over a chain).

  1. ## Key changes — one H3 per meaningful change, each explained in plain

language first (what changes and why it matters). Add a `diff hunk only when seeing the code is necessary to evaluate the change — trimmed to the load-bearing lines with 2–4 annotation bullets (document-quality §0, §5). 3–8 subsections is healthy; most need no code at all.

  1. ## Database changes — `migration fences with -- up / -- down.
  2. ## API behavior / ## API surface — `api examples and/or `openapi .
  3. ## Rollout — ordered steps, flags, sequencing.
  4. ## Open questions — a `question fence per decision (single/multi

options + free-text); the user's answer comes back as a comment you read.

Then lint and self-review — both required, before you serve or share anything. Do not write the file and stop.

  1. Lint and fix every finding — not optional:

`` node "${CLAUDE_PLUGIN_ROOT}/server/bin/visual-docs-lint.js" "$DIR/.md" ``

  1. Self-review: re-read the whole plan top to bottom as the user will see it,

and check: the CEO test first — everything through ## Architecture reads cleanly to a non-developer, with no function, file, or symbol names, and each ## Key changes subsection makes its point in plain language before any code appears; every inventory item maps to a block or has a one-clause omission reason; every fence is well-formed for its type (a `diff has real +/- lines, a `migration has -- up/-- down, an `api has a request line, a `mermaid is valid); no leftover placeholder or truncated block; secrets redacted. Fix what you find, then re-lint.

Grounding rule: every path, line, schema, and API shape must come from the actual codebase or the proposed edit — don't invent detail. Redact secrets.

4. Serve it

Start the bundled server with --serve: it backgrounds itself and prints the URL, then returns — cross-platform, no nohup/& (which don't exist on Windows). It self-manages per directory via a lock file, so you can run this unconditionally — if one is already serving $DIR (from an earlier plan this session) it just prints the URL and exits, and new files appear in the sidebar automatically:

node "${CLAUDE_PLUGIN_ROOT}/server/bin/visual-docs-server.js" --serve "$DIR"

The output contains VISUAL_DOCS_URL=http://127.0.0.1:/. The server binds to localhost on a random free port, has no dependencies, and serves the renderer libraries from vendored local copies — the whole flow works offline.

One server shows every doc in its directory (sidebar → Docs), so write new documents into the already-served $DIR instead of serving a second directory — one URL for the whole session. Only serve a separate directory for content with a different lifecycle (e.g. disposable test fixtures whose comments get churned).

If the user asks to review from another device (LAN, Tailscale), add a bare --host flag (with --restart if a localhost-only instance is already up): the server binds all interfaces and prints a Network: http://:/ line per interface — share those. Only when asked; the server has no authentication.

5. Hand the user the link

Give the user the direct document URL:

http://127.0.0.1:/#/.md

Tell them, briefly: the page live-reloads as you edit; they can select any text to comment on that snippet, or hover a section heading or a rendered component (diagram, diff, …) and click the margin button to comment there; "Copy as prompt" turns their feedback into a pasteable message if they prefer chat.

End with a plain chat message, never a structured question tool. If you want to ask what's next (review the plan, walk through a section, adjust something), write the question as ordinary prose in your message — do not reach for an option-picker tool like AskUserQuestion: its canned choices scope the user down exactly when their answer should be free-form. And the CEO rule governs the document, not the conversation — if the user then asks you to explain a topic in more depth, answer in chat at whatever technical level they ask for.

6. Read feedback before revising — every time

Before any revision (user asks for changes, or you're checking in), read the open comments as a ready-formatted digest — plain text, nothing to parse:

node "${CLAUDE_PLUGIN_ROOT}/server/bin/visual-docs-server.js" --comments "$DIR"

(Append a file — --comments "$DIR" .md — to scope to one document.) Each comment is labelled with what it's anchored to (a section, a quoted snippet, or a component) and carries an id. Address every open comment and edit the markdown file in place (the browser reloads automatically).

Revise in place — one plan, never a change-log (document-quality §8). Rewrite the affected sections so the document always reads as one coherent plan written fresh. Never add ## Update/## Revision/"changed after review" headings, keep superseded sections "for context," or write prose that describes the edit instead of the plan.

If the digest is followed by a note: this server is running visual-docs vX but vY is now installed… line, tell the user and suggest --restart (per the --serve step above) to pick up the newer version.

Drive each comment's status with the same tool — no JSON, no hand-editing comments.json:

node "${CLAUDE_PLUGIN_ROOT}/server/bin/visual-docs-server.js" --status "$DIR"  acknowledged
# …then `resolved` when done. Pass comma-separated ids (id1,id2) to update several.

It prints a plain confirmation (Updated N comment(s) to "acknowledged".). The viewer shows the lifecycle states (new → acknowledged → resolved, plus dismissed for comments the user retracts — only valid before a comment is resolved) and live-updates. Users can dismiss their own comments from the viewer; dismissed ones drop out of the digest. If the user pastes a "Copy as prompt" block into chat instead, treat it identically.

7. Approval gate

The plan is approved when the user says so (in chat or via a comment). Only then move on to implementation. Keep the server running during implementation if a recap will follow — the same server can serve both documents.

If the user wants to share or archive the plan (send it, attach it, keep a copy), offer --export: it builds one self-contained HTML file — no server needed to view it later — with the same rendering fidelity as the live page.

node "${CLAUDE_PLUGIN_ROOT}/server/bin/visual-docs-server.js" --export "$DIR" plan.md

Cleanup

When the session is done, stop the server for this directory:

node "${CLAUDE_PLUGIN_ROOT}/server/bin/visual-docs-server.js" "$DIR" --stop

It reads the lock file and stops just that instance. Avoid pkill -f visual-docs-server — it would kill every instance on the machine, including other sessions' or other users'. Temp-dir plans need no other cleanup.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.