phase-tracking
Skill0 starsChanged 5 months agoMITView on GitHub
Dual-layer phase planning and state management for multi-phase projects. Uses a project_state.json (persistent between sessions) combined with in-session todowrite/todoread for atomic task tracking. Handles initialization, phase advancement, ADR recording, and session handoff.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Donemeb/Donemeb-Skillstheir own version, first seen Oct 13, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Donemeb/Donemeb-Skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- idea-expansionSkill
- project-pulseSkill
- shadcn-ui-migrationSkill
- todo-workflowSkill
- ui-migrationSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. About 0 are common, 8 are distinctive, and 18 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
18
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 77
When starting a new phased project, create project_state.json at the project root:
- Distinctive: line 79
Ask the user for the complete list of phases.
- Very specific: line 80
Write the file with current_phase set to Phase 1, completed_phases empty, and all phases in pending_phases.
- Very specific: line 81
Create the first todo breakdown for Phase 1 using todowrite.
- Very specific: line 83
After every project_state.json write, run python3 -c "import json.
- Distinctive: line 89
When beginning work on a phase (including the initial Phase 1):
- Very specific: line 91
Read project_state.json to confirm current phase.
- Distinctive: line 96
After each todo, run verification (lint, typecheck, tests) on changed files.
- Very specific: line 100
When all todos for the current phase are marked completed:
- Very specific: line 105
If no phases remain, set current_phase to "Complete".
- Very specific: line 106
Update next_steps with the next phase goal.
- Distinctive: line 108
Run full project verification (all tests, lint, typecheck).
- Distinctive: line 110
Create todos for the next phase.
- Distinctive: line 114
When an important architectural decision is made:
- Very specific: line 116
Write the full ADR as a dedicated file at docs/adr/NNN-title-of-decision.md (or ./adr/ relative to the project root) with context, …
- Very specific: line 121
If the project does not have a docs/adr/ directory, store the full ADR text inline under the architecture_decisions array as an object with …
- Distinctive: line 125
When ending a session mid-phase:
- Very specific: line 127
Ensure project_state.json reflects the true current state.
- Very specific: line 128
Update next_steps to precisely describe what comes next (which file, what change, what to verify).
- Distinctive: line 132
When resuming after a session gap:
- Very specific: line 134
Read project_state.json first.
- Very specific: line 135
Read project_state.json's completed_phases and architecture_decisions — these are immutable unless explicitly amended.
- Very specific: line 136
Create fresh todos from next_steps + current_phase.
- Very specific: line 141
When delegating work for a phase to a subagent, include a reference to the current phase and the relevant project_state.json context in the …
- Very specific: line 151
After every project_state.json change:
- Very specific: line 157
No duplicate phase names across completed_phases, current_phase, and pending_phases.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Phase Tracking Skill
Two-layer planning & state management for projects built incrementally across multiple sessions.
- Layer 1 —
project_state.json: Persistent JSON file at the project root. Survives between sessions. Records completed phases, current phase, pending phases, architecture decision records (ADRs), known issues, and next steps. - Layer 2 —
todowrite/todoread: In-session atomic task decomposition. Each phase is broken into granular todos that get markedin_progress→completedas work proceeds. Does not survive sessions — resets each time.
When to use
Use this skill for any project that follows a phased development plan (e.g. "20 phases," "milestone-based delivery," "incremental build"). It keeps both the agent and the user aligned on what's done, what's next, and what decisions were made — across multiple sessions, multiple users, and any number of subagents.
Artifacts
project_state.json (project root)
The single source of truth for project progress. Schema:
{
"current_phase": "Phase N — Title",
"completed_phases": [
"Phase 1 — Title",
"Phase 2 — Title"
],
"pending_phases": [
"Phase N+1 — Title"
],
"architecture_decisions": [
"ADR-001: Title of decision"
],
"known_issues": [
"Description of any known issues or regressions"
],
"next_steps": "Brief description of what to start on next."
}known_issues should be empty ([]) when clean. Every known issue should be a single actionable sentence.
Example
{
"current_phase": "Phase 3 — Auth & Permissions",
"completed_phases": [
"Phase 1 — Project scaffold & config",
"Phase 2 — Database schema & migrations"
],
"pending_phases": [
"Phase 4 — API routes & controllers",
"Phase 5 — Frontend integration"
],
"architecture_decisions": [
"ADR-001: Use row-level security with Postgres RLS",
"ADR-002: JWT stored in httpOnly cookies, not localStorage"
],
"known_issues": [
"Refresh token rotation not yet implemented — tokens never expire after refresh"
],
"next_steps": "Implement JWT verify middleware and attach user context to req"
}Workflow
1. Initialize
When starting a new phased project, create project_state.json at the project root:
- Ask the user for the complete list of phases.
- Write the file with
current_phaseset to Phase 1,completed_phasesempty, and all phases inpending_phases. - Create the first todo breakdown for Phase 1 using
todowrite.
After every project_state.json write, run python3 -c "import json; json.load(open('project_state.json'))" (or equivalent) to verify the file is valid JSON.
If
project_state.jsonis missing: treat this as a fresh start. Ask the user for the list of phases, re-create the file withcurrent_phaseset to Phase 1,completed_phasesempty, and all phases inpending_phases. Prompt the user to confirm before overwriting if a legacy version is found elsewhere.
2. Start a phase
When beginning work on a phase (including the initial Phase 1):
- Read
project_state.jsonto confirm current phase. - Break the phase into atomic, completable tasks using
todowrite. Each todo must follow the format:"[file/module]: [action] to [why] — expect [result]" - Mark the first todo
in_progress. - Proceed through each todo: delegate to subagents in parallel where possible, mark
in_progressbefore starting,completedimmediately after finishing. - After each todo, run verification (lint, typecheck, tests) on changed files.
3. Complete a phase
When all todos for the current phase are marked completed:
- Update
project_state.json:- Move
current_phasefromcompleted_phases(append) tocompleted_phases. - Set
current_phaseto the next phase inpending_phases(shift from front). - If no phases remain, set
current_phaseto"Complete". - Update
next_stepswith the next phase goal. - Clear
known_issuesor migrate unresolved ones forward.
- Move
- Run full project verification (all tests, lint, typecheck).
- Present a summary to the user: what was built, test results, any known issues.
- Create todos for the next phase.
4. Record an ADR
When an important architectural decision is made:
- Write the full ADR as a dedicated file at
docs/adr/NNN-title-of-decision.md(or./adr/relative to the project root) with context, decision, consequences, and status. - Append a reference entry to
architecture_decisionsinproject_state.json. Format:"ADR-NNN: Title of decision". - Increment the ADR number (maintain monotonic ordering).
- Note the ADR in any relevant todo or summary.
If the project does not have a docs/adr/ directory, store the full ADR text inline under the architecture_decisions array as an object with a details field. The project_state.json approach trades formality for portability — prefer dedicated files once the project has more than 5 ADRs.
5. Session handoff (cross-session continuation)
When ending a session mid-phase:
- Ensure
project_state.jsonreflects the true current state. - Update
next_stepsto precisely describe what comes next (which file, what change, what to verify). - Record any
known_issuesthat are unresolved. - Optionally write a brief handoff note — but
project_state.json+ the todo list is the canonical handoff.
When resuming after a session gap:
- Read
project_state.jsonfirst. This tells you the exact state. - Read
project_state.json'scompleted_phasesandarchitecture_decisions— these are immutable unless explicitly amended. - Create fresh todos from
next_steps+current_phase. Do NOT rely on stale in-session todos — they were lost at session end. - Proceed.
Integration with subagents
When delegating work for a phase to a subagent, include a reference to the current phase and the relevant project_state.json context in the prompt:
CONTEXT: This is part of [current_phase]. project_state.json shows phases [completed_count] complete, [pending_count] remaining.This keeps subagents aligned with the project's overall trajectory even though they don't have access to the full session history.
Verification gates
After every project_state.json change:
python3 -c "import json; data = json.load(open('project_state.json')); assert 'current_phase' in data; assert 'completed_phases' in data; assert 'pending_phases' in data"Assertions that must hold:
- No duplicate phase names across
completed_phases,current_phase, andpending_phases. completed_phasesis in chronological order.pending_phasesis in chronological order.- ADR numbers are monotonic and sequential.
current_phaseis never in bothcompleted_phasesandpending_phasessimultaneously.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

