Location
/gsd:new-project and updated throughout the project lifecycle.
Template Structure
Section Details
What This Is
Purpose: Current accurate description of the product. Guidelines:- 2-3 sentences capturing what it does and who it’s for
- Use the user’s words and framing
- Update when the product evolves beyond this description
- Should answer: “What is this?” for someone new
Core Value
Purpose: The single most important thing that drives all decisions. Guidelines:- The ONE thing that cannot fail
- Everything else can be compromised; this cannot
- Drives prioritization when tradeoffs arise
- Rarely changes; if it does, it’s a significant pivot
Requirements
Validated
Purpose: Requirements that shipped and proved valuable. Format:- These are locked — changing them requires explicit discussion
- Only move here after feature ships AND proves valuable
- Creates clear record of what’s been validated
Active
Purpose: Current scope being built toward. Guidelines:- These are hypotheses until shipped and validated
- Move to Validated when shipped
- Move to Out of Scope if invalidated
- Keep focused on current milestone work
Out of Scope
Purpose: Explicit boundaries on what we’re NOT building. Guidelines:- Always include reasoning (prevents re-adding later)
- Includes: considered and rejected, deferred to future, explicitly excluded
- Helps manage stakeholder expectations
Context
Purpose: Background that informs implementation decisions. Include:- Technical environment or ecosystem
- Relevant prior work or experience
- User research or feedback themes
- Known issues to address
Constraints
Purpose: Hard limits on implementation choices. Format:- Tech stack
- Timeline
- Budget
- Dependencies
- Compatibility
- Performance
- Security
Key Decisions
Purpose: Track significant choices that affect future work. Guidelines:- Add decisions as they’re made throughout the project
- Track outcome when known:
- ✓ Good — decision proved correct
- ⚠️ Revisit — decision may need reconsideration
- — Pending — too early to evaluate
Evolution
PROJECT.md evolves throughout the project lifecycle.After Each Phase
- Requirements invalidated? → Move to Out of Scope with reason
- Requirements validated? → Move to Validated with phase reference
- New requirements emerged? → Add to Active
- Decisions to log? → Add to Key Decisions
- “What This Is” still accurate? → Update if drifted
After Each Milestone
- Full review of all sections
- Core Value check — still the right priority?
- Audit Out of Scope — reasons still valid?
- Update Context with current state (users, feedback, metrics)
Brownfield Projects
For existing codebases:- Map codebase first via
/gsd:map-codebase - Infer Validated requirements from existing code:
- What does the codebase actually do?
- What patterns are established?
- What’s clearly working and relied upon?
- Gather Active requirements from user:
- Present inferred current state
- Ask what they want to build next
- Initialize:
- Validated = inferred from existing code
- Active = user’s goals for this work
- Out of Scope = boundaries user specifies
- Context = includes current codebase state
STATE.md Reference
STATE.md references PROJECT.md for quick access:Size Constraint
Keep PROJECT.md focused and scannable. It’s read at the start of every workflow. If it grows too large:- Move detailed historical context to milestone archives
- Keep only recent/relevant Key Decisions (full history in git)
- Summarize long Context sections