From Plan
The program/epic layer above a change-management workflow (OpenSpec by default). Use whenever the user works with a PLAN.md or talks about plans, phases, or the roadmap — starting/creating a new plan ("let's start a new plan"), checking plan status ("where are we?"), deciding what to build next ("what's next?"), advancing/landing a phase, archiving a completed plan, or validating that the plan matches reality. Carries the ubiquitous language (Plan → Phases → carried by → Changes), the discipline rules (R1–R7), the artifact shape, and the plan lifecycle. The `plan:*` commands delegate here.
How this skill is triggered — by the user, by Claude, or both
Slash command
/plan:plan-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are operating the **Plan** layer: a coarse, resumable roadmap (`PLAN.md`) that
You are operating the Plan layer: a coarse, resumable roadmap (PLAN.md) that
sequences Phases, each carried by one or more Changes. Plan sits
above the change engine (OpenSpec by default); it never duplicates a change's
granular tasks. Read DESIGN.md in this plugin for the full rationale; this file
is the operational guide.
PLAN.md); one active plan per program.Linking verb: carry — "a phase is carried by changes."
The plan's header declares its change engine (Engine: OpenSpec). Drive whatever
is declared; default to OpenSpec (openspec/changes/, the opsx:*
commands). To carry a phase, propose a change via that engine. Never hard-assume
OpenSpec is the only option, but do default to it.
PLAN.md at the repo root (the one well-known location).plans/archive/YYYY-MM-DD-<program>.md.${CLAUDE_PLUGIN_ROOT}/templates/PLAN.md.openspec list --json, and the
openspec/changes/ + openspec/changes/archive/ directories.Each plan:* command runs the matching procedure. Natural language routes here
too (e.g. "let's start a new plan" → new; "where are we?" → status).
PLAN.md exists and has unfinished phases
([ ]/[~]), STOP and confirm intent. Offer:
PLAN.md exists and is complete, archive it first (see archive).PLAN.md from ${CLAUDE_PLUGIN_ROOT}/templates/PLAN.md: fill the
header (Program, Status: active, Engine, Started date, Sources of truth), list
the phases, and mark every carrying change not yet proposed. State the
cross-cutting invariants and the out-of-scope list.PLAN.md. Read change state via openspec list --json (or the declared
engine's equivalent).PLAN.md, find the next unstarted deliverable/phase respecting dependency
order.opsx:propose), and
record the change name + proposed state on that phase in PLAN.md.PLAN.md: flip the checkbox(es) to [x], update the phase Status
with a date and a one-line outcome, and set the carrying change's lifecycle
state (e.g. landed or archived).[x], or the user has explicitly
accepted remaining work as out-of-scope).PLAN.md, set Status: complete and stamp the Completed date.plans/archive/YYYY-MM-DD-<program>.md (creating plans/archive/
if needed). The date is the completion date; the suffix is the program
identity (e.g. 2026-06-11-minerva-v3.md).Reconcile the plan against real change state and report mismatches; fix only what the user approves. Check:
Carried by: <name> resolves to a real change (active or archived);[x] phase's change is archived (not still active);[x]/landed phase (no silent drift);This runs as an agent-driven check today (read PLAN.md + openspec list); a
fast CLI is a future, optional addition.
PLAN.md without archiving the first.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub mattmccray/plan --plugin plan