bundles/planning/skills/writing-plans/SKILL.md
Turn a spec or requirements doc into a comprehensive, bite-sized implementation plan: map every file, define 2-5 minute TDD tasks with complete code, and enforce DRY/YAGNI/frequent-commits discipline. Use when you have requirements ready and need a concrete execution plan before touching code, when a feature spans multiple files and needs decomposition, or when you want agentic workers to execute tasks reliably without guessing.
npx skillsauth add shipshitdev/library writing-plansInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Write a comprehensive implementation plan assuming the implementer has zero context about the codebase and questionable test instincts. Document everything: which files to touch, complete code, exact commands, expected output, and how to verify. Deliver the whole plan as bite-sized checkboxed tasks. DRY. YAGNI. TDD. Frequent commits.
If the spec covers multiple independent subsystems, consider breaking it into separate plans — one per subsystem. Each plan should produce working, testable software on its own. Deeply coupled work can share a plan; independently deployable subsystems should not.
Map out which files will be created or modified and what each one is responsible for before defining tasks.
Each task should produce self-contained changes that make sense independently.
Each step is one action, completable in 2-5 minutes:
Never combine steps. Never skip the failure confirmation.
Every plan MUST start with this header:
# [Feature Name] Implementation Plan
**Goal:** [One sentence describing what this builds]
**Architecture:** [2-3 sentences about approach]
**Tech Stack:** [Key technologies/libraries used]
---
### Task N: [Component Name]
**Files:**
- Create: `exact/path/to/file.ts`
- Modify: `exact/path/to/existing.ts`
- Test: `tests/exact/path/to/file.test.ts`
- [ ] **Step 1: Write the failing test**
```typescript
it('describes specific behavior', () => {
const result = functionUnderTest(input)
expect(result).toBe(expectedValue)
})
```
- [ ] **Step 2: Run test to verify it fails**
```bash
bun run test tests/path/to/file.test.ts
```
Expected: FAIL — `functionUnderTest is not defined` (or similar)
- [ ] **Step 3: Write minimal implementation**
```typescript
export function functionUnderTest(input: InputType): OutputType {
return expectedValue
}
```
- [ ] **Step 4: Run test to verify it passes**
```bash
bun run test tests/path/to/file.test.ts
```
Expected: PASS
- [ ] **Step 5: Commit**
```bash
git add tests/path/to/file.test.ts src/path/to/file.ts
git commit -m "feat: add specific behavior"
```
Never write:
After writing the complete plan, review it against the spec before handing it off. Run this yourself — do not delegate it.
1. Spec coverage. Skim each requirement in the spec. Can you point to a task that implements it? List any gaps and add tasks for them.
2. Placeholder scan. Search the plan for any pattern from the "No Placeholders" section above. Fix every hit before proceeding.
3. Type and name consistency. Do the types, method signatures, and property names used in later tasks match what is defined in earlier tasks? A function named clearItems() in Task 3 and clearAllItems() in Task 7 is a bug in the plan. Fix it.
If you find issues, fix them inline. Then hand off.
Post the plan as a comment on the work/PRD issue — the same GitHub issue the
PRD lives on (or the work item the loop will pick up). The issue is the single
source of truth: the executor and all execution lanes read the issue body, the
linked PRD, and all comments, so a plan posted as a comment crosses to CI for
either engine. Do not save the plan to a local docs/plans/*.md file — that
file desyncs from the project the moment work starts and never reaches the loop.
The comment must start with the heading ## Implementation Plan so the
executor can find it among the issue's comments.
Post it with the plan markdown piped on stdin:
gh issue comment <N> --body-file - # plan markdown on stdin
Show the drafted plan first. Post only on approval — never post speculatively.
The plan is the how; the PRD body is the what. Keep the plan out of the PRD body — a comment co-locates the two on one issue without polluting the body.
No connected tracker? Agree on the single canonical location with the user
before writing — never default to a throwaway docs/plans/ file.
Long plans: if the plan exceeds one comment's limit (~65k chars), post it as
sequential ## Implementation Plan (n/m) comments rather than truncating.
The plan lives on the issue, so hand off via the dispatch gate, not a file.
Plan posted to issue #N. To dispatch it, move the issue to Backlog on the board (set
Status= Backlog) and apply one gate:dispatch:claude(Claude lane) ordispatch:codex(Codex lane). The loop claims it, reads the## Implementation Plancomment, and works it task by task.
For execution outside the loop (working the plan directly in this session), offer the two standalone paths — both read the plan from the issue comment, not a file:
1. Subagent-per-task (recommended) — dispatch a fresh subagent for each task with a review checkpoint between tasks. Faster iteration, isolated context per task, catches drift early.
2. Inline execution — work through tasks sequentially in the current session, checking off each step before moving to the next.
Which approach?
Whichever path runs, enforce strict task-by-task execution: complete every checkbox in a task before starting the next task. No skipping steps. No batching tasks.
development
Coordinates a weekly engineering review of board accuracy, recent code changes, operational health, and scoped cleanup. Use for a recurring repository health review or a review of the last several days.
testing
Audits project board configuration and prepares explicitly requested setup, copy, or normalization changes while preserving the existing workflow and provider boundaries. Use when inspecting a board's fields, columns, scope, or configuration.
testing
Reconciles a project board with current work and delivery evidence, reports incomplete coverage and metadata gaps, and applies only approved provider-supported field changes. Use when auditing board drift, reviewing blocked work, or assessing upcoming delivery.
development
Walk through how a subsystem works. Use for "how does X work", code walkthroughs before changing something, and placement or ownership questions. Explains architecture, runtime flow, and onboarding mental models. Can critique architecture. Use why for motivation.