feat(bmm): improve PRD discovery for brownfield scenarios

Add proper three-branch conditional logic in step-02-discovery.md:

Branch A: Has Product Brief (any project type)
- Extract vision from brief
- If also has project docs, mention integration with existing system

Branch B: No Brief + Has Project Docs (brownfield without planning)
- Show existing system summary from project docs
- Ask about NEW features to add
- Focus on integration with existing patterns
- Added clear notes on where to extract info from project docs

Branch C: No Documents (fresh start)
- Original behavior - ask from scratch

Key insight: Branch based on DOCUMENT TYPE, not PROJECT TYPE.
Brownfield can have brief too!

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

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
lihang 2025-12-06 23:35:22 +08:00
parent 0d57ad84a0
commit 0f72a6d6b5
1 changed files with 70 additions and 8 deletions

View File

@ -70,10 +70,11 @@ Analyze available input documents to provide informed discovery:
- Brainstorming Results: {{number_of_brainstorming}} documents loaded
- Project Documentation: {{number_of_project_docs}} documents loaded
**If Input Documents Exist:**
"As your PM peer, I've reviewed your existing project documentation and have a great starting point for our discovery. Let me share what I understand and you can refine or correct as needed.
#### Branch A: Has Product Brief (number_of_briefs > 0)
**Based on your product brief and research:**
"As your PM peer, I've reviewed your product brief and have a great starting point for our discovery. Let me share what I understand and you can refine or correct as needed.
**Based on your product brief:**
**What you're building:**
{{extracted_vision_from_brief}}
@ -87,9 +88,36 @@ Analyze available input documents to provide informed discovery:
**What makes it special:**
{{extracted_differentiator_from_brief}}
{{#if number_of_project_docs > 0}}
I also see you have existing project documentation. This PRD will define how new features integrate with your existing system architecture.
{{/if}}
**How does this align with your vision?** Should we refine any of these points or are there important aspects I'm missing?"
**If No Input Documents:**
#### Branch B: No Brief but Has Project Docs (number_of_briefs == 0 AND number_of_project_docs > 0)
**NOTE:** Extract the following from loaded project documentation (index.md, architecture.md, project-overview.md, etc.):
"As your PM peer, I've reviewed your existing project documentation from document-project.
**Your existing system includes:**
- **Tech Stack:** {analyze index.md and architecture.md for technologies used}
- **Architecture:** {summarize architecture patterns from architecture.md}
- **Key Components:** {list main components from source-tree-analysis.md or project-overview.md}
This PRD will define **new features or changes** to add to this existing codebase.
**Tell me about what you want to add:**
- What new capability or feature do you want to build?
- What problem will this solve for your users?
- How should it integrate with the existing system?
I'll help you create a PRD focused on these additions while respecting your existing patterns and architecture."
#### Branch C: No Documents (number_of_briefs == 0 AND number_of_project_docs == 0)
"As your PM peer, I'm excited to help you shape {{project_name}}. Let me start by understanding what you want to build.
**Tell me about what you want to create:**
@ -126,7 +154,8 @@ Compare user description against `signals` from `domain-complexity.csv`:
Leverage both user input and document analysis for classification:
**If Input Documents Exist:**
#### Branch A: Has Product Brief (number_of_briefs > 0)
"Based on your product brief and our discussion, I'm classifying this as:
- **Project Type:** {project_type_from_brief_or_conversation}
@ -136,9 +165,31 @@ Leverage both user input and document analysis for classification:
From your brief, I detected these classification signals:
{{classification_signals_from_brief}}
{{#if number_of_project_docs > 0}}
Your existing project documentation also indicates:
- **Existing Tech Stack:** {from architecture.md or index.md}
- **Architecture Pattern:** {from architecture.md}
I'll ensure the new features align with your existing system.
{{/if}}
Combined with our conversation, this suggests the above classification. Does this sound right?"
**If No Input Documents:**
#### Branch B: No Brief but Has Project Docs (number_of_briefs == 0 AND number_of_project_docs > 0)
"Based on your existing project documentation and our discussion about new features:
- **Existing Project Type:** {detected from project docs - e.g., web_app, api_backend}
- **Tech Stack:** {from architecture.md or index.md}
- **New Feature Type:** {from user's description of what they want to add}
- **Domain:** {detected_domain}
- **Complexity:** {complexity_level}
I'll ensure the PRD aligns with your existing architecture patterns. Does this classification sound right?"
#### Branch C: No Documents (number_of_briefs == 0 AND number_of_project_docs == 0)
Present your classifications for user validation:
"Based on our conversation, I'm hearing this as:
@ -152,7 +203,8 @@ Does this sound right to you? I want to make sure we're on the same page before
Leverage input documents for initial understanding, then refine:
**If Input Documents Exist:**
#### Branch A: Has Product Brief (number_of_briefs > 0)
"From your product brief, I understand that what makes this special is:
{{extracted_differentiator_from_brief}}
@ -162,7 +214,17 @@ Let's explore this deeper:
- **Missing aspects:** Are there other differentiators that aren't captured in your brief?
- **Evolution:** How has your thinking on this evolved since you wrote the brief?"
**If No Input Documents:**
#### Branch B: No Brief but Has Project Docs (number_of_briefs == 0 AND number_of_project_docs > 0)
"Your existing system already provides certain capabilities. Now let's define what makes these **new additions** special:
- What gap in your current system will this fill?
- How will this improve the experience for your existing users?
- What's the key insight that led you to prioritize this addition?
- What would make users say 'finally, this is what we needed'?"
#### Branch C: No Documents (number_of_briefs == 0 AND number_of_project_docs == 0)
Ask focused questions to capture the product's unique value:
- "What would make users say 'this is exactly what I needed'?"