architecture
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate…
Use when you have a PRD or design spec and need a bite-sized, executable implementation plan that any agent can follow without re-deriving structure. Produces `docs/plans/YYYY-MM-DD-<feature>.md` with per-task Files block, complete code per step (no placeholders), and exact
Claude Code
$ npx -y skills add Kanevry/session-orchestrator --skill write-executable-plan --agent claude-code
Codex
$ npx skills add Kanevry/session-orchestrator --skill write-executable-plan -a codex -y
Cursor
$ npx skills add Kanevry/session-orchestrator --skill write-executable-plan -a cursor -y
Gemini CLI
$ npx skills add Kanevry/session-orchestrator --skill write-executable-plan -a gemini-cli -y
GitHub Copilot
$ npx skills add Kanevry/session-orchestrator --skill write-executable-plan -a github-copilot -y
OpenCode
$ npx skills add Kanevry/session-orchestrator --skill write-executable-plan -a opencode -y
Windsurf
$ npx skills add Kanevry/session-orchestrator --skill write-executable-plan -a windsurf -y
name: write-executable-plan description: Use when you have a PRD or design spec and need a bite-sized, executable implementation plan that any agent can follow without re-deriving structure. Produces `docs/plans/YYYY-MM-DD-<feature>.md` with per-task Files block, complete code per step (no placeholders), and exact verification commands. Rejects "TBD", "TODO", "add error handling", "similar to Task N". user-invocable: true model: inherit color: green tools: Read, Grep, Glob, Bash, Write
> Bite-sized plans for parallel agents. No placeholders. No vague steps.
Read `skills/_shared/bootstrap-gate.md` and execute the gate check. If the gate is CLOSED, invoke `skills/bootstrap/SKILL.md` and wait for completion before proceeding. If the gate is OPEN, continue to Phase 1.
<HARD-GATE> Do NOT proceed past Phase 0 if GATE_CLOSED. There is no bypass. Refer to `skills/_shared/bootstrap-gate.md` for the full HARD-GATE constraints. </HARD-GATE>
Accept ONE of the following inputs (in order of preference):
1. **PRD path** — `docs/prd/YYYY-MM-DD-<feature>.md` produced by `/plan feature` 2. **Design spec path** — `docs/specs/YYYY-MM-DD-<slug>-design.md` produced by `/brainstorm` 3. **Inline description** — user provides a free-text description; prompt for elaboration via AUQ before proceeding
If no source is provided and `$ARGUMENTS` is empty, ask via AUQ:
AskUserQuestion({
questions: [{
question: "Which source should this plan be based on?",
header: "Plan Source",
options: [
{ label: "Existing PRD (Recommended)", description: "Point me to docs/prd/YYYY-MM-DD-<feature>.md — most precise decomposition." },
{ label: "Design spec from /brainstorm", description: "Point me to docs/specs/YYYY-MM-DD-<slug>-design.md — skips formal PRD." },
{ label: "Describe inline", description: "Paste or describe the feature — I will ask follow-up questions before planning." }
],
multiSelect: false
}]
})Read the source file and extract:
Break the source into Tasks. Each Task MUST satisfy all of these constraints:
Before writing Tasks, output a brief decomposition plan in plain text:
## Decomposition (draft) - Task 1: <title> — <owner> — ~<N> min — Files: <list> - Task 2: <title> — <owner> — ~<N> min — Files: <list> ...
If any task's file set overlaps another, surface the conflict and resolve it before writing Steps.
Each Task gets exactly 5 steps in this order. All 5 steps are mandatory.
**EARS seam:** If the source PRD/spec carries an `## Acceptance Criteria (EARS)` (or `## 3.A`) section, apply the EARS→vitest 1:1 mapping below to emit per-clause test stubs. If no EARS section is present, fall back to manual derivation from prose.
| EARS pattern | vitest construct | example skeleton | |---|---|---| | **Ubiquitous** ("The S shall R.") | invariant `it()` — no setup branching | `it('S shall R', () => { /* assert invariant */ })` | | **State-driven** ("While P, the S shall R.") | `describe()` for state context, nested `it()` for assertion | `describe('while P', () => { it('S shall R', () => { /* enter P; expect R */ }) })` | | **Event-driven** ("When T, the S shall R.") | arrange/trigger/expect inside `it()` | `it('when T, S shall R', () => { /* arrange; trigger T; expect R */ })` | | **Optional feature** ("Where F, the S shall R.") | `it.skipIf(!F)` (vitest conditional) | `it.skipIf(!F)('where F, S shall R', () => { /* expect R */ })` | | **Unwanted behaviour** ("If C, then the S shall R.") | error-path `it()` with negative assertion or `toThrow()` | `it('if C, then S shall R', () => { /* induce C; expect R */ })` |
Reference test exemplifying this pattern: `tests/lib/wave-executor/persona-gate-hook.test.mjs` (shipped at #481).
Follow `.claude/rules/testing.md` § "Test Quality — False-Positive Prevention": one meaningful assertion per `it`, behaviour not implementation, no branching, hardcoded expected values.
Provide:
The test MUST fail before Step 3 is applied. If the behavior already exists and cannot fail, pick a harder assertion or a new edge case.
Provide:
Your coding agents get an agreed plan, a check after each round of changes and a handover to the next session. A free, MIT-licensed workflow plugin for people running Claude Code, Codex CLI, Cursor IDE or Pi on a git repository.
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate…
Use this skill when running an autonomous session-orchestration loop. Chains session-start → session-plan → wave-executor →…
Use this skill when scaffolding the minimum repository structure required by session-orchestrator. Invoked automatically by the…
Use when you have a feature idea but the scope or UX is still ambiguous — runs a lightweight Socratic design dialogue (3-5 AUQ…
Use when detecting drift between CLAUDE.md (or AGENTS.md, the Codex CLI alias) / _meta narrative and live repository state. Ten…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.