ExecPlan — Lifecycle Management
Announce at start: "Using the exec-plan skill."
What is an ExecPlan
A self-contained, living document that a fresh agent session can follow to deliver observable, working behavior. Lives in docs/exec-plans/. The format follows the specification in docs/PLANS.md.
An ExecPlan is NOT a todo list. It is a narrative that tells the story of a change: why it matters, what the codebase looks like now, what it should look like after, and how to prove it worked.
When to use this skill
- Required for multi-step or multi-file work, new features, refactors, or tasks expected to take more than about an hour.
- Optional for trivial fixes, but if you skip it for a substantial task, state the reason.
- Always when resuming work from a previous session.
The Three Modes
Mode 1: CREATE a new plan
When starting new multi-step work:
- Read
docs/PLANS.md for the template and requirements.
- Create the plan at
docs/exec-plans/active/{descriptive-kebab-name}.md.
- Fill ALL sections from the template. Non-negotiable sections:
- Purpose / Big Picture — what the user can see/do after the change
- Progress — empty checkboxes for each milestone
- Surprises & Discoveries — start with
(none yet)
- Decision Log — start with
(none yet)
- Outcomes & Retrospective — start with
(fill when complete)
- Context and Orientation — full file paths, term definitions, current state
- Plan of Work — narrative milestones with goal → work → result → proof
- Concrete Steps — exact commands with expected outputs
- Validation and Acceptance — observable proof of success
- Idempotence and Recovery — how to retry or roll back
- Every file path must be absolute from repo root.
- Every term must be defined inline — assume the reader knows nothing.
- Commit the plan before starting implementation.
Mode 2: CONTINUE an existing plan
When resuming work or executing the next milestone:
- Read the plan file in
docs/exec-plans/active/.
- Find the first unchecked item in Progress.
- Before starting work, check: are there any Surprises from previous sessions that affect this task?
- Execute the milestone following the Plan of Work.
- After each completed milestone, IMMEDIATELY update the plan:
- Check the Progress item with a timestamp:
- [x] (YYYY-MM-DD HH:MMZ) Description
- Add any Surprises & Discoveries encountered
- Add any Decision Log entries for choices made
- Commit the plan update alongside the code changes.
- Run the Validation commands to confirm success.
CRITICAL: Never claim a milestone is done without updating the plan file. The plan IS the persistence mechanism. If you don't update it, the next session will redo the work.
Mode 3: COMPLETE a plan
When all milestones are done:
- Fill the Outcomes & Retrospective section:
- What was achieved vs what was planned
- Any remaining gaps
- Lessons learned
- Unexpected benefits or costs
- Move the file:
git mv docs/exec-plans/active/{name}.md docs/exec-plans/completed/{name}.md
- Commit with message:
docs: complete exec-plan {name}
Quality Checks
Before committing any plan (new or updated), verify:
Anti-patterns
- Checklist without narrative: "- [ ] Edit file X" tells the next session nothing. WHY edit it? WHAT changes? HOW to verify?
- External references for critical context: "See ARCHITECTURE.md for details" — the plan must be self-contained. Copy the relevant context in.
- Forgetting to update Progress: The most common failure. If you finish a milestone and don't check the box with a timestamp, the next session will redo it.
- Leaving completed plans in active/: After all milestones are done, MOVE to completed/. Active plans should only be unfinished work.
- Skipping Validation: "Tests pass" is not acceptance. "The
isValid computed property no longer exists in the file, verified by grep -n isValid file.swift returning no results" IS acceptance.
Integration with other skills
- Before implementing plan milestones that involve TCA code: invoke
/pfw-composable-architecture
- Before implementing plan milestones that involve debugging: invoke the
debug skill
- Before implementing plan milestones that involve refactoring: invoke the
refactor skill
- Before implementing plan milestones that involve API design: invoke the
rest-api-design skill
- After completing all plan milestones: invoke
refactor skill for a final cleanup pass
1---
2name: exec-plan
3description: |
4 Manage the lifecycle of ExecPlans — self-contained, living specifications for multi-step work.
5 Creates plans in the correct format, enforces living section updates, and handles the
6 active → completed transition. Use for any work expected to take more than one session or
7 touching more than 3 files.
8 Triggers: "create a plan", "write a plan", "start plan", "continue plan", "resume plan",
9 "finish plan", "complete plan", multi-step features, refactors, or tasks spanning sessions.
10allowed-tools: Read, Glob, Grep, Write, Edit, Bash
11---
12
13# ExecPlan — Lifecycle Management
14
15**Announce at start:** "Using the exec-plan skill."
16
17## What is an ExecPlan
18
19A self-contained, living document that a fresh agent session can follow to deliver observable, working behavior. Lives in `docs/exec-plans/`. The format follows the specification in `docs/PLANS.md`.
20
21An ExecPlan is NOT a todo list. It is a narrative that tells the story of a change: why it matters, what the codebase looks like now, what it should look like after, and how to prove it worked.
22
23## When to use this skill
24
25- **Required** for multi-step or multi-file work, new features, refactors, or tasks expected to take more than about an hour.
26- **Optional** for trivial fixes, but if you skip it for a substantial task, state the reason.
27- **Always** when resuming work from a previous session.
28
29## The Three Modes
30
31### Mode 1: CREATE a new plan
32
33When starting new multi-step work:
34
351. Read `docs/PLANS.md` for the template and requirements.
362. Create the plan at `docs/exec-plans/active/{descriptive-kebab-name}.md`.
373. Fill ALL sections from the template. Non-negotiable sections:
38 - **Purpose / Big Picture** — what the user can see/do after the change
39 - **Progress** — empty checkboxes for each milestone
40 - **Surprises & Discoveries** — start with `(none yet)`
41 - **Decision Log** — start with `(none yet)`
42 - **Outcomes & Retrospective** — start with `(fill when complete)`
43 - **Context and Orientation** — full file paths, term definitions, current state
44 - **Plan of Work** — narrative milestones with goal → work → result → proof
45 - **Concrete Steps** — exact commands with expected outputs
46 - **Validation and Acceptance** — observable proof of success
47 - **Idempotence and Recovery** — how to retry or roll back
484. Every file path must be absolute from repo root.
495. Every term must be defined inline — assume the reader knows nothing.
506. Commit the plan before starting implementation.
51
52### Mode 2: CONTINUE an existing plan
53
54When resuming work or executing the next milestone:
55
561. Read the plan file in `docs/exec-plans/active/`.
572. Find the first unchecked item in Progress.
583. Before starting work, check: are there any Surprises from previous sessions that affect this task?
594. Execute the milestone following the Plan of Work.
605. **After each completed milestone, IMMEDIATELY update the plan:**
61 - Check the Progress item with a timestamp: `- [x] (YYYY-MM-DD HH:MMZ) Description`
62 - Add any Surprises & Discoveries encountered
63 - Add any Decision Log entries for choices made
646. Commit the plan update alongside the code changes.
657. Run the Validation commands to confirm success.
66
67**CRITICAL: Never claim a milestone is done without updating the plan file.** The plan IS the persistence mechanism. If you don't update it, the next session will redo the work.
68
69### Mode 3: COMPLETE a plan
70
71When all milestones are done:
72
731. Fill the **Outcomes & Retrospective** section:
74 - What was achieved vs what was planned
75 - Any remaining gaps
76 - Lessons learned
77 - Unexpected benefits or costs
782. Move the file: `git mv docs/exec-plans/active/{name}.md docs/exec-plans/completed/{name}.md`
793. Commit with message: `docs: complete exec-plan {name}`
80
81## Quality Checks
82
83Before committing any plan (new or updated), verify:
84
85- [ ] Purpose describes user-visible behavior, not just code changes
86- [ ] Progress has timestamps on completed items
87- [ ] Context names files by full path from repo root
88- [ ] All terms are defined inline (no "see external doc" for critical terms)
89- [ ] Validation has exact commands AND expected outputs
90- [ ] Recovery section explains rollback for each risky step
91- [ ] Surprises section is up to date (even if empty)
92- [ ] Decision Log captures any choices made during implementation
93
94## Anti-patterns
95
96- **Checklist without narrative**: "- [ ] Edit file X" tells the next session nothing. WHY edit it? WHAT changes? HOW to verify?
97- **External references for critical context**: "See ARCHITECTURE.md for details" — the plan must be self-contained. Copy the relevant context in.
98- **Forgetting to update Progress**: The most common failure. If you finish a milestone and don't check the box with a timestamp, the next session will redo it.
99- **Leaving completed plans in active/**: After all milestones are done, MOVE to completed/. Active plans should only be unfinished work.
100- **Skipping Validation**: "Tests pass" is not acceptance. "The `isValid` computed property no longer exists in the file, verified by `grep -n isValid file.swift` returning no results" IS acceptance.
101
102## Integration with other skills
103
104- Before implementing plan milestones that involve TCA code: invoke `/pfw-composable-architecture`
105- Before implementing plan milestones that involve debugging: invoke the `debug` skill
106- Before implementing plan milestones that involve refactoring: invoke the `refactor` skill
107- Before implementing plan milestones that involve API design: invoke the `rest-api-design` skill
108- After completing all plan milestones: invoke `refactor` skill for a final cleanup pass