Files
msd-core/get-shit-done/templates/context.md
Lex Christopherson bcc58add6a Prevent scope creep in discuss-phase command
Add explicit guardrails to ensure context gathering questions clarify
HOW to implement roadmap scope rather than suggesting WHAT to add.
Questions must never expand scope - if user adds scope, direct them
to update ROADMAP first instead.

Changes:
- Template: Replace "Secondary goals" with "Clarifications" (HOW, not WHAT ELSE)
- Workflow: Add CRITICAL block forbidding scope-expanding questions
- Workflow: Update decision gate to emphasize clarification over expansion
- Command: Add NO SCOPE CREEP rules

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 17:51:11 -06:00

12 KiB

Phase Context Template

Template for .planning/phases/XX-name/{phase}-CONTEXT.md - phase context documentation gathered before planning.

Purpose: Capture comprehensive context through adaptive questioning to inform high-quality planning.


File Template

# Phase [X]: [Name] - Context

**Gathered:** [date]
**Status:** [For planning / Planning complete]

<phase_objectives>
## What This Phase Accomplishes

[Clear, specific description of what this phase delivers]

**Primary goal:**
[Main objective from roadmap - what ships at the end]

**Clarifications:**
[Any clarified details about HOW the primary goal works - not additional features]

**Out of scope:**
[What this phase explicitly does NOT include - prevents scope creep]
</phase_objectives>

<constraints>
## Constraints

**Technical:**
[Library choices, platform requirements, compatibility needs, existing architecture patterns to follow]

**Timeline:**
[Deadlines, urgency, sequencing dependencies]

**Resources:**
[Budget limits, API rate limits, storage constraints, computational limits]

**Dependencies:**
[What must exist before this phase can start, external factors, waiting on other teams/services]

**Other:**
[Any other constraints affecting approach]

[If no constraints: "None - flexible approach"]
</constraints>

<risks>
## Risks and Mitigation

**Risk 1: [Risk description]**
- **Likelihood:** [High / Medium / Low]
- **Impact:** [High / Medium / Low]
- **Mitigation:** [How to prevent or handle this]

**Risk 2: [Risk description]**
- **Likelihood:** [High / Medium / Low]
- **Impact:** [High / Medium / Low]
- **Mitigation:** [How to prevent or handle this]

[Continue for identified risks]

[If no major risks: "No major risks identified - straightforward implementation expected"]
</risks>

<success_indicators>
## Success Indicators

**How we'll know this phase is complete:**

**Functional:**
- [ ] [Specific feature works correctly]
- [ ] [Tests pass for X functionality]
- [ ] [Integration with Y system verified]

**Quality:**
- [ ] [Performance meets X threshold]
- [ ] [No TypeScript errors]
- [ ] [Test coverage >= X%]

**Deployment:**
- [ ] [Changes deployed to staging/production]
- [ ] [Verification in live environment]

**Documentation:**
- [ ] [API documented]
- [ ] [README updated]
- [ ] [Migration guide if needed]

**User-facing:**
- [ ] [Visual verification complete]
- [ ] [User testing passed]
- [ ] [Acceptance criteria met]
</success_indicators>

<codebase_context>
## Codebase State and Patterns

**Current state:**
[Fresh project / Established codebase / Legacy system / Mid-refactor]

**Relevant files/systems:**
- `path/to/relevant.ts` - [What this does and why it matters for this phase]
- `path/to/another.ts` - [What this does and why it matters for this phase]

**Patterns to follow:**
[Existing conventions, architectural patterns, naming conventions, testing patterns]

**External dependencies:**
- [Library/service 1] - [How it's used, version constraints]
- [Library/service 2] - [How it's used, version constraints]

**Known issues to address:**
[From ISSUES.md or prior phases - issues this phase should fix]

**Prior decisions affecting this phase:**
[From STATE.md - decisions from previous phases that constrain approach]
</codebase_context>

<decisions_needed>
## Decisions That Will Affect Implementation

**Decision 1: [What needs deciding]**
- **Context:** [Why this matters]
- **Options:** [Brief list of approaches]
- **When to decide:** [During planning / During task X / Before starting]

**Decision 2: [What needs deciding]**
- **Context:** [Why this matters]
- **Options:** [Brief list of approaches]
- **When to decide:** [During planning / During task X / Before starting]

[If no decisions needed: "No open decisions - approach is clear from roadmap and context"]
</decisions_needed>

<notes>
## Additional Context

[Any other relevant information gathered during context discussion]

[Questions asked during intake:]
- Q: [Question asked]
- A: [Answer received]

[Clarifications:]
- [Important points clarified during discussion]

[References:]
- [Links to relevant docs, prior art, examples]

[If no additional notes: "No additional notes"]
</notes>

---

*Phase: XX-name*
*Context gathered: [date]*
*Ready for planning: [yes/no]*

<good_examples>

# Phase 3: Authentication - Context

**Gathered:** 2025-01-20
**Status:** For planning

<phase_objectives>
## What This Phase Accomplishes

Implement JWT-based authentication with secure session management.

**Primary goal:**
Users can register, login, logout with JWT tokens stored in httpOnly cookies. Protected routes verify authentication.

**Clarifications:**
- Tokens stored as httpOnly cookies (not localStorage) per security requirements
- "Protected routes" means API routes + page-level middleware redirects
- Password reset included per roadmap scope

**Out of scope:**
- OAuth providers (Google, GitHub) - deferred to Phase 4
- 2FA - deferred to Phase 5
- Role-based access control - deferred to Phase 6
</phase_objectives>

<constraints>
## Constraints

**Technical:**
- Must use jose library (NOT jsonwebtoken - ESM compatibility requirement from Phase 1)
- Must work in Edge runtime (Next.js middleware requirement)
- Passwords must use bcrypt with minimum 10 salt rounds
- Database already has User model from Phase 2 (extend, don't recreate)

**Timeline:**
- Target completion: End of week 3
- Blocking Phase 4 (user profiles) and Phase 5 (product catalog)

**Resources:**
- Email sending limited to 100/day on current SendGrid plan (affects password reset testing)

**Dependencies:**
- Phase 2 complete (database models)
- Phase 1 complete (Next.js setup)
- SendGrid API key obtained (checkpoint for email features)

**Other:**
None
</constraints>

<risks>
## Risks and Mitigation

**Risk 1: JWT token size causing cookie overflow**
- **Likelihood:** Low
- **Impact:** High (authentication breaks)
- **Mitigation:** Keep JWT payload minimal (user ID only), store other data in database session table. Test with realistic tokens early.

**Risk 2: Session timing causing UX issues**
- **Likelihood:** Medium
- **Impact:** Medium (user frustration)
- **Mitigation:** Implement refresh token rotation, clear error messages on expiry, test user flows thoroughly.

**Risk 3: Password reset token security**
- **Likelihood:** Low
- **Impact:** High (account takeover)
- **Mitigation:** Use crypto.randomBytes(32) for tokens, short expiry (1 hour), single-use tokens, rate limiting on reset endpoint.
</risks>

<success_indicators>
## Success Indicators

**How we'll know this phase is complete:**

**Functional:**
- [ ] User can register with email/password
- [ ] User can login and receive JWT cookie
- [ ] Protected routes redirect unauthenticated users
- [ ] User can logout (cookie cleared)
- [ ] Password reset flow works end-to-end

**Quality:**
- [ ] No passwords stored in plaintext
- [ ] JWT tokens validated correctly
- [ ] Tests pass for all auth endpoints
- [ ] No TypeScript errors
- [ ] Test coverage >= 80% for auth code

**Deployment:**
- [ ] Auth endpoints deployed to staging
- [ ] Verified in staging environment
- [ ] Production environment variables configured

**Documentation:**
- [ ] API endpoints documented
- [ ] Authentication flow diagram added to README
- [ ] Environment variables documented

**User-facing:**
- [ ] Login/logout flows tested manually
- [ ] Error messages clear and helpful
- [ ] Password reset tested with real email
</success_indicators>

<codebase_context>
## Codebase State and Patterns

**Current state:**
Established codebase - Phase 2 complete with database models, Phase 1 has Next.js structure.

**Relevant files/systems:**
- `prisma/schema.prisma` - User model exists, need to add Session model
- `src/app/api/*` - API route conventions established in Phase 2
- `src/middleware.ts` - Next.js middleware file (create for protected routes)
- `src/lib/db.ts` - Database connection helper from Phase 2

**Patterns to follow:**
- API routes return JSON with `{ success: boolean, data?: any, error?: string }`
- Use Zod for request validation (established in Phase 2)
- Database queries in try/catch with error logging
- Tests colocated: `route.test.ts` next to `route.ts`

**External dependencies:**
- jose@5.2.0 - JWT library (decision from Phase 1)
- bcrypt@5.1.1 - Password hashing
- @sendgrid/mail - Email sending (need to add)
- zod@3.22.4 - Validation (already installed)

**Known issues to address:**
- ISS-002 from Phase 2: Add rate limiting to API endpoints (include auth endpoints)

**Prior decisions affecting this phase:**
- Phase 1: Use jose for JWT (ESM-native, Edge-compatible)
- Phase 2: API response format established (all endpoints must follow)
- Phase 2: Zod validation pattern established (use for auth requests)
</codebase_context>

<decisions_needed>
## Decisions That Will Affect Implementation

**Decision 1: Token expiry timing**
- **Context:** Balance security (short expiry) vs UX (avoid frequent re-login)
- **Options:** 15min access + 7day refresh / 1hr access + 30day refresh / 4hr access + 90day refresh
- **When to decide:** During planning (affects implementation)

**Decision 2: Remember me implementation**
- **Context:** How to handle "remember me" checkbox on login
- **Options:** Longer refresh token / Separate persistent token / Browser local storage flag
- **When to decide:** During task breakdown (affects token strategy)
</decisions_needed>

<notes>
## Additional Context

[Questions asked during intake:]
- Q: Are there constraints I should know about?
- A: Technical limitations - must use jose library, work in Edge runtime

- Q: What could go wrong in this phase?
- A: Security concerns - authentication vulnerabilities are critical

- Q: Which files or systems should I examine for context?
- A: Check prisma/schema.prisma for User model, src/app/api/* for API patterns

[Clarifications:]
- User stressed security is paramount - better to be overly cautious
- Password reset is "nice to have" but not blocking for Phase 4
- OAuth can wait - just email/password for now

[References:]
- OWASP Auth Cheatsheet: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
- jose docs: https://github.com/panva/jose
</notes>

---

*Phase: 03-authentication*
*Context gathered: 2025-01-20*
*Ready for planning: yes*

</good_examples>

**When to create:** - Before planning a phase (via /gsd:discuss-phase command) - When roadmap description is too brief for quality planning - When phase involves complex decisions or risks

Structure:

  • Use XML tags for section markers (matches GSD templates)
  • Five core sections: objectives, constraints, risks, success_indicators, codebase_context
  • Two supporting sections: decisions_needed, notes
  • All sections required (use "None" if truly not applicable)

Content quality:

  • Objectives: Specific and measurable (not "add auth" but "JWT auth with registration, login, logout, password reset")
  • Constraints: Technical/timeline/resource specifics (not "be fast" but "must work in Edge runtime")
  • Risks: Include likelihood, impact, mitigation (not just "might break")
  • Success indicators: Checklist format, specific criteria
  • Codebase context: Reference actual files and patterns
  • Decisions needed: Note when decision should be made (planning vs execution)

Out of scope:

  • Document what phase does NOT include (prevents scope creep)
  • Reference deferred items from roadmap
  • Note what's pushed to future phases

Integration with planning:

  • CONTEXT.md loaded as @context reference in PLAN.md
  • Decisions inform task breakdown
  • Risks inform verification criteria
  • Success indicators become plan success criteria
  • Prior decisions become task action notes

After creation:

  • File lives in phase directory: .planning/phases/XX-name/{phase}-CONTEXT.md
  • Referenced during planning workflow
  • Can be updated if context changes before planning