| name | writing-plans |
| description | Write bomb-proof implementation plans: bite-sized tasks, exact paths, complete code, verification steps. Use before every multi-step implementation or delegation. |
| version | 1.2.0 |
| author | Hermes Agent (adapted from obra/superpowers, mattpocock/skills writing-great-skills) |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"hermes":{"tags":["planning","design","implementation","workflow","bomb-proof"],"related_skills":["subagent-driven-development","test-driven-development","requesting-code-review"]}} |
| argument-hint | What feature or change needs a bomb-proof plan? |
Writing Implementation Plans
Leading word: bomb-proof — a plan so detailed the implementer never has to guess. Every path, every file, every command spelled out. If someone has to fill in a blank, the plan is not bomb-proof yet.
Overview
Write bomb-proof implementation plans. Assume the implementer has zero context for the codebase and questionable taste. Document everything: which files to touch, complete code, testing commands, docs to check, how to verify. Bite-sized tasks. DRY. YAGNI. TDD. Frequent commits.
Assume the implementer is a skilled developer who knows almost nothing about this toolset or problem domain, and doesn't know good test design very well.
Core principle: A good plan makes implementation obvious. If someone has to guess, the plan is incomplete.
When to Use
Use before every multi-step implementation. Simple if the feature seems trivial — assumptions cause bugs, and future you needs the breadcrumb trail.
Completion criterion: You have a .md file in docs/plans/ with numbered tasks, each specifying exact file paths, complete code, and verification steps.
Bite-Sized Task Granularity
Each task = 2-5 minutes of focused work.
Every step is one action:
- "Write the failing test" — step
- "Run it to make sure it fails" — step
- "Implement the minimal code to make the test pass" — step
- "Run the tests and make sure they pass" — step
- "Commit" — step
Too big:
### Task 1: Build authentication system
[50 lines of code across 5 files]
Right size:
### Task 1: Create User model with email field
[10 lines, 1 file]
### Task 2: Add password hash field to User
[8 lines, 1 file]
### Task 3: Create password hashing utility
[15 lines, 1 file]
Plan Document Structure
Header (Required)
Every plan MUST start with:
# [Feature Name] Implementation Plan
> **For Hermes:** Use subagent-driven-development skill to implement this plan task-by-task.
**Goal:** [One sentence describing what this builds]
**Architecture:** [2-3 sentences about approach]
**Tech Stack:** [Key technologies/libraries]
---
Task Structure
Each task follows this format:
### Task N: [Descriptive Name]
**Objective:** What this task accomplishes (one sentence)
**Files:**
- Create: `exact/path/to/new_file.py`
- Modify: `exact/path/to/existing.py:45-67` (line numbers if known)
- Test: `tests/path/to/test_file.py`
**Step 1: Write failing test**
```python
def test_specific_behavior():
result = function(input)
assert result == expected
```
**Step 2: Run test to verify failure**
Run: `pytest tests/path/test.py::test_specific_behavior -v`
Expected: FAIL — "function not defined"
**Step 3: Write minimal implementation**
```python
def function(input):
return expected
```
**Step 4: Run test to verify pass**
Run: `pytest tests/path/test.py::test_specific_behavior -v`
Expected: PASS
**Step 5: Commit**
```bash
git add tests/path/test.py src/path/file.py
git commit -m "feat: add specific feature"
```
Writing Process
Step 1: Understand Requirements
Read: feature requirements, design docs, acceptance criteria, constraints.
Check: what's ambiguous? what's missing?
Completion criterion: You can state the goal in one sentence and list 3+ acceptance criteria.
Step 2: Explore the Codebase
Use Hermes tools to understand the project:
search_files("*.py", target="files", path="src/")
search_files("similar_pattern", path="src/", file_glob="*.py")
search_files("*.py", target="files", path="tests/")
read_file("src/app.py")
Completion criterion: You know which files exist, where similar patterns live, and what the testing convention looks like.
Step 3: Design Approach
Decide:
- Architecture pattern
- File organization
- Dependencies needed
- Testing strategy
Completion criterion: You can draw the data flow on a napkin — input → transformation → output, and which files own each step.
Step 4: Write Tasks in Order
- Setup/infrastructure
- Core functionality (TDD for each)
- Edge cases
- Integration
- Cleanup/documentation
Completion criterion: Each task is 2-5 minutes of work, has exact file paths, and starts with a failing test.
Step 5: Complete Every Detail
For each task:
- Exact file paths (not "the config file" but
src/config/settings.py)
- Complete code examples (not "add validation" but the actual code)
- Exact commands with expected output
- Verification steps that prove the task works
Completion criterion: You can copy-paste any task's code and commands into a terminal — nothing left to figure out.
Step 6: Review the Plan
Check:
Step 7: Save the Plan
mkdir -p docs/plans
git add docs/plans/
git commit -m "docs: add implementation plan for [feature]"
Principles
DRY (Don't Repeat Yourself)
Bad: Copy-paste validation in 3 places
Good: Extract validation function, use everywhere
YAGNI (You Aren't Gonna Need It)
Bad: Add "flexibility" for future requirements
Good: Implement only what's needed now
class User:
def __init__(self, name, email):
self.name = name
self.email = email
self.preferences = {}
self.metadata = {}
class User:
def __init__(self, name, email):
self.name = name
self.email = email
TDD (Test-Driven Development)
Every task that produces code should include the full TDD cycle:
- Write failing test
- Run to verify failure
- Write minimal code
- Run to verify pass
See test-driven-development skill for details.
Frequent Commits
Commit after every task:
git add [files]
git commit -m "type: description"
Common Mistakes
Vague Tasks
Bad: "Add authentication"
Good: "Create User model with email and password_hash fields"
Incomplete Code
Bad: "Step 1: Add validation function"
Good: "Step 1: Add validation function" followed by the complete function code
Missing Verification
Bad: "Step 3: Test it works"
Good: "Step 3: Run pytest tests/test_auth.py -v, expected: 3 passed"
Missing File Paths
Bad: "Create the model file"
Good: "Create: src/models/user.py"
Execution Handoff
After saving the plan, offer the execution approach:
"Plan complete and saved. Ready to execute using subagent-driven-development — I'll dispatch a fresh subagent per task with two-stage review (spec compliance then code quality). Shall I proceed?"
When executing, use the subagent-driven-development skill:
- Fresh
delegate_task per task with full context
- Spec compliance review after each task
- Code quality review after spec passes
- Proceed only when both reviews approve
Remember
Bite-sized tasks (2-5 min each)
Exact file paths
Complete code (copy-pasteable)
Exact commands with expected output
Verification steps
DRY, YAGNI, TDD
Frequent commits
A good plan makes implementation obvious.
References
- [
mattpocock/skills debugging-discipline references/mattpocock-skills.md] — leading words, completion criteria, progressive disclosure principles used in this skill.