brownfield document project workflow added to analyst
This commit is contained in:
@@ -26,6 +26,10 @@ agent:
|
||||
workflow: "{project-root}/bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml"
|
||||
description: Produce Project Brief
|
||||
|
||||
- trigger: document-project
|
||||
workflow: "{project-root}/bmad/bmm/workflows/1-analysis/document-project/workflow.yaml"
|
||||
description: Generate comprehensive documentation of an existing Project
|
||||
|
||||
- trigger: research
|
||||
workflow: "{project-root}/bmad/bmm/workflows/1-analysis/research/workflow.yaml"
|
||||
description: Guide me through Research
|
||||
|
||||
445
src/modules/bmm/workflows/1-analysis/document-project/README.md
Normal file
445
src/modules/bmm/workflows/1-analysis/document-project/README.md
Normal file
@@ -0,0 +1,445 @@
|
||||
# Document Project Workflow
|
||||
|
||||
**Version:** 1.2.0
|
||||
**Module:** BMM (BMAD Method Module)
|
||||
**Type:** Action Workflow (Documentation Generator)
|
||||
|
||||
## Purpose
|
||||
|
||||
Analyzes and documents brownfield projects by scanning codebase, architecture, and patterns to create comprehensive reference documentation for AI-assisted development. Generates a master index and multiple documentation files tailored to project structure and type.
|
||||
|
||||
**NEW in v1.2.0:** Context-safe architecture with scan levels, resumability, and write-as-you-go pattern to prevent context exhaustion.
|
||||
|
||||
## Key Features
|
||||
|
||||
- **Multi-Project Type Support**: Handles web, backend, mobile, CLI, game, embedded, data, infra, library, desktop, and extension projects
|
||||
- **Multi-Part Detection**: Automatically detects and documents projects with separate client/server or multiple services
|
||||
- **Three Scan Levels** (NEW v1.2.0): Quick (2-5 min), Deep (10-30 min), Exhaustive (30-120 min)
|
||||
- **Resumability** (NEW v1.2.0): Interrupt and resume workflows without losing progress
|
||||
- **Write-as-you-go** (NEW v1.2.0): Documents written immediately to prevent context exhaustion
|
||||
- **Intelligent Batching** (NEW v1.2.0): Subfolder-based processing for deep/exhaustive scans
|
||||
- **Data-Driven Analysis**: Uses CSV-based project type detection and documentation requirements
|
||||
- **Comprehensive Scanning**: Analyzes APIs, data models, UI components, configuration, security patterns, and more
|
||||
- **Architecture Matching**: Matches projects to 170+ architecture templates from the solutioning registry
|
||||
- **Brownfield PRD Ready**: Generates documentation specifically designed for AI agents planning new features
|
||||
|
||||
## How to Invoke
|
||||
|
||||
```bash
|
||||
workflow document-project
|
||||
```
|
||||
|
||||
Or from BMAD CLI:
|
||||
|
||||
```bash
|
||||
/bmad:bmm:workflows:document-project
|
||||
```
|
||||
|
||||
## Scan Levels (NEW in v1.2.0)
|
||||
|
||||
Choose the right scan depth for your needs:
|
||||
|
||||
### 1. Quick Scan (Default)
|
||||
|
||||
**Duration:** 2-5 minutes
|
||||
**What it does:** Pattern-based analysis without reading source files
|
||||
**Reads:** Config files, package manifests, directory structure, README
|
||||
**Use when:**
|
||||
|
||||
- You need a fast project overview
|
||||
- Initial understanding of project structure
|
||||
- Planning next steps before deeper analysis
|
||||
|
||||
**Does NOT read:** Source code files (_.js, _.ts, _.py, _.go, etc.)
|
||||
|
||||
### 2. Deep Scan
|
||||
|
||||
**Duration:** 10-30 minutes
|
||||
**What it does:** Reads files in critical directories based on project type
|
||||
**Reads:** Files in critical paths defined by documentation requirements
|
||||
**Use when:**
|
||||
|
||||
- Creating comprehensive documentation for brownfield PRD
|
||||
- Need detailed analysis of key areas
|
||||
- Want balance between depth and speed
|
||||
|
||||
**Example:** For a web app, reads controllers/, models/, components/, but not every utility file
|
||||
|
||||
### 3. Exhaustive Scan
|
||||
|
||||
**Duration:** 30-120 minutes
|
||||
**What it does:** Reads ALL source files in project
|
||||
**Reads:** Every source file (excludes node_modules, dist, build, .git)
|
||||
**Use when:**
|
||||
|
||||
- Complete project analysis needed
|
||||
- Migration planning requires full understanding
|
||||
- Detailed audit of entire codebase
|
||||
- Deep technical debt assessment
|
||||
|
||||
**Note:** Deep-dive mode ALWAYS uses exhaustive scan (no choice)
|
||||
|
||||
## Resumability (NEW in v1.2.0)
|
||||
|
||||
The workflow can be interrupted and resumed without losing progress:
|
||||
|
||||
- **State Tracking:** Progress saved in `project-scan-report.json`
|
||||
- **Auto-Detection:** Workflow detects incomplete runs (<24 hours old)
|
||||
- **Resume Prompt:** Choose to resume or start fresh
|
||||
- **Step-by-Step:** Resume from exact step where interrupted
|
||||
- **Archiving:** Old state files automatically archived
|
||||
|
||||
**Example Resume Flow:**
|
||||
|
||||
```
|
||||
> workflow document-project
|
||||
|
||||
I found an in-progress workflow state from 2025-10-11 14:32:15.
|
||||
|
||||
Current Progress:
|
||||
- Mode: initial_scan
|
||||
- Scan Level: deep
|
||||
- Completed Steps: 5/12
|
||||
- Last Step: step_5
|
||||
|
||||
Would you like to:
|
||||
1. Resume from where we left off - Continue from step 6
|
||||
2. Start fresh - Archive old state and begin new scan
|
||||
3. Cancel - Exit without changes
|
||||
|
||||
Your choice [1/2/3]:
|
||||
```
|
||||
|
||||
## What It Does
|
||||
|
||||
### Step-by-Step Process
|
||||
|
||||
1. **Detects Project Structure** - Identifies if project is single-part or multi-part (client/server/etc.)
|
||||
2. **Classifies Project Type** - Matches against 12 project types (web, backend, mobile, etc.)
|
||||
3. **Discovers Documentation** - Finds existing README, CONTRIBUTING, ARCHITECTURE files
|
||||
4. **Analyzes Tech Stack** - Parses package files, identifies frameworks, versions, dependencies
|
||||
5. **Conditional Scanning** - Performs targeted analysis based on project type requirements:
|
||||
- API routes and endpoints
|
||||
- Database models and schemas
|
||||
- State management patterns
|
||||
- UI component libraries
|
||||
- Configuration and security
|
||||
- CI/CD and deployment configs
|
||||
6. **Generates Source Tree** - Creates annotated directory structure with critical paths
|
||||
7. **Extracts Dev Instructions** - Documents setup, build, run, and test commands
|
||||
8. **Creates Architecture Docs** - Generates detailed architecture using matched templates
|
||||
9. **Builds Master Index** - Creates comprehensive index.md as primary AI retrieval source
|
||||
10. **Validates Output** - Runs 140+ point checklist to ensure completeness
|
||||
|
||||
### Output Files
|
||||
|
||||
**Single-Part Projects:**
|
||||
|
||||
- `index.md` - Master index
|
||||
- `project-overview.md` - Executive summary
|
||||
- `architecture.md` - Detailed architecture
|
||||
- `source-tree-analysis.md` - Annotated directory tree
|
||||
- `component-inventory.md` - Component catalog (if applicable)
|
||||
- `development-guide.md` - Local dev instructions
|
||||
- `api-contracts.md` - API documentation (if applicable)
|
||||
- `data-models.md` - Database schema (if applicable)
|
||||
- `deployment-guide.md` - Deployment process (optional)
|
||||
- `contribution-guide.md` - Contributing guidelines (optional)
|
||||
- `project-scan-report.json` - State file for resumability (NEW v1.2.0)
|
||||
|
||||
**Multi-Part Projects (e.g., client + server):**
|
||||
|
||||
- `index.md` - Master index with part navigation
|
||||
- `project-overview.md` - Multi-part summary
|
||||
- `architecture-{part_id}.md` - Per-part architecture docs
|
||||
- `source-tree-analysis.md` - Full tree with part annotations
|
||||
- `component-inventory-{part_id}.md` - Per-part components
|
||||
- `development-guide-{part_id}.md` - Per-part dev guides
|
||||
- `integration-architecture.md` - How parts communicate
|
||||
- `project-parts.json` - Machine-readable metadata
|
||||
- `project-scan-report.json` - State file for resumability (NEW v1.2.0)
|
||||
- Additional conditional files per part (API, data models, etc.)
|
||||
|
||||
## Data Files
|
||||
|
||||
The workflow uses three CSV files:
|
||||
|
||||
1. **project-types.csv** - Project type detection and classification
|
||||
- Location: `/bmad/bmm/workflows/3-solutioning/project-types/project-types.csv`
|
||||
- 12 project types with detection keywords
|
||||
|
||||
2. **registry.csv** - Architecture template matching
|
||||
- Location: `/bmad/bmm/workflows/3-solutioning/templates/registry.csv`
|
||||
- 170+ architecture patterns
|
||||
|
||||
3. **documentation-requirements.csv** - Scanning requirements per project type
|
||||
- Location: `/bmad/bmm/workflows/document-project/documentation-requirements.csv`
|
||||
- 24 columns of analysis patterns and requirements
|
||||
|
||||
## Use Cases
|
||||
|
||||
### Primary Use Case: Brownfield PRD Creation
|
||||
|
||||
After running this workflow, use the generated `index.md` as input to brownfield PRD workflows:
|
||||
|
||||
```
|
||||
User: "I want to add a new dashboard feature"
|
||||
PRD Workflow: Loads docs/index.md
|
||||
→ Understands existing architecture
|
||||
→ Identifies reusable components
|
||||
→ Plans integration with existing APIs
|
||||
→ Creates contextual PRD with epics and stories
|
||||
```
|
||||
|
||||
### Other Use Cases
|
||||
|
||||
- **Onboarding New Developers** - Comprehensive project documentation
|
||||
- **Architecture Review** - Structured analysis of existing system
|
||||
- **Technical Debt Assessment** - Identify patterns and anti-patterns
|
||||
- **Migration Planning** - Understand current state before refactoring
|
||||
|
||||
## Requirements
|
||||
|
||||
### Recommended Inputs (Optional)
|
||||
|
||||
- Project root directory (defaults to current directory)
|
||||
- README.md or similar docs (auto-discovered if present)
|
||||
- User guidance on key areas to focus (workflow will ask)
|
||||
|
||||
### Tools Used
|
||||
|
||||
- File system scanning (Glob, Read, Grep)
|
||||
- Code analysis
|
||||
- Git repository analysis (optional)
|
||||
|
||||
## Configuration
|
||||
|
||||
### Default Output Location
|
||||
|
||||
Files are saved to: `{output_folder}` (from config.yaml)
|
||||
|
||||
Default: `/docs/` folder in project root
|
||||
|
||||
### Customization
|
||||
|
||||
- Modify `documentation-requirements.csv` to adjust scanning patterns for project types
|
||||
- Add new project types to `project-types.csv`
|
||||
- Add new architecture templates to `registry.csv`
|
||||
|
||||
## Example: Multi-Part Web App
|
||||
|
||||
**Input:**
|
||||
|
||||
```
|
||||
my-app/
|
||||
├── client/ # React frontend
|
||||
├── server/ # Express backend
|
||||
└── README.md
|
||||
```
|
||||
|
||||
**Detection Result:**
|
||||
|
||||
- Repository Type: Monorepo
|
||||
- Part 1: client (web/React)
|
||||
- Part 2: server (backend/Express)
|
||||
|
||||
**Output (10+ files):**
|
||||
|
||||
```
|
||||
docs/
|
||||
├── index.md
|
||||
├── project-overview.md
|
||||
├── architecture-client.md
|
||||
├── architecture-server.md
|
||||
├── source-tree-analysis.md
|
||||
├── component-inventory-client.md
|
||||
├── development-guide-client.md
|
||||
├── development-guide-server.md
|
||||
├── api-contracts-server.md
|
||||
├── data-models-server.md
|
||||
├── integration-architecture.md
|
||||
└── project-parts.json
|
||||
```
|
||||
|
||||
## Example: Simple CLI Tool
|
||||
|
||||
**Input:**
|
||||
|
||||
```
|
||||
hello-cli/
|
||||
├── main.go
|
||||
├── go.mod
|
||||
└── README.md
|
||||
```
|
||||
|
||||
**Detection Result:**
|
||||
|
||||
- Repository Type: Monolith
|
||||
- Part 1: main (cli/Go)
|
||||
|
||||
**Output (4 files):**
|
||||
|
||||
```
|
||||
docs/
|
||||
├── index.md
|
||||
├── project-overview.md
|
||||
├── architecture.md
|
||||
└── source-tree-analysis.md
|
||||
```
|
||||
|
||||
## Deep-Dive Mode
|
||||
|
||||
### What is Deep-Dive Mode?
|
||||
|
||||
When you run the workflow on a project that already has documentation, you'll be offered a choice:
|
||||
|
||||
1. **Rescan entire project** - Update all documentation with latest changes
|
||||
2. **Deep-dive into specific area** - Generate EXHAUSTIVE documentation for a particular feature/module/folder
|
||||
3. **Cancel** - Keep existing documentation
|
||||
|
||||
Deep-dive mode performs **comprehensive, file-by-file analysis** of a specific area, reading EVERY file completely and documenting:
|
||||
|
||||
- All exports with complete signatures
|
||||
- All imports and dependencies
|
||||
- Dependency graphs and data flow
|
||||
- Code patterns and implementations
|
||||
- Testing coverage and strategies
|
||||
- Integration points
|
||||
- Reuse opportunities
|
||||
|
||||
### When to Use Deep-Dive Mode
|
||||
|
||||
- **Before implementing a feature** - Deep-dive the area you'll be modifying
|
||||
- **During architecture review** - Deep-dive complex modules
|
||||
- **For code understanding** - Deep-dive unfamiliar parts of codebase
|
||||
- **When creating PRDs** - Deep-dive areas affected by new features
|
||||
|
||||
### Deep-Dive Process
|
||||
|
||||
1. Workflow detects existing `index.md`
|
||||
2. Offers deep-dive option
|
||||
3. Suggests areas based on project structure:
|
||||
- API route groups
|
||||
- Feature modules
|
||||
- UI component areas
|
||||
- Services/business logic
|
||||
4. You select area or specify custom path
|
||||
5. Workflow reads EVERY file in that area
|
||||
6. Generates `deep-dive-{area-name}.md` with complete analysis
|
||||
7. Updates `index.md` with link to deep-dive doc
|
||||
8. Offers to deep-dive another area or finish
|
||||
|
||||
### Deep-Dive Output Example
|
||||
|
||||
**docs/deep-dive-dashboard-feature.md:**
|
||||
|
||||
- Complete file inventory (47 files analyzed)
|
||||
- Every export with signatures
|
||||
- Dependency graph
|
||||
- Data flow analysis
|
||||
- Integration points
|
||||
- Testing coverage
|
||||
- Related code references
|
||||
- Implementation guidance
|
||||
- ~3,000 LOC documented in detail
|
||||
|
||||
### Incremental Deep-Diving
|
||||
|
||||
You can deep-dive multiple areas over time:
|
||||
|
||||
- First run: Scan entire project → generates index.md
|
||||
- Second run: Deep-dive dashboard feature
|
||||
- Third run: Deep-dive API layer
|
||||
- Fourth run: Deep-dive authentication system
|
||||
|
||||
All deep-dive docs are linked from the master index.
|
||||
|
||||
## Validation
|
||||
|
||||
The workflow includes a comprehensive 160+ point checklist covering:
|
||||
|
||||
- Project detection accuracy
|
||||
- Technology stack completeness
|
||||
- Codebase scanning thoroughness
|
||||
- Architecture documentation quality
|
||||
- Multi-part handling (if applicable)
|
||||
- Brownfield PRD readiness
|
||||
- Deep-dive completeness (if applicable)
|
||||
|
||||
## Next Steps After Completion
|
||||
|
||||
1. **Review** `docs/index.md` - Your master documentation index
|
||||
2. **Validate** - Check generated docs for accuracy
|
||||
3. **Use for PRD** - Point brownfield PRD workflow to index.md
|
||||
4. **Maintain** - Re-run workflow when architecture changes significantly
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
document-project/
|
||||
├── workflow.yaml # Workflow configuration
|
||||
├── instructions.md # Step-by-step workflow logic
|
||||
├── checklist.md # Validation criteria
|
||||
├── documentation-requirements.csv # Project type scanning patterns
|
||||
├── templates/ # Output templates
|
||||
│ ├── index-template.md
|
||||
│ ├── project-overview-template.md
|
||||
│ └── source-tree-template.md
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Issue: Project type not detected correctly**
|
||||
|
||||
- Solution: Workflow will ask for confirmation; manually select correct type
|
||||
|
||||
**Issue: Missing critical information**
|
||||
|
||||
- Solution: Provide additional context when prompted; re-run specific analysis steps
|
||||
|
||||
**Issue: Multi-part detection missed a part**
|
||||
|
||||
- Solution: When asked to confirm parts, specify the missing part and its path
|
||||
|
||||
**Issue: Architecture template doesn't match well**
|
||||
|
||||
- Solution: Check registry.csv; may need to add new template or adjust matching criteria
|
||||
|
||||
## Architecture Improvements in v1.2.0
|
||||
|
||||
### Context-Safe Design
|
||||
|
||||
The workflow now uses a write-as-you-go architecture:
|
||||
|
||||
- Documents written immediately to disk (not accumulated in memory)
|
||||
- Detailed findings purged after writing (only summaries kept)
|
||||
- State tracking enables resumption from any step
|
||||
- Batching strategy prevents context exhaustion on large projects
|
||||
|
||||
### Batching Strategy
|
||||
|
||||
For deep/exhaustive scans:
|
||||
|
||||
- Process ONE subfolder at a time
|
||||
- Read files → Extract info → Write output → Validate → Purge context
|
||||
- Primary concern is file SIZE (not count)
|
||||
- Track batches in state file for resumability
|
||||
|
||||
### State File Format
|
||||
|
||||
Optimized JSON (no pretty-printing):
|
||||
|
||||
```json
|
||||
{
|
||||
"workflow_version": "1.2.0",
|
||||
"timestamps": {...},
|
||||
"mode": "initial_scan",
|
||||
"scan_level": "deep",
|
||||
"completed_steps": [...],
|
||||
"current_step": "step_6",
|
||||
"findings": {"summary": "only"},
|
||||
"outputs_generated": [...],
|
||||
"resume_instructions": "..."
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,245 @@
|
||||
# Document Project Workflow - Validation Checklist
|
||||
|
||||
## Scan Level and Resumability (v1.2.0)
|
||||
|
||||
- [ ] Scan level selection offered (quick/deep/exhaustive) for initial_scan and full_rescan modes
|
||||
- [ ] Deep-dive mode automatically uses exhaustive scan (no choice given)
|
||||
- [ ] Quick scan does NOT read source files (only patterns, configs, manifests)
|
||||
- [ ] Deep scan reads files in critical directories per project type
|
||||
- [ ] Exhaustive scan reads ALL source files (excluding node_modules, dist, build)
|
||||
- [ ] State file (project-scan-report.json) created at workflow start
|
||||
- [ ] State file updated after each step completion
|
||||
- [ ] State file contains all required fields per schema
|
||||
- [ ] Resumability prompt shown if state file exists and is <24 hours old
|
||||
- [ ] Old state files (>24 hours) automatically archived
|
||||
- [ ] Resume functionality loads previous state correctly
|
||||
- [ ] Workflow can jump to correct step when resuming
|
||||
|
||||
## Write-as-you-go Architecture
|
||||
|
||||
- [ ] Each document written to disk IMMEDIATELY after generation
|
||||
- [ ] Document validation performed right after writing (section-level)
|
||||
- [ ] State file updated after each document is written
|
||||
- [ ] Detailed findings purged from context after writing (only summaries kept)
|
||||
- [ ] Context contains only high-level summaries (1-2 sentences per section)
|
||||
- [ ] No accumulation of full project analysis in memory
|
||||
|
||||
## Batching Strategy (Deep/Exhaustive Scans)
|
||||
|
||||
- [ ] Batching applied for deep and exhaustive scan levels
|
||||
- [ ] Batches organized by SUBFOLDER (not arbitrary file count)
|
||||
- [ ] Large files (>5000 LOC) handled with appropriate judgment
|
||||
- [ ] Each batch: read files, extract info, write output, validate, purge context
|
||||
- [ ] Batch completion tracked in state file (batches_completed array)
|
||||
- [ ] Batch summaries kept in context (1-2 sentences max)
|
||||
|
||||
## Project Detection and Classification
|
||||
|
||||
- [ ] Project type correctly identified and matches actual technology stack
|
||||
- [ ] Multi-part vs single-part structure accurately detected
|
||||
- [ ] All project parts identified if multi-part (no missing client/server/etc.)
|
||||
- [ ] Documentation requirements loaded for each part type
|
||||
- [ ] Architecture registry match is appropriate for detected stack
|
||||
|
||||
## Technology Stack Analysis
|
||||
|
||||
- [ ] All major technologies identified (framework, language, database, etc.)
|
||||
- [ ] Versions captured where available
|
||||
- [ ] Technology decision table is complete and accurate
|
||||
- [ ] Dependencies and libraries documented
|
||||
- [ ] Build tools and package managers identified
|
||||
|
||||
## Codebase Scanning Completeness
|
||||
|
||||
- [ ] All critical directories scanned based on project type
|
||||
- [ ] API endpoints documented (if requires_api_scan = true)
|
||||
- [ ] Data models captured (if requires_data_models = true)
|
||||
- [ ] State management patterns identified (if requires_state_management = true)
|
||||
- [ ] UI components inventoried (if requires_ui_components = true)
|
||||
- [ ] Configuration files located and documented
|
||||
- [ ] Authentication/security patterns identified
|
||||
- [ ] Entry points correctly identified
|
||||
- [ ] Integration points mapped (for multi-part projects)
|
||||
- [ ] Test files and patterns documented
|
||||
|
||||
## Source Tree Analysis
|
||||
|
||||
- [ ] Complete directory tree generated with no major omissions
|
||||
- [ ] Critical folders highlighted and described
|
||||
- [ ] Entry points clearly marked
|
||||
- [ ] Integration paths noted (for multi-part)
|
||||
- [ ] Asset locations identified (if applicable)
|
||||
- [ ] File organization patterns explained
|
||||
|
||||
## Architecture Documentation Quality
|
||||
|
||||
- [ ] Architecture document uses appropriate template from registry
|
||||
- [ ] All template sections filled with relevant information (no placeholders)
|
||||
- [ ] Technology stack section is comprehensive
|
||||
- [ ] Architecture pattern clearly explained
|
||||
- [ ] Data architecture documented (if applicable)
|
||||
- [ ] API design documented (if applicable)
|
||||
- [ ] Component structure explained (if applicable)
|
||||
- [ ] Source tree included and annotated
|
||||
- [ ] Testing strategy documented
|
||||
- [ ] Deployment architecture captured (if config found)
|
||||
|
||||
## Development and Operations Documentation
|
||||
|
||||
- [ ] Prerequisites clearly listed
|
||||
- [ ] Installation steps documented
|
||||
- [ ] Environment setup instructions provided
|
||||
- [ ] Local run commands specified
|
||||
- [ ] Build process documented
|
||||
- [ ] Test commands and approach explained
|
||||
- [ ] Deployment process documented (if applicable)
|
||||
- [ ] CI/CD pipeline details captured (if found)
|
||||
- [ ] Contribution guidelines extracted (if found)
|
||||
|
||||
## Multi-Part Project Specific (if applicable)
|
||||
|
||||
- [ ] Each part documented separately
|
||||
- [ ] Part-specific architecture files created (architecture-{part_id}.md)
|
||||
- [ ] Part-specific component inventories created (if applicable)
|
||||
- [ ] Part-specific development guides created
|
||||
- [ ] Integration architecture document created
|
||||
- [ ] Integration points clearly defined with type and details
|
||||
- [ ] Data flow between parts explained
|
||||
- [ ] project-parts.json metadata file created
|
||||
|
||||
## Index and Navigation
|
||||
|
||||
- [ ] index.md created as master entry point
|
||||
- [ ] Project structure clearly summarized in index
|
||||
- [ ] Quick reference section complete and accurate
|
||||
- [ ] All generated docs linked from index
|
||||
- [ ] All existing docs linked from index (if found)
|
||||
- [ ] Getting started section provides clear next steps
|
||||
- [ ] AI-assisted development guidance included
|
||||
- [ ] Navigation structure matches project complexity (simple for single-part, detailed for multi-part)
|
||||
|
||||
## File Completeness
|
||||
|
||||
- [ ] index.md generated
|
||||
- [ ] project-overview.md generated
|
||||
- [ ] source-tree-analysis.md generated
|
||||
- [ ] architecture.md (or per-part) generated
|
||||
- [ ] component-inventory.md (or per-part) generated if UI components exist
|
||||
- [ ] development-guide.md (or per-part) generated
|
||||
- [ ] api-contracts.md (or per-part) generated if APIs documented
|
||||
- [ ] data-models.md (or per-part) generated if data models found
|
||||
- [ ] deployment-guide.md generated if deployment config found
|
||||
- [ ] contribution-guide.md generated if guidelines found
|
||||
- [ ] integration-architecture.md generated if multi-part
|
||||
- [ ] project-parts.json generated if multi-part
|
||||
|
||||
## Content Quality
|
||||
|
||||
- [ ] Technical information is accurate and specific
|
||||
- [ ] No generic placeholders or "TODO" items remain
|
||||
- [ ] Examples and code snippets are relevant to actual project
|
||||
- [ ] File paths and directory references are correct
|
||||
- [ ] Technology names and versions are accurate
|
||||
- [ ] Terminology is consistent across all documents
|
||||
- [ ] Descriptions are clear and actionable
|
||||
|
||||
## Brownfield PRD Readiness
|
||||
|
||||
- [ ] Documentation provides enough context for AI to understand existing system
|
||||
- [ ] Integration points are clear for planning new features
|
||||
- [ ] Reusable components are identified for leveraging in new work
|
||||
- [ ] Data models are documented for schema extension planning
|
||||
- [ ] API contracts are documented for endpoint expansion
|
||||
- [ ] Code conventions and patterns are captured for consistency
|
||||
- [ ] Architecture constraints are clear for informed decision-making
|
||||
|
||||
## Output Validation
|
||||
|
||||
- [ ] All files saved to correct output folder
|
||||
- [ ] File naming follows convention (no part suffix for single-part, with suffix for multi-part)
|
||||
- [ ] No broken internal links between documents
|
||||
- [ ] Markdown formatting is correct and renders properly
|
||||
- [ ] JSON files are valid (project-parts.json if applicable)
|
||||
|
||||
## Final Validation
|
||||
|
||||
- [ ] User confirmed project classification is accurate
|
||||
- [ ] User provided any additional context needed
|
||||
- [ ] All requested areas of focus addressed
|
||||
- [ ] Documentation is immediately usable for brownfield PRD workflow
|
||||
- [ ] No critical information gaps identified
|
||||
|
||||
## Issues Found
|
||||
|
||||
### Critical Issues (must fix before completion)
|
||||
|
||||
-
|
||||
|
||||
### Minor Issues (can be addressed later)
|
||||
|
||||
-
|
||||
|
||||
### Missing Information (to note for user)
|
||||
|
||||
- ***
|
||||
|
||||
## Deep-Dive Mode Validation (if deep-dive was performed)
|
||||
|
||||
- [ ] Deep-dive target area correctly identified and scoped
|
||||
- [ ] All files in target area read completely (no skipped files)
|
||||
- [ ] File inventory includes all exports with complete signatures
|
||||
- [ ] Dependencies mapped for all files
|
||||
- [ ] Dependents identified (who imports each file)
|
||||
- [ ] Code snippets included for key implementation details
|
||||
- [ ] Patterns and design approaches documented
|
||||
- [ ] State management strategy explained
|
||||
- [ ] Side effects documented (API calls, DB queries, etc.)
|
||||
- [ ] Error handling approaches captured
|
||||
- [ ] Testing files and coverage documented
|
||||
- [ ] TODOs and comments extracted
|
||||
- [ ] Dependency graph created showing relationships
|
||||
- [ ] Data flow traced through the scanned area
|
||||
- [ ] Integration points with rest of codebase identified
|
||||
- [ ] Related code and similar patterns found outside scanned area
|
||||
- [ ] Reuse opportunities documented
|
||||
- [ ] Implementation guidance provided
|
||||
- [ ] Modification instructions clear
|
||||
- [ ] Index.md updated with deep-dive link
|
||||
- [ ] Deep-dive documentation is immediately useful for implementation
|
||||
|
||||
---
|
||||
|
||||
## State File Quality
|
||||
|
||||
- [ ] State file is valid JSON (no syntax errors)
|
||||
- [ ] State file is optimized (no pretty-printing, minimal whitespace)
|
||||
- [ ] State file contains all completed steps with timestamps
|
||||
- [ ] State file outputs_generated list is accurate and complete
|
||||
- [ ] State file resume_instructions are clear and actionable
|
||||
- [ ] State file findings contain only high-level summaries (not detailed data)
|
||||
- [ ] State file can be successfully loaded for resumption
|
||||
|
||||
## Completion Criteria
|
||||
|
||||
All items in the following sections must be checked:
|
||||
|
||||
- ✓ Scan Level and Resumability (v1.2.0)
|
||||
- ✓ Write-as-you-go Architecture
|
||||
- ✓ Batching Strategy (if deep/exhaustive scan)
|
||||
- ✓ Project Detection and Classification
|
||||
- ✓ Technology Stack Analysis
|
||||
- ✓ Architecture Documentation Quality
|
||||
- ✓ Index and Navigation
|
||||
- ✓ File Completeness
|
||||
- ✓ Brownfield PRD Readiness
|
||||
- ✓ State File Quality
|
||||
- ✓ Deep-Dive Mode Validation (if applicable)
|
||||
|
||||
The workflow is complete when:
|
||||
|
||||
1. All critical checklist items are satisfied
|
||||
2. No critical issues remain
|
||||
3. User has reviewed and approved the documentation
|
||||
4. Generated docs are ready for use in brownfield PRD workflow
|
||||
5. Deep-dive docs (if any) are comprehensive and implementation-ready
|
||||
6. State file is valid and can enable resumption if interrupted
|
||||
@@ -0,0 +1,12 @@
|
||||
project_type_id,requires_api_scan,requires_data_models,requires_state_management,requires_ui_components,requires_deployment_config,key_file_patterns,critical_directories,integration_scan_patterns,test_file_patterns,config_patterns,auth_security_patterns,schema_migration_patterns,entry_point_patterns,shared_code_patterns,monorepo_workspace_patterns,async_event_patterns,ci_cd_patterns,asset_patterns,hardware_interface_patterns,protocol_schema_patterns,localization_patterns,requires_hardware_docs,requires_asset_inventory
|
||||
web,true,true,true,true,true,package.json;tsconfig.json;*.config.js;*.config.ts;vite.config.*;webpack.config.*;next.config.*;nuxt.config.*,src/;app/;pages/;components/;api/;lib/;styles/;public/;static/,*client.ts;*service.ts;*api.ts;fetch*.ts;axios*.ts;*http*.ts,*.test.ts;*.spec.ts;*.test.tsx;*.spec.tsx;**/__tests__/**;**/*.test.*;**/*.spec.*,.env*;config/*;*.config.*;.config/;settings/,*auth*.ts;*session*.ts;middleware/auth*;*.guard.ts;*authenticat*;*permission*;guards/,migrations/**;prisma/**;*.prisma;alembic/**;knex/**;*migration*.sql;*migration*.ts,main.ts;index.ts;app.ts;server.ts;_app.tsx;_app.ts;layout.tsx,shared/**;common/**;utils/**;lib/**;helpers/**;@*/**;packages/**,pnpm-workspace.yaml;lerna.json;nx.json;turbo.json;workspace.json;rush.json,*event*.ts;*queue*.ts;*subscriber*.ts;*consumer*.ts;*producer*.ts;*worker*.ts;jobs/**,.github/workflows/**;.gitlab-ci.yml;Jenkinsfile;.circleci/**;azure-pipelines.yml;bitbucket-pipelines.yml,.drone.yml,public/**;static/**;assets/**;images/**;media/**,N/A,*.proto;*.graphql;graphql/**;schema.graphql;*.avro;openapi.*;swagger.*,i18n/**;locales/**;lang/**;translations/**;messages/**;*.po;*.pot,false,false
|
||||
mobile,true,true,true,true,true,package.json;pubspec.yaml;Podfile;build.gradle;app.json;capacitor.config.*;ionic.config.json,src/;app/;screens/;components/;services/;models/;assets/;ios/;android/,*client.ts;*service.ts;*api.ts;fetch*.ts;axios*.ts;*http*.ts,*.test.ts;*.test.tsx;*_test.dart;*.test.dart;**/__tests__/**,.env*;config/*;app.json;capacitor.config.*;google-services.json;GoogleService-Info.plist,*auth*.ts;*session*.ts;*authenticat*;*permission*;*biometric*;secure-store*,migrations/**;realm/**;*.realm;watermelondb/**;sqlite/**,main.ts;index.ts;App.tsx;App.ts;main.dart,shared/**;common/**;utils/**;lib/**;components/shared/**;@*/**,pnpm-workspace.yaml;lerna.json;nx.json;turbo.json,*event*.ts;*notification*.ts;*push*.ts;background-fetch*,fastlane/**;.github/workflows/**;.gitlab-ci.yml;bitbucket-pipelines.yml;appcenter-*,assets/**;Resources/**;res/**;*.xcassets;drawable*/;mipmap*/;images/**,N/A,*.proto;graphql/**;*.graphql,i18n/**;locales/**;translations/**;*.strings;*.xml,false,true
|
||||
backend,true,true,false,false,true,package.json;requirements.txt;go.mod;Gemfile;pom.xml;build.gradle;Cargo.toml;*.csproj,src/;api/;services/;models/;routes/;controllers/;middleware/;handlers/;repositories/;domain/,*client.ts;*repository.ts;*service.ts;*connector*.ts;*adapter*.ts,*.test.ts;*.spec.ts;*_test.go;test_*.py;*Test.java;*_test.rs,.env*;config/*;*.config.*;application*.yml;application*.yaml;appsettings*.json;settings.py,*auth*.ts;*session*.ts;*authenticat*;*authorization*;middleware/auth*;guards/;*jwt*;*oauth*,migrations/**;alembic/**;flyway/**;liquibase/**;prisma/**;*.prisma;*migration*.sql;*migration*.ts;db/migrate,main.ts;index.ts;server.ts;app.ts;main.go;main.py;Program.cs;__init__.py,shared/**;common/**;utils/**;lib/**;core/**;@*/**;pkg/**,pnpm-workspace.yaml;lerna.json;nx.json;go.work,*event*.ts;*queue*.ts;*subscriber*.ts;*consumer*.ts;*producer*.ts;*worker*.ts;*handler*.ts;jobs/**;workers/**,.github/workflows/**;.gitlab-ci.yml;Jenkinsfile;.circleci/**;azure-pipelines.yml;.drone.yml,N/A,N/A,*.proto;*.graphql;graphql/**;*.avro;*.thrift;openapi.*;swagger.*;schema/**,N/A,false,false
|
||||
cli,false,false,false,false,false,package.json;go.mod;Cargo.toml;setup.py;pyproject.toml;*.gemspec,src/;cmd/;cli/;bin/;lib/;commands/,N/A,*.test.ts;*_test.go;test_*.py;*.spec.ts;*_spec.rb,.env*;config/*;*.config.*;.*.rc;.*rc,N/A,N/A,main.ts;index.ts;cli.ts;main.go;main.py;__main__.py;bin/*,shared/**;common/**;utils/**;lib/**;helpers/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml;goreleaser.yml,N/A,N/A,N/A,N/A,false,false
|
||||
library,false,false,false,false,false,package.json;setup.py;Cargo.toml;go.mod;*.gemspec;*.csproj;pom.xml,src/;lib/;dist/;pkg/;build/;target/,N/A,*.test.ts;*_test.go;test_*.py;*.spec.ts;*Test.java;*_test.rs,.*.rc;tsconfig.json;rollup.config.*;vite.config.*;webpack.config.*,N/A,N/A,index.ts;index.js;lib.rs;main.go;__init__.py,src/**;lib/**;core/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml;.circleci/**,N/A,N/A,N/A,N/A,false,false
|
||||
desktop,false,false,true,true,true,package.json;Cargo.toml;*.csproj;CMakeLists.txt;tauri.conf.json;electron-builder.yml;wails.json,src/;app/;components/;main/;renderer/;resources/;assets/;build/,*service.ts;ipc*.ts;*bridge*.ts;*native*.ts;invoke*,*.test.ts;*.spec.ts;*_test.rs;*.spec.tsx,.env*;config/*;*.config.*;app.config.*;forge.config.*;builder.config.*,*auth*.ts;*session*.ts;keychain*;secure-storage*,N/A,main.ts;index.ts;main.js;src-tauri/main.rs;electron.ts,shared/**;common/**;utils/**;lib/**;components/shared/**,N/A,*event*.ts;*ipc*.ts;*message*.ts,.github/workflows/**;.gitlab-ci.yml;.circleci/**,resources/**;assets/**;icons/**;static/**;build/resources,N/A,N/A,i18n/**;locales/**;translations/**;lang/**,false,true
|
||||
game,false,false,true,false,false,*.unity;*.godot;*.uproject;package.json;project.godot,Assets/;Scenes/;Scripts/;Prefabs/;Resources/;Content/;Source/;src/;scenes/;scripts/,N/A,*Test.cs;*_test.gd;*Test.cpp;*.test.ts,.env*;config/*;*.ini;settings/;GameSettings/,N/A,N/A,main.gd;Main.cs;GameManager.cs;main.cpp;index.ts,shared/**;common/**;utils/**;Core/**;Framework/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml,Assets/**;Scenes/**;Prefabs/**;Materials/**;Textures/**;Audio/**;Models/**;*.fbx;*.blend;*.shader;*.hlsl;*.glsl;Shaders/**;VFX/**,N/A,N/A,Localization/**;Languages/**;i18n/**,false,true
|
||||
data,false,true,false,false,true,requirements.txt;pyproject.toml;dbt_project.yml;airflow.cfg;setup.py;Pipfile,dags/;pipelines/;models/;transformations/;notebooks/;sql/;etl/;jobs/,N/A,test_*.py;*_test.py;tests/**,.env*;config/*;profiles.yml;dbt_project.yml;airflow.cfg,N/A,migrations/**;dbt/models/**;*.sql;schemas/**,main.py;__init__.py;pipeline.py;dag.py,shared/**;common/**;utils/**;lib/**;helpers/**,N/A,*event*.py;*consumer*.py;*producer*.py;*worker*.py;jobs/**;tasks/**,.github/workflows/**;.gitlab-ci.yml;airflow/dags/**,N/A,N/A,*.proto;*.avro;schemas/**;*.parquet,N/A,false,false
|
||||
extension,true,false,true,true,false,manifest.json;package.json;wxt.config.ts,src/;popup/;content/;background/;assets/;components/,*message.ts;*runtime.ts;*storage.ts;*tabs.ts,*.test.ts;*.spec.ts;*.test.tsx,.env*;wxt.config.*;webpack.config.*;vite.config.*,*auth*.ts;*session*.ts;*permission*,N/A,index.ts;popup.ts;background.ts;content.ts,shared/**;common/**;utils/**;lib/**,N/A,*message*.ts;*event*.ts;chrome.runtime*;browser.runtime*,.github/workflows/**,assets/**;icons/**;images/**;static/**,N/A,N/A,_locales/**;locales/**;i18n/**,false,false
|
||||
infra,false,false,false,false,true,*.tf;*.tfvars;pulumi.yaml;cdk.json;*.yml;*.yaml;Dockerfile;docker-compose*.yml,terraform/;modules/;k8s/;charts/;playbooks/;roles/;policies/;stacks/,N/A,*_test.go;test_*.py;*_test.tf;*_spec.rb,.env*;*.tfvars;config/*;vars/;group_vars/;host_vars/,N/A,N/A,main.tf;index.ts;__main__.py;playbook.yml,modules/**;shared/**;common/**;lib/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml;.circleci/**,N/A,N/A,N/A,N/A,false,false
|
||||
embedded,false,false,false,false,false,platformio.ini;CMakeLists.txt;*.ino;Makefile;*.ioc;mbed-os.lib,src/;lib/;include/;firmware/;drivers/;hal/;bsp/;components/,N/A,test_*.c;*_test.cpp;*_test.c;tests/**,.env*;config/*;sdkconfig;*.json;settings/,N/A,N/A,main.c;main.cpp;main.ino;app_main.c,lib/**;shared/**;common/**;drivers/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml,N/A,*.h;*.hpp;drivers/**;hal/**;bsp/**;pinout.*;peripheral*;gpio*;*.fzz;schematics/**,*.proto;mqtt*;coap*;modbus*,N/A,true,false
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,38 @@
|
||||
# Document Project Workflow Templates
|
||||
|
||||
This directory contains template files for the `document-project` workflow.
|
||||
|
||||
## Template Files
|
||||
|
||||
- **index-template.md** - Master index template (adapts for single/multi-part projects)
|
||||
- **project-overview-template.md** - Executive summary and high-level overview
|
||||
- **source-tree-template.md** - Annotated directory structure
|
||||
|
||||
## Template Usage
|
||||
|
||||
The workflow dynamically selects and populates templates based on:
|
||||
|
||||
1. **Project structure** (single part vs multi-part)
|
||||
2. **Project type** (web, backend, mobile, etc.)
|
||||
3. **Documentation requirements** (from documentation-requirements.csv)
|
||||
|
||||
## Variable Naming Convention
|
||||
|
||||
Templates use Handlebars-style variables:
|
||||
|
||||
- `{{variable_name}}` - Simple substitution
|
||||
- `{{#if condition}}...{{/if}}` - Conditional blocks
|
||||
- `{{#each collection}}...{{/each}}` - Iteration
|
||||
|
||||
## Additional Templates
|
||||
|
||||
Architecture-specific templates are dynamically loaded from:
|
||||
`/bmad/bmm/workflows/3-solutioning/templates/`
|
||||
|
||||
Based on the matched architecture type from the registry.
|
||||
|
||||
## Notes
|
||||
|
||||
- Templates support both simple and complex project structures
|
||||
- Multi-part projects get part-specific file naming (e.g., `architecture-{part_id}.md`)
|
||||
- Single-part projects use simplified naming (e.g., `architecture.md`)
|
||||
@@ -0,0 +1,31 @@
|
||||
# {{target_name}} - Deep Dive Documentation
|
||||
|
||||
**Generated:** {{date}}
|
||||
**Scope:** {{target_path}}
|
||||
**Files Analyzed:** {{file_count}}
|
||||
**Lines of Code:** {{total_loc}}
|
||||
**Workflow Mode:** Exhaustive Deep-Dive
|
||||
|
||||
## Overview
|
||||
|
||||
{{target_description}}
|
||||
|
||||
---
|
||||
|
||||
**Note:** The deep-dive documentation structure is defined inline in Step 13e of instructions.md.
|
||||
This template file serves as a reference and placeholder for the deep-dive generation process.
|
||||
|
||||
The actual documentation includes:
|
||||
|
||||
- Complete file inventory with all exports and signatures
|
||||
- Dependency graphs and data flow analysis
|
||||
- Integration points and API contracts
|
||||
- Testing coverage and strategies
|
||||
- Related code and reuse opportunities
|
||||
- Implementation guidance and modification notes
|
||||
|
||||
See Step 13e in instructions.md for the complete template structure.
|
||||
|
||||
---
|
||||
|
||||
_Generated by `document-project` workflow (deep-dive mode)_
|
||||
@@ -0,0 +1,169 @@
|
||||
# {{project_name}} Documentation Index
|
||||
|
||||
**Type:** {{repository_type}}{{#if is_multi_part}} with {{parts_count}} parts{{/if}}
|
||||
**Primary Language:** {{primary_language}}
|
||||
**Architecture:** {{architecture_type}}
|
||||
**Last Updated:** {{date}}
|
||||
|
||||
## Project Overview
|
||||
|
||||
{{project_description}}
|
||||
|
||||
{{#if is_multi_part}}
|
||||
|
||||
## Project Structure
|
||||
|
||||
This project consists of {{parts_count}} parts:
|
||||
|
||||
{{#each project_parts}}
|
||||
|
||||
### {{part_name}} ({{part_id}})
|
||||
|
||||
- **Type:** {{project_type}}
|
||||
- **Location:** `{{root_path}}`
|
||||
- **Tech Stack:** {{tech_stack_summary}}
|
||||
- **Entry Point:** {{entry_point}}
|
||||
{{/each}}
|
||||
|
||||
## Cross-Part Integration
|
||||
|
||||
{{integration_summary}}
|
||||
|
||||
{{/if}}
|
||||
|
||||
## Quick Reference
|
||||
|
||||
{{#if is_single_part}}
|
||||
|
||||
- **Tech Stack:** {{tech_stack_summary}}
|
||||
- **Entry Point:** {{entry_point}}
|
||||
- **Architecture Pattern:** {{architecture_pattern}}
|
||||
- **Database:** {{database}}
|
||||
- **Deployment:** {{deployment_platform}}
|
||||
{{else}}
|
||||
{{#each project_parts}}
|
||||
|
||||
### {{part_name}} Quick Ref
|
||||
|
||||
- **Stack:** {{tech_stack_summary}}
|
||||
- **Entry:** {{entry_point}}
|
||||
- **Pattern:** {{architecture_pattern}}
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
## Generated Documentation
|
||||
|
||||
### Core Documentation
|
||||
|
||||
- [Project Overview](./project-overview.md) - Executive summary and high-level architecture
|
||||
- [Source Tree Analysis](./source-tree-analysis.md) - Annotated directory structure
|
||||
|
||||
{{#if is_single_part}}
|
||||
|
||||
- [Architecture](./architecture.md) - Detailed technical architecture
|
||||
- [Component Inventory](./component-inventory.md) - Catalog of major components{{#if has_ui_components}} and UI elements{{/if}}
|
||||
- [Development Guide](./development-guide.md) - Local setup and development workflow
|
||||
{{#if has_api_docs}}- [API Contracts](./api-contracts.md) - API endpoints and schemas{{/if}}
|
||||
{{#if has_data_models}}- [Data Models](./data-models.md) - Database schema and models{{/if}}
|
||||
{{else}}
|
||||
|
||||
### Part-Specific Documentation
|
||||
|
||||
{{#each project_parts}}
|
||||
|
||||
#### {{part_name}} ({{part_id}})
|
||||
|
||||
- [Architecture](./architecture-{{part_id}}.md) - Technical architecture for {{part_name}}
|
||||
{{#if has_components}}- [Components](./component-inventory-{{part_id}}.md) - Component catalog{{/if}}
|
||||
- [Development Guide](./development-guide-{{part_id}}.md) - Setup and dev workflow
|
||||
{{#if has_api}}- [API Contracts](./api-contracts-{{part_id}}.md) - API documentation{{/if}}
|
||||
{{#if has_data}}- [Data Models](./data-models-{{part_id}}.md) - Data architecture{{/if}}
|
||||
{{/each}}
|
||||
|
||||
### Integration
|
||||
|
||||
- [Integration Architecture](./integration-architecture.md) - How parts communicate
|
||||
- [Project Parts Metadata](./project-parts.json) - Machine-readable structure
|
||||
{{/if}}
|
||||
|
||||
### Optional Documentation
|
||||
|
||||
{{#if has_deployment_guide}}- [Deployment Guide](./deployment-guide.md) - Deployment process and infrastructure{{/if}}
|
||||
{{#if has_contribution_guide}}- [Contribution Guide](./contribution-guide.md) - Contributing guidelines and standards{{/if}}
|
||||
|
||||
## Existing Documentation
|
||||
|
||||
{{#if has_existing_docs}}
|
||||
{{#each existing_docs}}
|
||||
|
||||
- [{{title}}]({{path}}) - {{description}}
|
||||
{{/each}}
|
||||
{{else}}
|
||||
No existing documentation files were found in the project.
|
||||
{{/if}}
|
||||
|
||||
## Getting Started
|
||||
|
||||
{{#if is_single_part}}
|
||||
|
||||
### Prerequisites
|
||||
|
||||
{{prerequisites}}
|
||||
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
{{setup_commands}}
|
||||
```
|
||||
|
||||
### Run Locally
|
||||
|
||||
```bash
|
||||
{{run_commands}}
|
||||
```
|
||||
|
||||
### Run Tests
|
||||
|
||||
```bash
|
||||
{{test_commands}}
|
||||
```
|
||||
|
||||
{{else}}
|
||||
{{#each project_parts}}
|
||||
|
||||
### {{part_name}} Setup
|
||||
|
||||
**Prerequisites:** {{prerequisites}}
|
||||
|
||||
**Install & Run:**
|
||||
|
||||
```bash
|
||||
cd {{root_path}}
|
||||
{{setup_command}}
|
||||
{{run_command}}
|
||||
```
|
||||
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
## For AI-Assisted Development
|
||||
|
||||
This documentation was generated specifically to enable AI agents to understand and extend this codebase.
|
||||
|
||||
### When Planning New Features:
|
||||
|
||||
**UI-only features:**
|
||||
{{#if is_multi_part}}→ Reference: `architecture-{{ui_part_id}}.md`, `component-inventory-{{ui_part_id}}.md`{{else}}→ Reference: `architecture.md`, `component-inventory.md`{{/if}}
|
||||
|
||||
**API/Backend features:**
|
||||
{{#if is_multi_part}}→ Reference: `architecture-{{api_part_id}}.md`, `api-contracts-{{api_part_id}}.md`, `data-models-{{api_part_id}}.md`{{else}}→ Reference: `architecture.md`{{#if has_api_docs}}, `api-contracts.md`{{/if}}{{#if has_data_models}}, `data-models.md`{{/if}}{{/if}}
|
||||
|
||||
**Full-stack features:**
|
||||
→ Reference: All architecture docs{{#if is_multi_part}} + `integration-architecture.md`{{/if}}
|
||||
|
||||
**Deployment changes:**
|
||||
{{#if has_deployment_guide}}→ Reference: `deployment-guide.md`{{else}}→ Review CI/CD configs in project{{/if}}
|
||||
|
||||
---
|
||||
|
||||
_Documentation generated by BMAD Method `document-project` workflow_
|
||||
@@ -0,0 +1,103 @@
|
||||
# {{project_name}} - Project Overview
|
||||
|
||||
**Date:** {{date}}
|
||||
**Type:** {{project_type}}
|
||||
**Architecture:** {{architecture_type}}
|
||||
|
||||
## Executive Summary
|
||||
|
||||
{{executive_summary}}
|
||||
|
||||
## Project Classification
|
||||
|
||||
- **Repository Type:** {{repository_type}}
|
||||
- **Project Type(s):** {{project_types_list}}
|
||||
- **Primary Language(s):** {{primary_languages}}
|
||||
- **Architecture Pattern:** {{architecture_pattern}}
|
||||
|
||||
{{#if is_multi_part}}
|
||||
|
||||
## Multi-Part Structure
|
||||
|
||||
This project consists of {{parts_count}} distinct parts:
|
||||
|
||||
{{#each project_parts}}
|
||||
|
||||
### {{part_name}}
|
||||
|
||||
- **Type:** {{project_type}}
|
||||
- **Location:** `{{root_path}}`
|
||||
- **Purpose:** {{purpose}}
|
||||
- **Tech Stack:** {{tech_stack}}
|
||||
{{/each}}
|
||||
|
||||
### How Parts Integrate
|
||||
|
||||
{{integration_description}}
|
||||
{{/if}}
|
||||
|
||||
## Technology Stack Summary
|
||||
|
||||
{{#if is_single_part}}
|
||||
{{technology_table}}
|
||||
{{else}}
|
||||
{{#each project_parts}}
|
||||
|
||||
### {{part_name}} Stack
|
||||
|
||||
{{technology_table}}
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
## Key Features
|
||||
|
||||
{{key_features}}
|
||||
|
||||
## Architecture Highlights
|
||||
|
||||
{{architecture_highlights}}
|
||||
|
||||
## Development Overview
|
||||
|
||||
### Prerequisites
|
||||
|
||||
{{prerequisites}}
|
||||
|
||||
### Getting Started
|
||||
|
||||
{{getting_started_summary}}
|
||||
|
||||
### Key Commands
|
||||
|
||||
{{#if is_single_part}}
|
||||
|
||||
- **Install:** `{{install_command}}`
|
||||
- **Dev:** `{{dev_command}}`
|
||||
- **Build:** `{{build_command}}`
|
||||
- **Test:** `{{test_command}}`
|
||||
{{else}}
|
||||
{{#each project_parts}}
|
||||
|
||||
#### {{part_name}}
|
||||
|
||||
- **Install:** `{{install_command}}`
|
||||
- **Dev:** `{{dev_command}}`
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
## Repository Structure
|
||||
|
||||
{{repository_structure_summary}}
|
||||
|
||||
## Documentation Map
|
||||
|
||||
For detailed information, see:
|
||||
|
||||
- [index.md](./index.md) - Master documentation index
|
||||
- [architecture.md](./architecture{{#if is_multi_part}}-{part_id}{{/if}}.md) - Detailed architecture
|
||||
- [source-tree-analysis.md](./source-tree-analysis.md) - Directory structure
|
||||
- [development-guide.md](./development-guide{{#if is_multi_part}}-{part_id}{{/if}}.md) - Development workflow
|
||||
|
||||
---
|
||||
|
||||
_Generated using BMAD Method `document-project` workflow_
|
||||
@@ -0,0 +1,160 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Project Scan Report Schema",
|
||||
"description": "State tracking file for document-project workflow resumability",
|
||||
"type": "object",
|
||||
"required": ["workflow_version", "timestamps", "mode", "scan_level", "completed_steps", "current_step"],
|
||||
"properties": {
|
||||
"workflow_version": {
|
||||
"type": "string",
|
||||
"description": "Version of document-project workflow",
|
||||
"example": "1.2.0"
|
||||
},
|
||||
"timestamps": {
|
||||
"type": "object",
|
||||
"required": ["started", "last_updated"],
|
||||
"properties": {
|
||||
"started": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp when workflow started"
|
||||
},
|
||||
"last_updated": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp of last state update"
|
||||
},
|
||||
"completed": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp when workflow completed (if finished)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mode": {
|
||||
"type": "string",
|
||||
"enum": ["initial_scan", "full_rescan", "deep_dive"],
|
||||
"description": "Workflow execution mode"
|
||||
},
|
||||
"scan_level": {
|
||||
"type": "string",
|
||||
"enum": ["quick", "deep", "exhaustive"],
|
||||
"description": "Scan depth level (deep_dive mode always uses exhaustive)"
|
||||
},
|
||||
"project_root": {
|
||||
"type": "string",
|
||||
"description": "Absolute path to project root directory"
|
||||
},
|
||||
"output_folder": {
|
||||
"type": "string",
|
||||
"description": "Absolute path to output folder"
|
||||
},
|
||||
"completed_steps": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["step", "status"],
|
||||
"properties": {
|
||||
"step": {
|
||||
"type": "string",
|
||||
"description": "Step identifier (e.g., 'step_1', 'step_2')"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["completed", "partial", "failed"]
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"outputs": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Files written during this step"
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "1-2 sentence summary of step outcome"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"current_step": {
|
||||
"type": "string",
|
||||
"description": "Current step identifier for resumption"
|
||||
},
|
||||
"findings": {
|
||||
"type": "object",
|
||||
"description": "High-level summaries only (detailed findings purged after writing)",
|
||||
"properties": {
|
||||
"project_classification": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"repository_type": { "type": "string" },
|
||||
"parts_count": { "type": "integer" },
|
||||
"primary_language": { "type": "string" },
|
||||
"architecture_type": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"technology_stack": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"part_id": { "type": "string" },
|
||||
"tech_summary": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"batches_completed": {
|
||||
"type": "array",
|
||||
"description": "For deep/exhaustive scans: subfolders processed",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": { "type": "string" },
|
||||
"files_scanned": { "type": "integer" },
|
||||
"summary": { "type": "string" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"outputs_generated": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "List of all output files generated"
|
||||
},
|
||||
"resume_instructions": {
|
||||
"type": "string",
|
||||
"description": "Instructions for resuming from current_step"
|
||||
},
|
||||
"validation_status": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"last_validated": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"validation_errors": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"deep_dive_targets": {
|
||||
"type": "array",
|
||||
"description": "Track deep-dive areas analyzed (for deep_dive mode)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"target_name": { "type": "string" },
|
||||
"target_path": { "type": "string" },
|
||||
"files_analyzed": { "type": "integer" },
|
||||
"output_file": { "type": "string" },
|
||||
"timestamp": { "type": "string", "format": "date-time" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
# {{project_name}} - Source Tree Analysis
|
||||
|
||||
**Date:** {{date}}
|
||||
|
||||
## Overview
|
||||
|
||||
{{source_tree_overview}}
|
||||
|
||||
{{#if is_multi_part}}
|
||||
|
||||
## Multi-Part Structure
|
||||
|
||||
This project is organized into {{parts_count}} distinct parts:
|
||||
|
||||
{{#each project_parts}}
|
||||
|
||||
- **{{part_name}}** (`{{root_path}}`): {{purpose}}
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
## Complete Directory Structure
|
||||
|
||||
```
|
||||
{{complete_source_tree}}
|
||||
```
|
||||
|
||||
## Critical Directories
|
||||
|
||||
{{#each critical_folders}}
|
||||
|
||||
### `{{folder_path}}`
|
||||
|
||||
{{description}}
|
||||
|
||||
**Purpose:** {{purpose}}
|
||||
**Contains:** {{contents_summary}}
|
||||
{{#if entry_points}}**Entry Points:** {{entry_points}}{{/if}}
|
||||
{{#if integration_note}}**Integration:** {{integration_note}}{{/if}}
|
||||
|
||||
{{/each}}
|
||||
|
||||
{{#if is_multi_part}}
|
||||
|
||||
## Part-Specific Trees
|
||||
|
||||
{{#each project_parts}}
|
||||
|
||||
### {{part_name}} Structure
|
||||
|
||||
```
|
||||
{{source_tree}}
|
||||
```
|
||||
|
||||
**Key Directories:**
|
||||
{{#each critical_directories}}
|
||||
|
||||
- **`{{path}}`**: {{description}}
|
||||
{{/each}}
|
||||
|
||||
{{/each}}
|
||||
|
||||
## Integration Points
|
||||
|
||||
{{#each integration_points}}
|
||||
|
||||
### {{from_part}} → {{to_part}}
|
||||
|
||||
- **Location:** `{{integration_path}}`
|
||||
- **Type:** {{integration_type}}
|
||||
- **Details:** {{details}}
|
||||
{{/each}}
|
||||
|
||||
{{/if}}
|
||||
|
||||
## Entry Points
|
||||
|
||||
{{#if is_single_part}}
|
||||
|
||||
- **Main Entry:** `{{main_entry_point}}`
|
||||
{{#if additional_entry_points}}
|
||||
- **Additional:**
|
||||
{{#each additional_entry_points}}
|
||||
- `{{path}}`: {{description}}
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{#each project_parts}}
|
||||
|
||||
### {{part_name}}
|
||||
|
||||
- **Entry Point:** `{{entry_point}}`
|
||||
- **Bootstrap:** {{bootstrap_description}}
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
## File Organization Patterns
|
||||
|
||||
{{file_organization_patterns}}
|
||||
|
||||
## Key File Types
|
||||
|
||||
{{#each file_type_patterns}}
|
||||
|
||||
### {{file_type}}
|
||||
|
||||
- **Pattern:** `{{pattern}}`
|
||||
- **Purpose:** {{purpose}}
|
||||
- **Examples:** {{examples}}
|
||||
{{/each}}
|
||||
|
||||
## Asset Locations
|
||||
|
||||
{{#if has_assets}}
|
||||
{{#each asset_locations}}
|
||||
|
||||
- **{{asset_type}}**: `{{location}}` ({{file_count}} files, {{total_size}})
|
||||
{{/each}}
|
||||
{{else}}
|
||||
No significant assets detected.
|
||||
{{/if}}
|
||||
|
||||
## Configuration Files
|
||||
|
||||
{{#each config_files}}
|
||||
|
||||
- **`{{path}}`**: {{description}}
|
||||
{{/each}}
|
||||
|
||||
## Notes for Development
|
||||
|
||||
{{development_notes}}
|
||||
|
||||
---
|
||||
|
||||
_Generated using BMAD Method `document-project` workflow_
|
||||
@@ -0,0 +1,98 @@
|
||||
# Document Project Workflow Configuration
|
||||
name: "document-project"
|
||||
version: "1.2.0"
|
||||
description: "Analyzes and documents brownfield projects by scanning codebase, architecture, and patterns to create comprehensive reference documentation for AI-assisted development"
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables
|
||||
config_source: "{project-root}/bmad/bmm/config.yaml"
|
||||
output_folder: "{config_source}:output_folder"
|
||||
user_name: "{config_source}:user_name"
|
||||
communication_language: "{config_source}:communication_language"
|
||||
date: system-generated
|
||||
|
||||
# Module path and component files
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/document-project"
|
||||
template: false # This is an action workflow with multiple output files
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# Required data files - CRITICAL for project type detection and documentation requirements
|
||||
project_types_csv: "{project-root}/bmad/bmm/workflows/3-solutioning/project-types/project-types.csv"
|
||||
architecture_registry_csv: "{project-root}/bmad/bmm/workflows/3-solutioning/templates/registry.csv"
|
||||
documentation_requirements_csv: "{installed_path}/documentation-requirements.csv"
|
||||
|
||||
# Architecture template references
|
||||
architecture_templates_path: "{project-root}/bmad/bmm/workflows/3-solutioning/templates"
|
||||
|
||||
# Optional input - project root to scan (defaults to current working directory)
|
||||
recommended_inputs:
|
||||
- project_root: "User will specify or use current directory"
|
||||
- existing_readme: "README.md at project root (if exists)"
|
||||
- project_config: "package.json, go.mod, requirements.txt, etc. (auto-detected)"
|
||||
|
||||
# Output configuration - Multiple files generated in output folder
|
||||
# File naming depends on project structure (simple vs multi-part)
|
||||
# Simple projects: index.md, architecture.md, etc.
|
||||
# Multi-part projects: index.md, architecture-{part_id}.md, etc.
|
||||
|
||||
default_output_files:
|
||||
- index: "{output_folder}/index.md"
|
||||
- project_overview: "{output_folder}/project-overview.md"
|
||||
- architecture: "{output_folder}/architecture.md" # or architecture-{part_id}.md for multi-part
|
||||
- source_tree: "{output_folder}/source-tree-analysis.md"
|
||||
- component_inventory: "{output_folder}/component-inventory.md" # or component-inventory-{part_id}.md
|
||||
- development_guide: "{output_folder}/development-guide.md" # or development-guide-{part_id}.md
|
||||
- deployment_guide: "{output_folder}/deployment-guide.md" # optional, if deployment config found
|
||||
- contribution_guide: "{output_folder}/contribution-guide.md" # optional, if CONTRIBUTING.md found
|
||||
- api_contracts: "{output_folder}/api-contracts.md" # optional, per part if needed
|
||||
- data_models: "{output_folder}/data-models.md" # optional, per part if needed
|
||||
- integration_architecture: "{output_folder}/integration-architecture.md" # only for multi-part
|
||||
- project_parts: "{output_folder}/project-parts.json" # metadata for multi-part projects
|
||||
- deep_dive: "{output_folder}/deep-dive-{sanitized_target_name}.md" # deep-dive mode output
|
||||
- project_scan_report: "{output_folder}/project-scan-report.json" # state tracking for resumability
|
||||
|
||||
# Runtime variables (generated during workflow execution)
|
||||
runtime_variables:
|
||||
- workflow_mode: "initial_scan | full_rescan | deep_dive"
|
||||
- scan_level: "quick | deep | exhaustive (default: quick)"
|
||||
- project_type: "Detected project type (web, backend, cli, etc.)"
|
||||
- project_parts: "Array of project parts for multi-part projects"
|
||||
- architecture_match: "Matched architecture from registry"
|
||||
- doc_requirements: "Documentation requirements for project type"
|
||||
- tech_stack: "Detected technology stack"
|
||||
- existing_docs: "Discovered existing documentation"
|
||||
- deep_dive_target: "Target area for deep-dive analysis (if deep-dive mode)"
|
||||
- deep_dive_count: "Number of deep-dive docs generated"
|
||||
- resume_point: "Step to resume from (if resuming interrupted workflow)"
|
||||
- state_file: "Path to project-scan-report.json for state tracking"
|
||||
|
||||
# Scan Level Definitions
|
||||
scan_levels:
|
||||
quick:
|
||||
description: "Pattern-based scanning without reading source files"
|
||||
duration: "2-5 minutes"
|
||||
reads: "Config files, package manifests, directory structure only"
|
||||
use_case: "Quick project overview, initial understanding"
|
||||
default: true
|
||||
deep:
|
||||
description: "Reads files in critical directories per project type"
|
||||
duration: "10-30 minutes"
|
||||
reads: "Critical files based on documentation_requirements.csv patterns"
|
||||
use_case: "Comprehensive documentation for brownfield PRD"
|
||||
default: false
|
||||
exhaustive:
|
||||
description: "Reads ALL source files in project"
|
||||
duration: "30-120 minutes"
|
||||
reads: "Every source file (excluding node_modules, dist, build)"
|
||||
use_case: "Complete analysis, migration planning, detailed audit"
|
||||
default: false
|
||||
|
||||
# Resumability Settings
|
||||
resumability:
|
||||
enabled: true
|
||||
state_file_location: "{output_folder}/project-scan-report.json"
|
||||
state_file_max_age: "24 hours"
|
||||
auto_prompt_resume: true
|
||||
archive_old_state: true
|
||||
archive_location: "{output_folder}/.archive/"
|
||||
@@ -18,7 +18,7 @@ Aside from stability and bug fixes found during the alpha period - the main focu
|
||||
- All project levels (0 through 4) manual flows validated through workflow phase 1-4 for greenfield and brownfield
|
||||
- NPX installer
|
||||
- github pipelines, branch protection, vulnerability scanners
|
||||
- subagent injections
|
||||
- subagent injections reenabled
|
||||
- bmm existing project scanning and integration with workflow phase 0-4 improvements
|
||||
- Additional custom sections for architecture project types
|
||||
- DONE: Single Agent web bundler finalized - run `npm run bundle'
|
||||
|
||||
Reference in New Issue
Block a user