/plan-agent:implementation-plan Feature Reference
Plan-agent plugin · Skill

A planning engine that ships a .html plan, not a to-do list.

implementation-plan turns an objective, a GitHub/GitLab issue, or a markdown plan into a single self-contained, interactive HTML document — steps, tests, acceptance criteria, effort estimate, and copy-paste implement prompts, all portable in one file. It plans; it does not implement (until you tell it to).

model fable output self-contained .html workflow steps 0 → 8 activation command + ambient
01

What it produces

One HTML file with everything a plan needs, readable in any browser with no external CSS, no CDN, and no build step. Checkbox and status state live as HTML attributes, so progress travels with the file across machines, browsers, and git.

core Structured plan body

Context, a prominent objective, numbered step cards (action + why + expandable verify), a Tests section, interactive acceptance criteria, end-to-end verification, and a completion checklist.

auto Derived artifacts

An auto-generated file-tree, an auto-derived effort badge, and three ready-to-paste prompts — implement, goal, and (when warranted) workflow.

machine Embedded metadata

Plan status, type, effort, repo, paths, and prompts are embedded as <meta> tags so the plans gallery and hooks can read the file without parsing prose.

portable No-JS-required interactivity

Native checkboxes, a Save-as-PDF button, per-prompt Copy buttons, and a progress indicator. Minimal JS only enhances; the checked attribute is the source of truth.

02

Two ways to invoke it

Command invocation

Explicit, with full flag control. $ARGUMENTS carries the objective and flags.

/plan-agent:implementation-plan add dark mode toggle --quick

Model invocation (ambient)

Auto-activates when you ask to “create a plan document” or “generate an HTML plan.” Flags can’t be passed, so it runs the full workflow (Clarify + Align + Interview) by default and infers the objective from context.

Both paths apply the same input detection: issue references, an existing .html plan to revise, or a .md file to convert.

03

Four input modes

The first non-flag token decides what the skill is working from. Detection order is issue-ref → .html → .md → plain objective.

Plain objective

All non-flag text becomes the objective. Empty on the command path → it asks once via AskUserQuestion.

Issue reference Step 0.5

A GitHub/GitLab URL, bare #42, or a plain integer. Fetched via gh/glab; title → objective, body → context, labels → --type hint, URL → frontmatter. Falls back gracefully if the CLI call fails.

Plan revision

A .html token targets an existing plan to extend. Path-safe (basename only, resolved under plan roots); reads the <title> as the objective fallback.

Markdown conversion

A .md token enters conversion mode — maps sections 1:1 into the HTML skeleton, carries frontmatter over, and implies --no-clarify --no-align --no-interview since committed markdown is pre-validated.

04

Flags & arguments

Command-path only. Absent flags fall back to smart defaults — --type is inferred from the objective’s leading verb; the skip flags are opt-in and never inferred.

Recognized flags
FlagEffect
--quickShorthand for --no-clarify --no-align --no-interview. Skips Clarify (1), Align (5), Interview (5b), and Explore (0b).
--no-clarifySkip Step 1 Clarify only.
--no-alignSkip Step 5 Align only.
--no-interviewSkip Step 5b Interview only.
--workflowAlways emit a workflow prompt, bypassing the complexity heuristic.
--type <kind>Preset frontmatter type: feature · fix · refactor · docs · chore.
--template <name>Skeleton variant. Only default ships today; minimal/adr/spike are planned.
--dir <path>Override directory resolution; write the plan here.
--priority <level>Write priority: frontmatter — low · medium · high · critical.
Verb inference for --type: create/add/build/implement → feature · fix/repair/patch/resolve → fix · refactor/rename/extract/move/convert → refactor · document → docs · anything else → chore.
05

The workflow — steps 0 → 8

A real, ordered pipeline. Some steps are conditional (issue ref present, flags set); the numbering reflects the sequence the skill actually walks.

0

Self-bootstrap

If in plan mode, silently call ExitPlanMode first — writing an HTML file is a filesystem mutation the harness would otherwise force to markdown, defeating the skill’s whole guarantee.

0.5

Issue ingestion

When an issue reference was detected, fetch it and inject title, body, labels, and URL as planning inputs.

skipped when no issue reference
0b

Explore

Read the codebase — Glob for files, Grep for symbols, Read for architecture — proportional to scope, to ground the plan in what actually exists.

skipped when --quick
1

Clarify

Resolve ambiguous requirements via AskUserQuestion; use WebSearch/WebFetch when research would strengthen the plan. Well-specified requests skip it.

skipped when --quick / --no-clarify
2

Create

Resolve the plans directory (settings precedence, --dir override, docs/plans/ fallback), pick a verb-target filename, and compute the implement, goal, workflow prompts + effort level.

3

Frontmatter

Embed status, effort, type, created, repo-name, file/path, and prompt <meta> tags in the <head> — plus optional priority and issue tags, and any extraFrontmatter from settings.

4

Rename

Enforce the verb-target kebab-case filename before writing. Backed by the validate-plan-filename PostToolUse hook.

5

Align

Batched AskUserQuestion confirming each step maps to the objective — step-to-objective alignment, not final approval.

skipped when --quick / --no-align
5b

Interview

Stress-test the draft across 1–3 rounds scaled by complexity, with a mandatory UI/accessibility round when UI signals appear. See §06.

skipped when --quick / --no-interview
5c

Tests

Classify Tier 1 vs Tier 2 and populate the Tests section, always including the objective-verification test. Never skipped by any flag. See §07.

6

Status

Keep the three status representations in sync — <html data-status>, <meta>, and the visible badge — as the plan advances todo → in-progress → completed.

7

Open

Deliver + verify rendering: spin up a local HTTP server, screenshot via the browser MCP, and send the file with SendUserFile. Falls back to file delivery in headless environments. Mandatory.

8

Implement, Edit, or Exit

Ask what’s next: implement now, run as workflow, review the plan (foreground or background), edit, or exit. See §08 for the implement path’s three gates.

06

The Step 5b interview

Complexity detection sets the depth; every question references specific plan details — no generic prompts. A UI override forces Round 2 whenever the plan touches React/Vue/Svelte, JSX/CSS/HTML, or UX terms.

Interview rounds by scope
ScopeRoundsCovers
Short / focused
1–2 files
1Technical & trade-offs — the most uncertain decision, build-vs-buy, perf/data model, integration points.
Medium
UI + logic, or 2 domains
1 + 2Adds 2a UI/UX & flows and 2b Accessibility & semantic (keyboard, ARIA, WCAG 2.1 AA, semantic HTML).
Complex
architecture, 3+ domains
1 + 2 + 3Adds edge cases & best practices — failure modes, race conditions, regression risk, open questions.

After the rounds, the skill summarizes confirmed decisions and surfaced concerns, then offers to fold the findings back into the plan before moving to Tests.

07

Tests — two tiers, one mandatory hero

Tier is chosen by what the steps actually touch, never by the type: field. A chore that changes import paths is Tier 1; a chore that moves docs is Tier 2.

08

The implement path & its three gates

Choosing “Implement now” lifts the scope constraint for that session and walks each step, then runs three mandatory gates in order before a plan can be marked completed.

✓

Acceptance-criteria gate

Verify each #criteria-list checkbox against the real codebase and add the checked attribute only when met. Unverifiable items are surfaced for a keep/leave decision.

✓

End-to-end verification gate

Run the objective-verification test plus the plan’s Verification steps. On failure, a bounded fix-and-re-verify loop (up to 3 attempts) then a user choice: keep trying, mark in-progress, or mark completed anyway.

✓

Completion-checklist gate

Confirm all steps done, all criteria checked, status set. Incomplete items populate a Completion Report (<dt>/<dd>) naming the exact step or criterion and why. Then commit source + plan together.

Other Step 8 choices: Run as workflow emits a /workflows-compatible prompt for parallel subagents · Review the plan launches the seven-reviewer review-plan Agent Team (foreground or background) · Edit loops back for revisions · Exit leaves the plan at todo.
09

Auto-derived artifacts

Implement prompt always

A short Read and implement all steps… line; its Copy button actually builds a richer, status-aware prompt from live DOM state via buildImplementPrompt().

Goal prompt always

An outcome-driven sibling — Achieve this goal: … — giving the implementer latitude to deviate when a better path to the same outcome exists. Never omitted.

Workflow prompt conditional

Emitted with --workflow, or automatically when the plan touches 4+ files across 2+ top-level dirs. Repetitive per-file changes, parallelizable steps, and cross-checking are not auto-detected — opt in explicitly. Otherwise the block is removed entirely.

Effort level always

Deterministic from step count, distinct file count, and interview tier → Low / Medium / High. Drives a coloured badge, a meta-row chip, and the data-effort attribute.

10

Status & effort legends

Both are colour-coded in the rendered plan. Status is carried in three synced places; effort is auto-derived and never author-set.

Status

todo in-progress completed

Effort

low · ≤3 steps & ≤2 files medium · in between high · ≥7 steps / ≥6 files / complex
11

Visual components

Pure CSS / inline SVG only — no CDN, no <canvas>, no charting library. The file-tree is auto-generated; the rest are opt-in and deleted (markup + sidebar link) when unused.

Component triggers
ComponentUse when the plan…Mode
File-treereferences any file — scanned from step text, badged new / modified / deleted / generatedauto
Flow / pipelinehas a process, data flow, or architecture sequenceopt-in
Comparison gridweighs a 2–3-way trade-off (kept/dropped, before/after)opt-in
Bar chartshows a distribution or relative magnitudesopt-in
Data tablemaps structured data (file→change, option→behaviour)opt-in

Accessibility is baked in: tables carry a <caption> and scoped headers, charts show a visible numeric value plus a descriptive aria-label, and file badges use a text label alongside colour.

12

Embedded <meta> tags

Machine-readable metadata the plans gallery and hooks consume without reading prose.

<!-- always present -->
<meta name="plan-status"    content="todo | in-progress | completed">
<meta name="plan-effort"    content="low | medium | high">
<meta name="plan-type"      content="feature | fix | refactor | docs | chore">
<meta name="plan-created"   content="YYYY-MM-DD">
<meta name="plan-repo"      content="<repo-name>">
<meta name="plan-file"      content="<basename>.html">
<meta name="plan-path"      content="docs/plans/<basename>.html">
<meta name="plan-implement" content="Read and implement all steps…">
<meta name="plan-goal"      content="Achieve this goal: …">

<!-- conditional -->
<meta name="plan-workflow" content="Run a workflow to implement…">  // when generated
<meta name="plan-issue"    content="<issue-url>">                // when seeded from an issue
<meta name="plan-priority" content="low | medium | high | critical"> // when --priority set
13

Scope constraint — plans only

The skill produces a plan document. It does not implement anything — until you pick “Implement now” at Step 8, which lifts the constraint for that session alone.

  • No edits to source, config, or any file outside the resolved plansDirectory (or docs/plans/).
  • Read / Glob / Grep / Bash are for read-only exploration — the one exception is the Step 7 local HTTP preview server.
  • “Fix X” or “implement Y” means write a plan for how — the work itself stays a separate, user-initiated step.