This workflow performs complete project documentation (Steps 1-12) Called by: document-project/instructions.md router Handles: initial_scan and full_rescan modes
DATA LOADING STRATEGY - Understanding the Documentation Requirements System:
Display explanation to user:
How Project Type Detection Works:
This workflow uses a single comprehensive CSV file to intelligently document your project:
documentation-requirements.csv ({documentation_requirements_csv})
When Documentation Requirements are Loaded:
Now loading documentation requirements data for fresh start...
Load documentation-requirements.csv from: {documentation_requirements_csv} Store all 12 rows indexed by project_type_id for project detection and requirements lookup Display: "Loaded documentation requirements for 12 project types (web, mobile, backend, cli, library, desktop, game, data, extension, infra, embedded)"
Display: "✓ Documentation requirements loaded successfully. Ready to begin project analysis."
Check if {output_folder}/index.md exists
Read existing index.md to extract metadata (date, project structure, parts count) Store as {{existing_doc_date}}, {{existing_structure}}
I found existing documentation generated on {{existing_doc_date}}.
What would you like to do?
Your choice [1/2/3]:
<action>Set workflow_mode = "full_rescan"</action>
<action>Continue to scan level selection below</action>
<action>Set workflow_mode = "deep_dive"</action>
<action>Set scan_level = "exhaustive"</action>
<action>Initialize state file with mode=deep_dive, scan_level=exhaustive</action>
<action>Jump to Step 13</action>
<action>Display message: "Keeping existing documentation. Exiting workflow."</action>
<action>Exit workflow</action>
Set workflow_mode = "initial_scan" Continue to scan level selection below
Select Scan Level
Choose your scan depth level:
1. Quick Scan (2-5 minutes) [DEFAULT]
2. Deep Scan (10-30 minutes)
3. Exhaustive Scan (30-120 minutes)
Your choice 1/2/3:
<action>Set scan_level = "quick"</action>
<action>Display: "Using Quick Scan (pattern-based, no source file reading)"</action>
<action>Set scan_level = "deep"</action>
<action>Display: "Using Deep Scan (reading critical files per project type)"</action>
<action>Set scan_level = "exhaustive"</action>
<action>Display: "Using Exhaustive Scan (reading all source files)"</action>
Initialize state file: {output_folder}/project-scan-report.json Every time you touch the state file, record: step id, human-readable summary (what you actually did), precise timestamp, and any outputs written. Vague phrases are unacceptable. Write initial state: { "workflow_version": "1.2.0", "timestamps": {"started": "{{current_timestamp}}", "last_updated": "{{current_timestamp}}"}, "mode": "{{workflow_mode}}", "scan_level": "{{scan_level}}", "project_root": "{{project_root_path}}", "output_folder": "{{output_folder}}", "completed_steps": [], "current_step": "step_1", "findings": {}, "outputs_generated": ["project-scan-report.json"], "resume_instructions": "Starting from step 1" } Continue with standard workflow from Step 1
Ask user: "What is the root directory of the project to document?" (default: current working directory) Store as {{project_root_path}}
Scan {{project_root_path}} for key indicators:
Detect if project is:
List detected parts with their paths I detected multiple parts in this project: {{detected_parts_list}}
Is this correct? Should I document each part separately? [y/n]
Set repository_type = "monorepo" or "multi-part" For each detected part: - Identify root path - Run project type detection using key_file_patterns from documentation-requirements.csv - Store as part in project_parts array
Ask user to specify correct parts and their paths
Set repository_type = "monolith" Create single part in project_parts array with root_path = {{project_root_path}} Run project type detection using key_file_patterns from documentation-requirements.csv
For each part, match detected technologies and file patterns against key_file_patterns column in documentation-requirements.csv Assign project_type_id to each part Load corresponding documentation_requirements row for each part
I've classified this project: {{project_classification_summary}}
Does this look correct? [y/n/edit]
project_structure project_parts_metadata
IMMEDIATELY update state file with step completion:
PURGE detailed scan results from memory, keep only summary: "{{repository_type}}, {{parts_count}} parts, {{primary_tech}}"
For each part, scan for existing documentation using patterns:
Create inventory of existing_docs with:
I found these existing documentation files: {{existing_docs_list}}
Are there any other important documents or key areas I should focus on while analyzing this project? [Provide paths or guidance, or type 'none']
Store user guidance as {{user_context}}
existing_documentation_inventory user_provided_context
Update state file:
PURGE detailed doc contents from memory, keep only: "{{existing_docs_count}} docs found"
For each part in project_parts:
Determine architecture pattern based on detected tech stack:
technology_stack architecture_patterns
Update state file:
PURGE detailed tech analysis from memory, keep only: "{{framework}} on {{language}}"
BATCHING STRATEGY FOR DEEP/EXHAUSTIVE SCANS
This step requires file reading. Apply batching strategy:
Identify subfolders to process based on: - scan_level == "deep": Use critical_directories from documentation_requirements - scan_level == "exhaustive": Get ALL subfolders recursively (excluding node_modules, .git, dist, build, coverage)
For each subfolder to scan: 1. Read all files in subfolder (consider file size - use judgment for files >5000 LOC) 2. Extract required information based on conditional flags below 3. IMMEDIATELY write findings to appropriate output file 4. Validate written document (section-level validation) 5. Update state file with batch completion 6. PURGE detailed findings from context, keep only 1-2 sentence summary 7. Move to next subfolder
Track batches in state file: findings.batches_completed: [ {"path": "{{subfolder_path}}", "files_scanned": {{count}}, "summary": "{{brief_summary}}"} ]
Use pattern matching only - do NOT read source files Use glob/grep to identify file locations and patterns Extract information from filenames, directory structure, and config files only
For each part, check documentation_requirements boolean flags and execute corresponding scans:
Scan for API routes and endpoints using integration_scan_patterns Look for: controllers/, routes/, api/, handlers/, endpoints/
<action>Use glob to find route files, extract patterns from filenames and folder structure</action>
<action>Read files in batches (one subfolder at a time)</action>
<action>Extract: HTTP methods, paths, request/response types from actual code</action>
Build API contracts catalog IMMEDIATELY write to: {output_folder}/api-contracts-{part_id}.md Validate document has all required sections Update state file with output generated PURGE detailed API data, keep only: "{{api_count}} endpoints documented" api_contracts*{part_id}
Scan for data models using schema_migration_patterns Look for: models/, schemas/, entities/, migrations/, prisma/, ORM configs
<action>Identify schema files via glob, parse migration file names for table discovery</action>
<action>Read model files in batches (one subfolder at a time)</action>
<action>Extract: table names, fields, relationships, constraints from actual code</action>
Build database schema documentation IMMEDIATELY write to: {output_folder}/data-models-{part_id}.md Validate document completeness Update state file with output generated PURGE detailed schema data, keep only: "{{table_count}} tables documented" data_models*{part_id}
Analyze state management patterns Look for: Redux, Context API, MobX, Vuex, Pinia, Provider patterns Identify: stores, reducers, actions, state structure state_managementpatterns{part_id}
Inventory UI component library Scan: components/, ui/, widgets/, views/ folders Categorize: Layout, Form, Display, Navigation, etc. Identify: Design system, component patterns, reusable elements ui_componentinventory{part_id}
Look for hardware schematics using hardware_interface_patterns This appears to be an embedded/hardware project. Do you have:
If yes, please provide paths or links. [Provide paths or type 'none']
Store hardware docs references hardwaredocumentation{part_id}Scan and catalog assets using asset_patterns Categorize by: Images, Audio, 3D Models, Sprites, Textures, etc. Calculate: Total size, file counts, formats used assetinventory{part_id}
Scan for additional patterns based on doc requirements:
Apply scan_level strategy to each pattern scan (quick=glob only, deep/exhaustive=read files)
comprehensiveanalysis{part_id}
Update state file:
PURGE all detailed scan results from context. Keep only summaries:
For each part, generate complete directory tree using critical_directories from doc requirements
Annotate the tree with:
Show how parts are organized and where they interface
Create formatted source tree with descriptions:
project-root/
├── client/ # React frontend (Part: client)
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Route-based pages
│ │ └── api/ # API client layer → Calls server/
├── server/ # Express API backend (Part: api)
│ ├── src/
│ │ ├── routes/ # REST API endpoints
│ │ ├── models/ # Database models
│ │ └── services/ # Business logic
source_tree_analysis critical_folders_summary
IMMEDIATELY write source-tree-analysis.md to disk Validate document structure Update state file:
Scan for development setup using key_file_patterns and existing docs:
Look for deployment configuration using ci_cd_patterns:
Extract contribution guidelines:
- Code style rules
- PR process
- Commit conventions
- Testing requirements
development_instructions deployment_configuration contribution_guidelines
Update state file:
Analyze how parts communicate:
Create integration_points array with:
IMMEDIATELY write integration-architecture.md to disk Validate document completeness
integration_architecture
Update state file:
For each part in project_parts:
For each architecture file generated:
architecture_document
Update state file:
Generate project-overview.md with:
Generate source-tree-analysis.md with:
IMMEDIATELY write project-overview.md to disk Validate document sections
Generate source-tree-analysis.md (if not already written in Step 5) IMMEDIATELY write to disk and validate
Generate component-inventory.md (or per-part versions) with:
Generate development-guide.md (or per-part versions) with:
Generate deployment-guide.md with:
- Infrastructure requirements
- Deployment process
- Environment configuration
- CI/CD pipeline details
IMMEDIATELY write to disk and validate
Generate contribution-guide.md with:
- Code style and conventions
- PR process
- Testing requirements
- Documentation standards
IMMEDIATELY write to disk and validate
Generate api-contracts.md (or per-part) with:
- All API endpoints
- Request/response schemas
- Authentication requirements
- Example requests
IMMEDIATELY write to disk and validate
Generate data-models.md (or per-part) with:
- Database schema
- Table relationships
- Data models and entities
- Migration strategy
IMMEDIATELY write to disk and validate
Generate integration-architecture.md with:
- How parts communicate
- Integration points diagram/description
- Data flow between parts
- Shared dependencies
IMMEDIATELY write to disk and validate
Generate project-parts.json metadata file: `json
{
"repository_type": "monorepo",
"parts": [ ... ],
"integration_points": [ ... ]
}
`
IMMEDIATELY write to disk
supporting_documentation
Update state file:
PURGE all document contents from context, keep only list of files generated
INCOMPLETE DOCUMENTATION MARKER CONVENTION: When a document SHOULD be generated but wasn't (due to quick scan, missing data, conditional requirements not met):
Create index.md with intelligent navigation based on project structure
Generate simple index with:
- Project name and type
- Quick reference (tech stack, architecture type)
- Links to all generated docs
- Links to discovered existing docs
- Getting started section
Generate comprehensive index with:
- Project overview and structure summary
- Part-based navigation section
- Quick reference by part
- Cross-part integration links
- Links to all generated and existing docs
- Getting started per part
Include in index.md:
{{#if single_part}}
{{#each existing_docs}}
{{getting_started_instructions}}
Before writing index.md, check which expected files actually exist:
IMMEDIATELY write index.md to disk with appropriate (To be generated) markers for missing files Validate index has all required sections and links are valid
index
Update state file:
PURGE index content from context
Show summary of all generated files: Generated in {{output_folder}}/: {{file_list_with_sizes}}
Run validation checklist from {validation}
INCOMPLETE DOCUMENTATION DETECTION:
Read {output_folder}/index.md
Scan for incomplete documentation markers: Step 1: Search for exact pattern "(To be generated)" (case-sensitive) Step 2: For each match found, extract the entire line Step 3: Parse line to extract:
Fallback fuzzy scan for alternate markers: Search for patterns: (TBD), (TODO), (Coming soon), (Not yet generated), (Pending) For each fuzzy match:
Combine results: Set {{incomplete_docs_list}} = {{incomplete_docs_strict}} + {{incomplete_docs_fuzzy}} For each item store structure: { "title": "Architecture – Server", "file*path": "./architecture-server.md", "doc_type": "architecture", "part_id": "server", "line_text": "- Architecture – Server (To be generated)", "fuzzy_match": false }
Documentation generation complete!
Summary:
{{#if incomplete_docs_list.length > 0}} ⚠️ Incomplete Documentation Detected:
I found {{incomplete_docs_list.length}} item(s) marked as incomplete:
{{#each incomplete_docs_list}} {{@index + 1}}. {{title}} ({{doc_type}}{{#if part_id}} for {{part_id}}{{/if}}){{#if fuzzy_match}} ⚠️ [non-standard marker]{{/if}} {{/each}}
{{/if}}
Would you like to:
{{#if incomplete_docs_list.length > 0}}
Your choice:
Which incomplete items would you like to generate?
{{#each incomplete_docs_list}} {{@index + 1}}. {{title}} ({{doc_type}}{{#if part_id}} - {{part_id}}{{/if}}) {{/each}} {{incomplete_docs_list.length + 1}}. All of them
Enter number(s) separated by commas (e.g., "1,3,5"), or type 'all':
Parse user selection:
Display: "Generating {{selected_items.length}} document(s)..."
For each item in {{selected_items}}:
Identify the part and requirements:
Route to appropriate generation substep based on doc_type:
If doc_type == "architecture":
If doc_type == "api-contracts":
If doc_type == "data-models":
If doc_type == "component-inventory":
If doc_type == "development-guide":
If doc_type == "deployment-guide":
If doc_type == "integration-architecture":
Post-generation actions:
Handle errors:
After all selected items are processed:
Update index.md to remove markers:
Display generation summary:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ Documentation Generation Complete!
Successfully Generated: {{#each newly_generated_docs}}
{{#if failed_generations.length > 0}} Failed to Generate: {{#each failed_generations}}
Updated: index.md (removed incomplete markers)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Update state file with all generation activities
Return to Step 11 menu (loop back to check for any remaining incomplete items)
Make requested modifications and regenerate affected files Proceed to Step 12 completion
Update state file:
Update state file:
Create final summary report Compile verification recap variables:
Display completion message:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Location: {{output_folder}}/
Master Index: {{output_folder}}/index.md 👆 This is your primary entry point for AI-assisted development
Generated Documentation: {{generated_files_list}}
Next Steps:
Verification Recap:
Brownfield PRD Command: When ready to plan new features, run the PRD workflow and provide this index as input.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FINALIZE state file:
Display: "State file saved: {{output_folder}}/project-scan-report.json"