sdk/prompts/templates/project.md
Template for .planning/PROJECT.md — the living project context document.
# [Project Name]
## What This Is
[Current accurate description — 2-3 sentences. What does this product do and who is it for?
Use the user's language and framing. Update whenever reality drifts from this description.]
## Core Value
[The ONE thing that matters most. If everything else fails, this must work.
One sentence that drives prioritization when tradeoffs arise.]
## Requirements
### Validated
<!-- Shipped and confirmed valuable. -->
(None yet — ship to validate)
### Active
<!-- Current scope. Building toward these. -->
- [ ] [Requirement 1]
- [ ] [Requirement 2]
- [ ] [Requirement 3]
### Out of Scope
<!-- Explicit boundaries. Includes reasoning to prevent re-adding. -->
- [Exclusion 1] — [why]
- [Exclusion 2] — [why]
## Context
[Background information that informs implementation:
- Technical environment or ecosystem
- Relevant prior work or experience
- User research or feedback themes
- Known issues to address]
## Constraints
- **[Type]**: [What] — [Why]
- **[Type]**: [What] — [Why]
Common types: Tech stack, Timeline, Budget, Dependencies, Compatibility, Performance, Security
## Key Decisions
<!-- Decisions that constrain future work. Add throughout project lifecycle. -->
| Decision | Rationale | Outcome |
|----------|-----------|---------|
| [Choice] | [Why] | [✓ Good / ⚠️ Revisit / — Pending] |
---
*Last updated: [date] after [trigger]*
What This Is:
Core Value:
Requirements — Validated:
- ✓ [Requirement] — [version/phase]Requirements — Active:
Requirements — Out of Scope:
Context:
Constraints:
Key Decisions:
Last Updated:
after Phase 2 or after v1.0 milestonePROJECT.md evolves throughout the project lifecycle. These rules are embedded in the generated PROJECT.md (## Evolution section) and implemented by transition and milestone-completion workflows.
After each phase transition:
After each milestone:
For existing codebases:
Map the codebase first — analyze the project structure and existing code before defining requirements.
Infer Validated requirements from existing code:
Gather Active requirements from user:
Initialize:
<state_reference>
STATE.md references PROJECT.md:
## Project Reference
See: .planning/PROJECT.md (updated [date])
**Core value:** [One-liner from Core Value section]
**Current focus:** [Current phase name]
This ensures Claude reads current PROJECT.md context.
</state_reference>