Create an implementation plan with atomic commits that build toward a complete feature
Create a TOML implementation plan that drives the implement-commit skill.
The plan must be machine-parseableβthe orchestrator reads it mechanically.
docs/features/NNNN-feature-name/design.mddocs/features/NNNN-feature-name/test-plan.mdCreate docs/features/NNNN-feature-name/implementation-plan.toml:
[meta]
feature = "feature-name"
feature_dir = "docs/features/NNNN-feature-name"
workspace = "./path/to/workspace"
[dependencies]
1 = []
2 = []
3 = [1, 2]
[[commits]]
id = 1
title = "Short description"
message = "feat(scope): conventional commit message"
files = ["path/to/file.rs"] # Relative to workspace
acceptance = ["Criterion from CC table (CC-N)"]
anti_patterns = ["What NOT to do"]
tests = ["test_name_from_test_plan"] # REQUIRED: maps to test-plan.md
Read design.md thoroughly, noting:
Read test-plan.md and create a mapping:
Look for capability boundaries, not code artifact boundaries.
Good boundaries:
Anti-pattern: Splitting by artifact (types in one commit, impl in another, tests in a third).
For each commit, list which commits must complete first.
Encode as [dependencies] table where key is commit ID, value is list of dependency IDs.
The orchestrator uses this to determine parallel execution.
For each commit, list the specific test names from test-plan.md that verify it:
tests = [
"test_protocol_encode_acquire_request",
"test_protocol_decode_roundtrip",
]
Every test in test-plan.md must appear in exactly one commit's tests array.
This creates an auditable trace: test-plan.md β implementation-plan.toml β code.
For each commit, copy relevant entries from the design's Critical Constraints table:
acceptance = criteria that MUST be met (reference CC-N and test names)anti_patterns = what reviewers should rejectFor each commit:
[[commits]]
id = N # Sequential integer
title = "..." # What this commit accomplishes
message = "..." # Full conventional commit message
files = ["..."] # Paths relative to workspace
acceptance = ["..."] # From CC table + test descriptions
anti_patterns = ["..."] # From CC table, or empty []
tests = ["..."] # Test names from test-plan.md (REQUIRED)
After drafting the plan, spawn a verification agent:
result = spawn(
prompt=draft_spawn_prompt(SkillDefined(
"Verify implementation plan covers all test-plan.md tests"
)),
context_files=[
f"{skill_dir}/agents/verifier.md",
f"{feature_dir}/test-plan.md",
f"{feature_dir}/implementation-plan.toml",
],
response_model=VerificationResult,
read_only=True,
)
if not result.parsed.valid:
# Fix gaps before proceeding
agent_feedback(f"Plan incomplete: {result.parsed.gaps}")
The verifier checks:
# Check TOML parses
python3 -c "import tomllib; tomllib.load(open('implementation-plan.toml', 'rb'))"
Target: 200-400 lines changed per commit
Too Small:
Too Large:
Just Right:
from pydantic import BaseModel
class VerificationResult(BaseModel):
valid: bool
total_tests_in_plan: int
tests_assigned: int
gaps: list[str] # Tests not assigned to any commit
duplicates: list[str] # Tests assigned to multiple commits
See docs/features/0000-templates/implementation-plan.toml for a complete example.
After creating and verifying the plan:
implement-commit skill to execute