feat(bmad-help): add _meta rows and llms.txt support for general questions
Register llms.txt URLs in module-help.csv via _meta rows so bmad-help can fetch module documentation when users ask questions that don't map to a specific skill.
This commit is contained in:
parent
5e038a8ce4
commit
e226ee27ae
|
|
@ -1,4 +1,5 @@
|
|||
module,skill,display-name,menu-code,description,action,args,phase,after,before,required,output-location,outputs
|
||||
BMad Method,_meta,,,,,,,,,false,https://docs.bmad-method.org/llms.txt,
|
||||
BMad Method,bmad-document-project,Document Project,DP,Analyze an existing project to produce useful documentation.,,anytime,,,false,project-knowledge,*
|
||||
BMad Method,bmad-generate-project-context,Generate Project Context,GPC,Scan existing codebase to generate a lean LLM-optimized project-context.md. Essential for brownfield projects.,,anytime,,,false,output_folder,project context
|
||||
BMad Method,bmad-quick-dev,Quick Dev,QQ,Unified intent-in code-out workflow: clarify plan implement review and present.,,anytime,,,false,implementation_artifacts,spec and project implementation
|
||||
|
|
|
|||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -65,6 +65,21 @@ For each recommended item, present:
|
|||
|
||||
**Ordering**: Show optional items first, then the next required item. Make it clear which is which.
|
||||
|
||||
## General Questions via llms.txt
|
||||
|
||||
When a user's question does not match any specific skill in the catalog, check for `_meta` rows. These rows have `_meta` in the `skill` column (or `phase` column in the merged CSV) and carry a module's documentation URL in `output-location`.
|
||||
|
||||
**Detection**: Scan the catalog for rows where the second column equals `_meta`. Extract the URL from the `output-location` column.
|
||||
|
||||
**When to use**: If the user asks a general question about BMad or a specific module (e.g., "what phases does BMad have?", "how does the workflow map work?", "what is party mode?") and no single skill is the clear answer, fetch the module's llms.txt URL and use it to ground your response.
|
||||
|
||||
**Behavior**:
|
||||
1. Identify which module(s) the question relates to. If ambiguous, prefer the active module or ask.
|
||||
2. Fetch the llms.txt URL for that module using WebFetch or equivalent.
|
||||
3. Use the fetched content to answer the user's question accurately. If the llms.txt is an index with links to deeper content, follow the most relevant link(s) to find the answer.
|
||||
4. Cite the source naturally (e.g., "According to the BMad Method docs...").
|
||||
5. If no `_meta` row exists for the relevant module, fall back to your existing knowledge of that module.
|
||||
|
||||
## Constraints
|
||||
|
||||
- Present all output in `{communication_language}`
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
module,skill,display-name,menu-code,description,action,args,phase,after,before,required,output-location,outputs
|
||||
Core,_meta,,,,,,,,,false,https://docs.bmad-method.org/llms.txt,
|
||||
Core,bmad-brainstorming,Brainstorming,BSP,Use early in ideation or when stuck generating ideas.,,anytime,,,false,{output_folder}/brainstorming,brainstorming session
|
||||
Core,bmad-party-mode,Party Mode,PM,Orchestrate multi-agent discussions when you need multiple perspectives or want agents to collaborate.,,anytime,,,false,,
|
||||
Core,bmad-help,BMad Help,BH,,,anytime,,,false,,
|
||||
|
|
|
|||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -969,6 +969,14 @@ class Installer {
|
|||
outputs,
|
||||
] = columns;
|
||||
|
||||
// Pass through _meta rows as-is (module metadata, not a skill)
|
||||
if (phase === '_meta') {
|
||||
const finalModule = (!module || module.trim() === '') && moduleName !== 'core' ? moduleName : module || '';
|
||||
const metaRow = [finalModule, '_meta', '', '', '', '', '', 'false', '', '', '', '', '', '', outputLocation || '', ''];
|
||||
allRows.push(metaRow.map((c) => this.escapeCSVField(c)).join(','));
|
||||
continue;
|
||||
}
|
||||
|
||||
// If module column is empty, set it to this module's name (except for core which stays empty for universal tools)
|
||||
const finalModule = (!module || module.trim() === '') && moduleName !== 'core' ? moduleName : module || '';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue