From rad-planner
This skill should be used when the user says "replan", "update the plan", "re-baseline the plan", "the plan is out of date", "we shipped the MVP — what's next", "mark this milestone done", "the plan doesn't match reality anymore", "pull the next version into the plan", "adjust the plan", or when an existing `docs/plan.md` has diverged from what actually got built. Evidence-based plan update: reads git history + docs/handoff.md to mark shipped work (history preserved, never deleted), re-baselines remaining tasks, and pulls the next release-map horizon into detailed milestones when the current one is done. Re-lints and runs a single risk pass; nothing is final until the user approves.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rad-planner:replan [optional: what changed, e.g. 'M2 shipped' or 'we dropped the API idea'][optional: what changed, e.g. 'M2 shipped' or 'we dropped the API idea']This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Bring `docs/plan.md` back in line with reality without losing history or re-running
Bring docs/plan.md back in line with reality without losing history or re-running
the whole planning conversation. Real projects diverge from the plan by milestone 2 —
this is the sanctioned way to absorb that, instead of hand-editing the plan or
starting over.
Boundary with rad-repo-manager: its wrapup makes one-line status touches ("M2
shipped", stamp the date) scoped to a session. replan is the structural event —
re-sequencing, re-scoping, pulling the next horizon into detail. Wrapup maintains;
replan restructures.
CRITICAL: No implementation code, no source files. The only files written are
docs/plan.md and (conditionally) docs/[date]-update-prompt.md. An existing PRD
is never edited — contradictions surface into the update-prompt.
Read in one parallel batch: docs/plan.md, docs/handoff.md, docs/prd.md (if
present). Then git, scoped by the plan's **Updated:** date:
git log --oneline --since="<plan Updated date>"
git diff --stat $(git rev-list -1 --before="<plan Updated date>" HEAD)..HEAD
git status --short
If no plan exists, stop and recommend /rad-planner:plan (fresh) or
/rad-planner:rescue (project in an unclear state).
For each milestone and task in the plan, classify from the diff, commit messages, file existence, and the handoff's validation record:
Where the evidence is ambiguous, ask — one batched set of questions (AskUserQuestion), not a drip. Never silently guess a milestone's fate.
Before touching the file:
Plan vs reality:
Shipped: <milestones/tasks, with the evidence in one clause each>
Partially done: <what's missing, in user terms>
Not started: <...>
Looks obsolete: <what and why — needs your confirmation>
Drifted: <anything built that the plan never mentioned>
Confirm the obsolete calls and any surprises with the user before restructuring.
On the user's go-ahead, update docs/plan.md:
## Shipped section at the end of the file (create it if absent,
newest first). Never delete them. ## Shipped lives outside ## Tasks, so the
linter doesn't re-validate history.Depends on: none — predecessor shipped. Do not leave the old task ID in the
field: the linter reads any T<n> in Depends on as a live reference and will
flag a phantom dependency.## Shipped as a note; the
remainder becomes a properly specced task (all six fields) with a fresh ID.## Shipped under an "Obsolete —" note. Same dependency
rewrite.plan), and refresh the
Release map: the new work becomes "Now", "Later" themes feed the new "Next".
Confirm the promoted scope with the user — this is the moment the V1 outline
becomes real commitments.**Status:** DRAFT, stamp **Updated:** with today's date.Run the linter (use python3, or python on Windows):
python3 ${plugin_root}/scripts/plan-lint.py docs/plan.md --json
Fix CRITICAL/HIGH. Then a single risk pass — dispatch risk-assessor
(references/subagent-prompts/risk-assessment.md, max_iterations: 1), focused on
the restructured and newly promoted work; note in the dispatch that ## Shipped is
history and out of scope. Fix blocking issues once; surface the rest.
Present per plan's Phase 5 shape (plain summary → release map → decisions → detail).
On approval: flip to APPROVED, re-stamp, write the update-prompt if anything durable
surfaced (e.g. the PRD now describes behavior that shipped differently).
## Shipped or is struck
through, always recoverable.docs/prd.md or other durable docs — surfaces changes
via the update-prompt.plan (fresh) or rescue (unclear state).references/plan-template.md — structure, the ## Shipped rule, dependency-rewrite rulereferences/subagent-prompts/risk-assessment.md — single-pass dispatchscripts/plan-lint.py — re-run after every restructurenpx claudepluginhub radorigin-llc/rad-claude-skills --plugin rad-plannerProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.