diff --git a/commands/gsd/research-project.md b/commands/gsd/research-project.md index b2eaba9f2..9ca26b519 100644 --- a/commands/gsd/research-project.md +++ b/commands/gsd/research-project.md @@ -5,38 +5,18 @@ allowed-tools: - Read - Write - Bash - - Glob - - Grep - Task - - WebFetch - - WebSearch - - mcp__context7__* + - AskUserQuestion --- -Comprehensive domain research before roadmap creation. +Research domain ecosystem. Spawns 4 parallel gsd-researcher agents for comprehensive coverage. -Answers the questions that inform quality roadmaps: -- What's the standard stack for this type of product? -- What features do users expect? -- How are these systems typically structured? -- What do projects in this domain commonly get wrong? +**Orchestrator role:** Analyze project, generate research questions, spawn 4 parallel agents, synthesize SUMMARY.md. -Run after `/gsd:new-project`, before `/gsd:define-requirements`. - -Output: `.planning/research/` folder with ecosystem knowledge. +**Why subagents:** Research burns context fast. Fresh 200k context per domain. Main context stays lean. - -@~/.claude/get-shit-done/references/principles.md -@~/.claude/get-shit-done/workflows/research-project.md -@~/.claude/get-shit-done/templates/research-project/SUMMARY.md -@~/.claude/get-shit-done/templates/research-project/STACK.md -@~/.claude/get-shit-done/templates/research-project/FEATURES.md -@~/.claude/get-shit-done/templates/research-project/ARCHITECTURE.md -@~/.claude/get-shit-done/templates/research-project/PITFALLS.md - - @.planning/PROJECT.md @.planning/config.json (if exists) @@ -44,94 +24,114 @@ Output: `.planning/research/` folder with ecosystem knowledge. - +## 1. Validate Prerequisites + ```bash -# Verify project exists -[ -f .planning/PROJECT.md ] || { echo "ERROR: No PROJECT.md found. Run /gsd:new-project first."; exit 1; } - -# Check if roadmap already exists -[ -f .planning/ROADMAP.md ] && echo "WARNING: ROADMAP.md already exists. Research is typically done before roadmap creation." - -# Check if research already exists +[ -f .planning/PROJECT.md ] || { echo "ERROR: No PROJECT.md. Run /gsd:new-project first."; exit 1; } +[ -f .planning/ROADMAP.md ] && echo "WARNING: ROADMAP.md exists. Research is typically done before roadmap." [ -d .planning/research ] && echo "RESEARCH_EXISTS" || echo "NO_RESEARCH" ``` - - -**If RESEARCH_EXISTS:** +## 2. Handle Existing Research -Use AskUserQuestion: -- header: "Research exists" -- question: "Research folder already exists. What would you like to do?" -- options: - - "View existing" — Show current research summary - - "Replace" — Run fresh research (will overwrite) - - "Cancel" — Keep existing research +**If RESEARCH_EXISTS:** Use AskUserQuestion (View existing / Replace / Cancel) -If "View existing": Read and display `.planning/research/SUMMARY.md`, then exit -If "Cancel": Exit -If "Replace": Continue with workflow - +## 3. Analyze Project - -Follow the research-project.md workflow: -- Analyze PROJECT.md to determine domain -- Identify research questions based on domain -- Spawn parallel research agents -- Aggregate results into `.planning/research/` -- Create SUMMARY.md with roadmap implications - +Read PROJECT.md, extract domain/stack/core value/constraints. Present for approval: +``` +Domain analysis: +- Type: [domain] +- Stack: [stated or TBD] +- Core: [core value] +Does this look right? (yes / adjust) +``` + +## 4. Generate Research Questions + +| Dimension | Question | +|-----------|----------| +| Stack | "What's the standard 2025 stack for [domain]?" | +| Features | "What features do [domain] products have?" | +| Architecture | "How are [domain] systems structured?" | +| Pitfalls | "What do [domain] projects get wrong?" | + +Present for approval. + +## 5. Spawn Research Agents + +```bash +mkdir -p .planning/research +``` + +Spawn all 4 in parallel: + +``` +Task(prompt="Research stack for [domain]. Question: [question]. Context: [PROJECT.md summary]. +Write to: .planning/research/STACK.md. Use template from ~/.claude/get-shit-done/templates/research-project/STACK.md", +subagent_type="gsd-researcher", description="Stack research") + +Task(prompt="Research features for [domain]. Question: [question]. Context: [PROJECT.md summary]. +Write to: .planning/research/FEATURES.md. Use template from ~/.claude/get-shit-done/templates/research-project/FEATURES.md", +subagent_type="gsd-researcher", description="Features research") + +Task(prompt="Research architecture for [domain]. Question: [question]. Context: [PROJECT.md summary]. +Write to: .planning/research/ARCHITECTURE.md. Use template from ~/.claude/get-shit-done/templates/research-project/ARCHITECTURE.md", +subagent_type="gsd-researcher", description="Architecture research") + +Task(prompt="Research pitfalls for [domain]. Question: [question]. Context: [PROJECT.md summary]. +Write to: .planning/research/PITFALLS.md. Use template from ~/.claude/get-shit-done/templates/research-project/PITFALLS.md", +subagent_type="gsd-researcher", description="Pitfalls research") +``` + +**Announce:** "Spawning 4 research agents... may take 2-3 minutes." + +## 6. Synthesize Results + +After all agents complete, read their outputs and write `.planning/research/SUMMARY.md`: +- Read template: `~/.claude/get-shit-done/templates/research-project/SUMMARY.md` +- Synthesize executive summary from all 4 files +- Include "Implications for Roadmap" with suggested phase structure +- Add confidence assessment + +## 7. Commit Research + +```bash +git add .planning/research/ +git commit -m "docs: research [domain] ecosystem + +Key findings: +- Stack: [one-liner] +- Architecture: [one-liner] +- Critical pitfall: [one-liner]" +``` + +## 8. Present Results - ``` Research complete: -- Summary: .planning/research/SUMMARY.md -- Stack: .planning/research/STACK.md -- Features: .planning/research/FEATURES.md -- Architecture: .planning/research/ARCHITECTURE.md -- Pitfalls: .planning/research/PITFALLS.md +Files: SUMMARY.md, STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md + +Key findings: +- Stack: [one-liner] +- Architecture: [one-liner] +- Critical pitfall: [one-liner] --- - -## ▶ Next Up - -**Define requirements** — scope your v1 from research findings - -`/gsd:define-requirements` - -`/clear` first → fresh context window - -**Flow:** research-project → **define-requirements** → create-roadmap - +## > Next Up +**Define requirements** - `/gsd:define-requirements` +`/clear` first --- ``` - - -**Use research-project for:** -- Greenfield projects in established domains (community, e-commerce, SaaS) -- When "what features should exist" is partially unknown -- Complex integrations requiring ecosystem knowledge -- Domains where best practices matter (auth, payments, real-time) -- Any project where you'd Google "how to build a [X]" before starting - -**Skip research-project for:** -- Well-defined specs ("build exactly this API") -- Simple tools/utilities with clear scope -- Adding features to existing codebases (use research-phase instead) -- Domains you've built in many times before - - - [ ] PROJECT.md validated -- [ ] Domain identified from project description -- [ ] Research questions determined and approved -- [ ] Parallel research agents spawned -- [ ] All research documents created in .planning/research/ -- [ ] SUMMARY.md includes roadmap implications -- [ ] Research committed to git -- [ ] User knows next step (define-requirements) +- [ ] Domain identified and approved +- [ ] 4 gsd-researcher agents spawned in parallel +- [ ] All research files created +- [ ] SUMMARY.md synthesized with roadmap implications +- [ ] Research committed