Compare commits
1 Commits
9ce6ef31e8
...
04f287eede
| Author | SHA1 | Date |
|---|---|---|
|
|
04f287eede |
|
|
@ -29,7 +29,6 @@
|
||||||
<output>🚫 Error: Project context must only contain alphanumeric characters, dots, dashes, underscores, or slashes.</output>
|
<output>🚫 Error: Project context must only contain alphanumeric characters, dots, dashes, underscores, or slashes.</output>
|
||||||
<action>HALT</action>
|
<action>HALT</action>
|
||||||
</check>
|
</check>
|
||||||
<action>Override project_name to {project_suffix}</action>
|
|
||||||
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
|
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
|
||||||
</check>
|
</check>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@
|
||||||
|
|
||||||
<flow>
|
<flow>
|
||||||
<step n="1" title="Load and Initialize Workflow">
|
<step n="1" title="Load and Initialize Workflow">
|
||||||
<substep n="1a" title="Initialize Environment Variables">
|
<substep n="1a" title="Monorepo Context Injection">
|
||||||
<action>Resolve system variables (date:system-generated) and paths ({project-root}, {installed_path})</action>
|
{{monorepo_context_logic}}
|
||||||
</substep>
|
</substep>
|
||||||
|
|
||||||
<substep n="1b" title="Load Configuration and Resolve Variables">
|
<substep n="1b" title="Load Configuration and Resolve Variables">
|
||||||
|
|
@ -27,14 +27,11 @@
|
||||||
<mandate>Load config_source (REQUIRED for all modules)</mandate>
|
<mandate>Load config_source (REQUIRED for all modules)</mandate>
|
||||||
<phase n="1">Load external config from config_source path</phase>
|
<phase n="1">Load external config from config_source path</phase>
|
||||||
<phase n="2">Resolve all {config_source}: references with values from config</phase>
|
<phase n="2">Resolve all {config_source}: references with values from config</phase>
|
||||||
<phase n="3">Ask user for input of any variables that are still unknown</phase>
|
<phase n="3">Resolve system variables (date:system-generated) and paths ({project-root}, {installed_path})</phase>
|
||||||
|
<phase n="4">Ask user for input of any variables that are still unknown</phase>
|
||||||
</substep>
|
</substep>
|
||||||
|
|
||||||
<substep n="1c" title="Monorepo Context Enforcement">
|
<substep n="1c" title="Load Required Components">
|
||||||
{{monorepo_context_logic}}
|
|
||||||
</substep>
|
|
||||||
|
|
||||||
<substep n="1d" title="Load Required Components">
|
|
||||||
<mandate>Instructions: Read COMPLETE file from path OR embedded list (REQUIRED)</mandate>
|
<mandate>Instructions: Read COMPLETE file from path OR embedded list (REQUIRED)</mandate>
|
||||||
<check>If template path → Read COMPLETE template file</check>
|
<check>If template path → Read COMPLETE template file</check>
|
||||||
<check>If validation path → Note path for later loading when needed</check>
|
<check>If validation path → Note path for later loading when needed</check>
|
||||||
|
|
@ -42,7 +39,7 @@
|
||||||
<note>Data files (csv, json) → Store paths only, load on-demand when instructions reference them</note>
|
<note>Data files (csv, json) → Store paths only, load on-demand when instructions reference them</note>
|
||||||
</substep>
|
</substep>
|
||||||
|
|
||||||
<substep n="1e" title="Initialize Output" if="template-workflow">
|
<substep n="1d" title="Initialize Output" if="template-workflow">
|
||||||
<action>Resolve default_output_file path with all variables and {{date}}</action>
|
<action>Resolve default_output_file path with all variables and {{date}}</action>
|
||||||
<action>Create output directory if doesn't exist</action>
|
<action>Create output directory if doesn't exist</action>
|
||||||
<action>If template-workflow → Write template to output file with placeholders</action>
|
<action>If template-workflow → Write template to output file with placeholders</action>
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,6 @@
|
||||||
<action>HALT</action>
|
<action>HALT</action>
|
||||||
</check>
|
</check>
|
||||||
|
|
||||||
<action>Override project_name to {project_suffix}</action>
|
|
||||||
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
|
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
|
||||||
<action>Override planning_artifacts to {project-root}/_bmad-output/{project_suffix}</action>
|
<action>Override planning_artifacts to {project-root}/_bmad-output/{project_suffix}</action>
|
||||||
<action>Override implementation_artifacts to {project-root}/_bmad-output/{project_suffix}</action>
|
<action>Override implementation_artifacts to {project-root}/_bmad-output/{project_suffix}</action>
|
||||||
|
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
# audit-file-refs
|
|
||||||
|
|
||||||
Audit new-format BMAD source files for file-reference convention violations using parallel Haiku subagents.
|
|
||||||
|
|
||||||
## Convention
|
|
||||||
|
|
||||||
In new-format BMAD workflow and task files (`src/bmm/`, `src/core/`, `src/utility/`), every file path reference must use one of these **valid** forms:
|
|
||||||
|
|
||||||
- `{project-root}/_bmad/path/to/file.ext` — canonical form, always correct
|
|
||||||
- `{installed_path}/relative/path` — valid in new-format step files (always defined by workflow.md before any step is reached)
|
|
||||||
- Template/runtime variables: `{nextStepFile}`, `{workflowFile}`, `{{mustache}}`, `{output_folder}`, `{communication_language}`, etc. — skip these, they are substituted at runtime
|
|
||||||
|
|
||||||
**Flag any reference that uses:**
|
|
||||||
|
|
||||||
- `./step-NN.md` or `../something.md` — relative paths
|
|
||||||
- `step-NN.md` — bare filename with no path prefix
|
|
||||||
- `steps/step-NN.md` — bare steps-relative path (missing `{project-root}/_bmad/...` prefix)
|
|
||||||
- `` `_bmad/core/tasks/help.md` `` — bare `_bmad/` path (missing `{project-root}/`)
|
|
||||||
- `/Users/...`, `/home/...`, `C:\...` — absolute system paths
|
|
||||||
|
|
||||||
References inside fenced code blocks (``` ``` ```) are examples — skip them.
|
|
||||||
|
|
||||||
Old-format files in `src/bmm/workflows/4-implementation/` use `{installed_path}` by design within the XML calling chain — exclude that directory entirely.
|
|
||||||
|
|
||||||
## Steps
|
|
||||||
|
|
||||||
1. Run this command to get the file list:
|
|
||||||
```
|
|
||||||
find src/bmm src/core src/utility -type f \( -name "*.md" -o -name "*.yaml" \) | grep -v "4-implementation" | sort
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Divide the resulting file paths into batches of roughly 20 files each.
|
|
||||||
|
|
||||||
3. For each batch, spawn a subagent (`subagent_type: "Explore"`, `model: "haiku"`) with this prompt (fill in the actual file paths):
|
|
||||||
|
|
||||||
> Read each of these files (use the Read tool on each):
|
|
||||||
> [list the file paths from this batch]
|
|
||||||
>
|
|
||||||
> For each file, identify every line that contains a file path reference that violates the convention described below. Skip references inside fenced code blocks. Skip template variables (anything containing `{` that isn't `{project-root}` or `{installed_path}`).
|
|
||||||
>
|
|
||||||
> **Valid references:** `{project-root}/_bmad/...`, `{installed_path}/...`, template variables.
|
|
||||||
> **Flag:** bare filenames (`step-NN.md`), `./` or `../` relative paths, bare `steps/` paths, bare `_bmad/` paths (without `{project-root}/`), absolute system paths.
|
|
||||||
>
|
|
||||||
> Return findings as a list:
|
|
||||||
> `path/to/file.md:LINE_NUMBER | VIOLATION_TYPE | offending text`
|
|
||||||
>
|
|
||||||
> If a file has no violations, include it as: `path/to/file.md | clean`
|
|
||||||
>
|
|
||||||
> End your response with a single line: `FILES CHECKED: N` where N is the exact number of files you read.
|
|
||||||
|
|
||||||
4. Collect all findings from all subagents.
|
|
||||||
|
|
||||||
5. **Self-check before reporting:** Count the total number of files returned by the `find` command. Sum the `FILES CHECKED: N` values across all subagent responses. If the totals do not match, identify which files are missing and re-run subagents for those files before proceeding. Do not produce the final report until all files are accounted for.
|
|
||||||
|
|
||||||
6. Output a final report:
|
|
||||||
- Group findings by violation type
|
|
||||||
- List each finding as `file:line — offending text`
|
|
||||||
- Show total count of violations and number of affected files
|
|
||||||
- If nothing found, say "All files conform to the convention."
|
|
||||||
|
|
@ -36,8 +36,7 @@ const MONOREPO_CONTEXT_LOGIC = `
|
||||||
<action>HALT</action>
|
<action>HALT</action>
|
||||||
</check>
|
</check>
|
||||||
|
|
||||||
<!-- Step 4: Override path and identification variables -->
|
<!-- Step 4: Override path variables -->
|
||||||
<action>Override project_name = {project_suffix}</action>
|
|
||||||
<action>Override output_folder = {project-root}/_bmad-output/{project_suffix}</action>
|
<action>Override output_folder = {project-root}/_bmad-output/{project_suffix}</action>
|
||||||
<action>Override planning_artifacts = {output_folder}/planning-artifacts</action>
|
<action>Override planning_artifacts = {output_folder}/planning-artifacts</action>
|
||||||
<action>Override implementation_artifacts = {output_folder}/implementation-artifacts</action>
|
<action>Override implementation_artifacts = {output_folder}/implementation-artifacts</action>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue