Skip to main content
STATE.md is your project’s short-term memory. It tracks current position, performance metrics, and accumulated context across all phases and sessions.

Location

Created after ROADMAP.md during initialization, updated after every significant action.

Purpose

Problem it solves: Information is captured in summaries, issues, and decisions but not systematically consumed. Sessions start without context. Solution: A single, small file that’s:
  • Read first in every workflow
  • Updated after every significant action
  • Contains digest of accumulated context
  • Enables instant session restoration

Template Structure

Section Details

Project Reference

Purpose: Points to PROJECT.md for full context. Includes:
  • Core value (the ONE thing that matters)
  • Current focus (which phase)
  • Last update date (triggers re-read if stale)
Note: Claude reads PROJECT.md directly for requirements, constraints, and full decisions.

Current Position

Purpose: Where we are right now. Fields:
  • Phase X of Y - Which phase
  • Plan A of B - Which plan within phase
  • Status - Current state (see status values below)
  • Last activity - What happened most recently
  • Progress bar - Visual indicator of overall completion
Progress calculation:
Example:

Status Values

Performance Metrics

Purpose: Track velocity to understand execution patterns. Velocity section:
  • Total plans completed across all phases
  • Average duration per plan
  • Total execution time
By Phase table:
  • Breakdown per phase
  • Helps identify complex vs simple phases
Recent Trend:
  • Last 5 plan durations
  • Trend analysis (improving/stable/degrading)
Updated: After each plan completion. Example:

Accumulated Context

Decisions

Purpose: Quick reference to recent decisions. Guidelines:
  • Full decision log lives in PROJECT.md Key Decisions table
  • STATE.md keeps 3-5 recent decisions affecting current work
  • Format: [Phase X]: [Decision summary]
Example:

Pending Todos

Purpose: Track captured ideas. Source: Ideas captured via /gsd:add-todo Format:
  • Count of pending todos
  • Reference to .planning/todos/pending/
  • Brief list if few, count if many
Example:

Blockers/Concerns

Purpose: Issues that affect future work. Source: From “Next Phase Readiness” sections in summaries. Guidelines:
  • Prefix with originating phase
  • Cleared when addressed
  • Focus on actionable concerns
Example:

Session Continuity

Purpose: Enable instant resumption. Fields:
  • Last session - When was last work done
  • Stopped at - What was last completed
  • Resume file - Path to .continue-here*.md if exists
Example:

Lifecycle

Creation

When: After ROADMAP.md is created during initialization. Initial state:
  • Reference PROJECT.md
  • Initialize empty accumulated context sections
  • Set position to “Phase 1 ready to plan”

Reading

First step of every workflow:
  • progress - Present status to user
  • plan - Inform planning decisions
  • execute - Know current position
  • transition - Know what’s complete

Writing

After every significant action: execute - After SUMMARY.md created:
  • Update position (phase, plan, status)
  • Note new decisions (detail in PROJECT.md)
  • Add blockers/concerns
  • Update performance metrics
transition - After phase marked complete:
  • Update progress bar
  • Clear resolved blockers
  • Refresh Project Reference date

Size Constraint

Keep STATE.md under 100 lines. It’s a DIGEST, not an archive. If accumulated context grows too large:
  • Keep only 3-5 recent decisions in summary (full log in PROJECT.md)
  • Keep only active blockers, remove resolved ones
  • Summarize trends rather than listing all metrics
Goal: “Read once, know where we are” — if it’s too long, that fails.

Example: Mid-Project State

See Also