refactor(config): replace hardcoded .bmad paths with {bmad_folder} placeholder

Remove hardcoded .bmad folder references throughout documentation and source files, replacing them with the configurable {bmad_folder} placeholder. This change enables users to customize the BMAD installation folder name via configuration, improving flexibility and reducing coupling to a specific directory structure.

Changes include:
- Update all documentation to reference {bmad_folder} instead of .bmad
- Remove legacy configuration files from .bmad and .claude directories
- Update workflow.xml and CLI documentation with new placeholder syntax
This commit is contained in:
Brian Madison
2025-11-12 20:22:47 -06:00
parent 48cf5c8056
commit 1868477238
154 changed files with 124 additions and 16290 deletions

View File

@@ -67,24 +67,25 @@
</execute-tags>
</substep>
<substep n="2c" title="Handle Special Output Tags">
<substep n="2c" title="Handle template-output Tags">
<if tag="template-output">
<mandate>Generate content for this section</mandate>
<mandate>Save to file (Write first time, Edit subsequent)</mandate>
<action>Show checkpoint separator: ━━━━━━━━━━━━━━━━━━━━━━━</action>
<action>Display generated content</action>
<ask>[a] Advanced Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO the rest of this document only, or converse about this
section with the agent? WAIT for response. <if response="a">
<action>Start the advanced elicitation workflow @/.bmad/core/workflows/party-mode/workflow.yaml</action>
<ask> [a] Advanced Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO the rest of this document only. WAIT for response. <if
response="a">
<action>Start the advanced elicitation workflow {project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml</action>
</if>
<if
response="c">
<action>Continue to next step</action>
</if>
<if response="p">
<action>Start the party-mode workflow</action>
<action>Start the party-mode workflow {project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml</action>
</if>
<if response="y">
<if
response="y">
<action>Enter #yolo mode for the rest of the workflow</action>
</if>
</ask>
@@ -202,7 +203,7 @@
</strategy>
<strategy name="SELECTIVE_LOAD">
<desc>Load specific shard using template variable - used for epics with {{epic_num}}</desc>
<desc>Load specific shard using template variable - example: used for epics with {{epic_num}}</desc>
<action>Check for template variables in sharded_single pattern (e.g., {{epic_num}})</action>
<action>If variable undefined, ask user for value OR infer from context</action>
<action>Resolve template to specific file path</action>
@@ -211,13 +212,14 @@
</strategy>
<strategy name="INDEX_GUIDED">
<desc>Load index.md, analyze structure, then intelligently load relevant docs</desc>
<mandate>DO NOT BE LAZY - use best judgment to load documents that might have relevant information</mandate>
<desc>Load index.md, analyze structure and description of each doc in the index, then intelligently load relevant docs</desc>
<mandate>DO NOT BE LAZY - use best judgment to load documents that might have relevant information, even if only a 5% chance</mandate>
<action>Load index.md from sharded directory</action>
<action>Parse table of contents, links, section headers</action>
<action>Analyze workflow's purpose and objective</action>
<action>Identify which linked/referenced documents are likely relevant</action>
<example>If workflow is about authentication and index shows "Auth Overview", "Payment Setup", "Deployment" → Load auth docs, consider deployment docs, skip payment</example>
<example>If workflow is about authentication and index shows "Auth Overview", "Payment Setup", "Deployment" → Load auth
docs, consider deployment docs, skip payment</example>
<action>Load all identified relevant documents</action>
<action>Store combined content in variable: {pattern_name_content}</action>
<note>When in doubt, LOAD IT - context is valuable, being thorough is better than missing critical info</note>
@@ -228,7 +230,7 @@
<substep n="2c" title="Handle Not Found">
<check if="no matches for whole OR sharded">
<action>Set {pattern_name_content} to empty string</action>
<action>Note in session: "No {pattern_name} files found" (not an error, just unavailable)</action>
<action>Note in session: "No {pattern_name} files found" (not an error, just unavailable, offer use change to provide)</action>
</check>
</substep>
</step>
@@ -248,25 +250,15 @@
<usage-in-instructions>
<example desc="Typical usage in workflow instructions.md">
&lt;step n="0" goal="Discover and load project context"&gt;
&lt;invoke-protocol name="discover_inputs" /&gt;
&lt;invoke-protocol name="discover_inputs" /&gt;
&lt;/step&gt;
&lt;step n="1" goal="Analyze requirements"&gt;
&lt;action&gt;Review {prd_content} for functional requirements&lt;/action&gt;
&lt;action&gt;Cross-reference with {architecture_content} for technical constraints&lt;/action&gt;
&lt;action&gt;Review {prd_content} for functional requirements&lt;/action&gt;
&lt;action&gt;Cross-reference with {architecture_content} for technical constraints&lt;/action&gt;
&lt;/step&gt;
</example>
</usage-in-instructions>
<load-strategy-defaults>
<default pattern="prd">FULL_LOAD</default>
<default pattern="architecture">FULL_LOAD</default>
<default pattern="ux_design">FULL_LOAD</default>
<default pattern="gdd">FULL_LOAD</default>
<default pattern="epics">SELECTIVE_LOAD</default>
<default pattern="document_project">INDEX_GUIDED</default>
<default pattern="*">FULL_LOAD</default>
</load-strategy-defaults>
</protocol>
</protocols>