Phase Protocol
Purpose
This protocol prevents context drift during long development sessions by:
- •Entry Gate - Forcing context refresh at phase start
- •TODO anchoring - Creating TODO immediately to survive context compression
- •Exit Gate - Forcing re-read of this protocol before next phase
Key insight: Once TODO is created, it survives context compression. By creating TODO early with Exit Gate that re-reads this protocol, we ensure the loop continues.
Phase Entry Protocol
Execute these steps IN ORDER at the start of each phase:
┌─────────────────────────────────────────────────────────────────┐ │ PHASE N ENTRY PROTOCOL │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Step 1: READ THIS SKILL (current step - context refresh) │ │ → You are doing this now │ │ │ │ Step 2: READ tasks.md │ │ → Get task list for current phase │ │ → Identify which phase you are entering │ │ │ │ Step 3: CREATE TODO IMMEDIATELY ← 🔴 CRITICAL! │ │ → Use TodoWrite tool NOW │ │ → Include: Entry Gate + Tasks + Exit Gate │ │ → This MUST happen BEFORE reading other docs! │ │ → Reason: TODO survives context compression │ │ │ │ Step 4: GATE - Verify TODO completeness │ │ → Count items: Entry (8) + Tasks (N) + Exit (3) │ │ → If incomplete → add missing items NOW │ │ │ │ Step 5: READ plan.md │ │ → Understand implementation approach │ │ │ │ Step 6: READ design.md │ │ → Understand technical decisions │ │ │ │ Step 7: READ specs/*.md │ │ → Understand requirements and scenarios │ │ │ │ Step 8: GATE - Output key understanding │ │ → Must output before proceeding │ │ → Format provided below │ │ │ │ Step 9: BEGIN IMPLEMENTATION │ │ → Now you can start actual development │ │ │ └─────────────────────────────────────────────────────────────────┘
TODO Structure Template
When creating TODO in Step 3, use this structure:
=== Phase N: [Phase Name] === --- ENTRY GATE (complete first) --- - [ ] PN-Gate-1: Read phase-protocol skill (current) - [ ] PN-Gate-2: Read tasks.md - [ ] PN-Gate-3: Create Phase N TODO (current) - [ ] PN-Gate-4: [GATE] Verify TODO completeness - [ ] PN-Gate-5: Read plan.md - [ ] PN-Gate-6: Read design.md - [ ] PN-Gate-7: Read specs/*.md - [ ] PN-Gate-8: [GATE] Output key understanding --- IMPLEMENTATION TASKS --- - [ ] PN-1: [Task from tasks.md] - [ ] PN-2: [Task from tasks.md] - [ ] PN-3: [Task from tasks.md] ... --- EXIT GATE (complete after all tasks) --- - [ ] PN-Exit-1: Update tasks.md (mark completed) - [ ] PN-Exit-2: Git commit - [ ] PN-Exit-3: Re-read phase-protocol + Create Phase N+1 TODO ← 🔄
Replace:
- •
Nwith phase number (1, 2, 3...) - •
[Phase Name]with actual phase name - •
[Task from tasks.md]with actual tasks
Gate Verification Templates
Gate-4: TODO Completeness Verification
Output this checklist BEFORE proceeding:
🚧 PHASE N TODO COMPLETENESS CHECK 🚧 Entry Gate items: [count] (expected: 8) □ PN-Gate-1: Read phase-protocol skill □ PN-Gate-2: Read tasks.md □ PN-Gate-3: Create TODO □ PN-Gate-4: Verify TODO completeness □ PN-Gate-5: Read plan.md □ PN-Gate-6: Read design.md □ PN-Gate-7: Read specs/*.md □ PN-Gate-8: Output key understanding Implementation items: [count] □ [List all task items] Exit Gate items: [count] (expected: 3) □ PN-Exit-1: Update tasks.md □ PN-Exit-2: Git commit □ PN-Exit-3: Re-read protocol + Create next TODO TOTAL: [8 + N + 3] items ✅ Complete - proceeding to Step 5 🚫 Incomplete - adding missing items NOW
Gate-8: Key Understanding Confirmation
Output this summary BEFORE starting implementation:
🚧 PHASE N KEY UNDERSTANDING 🚧 ## Phase Goal [1-2 sentences describing what this phase accomplishes] ## Tasks to Complete 1. [Task 1 brief description] 2. [Task 2 brief description] 3. [Task 3 brief description] ## Spec References - Requirement: [Name] → Scenario: [Name] - Requirement: [Name] → Scenario: [Name] ## Technical Approach (from design.md) - [Key decision 1] - [Key decision 2] ## Files to Create/Modify - Create: [file paths] - Modify: [file paths] ✅ Understanding confirmed - beginning implementation 🚫 Unclear - re-reading documents
Phase Exit Protocol
Execute these steps IN ORDER after completing all phase tasks:
┌─────────────────────────────────────────────────────────────────┐ │ PHASE N EXIT PROTOCOL │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Step 1: UPDATE tasks.md │ │ → Mark all completed tasks [x] │ │ → Update Status counts │ │ → Update Completion Tracking table │ │ │ │ Step 2: GIT COMMIT │ │ → Stage all changes │ │ → Commit with descriptive message │ │ → Include Spec references │ │ │ │ Step 3: CHECK - More phases remaining? │ │ → If YES: Continue to Step 4 │ │ → If NO: Proceed to finish-branch │ │ │ │ Step 4: RE-READ THIS SKILL ← 🔴 CRITICAL! │ │ → Read skills/phase-protocol/SKILL.md again │ │ → This refreshes context for next phase │ │ │ │ Step 5: CREATE NEXT PHASE TODO │ │ → Follow Entry Protocol for Phase N+1 │ │ → Start from Step 2 (tasks.md already known) │ │ │ └─────────────────────────────────────────────────────────────────┘
Phase Transition Announcement
When completing a phase and moving to next, announce:
--- ## Phase N Complete ✅ **Completed tasks:** - [x] Task 1 - [x] Task 2 - [x] Task 3 **Commit:** [sha] - [message] **Documents updated:** - tasks.md: Phase N tasks marked complete - Completion Tracking: [X]% → [Y]% --- ## Transitioning to Phase N+1 Re-reading phase-protocol skill to refresh context... [Then execute Entry Protocol for Phase N+1] ---
Why This Works
┌────────────────────────────────────────────────────────────────┐ │ CONTEXT DRIFT PREVENTION MECHANISM │ ├────────────────────────────────────────────────────────────────┤ │ │ │ Problem: As conversation grows, AI forgets earlier context │ │ │ │ Solution: │ │ │ │ 1. TODO survives compression │ │ → Created early, stays visible throughout phase │ │ │ │ 2. Exit Gate forces re-read │ │ → Last TODO item: "Re-read protocol + Create next TODO" │ │ → Cannot complete without reading this skill again │ │ │ │ 3. Entry Gate rebuilds context │ │ → Re-reading docs rebuilds understanding │ │ → Gate verification ensures nothing skipped │ │ │ │ 4. Loop continues automatically │ │ → Exit → Re-read → Entry → Exit → Re-read → ... │ │ │ │ │ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │Entry│───▶│Tasks│───▶│Exit │───▶│Entry│───▶ ... │ │ │Gate │ │ │ │Gate │ │Gate │ │ │ └─────┘ └─────┘ └──┬──┘ └─────┘ │ │ │ ▲ │ │ │ │ │ │ └──────────┘ │ │ Re-read skill │ │ │ └────────────────────────────────────────────────────────────────┘
Common Mistakes to Avoid
| Mistake | Consequence | Correct Action |
|---|---|---|
| Read docs before creating TODO | TODO incomplete after compression | Create TODO at Step 3, BEFORE reading docs |
| Skip Gate-4 verification | Missing items discovered too late | Always output completeness check |
| Skip Gate-8 understanding | Start coding without clear goal | Always output key understanding |
| Forget Exit-3 (re-read skill) | Context lost, next phase starts blind | Exit-3 is NON-NEGOTIABLE |
| Combine multiple phases | Exit Gate skipped, context drifts | One phase at a time |
| Mark TODO done without doing | Gate verification fails | Actually complete each item |
Integration with execute skill
This skill is invoked by superspec:execute (subagent-development):
- •At execution start → Read this skill
- •Before each phase → Re-read this skill
- •After each phase → Exit Gate forces re-read
The execute skill should NOT duplicate this protocol. It should reference it.
Quick Reference
ENTRY: Read skill → Read tasks → CREATE TODO → Gate → Read docs → Gate → Implement EXIT: Update tasks → Commit → Re-read skill → Create next TODO → Loop back
The most important rule: Create TODO BEFORE reading other documents.