5.9 KiB
5.9 KiB
Standalone Workflow Builder Architecture
This document describes the architecture of the standalone workflow builder system - a pure markdown approach to creating structured workflows.
Core Architecture Principles
1. Micro-File Design
Each workflow consists of multiple focused, self-contained files:
workflow-folder/
├── workflow.md # Main workflow configuration
├── steps/ # Step instruction files (focused, self-contained)
│ ├── step-01-init.md
│ ├── step-02-profile.md
│ └── step-N-[name].md
├── templates/ # Content templates
│ ├── profile-section.md
│ └── [other-sections].md
└── data/ # Optional data files
└── [data-files].csv/.json
2. Just-In-Time (JIT) Loading
- Single File in Memory: Only the current step file is loaded
- No Future Peeking: Step files must not reference future steps
- Sequential Processing: Steps execute in strict order
- On-Demand Loading: Templates load only when needed
3. State Management
- Frontmatter Tracking: Workflow state stored in output document frontmatter
- Progress Array:
stepsCompletedtracks completed steps - Last Step Marker:
lastStepindicates where to resume - Append-Only Building: Documents grow by appending content
4. Execution Model
1. Load workflow.md → Read configuration
2. Execute step-01-init.md → Initialize or detect continuation
3. For each step:
a. Load step file completely
b. Execute instructions sequentially
c. Wait for user input at menu points
d. Only proceed with 'C' (Continue)
e. Update document/frontmatter
f. Load next step
Key Components
Workflow File (workflow.md)
- Purpose: Entry point and configuration
- Content: Role definition, goal, architecture rules
- Action: Points to step-01-init.md
Step Files (step-NN-[name].md)
- Size: Focused and concise (typically 5-10KB)
- Structure: Frontmatter + sequential instructions
- Features: Self-contained rules, menu handling, state updates
Frontmatter Variables
Standard variables in step files:
workflow_path: '{project-root}/{*bmad_folder*}/bmb/reference/workflows/[workflow-name]'
thisStepFile: '{workflow_path}/steps/step-[N]-[name].md'
nextStepFile: '{workflow_path}/steps/step-[N+1]-[name].md'
workflowFile: '{workflow_path}/workflow.md'
outputFile: '{output_folder}/[output-name]-{project_name}.md'
Execution Flow
Fresh Workflow
workflow.md
↓
step-01-init.md (creates document)
↓
step-02-[name].md
↓
step-03-[name].md
↓
...
↓
step-N-[final].md (completes workflow)
Continuation Workflow
workflow.md
↓
step-01-init.md (detects existing document)
↓
step-01b-continue.md (analyzes state)
↓
step-[appropriate-next].md
Menu System
Standard Menu Pattern
Display: **Select an Option:** [A] [Action] [P] Party Mode [C] Continue
#### Menu Handling Logic:
- IF A: Execute {advancedElicitationTask}
- IF P: Execute {partyModeWorkflow}
- IF C: Save content, update frontmatter, load next step
Menu Rules
- Halt Required: Always wait for user input
- Continue Only: Only proceed with 'C' selection
- State Persistence: Save before loading next step
- Loop Back: Return to menu after other actions
Collaborative Dialogue Model
Not Command-Response
- Facilitator Role: AI guides, user decides
- Equal Partnership: Both parties contribute
- No Assumptions: Don't assume user wants next step
- Explicit Consent: Always ask for input
Example Pattern
AI: "Tell me about your dietary preferences."
User: [provides information]
AI: "Thank you. Now let's discuss your cooking habits."
[Continue conversation]
AI: **Menu Options**
CSV Intelligence (Optional)
Data-Driven Behavior
- Configuration in CSV files
- Dynamic menu options
- Variable substitution
- Conditional logic
Example Structure
variable,type,value,description
cooking_frequency,choice,"daily|weekly|occasionally","How often user cooks"
meal_type,multi,"breakfast|lunch|dinner|snacks","Types of meals to plan"
Best Practices
File Size Limits
- Step Files: Keep focused and reasonably sized (5-10KB typical)
- Templates: Keep focused and reusable
- Workflow File: Keep lean, no implementation details
Sequential Enforcement
- Numbered Steps: Use sequential numbering (1, 2, 3...)
- No Skipping: Each step must complete
- State Updates: Mark completion in frontmatter
Error Prevention
- Path Variables: Use frontmatter variables, never hardcode
- Complete Loading: Always read entire file before execution
- Menu Halts: Never proceed without 'C' selection
Migration from XML
Advantages
- No Dependencies: Pure markdown, no XML parsing
- Human Readable: Files are self-documenting
- Git Friendly: Clean diffs and merges
- Flexible: Easier to modify and extend
Key Differences
| XML Workflows | Standalone Workflows |
|---|---|
| Single large file | Multiple micro-files |
| Complex structure | Simple sequential steps |
| Parser required | Any markdown viewer |
| Rigid format | Flexible organization |
Implementation Notes
Critical Rules
- NEVER load multiple step files
- ALWAYS read complete step file first
- NEVER skip steps or optimize
- ALWAYS update frontmatter of the output file when a step is complete
- NEVER proceed without user consent
Success Metrics
- Documents created correctly
- All steps completed sequentially
- User satisfied with collaborative process
- Clean, maintainable file structure
This architecture ensures disciplined, predictable workflow execution while maintaining flexibility for different use cases.