8.0 KiB
| name | description | web_bundle | modulePath | moduleYamlFile | moduleHelpCsvFile | workflowsDir | agentsDir |
|---|---|---|---|---|---|---|---|
| module-help-generate | Generate or update module-help.csv for any BMad module with proper structure | false | {module_path} | {module_path}/module.yaml | {module_path}/module-help.csv | {module_path}/workflows | {module_path}/agents |
Module Help CSV Generator
Goal: Generate or update a module-help.csv file that serves as the central registry for all module functionality - workflows, agents, and commands.
Your Role: You are a Module Documentation Architect. You will analyze a module's structure and create a properly formatted CSV that enables discoverability and CLI integration.
CRITICAL RULES (NO EXCEPTIONS)
- ALWAYS read existing
module-help.csvfirst if it exists - update/validate rather than replace - ALWAYS read
module.yamlto get module code and type - ALWAYS read ALL agent
.yamlfiles to understand menu triggers - ALWAYS read ALL workflow
workflow.mdfiles to understand purpose - ALWAYS place
anytimeentries at the TOP with EMPTY sequence - ALWAYS place phased entries BELOW anytime entries
- ALWAYS number phases starting at
-1(phase-1, phase-2, phase-3...) - ALWAYS leave sequence EMPTY for
anytimeentries (user chooses, not ordered) - ALWAYS include sequence number for phased entries (defines order within phase)
- ALWAYS use EMPTY
workflow-filefor agent-only menu triggers - ALWAYS include
agentcolumn for agent-based features - NEVER assume workflow paths - verify from actual file structure
- ALWAYS search for and put the file at the root of the module ONLY
CSV STRUCTURE (13 columns)
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs,
| Column | Purpose | Rules |
|---|---|---|
module |
Module code from module.yaml |
Required |
phase |
anytime or phase-1, phase-2, etc. |
Phases start at -1 |
name |
Display name of the feature | User-facing |
code |
Short code for commands | Unique within module |
sequence |
Order within phase | EMPTY for anytime, number for phases |
workflow-file |
Path to workflow.md | EMPTY for agent-only |
command |
Internal command name | Format: {module_code}_{feature_code} |
required |
Whether required | Usually false |
agent |
Associated agent name | From agent YAML metadata |
options |
Mode or action type | e.g., "Create Mode", "Chat Mode" |
description |
User-facing description | Explain what and when to use |
output-location |
Where output goes | Folder name or EMPTY |
outputs |
What is produced | Output type or EMPTY |
PHASE AND SEQUENCING RULES
1. anytime
- Use for: standalone features, agent menu triggers, unrelated utilities
- Place at TOP of file
sequencecolumn MUST BE EMPTY- User chooses what to run - no order
2. Phases (phase-1, phase-2, phase-3...)
- Use for: sequential workflows, guided processes
- Place BELOW anytime entries
- Phases ALWAYS start at
-1(not 0 or 1) sequencedefines order WITHIN phase (10, 20, 30...)- the name can be named differently than just phase but should be dash number at the end if sequence is needed
3. Module Integration Patterns
Full module with phases:
anytime entries (sequence empty)
phase-1 entries (sequence 10, 20, 30...)
phase-2 entries (sequence 10, 20, 30...)
Add-on to existing module:
May only have phase-3 entries that integrate into another module's workflow
Sequence numbers fit logically before/after existing items
Standalone collections:
All entries are anytime
No sequence numbers
User picks one as needed
Agent-only features:
Empty workflow-file column
Agent handles everything via its menu
EXECUTION SEQUENCE
Step 1: Identify Target Module
Ask user:
- What is the path to the module?
- Or should we scan for modules in the workspace?
Step 2: Read Module Configuration
Load and read:
{moduleYamlFile}
Extract:
code- Module identifiertype- Module typename- Module display name
Step 3: Check for Existing module-help.csv
Check if exists:
{moduleHelpCsvFile}
If exists:
- Read entire file
- Parse all existing entries
- Ask user: Update existing, validate, or regenerate?
If not exists:
- Note: Will create new file
- Proceed to discovery
Step 4: Discover All Workflows
Scan the workflows directory:
{workflowsDir}
For each workflow found:
- Read the
workflow.mdfile - Extract: name, description, goal, role
- Note the relative path for CSV entry
Step 5: Discover All Agents
Scan the agents directory:
{agentsDir}
For each agent found:
- Read the
.agent.yamlfile - Extract: metadata (name, title), persona, menu triggers
- Identify agent-only triggers (no workflow route)
- Identify workflow-routing triggers
Step 6: Determine Phasing Strategy
Analyze the module and decide:
Question for each workflow:
- Is this part of a sequential journey? → Use phases
- Is this standalone/optional? → Use anytime
- Can user do this anytime? → Use anytime
For agent menu items:
- Does it route to a workflow? → Map to that workflow or anytime
- Is it an inline action? → anytime, no workflow file
Step 7: Generate CSV Content
Build the CSV following structure:
Header:
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs,
Entry Rules:
- ALL
anytimeentries FIRST -sequenceEMPTY - THEN phased entries -
phase-1,phase-2, etc. - Within phases,
sequenceorders execution (10, 20, 30...) - Agent-only actions: empty
workflow-file, specifyagent
Code Format:
- Command:
{module_code}_{feature_name} - Keep codes short but memorable (2-3 letters usually)
Description Guidance:
- Explain WHAT the feature does
- Include WHEN to use it (especially for phased items)
- For add-on modules: "Best used after X but before Y"
Step 8: Present to User
Before writing:
- Show the CSV content in a readable table format
- Explain phasing decisions
- Highlight any agent-only entries
- Ask for confirmation or adjustments
Step 9: Write File
On confirmation:
Write to: {moduleHelpCsvFile}
EXAMPLE OUTPUT STRUCTURE
Full Module with Phases (like mwm):
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs,
mwm,anytime,Chat with Wellness,CWC,,"mwm_chat",false,wellness-companion,Chat Mode,"Have a supportive conversation anytime",,,
mwm,anytime,Quick Breathing,QB,,"mwm_breathing",false,meditation-guide,Breathing,"Quick 4-7-8 breathing exercise",,,
mwm,phase-1,Daily Check In,DCI,10,_bmad/mwm/workflows/daily-checkin/workflow.md,mwm_daily_checkin,false,wellness-companion,Check In Mode,"Start your day with wellness check-in",mwm_output,"summary",
mwm,phase-2,Wellness Journal,WJ,20,_bmad/mwm/workflows/wellness-journal/workflow.md,mwm_journal,false,wellness-companion,Journal Mode,"Reflect and track your wellness journey",mwm_output,"entry",
Standalone Module (like bmad-custom):
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs,
bmad-custom,anytime,Quiz Master,QM,,"bmad_quiz",false,,Trivia,"Interactive trivia quiz with gameshow atmosphere",bmad_output,"results",
bmad-custom,anytime,Wassup,WS,,"bmad_wassup",false,,Status,"Check uncommitted changes and suggest commits",bmad_output,"summary",
bmad-custom,anytime,Write Commit,WC,,"bmad_write_commit",false,commit-poet,Write,"Craft a commit message from your changes",bmad_output,"message",
INITIALIZATION
To begin this workflow:
- Ask user for the target module path if not provided
- Load and read
module.yamlin the root of the target if it exists - Check for existing
module-help.csv - Scan for all workflows and agents
- Generate CSV following all rules above
- Update the file and review with the user - never auto commit and push