agentleFS
HazemBZHazemBZ/agent-skills/phase-tracking/SKILL.md

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

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    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.

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
  1. Very specific:

    When starting a new phased project, create project_state.json at the project root:

    line 77
  2. Distinctive:

    Ask the user for the complete list of phases.

    line 79
  3. Very specific:

    Write the file with current_phase set to Phase 1, completed_phases empty, and all phases in pending_phases.

    line 80
  4. Very specific:

    Create the first todo breakdown for Phase 1 using todowrite.

    line 81
  5. Very specific:

    After every project_state.json write, run python3 -c "import json.

    line 83
  6. Distinctive:

    When beginning work on a phase (including the initial Phase 1):

    line 89
  7. Very specific:

    Read project_state.json to confirm current phase.

    line 91
  8. Distinctive:

    After each todo, run verification (lint, typecheck, tests) on changed files.

    line 96
  9. Very specific:

    When all todos for the current phase are marked completed:

    line 100
  10. Very specific:

    If no phases remain, set current_phase to "Complete".

    line 105
  11. Very specific:

    Update next_steps with the next phase goal.

    line 106
  12. Distinctive:

    Run full project verification (all tests, lint, typecheck).

    line 108
  13. Distinctive:

    Create todos for the next phase.

    line 110
  14. Distinctive:

    When an important architectural decision is made:

    line 114
  15. Very specific:

    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, …

    line 116
  16. Very specific:

    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 …

    line 121
  17. Distinctive:

    When ending a session mid-phase:

    line 125
  18. Very specific:

    Ensure project_state.json reflects the true current state.

    line 127
  19. Very specific:

    Update next_steps to precisely describe what comes next (which file, what change, what to verify).

    line 128
  20. Distinctive:

    When resuming after a session gap:

    line 132
  21. Very specific:

    Read project_state.json first.

    line 134
  22. Very specific:

    Read project_state.json's completed_phases and architecture_decisions — these are immutable unless explicitly amended.

    line 135
  23. Very specific:

    Create fresh todos from next_steps + current_phase.

    line 136
  24. Very specific:

    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 …

    line 141
  25. Very specific:

    After every project_state.json change:

    line 151
  26. Very specific:

    No duplicate phase names across completed_phases, current_phase, and pending_phases.

    line 157

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 marked in_progress → completed as 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:

  1. Ask the user for the complete list of phases.
  2. Write the file with current_phase set to Phase 1, completed_phases empty, and all phases in pending_phases.
  3. 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.json is missing: treat this as a fresh start. Ask the user for the list of phases, re-create the file with current_phase set to Phase 1, completed_phases empty, and all phases in pending_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):

  1. Read project_state.json to confirm current phase.
  2. Break the phase into atomic, completable tasks using todowrite. Each todo must follow the format: "[file/module]: [action] to [why] — expect [result]"
  3. Mark the first todo in_progress.
  4. Proceed through each todo: delegate to subagents in parallel where possible, mark in_progress before starting, completed immediately after finishing.
  5. 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:

  1. Update project_state.json:
    • Move current_phase from completed_phases (append) to completed_phases.
    • Set current_phase to the next phase in pending_phases (shift from front).
    • If no phases remain, set current_phase to "Complete".
    • Update next_steps with the next phase goal.
    • Clear known_issues or migrate unresolved ones forward.
  2. Run full project verification (all tests, lint, typecheck).
  3. Present a summary to the user: what was built, test results, any known issues.
  4. Create todos for the next phase.

4. Record an ADR

When an important architectural decision is made:

  1. 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.
  2. Append a reference entry to architecture_decisions in project_state.json. Format: "ADR-NNN: Title of decision".
  3. Increment the ADR number (maintain monotonic ordering).
  4. 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:

  1. Ensure project_state.json reflects the true current state.
  2. Update next_steps to precisely describe what comes next (which file, what change, what to verify).
  3. Record any known_issues that are unresolved.
  4. Optionally write a brief handoff note — but project_state.json + the todo list is the canonical handoff.

When resuming after a session gap:

  1. Read project_state.json first. This tells you the exact state.
  2. Read project_state.json's completed_phases and architecture_decisions — these are immutable unless explicitly amended.
  3. Create fresh todos from next_steps + current_phase. Do NOT rely on stale in-session todos — they were lost at session end.
  4. 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, and pending_phases.
  • completed_phases is in chronological order.
  • pending_phases is in chronological order.
  • ADR numbers are monotonic and sequential.
  • current_phase is never in both completed_phases and pending_phases simultaneously.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.