fix: correct code fence imbalance in step-03-starter.md#1723
fix: correct code fence imbalance in step-03-starter.md#1723alexeyv wants to merge 1 commit intobmad-code-org:mainfrom
Conversation
| existingPrompts = parsed.prompts.filter((entry) => !entry.name || !entry.name.startsWith('bmad-')); | ||
| } | ||
| } catch { | ||
| // If parsing fails, start fresh but preserve file safety |
There was a problem hiding this comment.
If .rovodev/prompts.yml exists but can’t be parsed, this path resets existingPrompts to [] and then rewrites the manifest, which can silently drop user-defined prompts. Consider failing safe (no overwrite) or otherwise preserving the original file when parsing fails.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| ## NEXT STEP: | ||
|
|
||
| After user confirmation and scope finalization, load `./step-02-customer-insights.md` to begin detailed market research with customer insights analysis. | ||
| After user confirmation and scope finalization, load `{project-root}/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md` to begin detailed market research with customer insights analysis. |
There was a problem hiding this comment.
This now loads step-02-customer-behavior.md, but the sentence still says it will begin “customer insights analysis,” which looks like a leftover from the previous step name. Consider aligning the wording (or the referenced step) so the next-step guidance is unambiguous.
Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
The 4-backtick markdown fence closed prematurely at line 235, orphaning template content and causing a stray 3-backtick fence to swallow sections 9-13 into an unclosed code block.
9a67e30 to
ee16f7a
Compare
|
All the reviews are based on incorrectly based branch, so I should delete this PR and start a new one on the correct version of the branch. |
📝 WalkthroughWalkthroughThis pull request systematically updates file path references across workflow step files from relative paths to absolute project-root-prefixed paths, adds IDE integration tooling for Rovo Dev, updates validation scripts, and introduces file reference auditing documentation. The changes span configuration files, workflow metadata, and core tooling components. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Tip Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| - If `lastStep = 1` → Load `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md` | ||
| - If `lastStep = 2` → Load `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md` | ||
| - If `lastStep = 3` → Load `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md` | ||
| - Continue this pattern for all steps | ||
| - If `lastStep = 6` → Workflow already complete |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# List all step files in the product-brief workflow to confirm step-05 and step-06 filenames
fd -e md --search-path src/bmm/workflows/1-analysis/create-product-brief/steps | sortRepository: bmad-code-org/BMAD-METHOD
Length of output: 588
Incomplete dispatch table: lastStep = 4 and lastStep = 5 entries missing explicit absolute paths.
The PR migrates lastStep = 1, 2, and 3 dispatch entries to absolute paths but stops there. lastStep = 4 and lastStep = 5 are left implicit under "Continue this pattern for all steps" — an instruction that relies on agent inference. This inconsistency breaks deterministic path resolution: an agent parsing this as a lookup table will find no explicit entry for lastStep = 4 (step-05-scope.md) or lastStep = 5 (step-06-complete.md), risking incorrect navigation or fallthrough to the "Workflow already complete" branch.
Add the missing entries:
- If
lastStep = 4→ Load{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md - If
lastStep = 5→ Load{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md
Remove or replace the "Continue this pattern for all steps" line.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md`
around lines 98 - 102, Add explicit dispatch entries for lastStep = 4 and
lastStep = 5 in the step-01b-continue.md lookup so the table is deterministic:
add lines mapping lastStep = 4 to
{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md
and lastStep = 5 to
{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md,
and remove the generic "Continue this pattern for all steps" line so every step
from 1–6 is explicitly listed.
| ### 5. Suggest next steps | ||
|
|
||
| Product Brief complete. Read fully and follow: `_bmad/core/tasks/help.md` with argument `Validate PRD`. | ||
| Product Brief complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` with argument `Validate PRD`. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Find all help.md invocations in the codebase
rg -n "help\.md.*argument" --type=mdRepository: bmad-code-org/BMAD-METHOD
Length of output: 1429
🏁 Script executed:
#!/bin/bash
# Read the specific file and line mentioned in the review
cat -n src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md | grep -A 2 -B 2 "131"Repository: bmad-code-org/BMAD-METHOD
Length of output: 239
🏁 Script executed:
#!/bin/bash
# Check if step-v-13-report-complete.md exists and read around line 200
if [ -f "src/bmm/workflows/1-analysis/create-product-brief/steps/step-v-13-report-complete.md" ]; then
wc -l src/bmm/workflows/1-analysis/create-product-brief/steps/step-v-13-report-complete.md
sed -n '195,205p' src/bmm/workflows/1-analysis/create-product-brief/steps/step-v-13-report-complete.md
else
echo "File not found"
fiRepository: bmad-code-org/BMAD-METHOD
Length of output: 83
🏁 Script executed:
#!/bin/bash
# Find and read help.md to understand argument usage
fd "help\.md" --type fRepository: bmad-code-org/BMAD-METHOD
Length of output: 91
🏁 Script executed:
#!/bin/bash
# Get context around how help.md uses the argument
fd "help\.md" --type f -x head -50 {}Repository: bmad-code-org/BMAD-METHOD
Length of output: 2224
🏁 Script executed:
#!/bin/bash
# Read more of help.md to find the execution step that uses the argument
cat -n src/core/tasks/help.md | head -150 | tail -100Repository: bmad-code-org/BMAD-METHOD
Length of output: 4910
🏁 Script executed:
#!/bin/bash
# Search for how the argument/parameter is used in help.md
rg -A 5 -B 5 "argument|step.*5|routing" src/core/tasks/help.md | head -100Repository: bmad-code-org/BMAD-METHOD
Length of output: 1006
🏁 Script executed:
#!/bin/bash
# Check the bmad-help.csv to see what workflow entries exist and what they contain
fd "bmad-help.csv" --type f -x head -50 {}Repository: bmad-code-org/BMAD-METHOD
Length of output: 51
🏁 Script executed:
#!/bin/bash
# Search for "Create Product Brief" or "Product Brief" entries in the CSV
rg -i "product brief|validate prd" --type=csv | head -20Repository: bmad-code-org/BMAD-METHOD
Length of output: 620
🏁 Script executed:
#!/bin/bash
# Read the full module-help.csv to see all workflow names
wc -l src/bmm/module-help.csv
head -1 src/bmm/module-help.csv
cat src/bmm/module-help.csvRepository: bmad-code-org/BMAD-METHOD
Length of output: 9412
🏁 Script executed:
#!/bin/bash
# Check what the workflow names are in all complete steps to see the pattern
rg -B 3 "with argument" src/bmm/workflows --type=md | grep -E "(step.*complete|argument)" | head -30Repository: bmad-code-org/BMAD-METHOD
Length of output: 3248
🏁 Script executed:
#!/bin/bash
# Check if help.md does fuzzy matching or needs exact CSV name match
rg -A 10 "Analyze input|Infer what" src/core/tasks/help.mdRepository: bmad-code-org/BMAD-METHOD
Length of output: 592
🏁 Script executed:
#!/bin/bash
# Double-check the exact CSV name for the Product Brief workflow
rg "Create Brief|product brief" src/bmm/module-help.csvRepository: bmad-code-org/BMAD-METHOD
Length of output: 311
Wrong help argument: 'Validate PRD' in a Product Brief completion step.
help.md routes to the next workflow based on what just completed (step 5: "Infer what was just completed"). Passing 'Validate PRD' incorrectly tells it that PRD Validation just finished — causing incorrect routing suggestions instead of post-brief next steps like Create PRD. The analogous correct usage is in step-v-13-report-complete.md line 200, where 'Validate PRD' is appropriate because PRD validation actually completed there.
The Product Brief workflow is in the 1-analysis phase; this completion step wrongly references a 2-planning workflow argument, breaking phase sequence routing.
🐛 Proposed fix
-Product Brief complete. Read fully and follow: `_bmad/core/tasks/help.md` with argument `Validate PRD`.
+Product Brief complete. Read fully and follow: `_bmad/core/tasks/help.md` with argument `Create Brief`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Product Brief complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` with argument `Validate PRD`. | |
| Product Brief complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` with argument `Create Brief`. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md`
at line 131, In step-06-complete.md the call into _bmad/core/tasks/help.md is
passing the wrong workflow argument 'Validate PRD' (a 2-planning action), which
misroutes the next-step suggestions; change that argument to the correct
post-Product-Brief action 'Create PRD' so the help.md router will advance from
the 1-analysis Product Brief completion to the appropriate planning step; locate
the literal 'Validate PRD' in step-06-complete.md and replace it with 'Create
PRD' (mirror the correct usage pattern found in step-v-13-report-complete.md for
context).
| - Append the final content to the research document | ||
| - Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5]` | ||
| - Load: `./step-06-research-synthesis.md` | ||
| - Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md` |
There was a problem hiding this comment.
Incomplete path migration: line 208 still references the bare filename.
The PR migrates the next-step path at line 182 and line 233, but misses the exact same filename at line 208 in the FAILURE MODES section:
❌ Not routing to step-06-research-synthesis.md
This is a bare filename inconsistent with the absolute paths now used at the two changed lines. A reference validator run in CI (mentioned in the PR objectives) may not flag this because it's in a prose failure-mode description rather than a load directive, but it leaves stale guidance for anyone maintaining this file.
🐛 Proposed fix
-❌ Not routing to step-06-research-synthesis.md
+❌ Not routing to `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md`🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md`
at line 182, The FAILURE MODES section still uses the bare filename "❌ Not
routing to step-06-research-synthesis.md" which is inconsistent with the
absolute paths used elsewhere; update that occurrence to the full migrated path
`{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md`
so all references match (search for the exact string "Not routing to
step-06-research-synthesis.md" in step-05-implementation-research.md and replace
it with the absolute path).
| - If `stepsCompleted = ["step-01-init.md", "step-02-discovery.md", "step-03-success.md"]` | ||
| - Last element is `"step-03-success.md"` | ||
| - Load `step-03-success.md`, read its frontmatter | ||
| - Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md`, read its frontmatter | ||
| - Find `nextStepFile: './step-04-journeys.md'` | ||
| - Next step to load is `./step-04-journeys.md` | ||
| - Next step to load is `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md` |
There was a problem hiding this comment.
Stale example: line 83 still shows the pre-migration relative nextStepFile value.
This PR updated step-03-success.md's nextStepFile frontmatter to an absolute {project-root} path, but the inline example at line 83 was not updated to match. An agent following this logic would expect to find './step-04-journeys.md' in the frontmatter and instead find the absolute path — a contradiction that undermines confidence in the documented example.
🐛 Proposed fix
-- Find `nextStepFile: './step-04-journeys.md'`
+- Find `nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md'`🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md`
around lines 80 - 84, The inline example in step-01b-continue.md is stale: it
shows a pre-migration relative frontmatter value ('./step-04-journeys.md') for
nextStepFile while the actual frontmatter in step-03-success.md now contains an
absolute {project-root} path; update the example on the affected line to match
the new absolute path format (use the same absolute
{project-root}/_bmad/.../step-04-journeys.md value as in step-03-success.md's
frontmatter) so the documented example and the nextStepFile field are consistent
with functions/logic that read step-03-success.md's frontmatter.
|
|
||
| # File References | ||
| nextStepFile: './step-04-journeys.md' | ||
| nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md' |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
Same dual-source-of-truth issue as step-04-journeys.md: frontmatter nextStepFile (line 6) and hard-coded path in the NEXT STEP note (line 224) encode the same target path redundantly.
The authoritative {nextStepFile} is correctly used in the Menu Handling Logic at line 180. The NEXT STEP prose at line 224 should not repeat the literal path.
✏️ Proposed fix
-After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md` to map user journeys.
+After user selects 'C' and content is saved to document, read fully and follow: `{nextStepFile}` to map user journeys.Also applies to: 222-225
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md` at
line 6, The frontmatter key nextStepFile is the authoritative link but the NEXT
STEP prose currently hard-codes the same path; update the prose in the "NEXT
STEP" note to reference the frontmatter variable (e.g., use the {nextStepFile}
token or omit the literal path) instead of repeating the hard-coded path so
there is a single source of truth; ensure the change keeps the Menu Handling
Logic behavior (which already uses nextStepFile) intact and remove the redundant
hard-coded path in the NEXT STEP section.
| nextStepFile: './step-06-innovation.md' | ||
| nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md' | ||
| outputFile: '{planning_artifacts}/prd.md' | ||
| domainComplexityCSV: '../data/domain-complexity.csv' |
There was a problem hiding this comment.
domainComplexityCSV still holds a relative path — incomplete migration.
Line 6 was correctly migrated, but domainComplexityCSV: '../data/domain-complexity.csv' on Line 8 was left behind. Step sequence item 2 (Line 95) instructs the agent to "Lookup data in {domainComplexityCSV}". If this path does not resolve, the domain complexity lookup fails entirely — including the logic that determines whether to skip this optional step, which silently breaks the entire step flow.
🔧 Proposed fix
-domainComplexityCSV: '../data/domain-complexity.csv'
+domainComplexityCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv'🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md` at
line 8, The domainComplexityCSV entry still uses a relative path
('../data/domain-complexity.csv') which breaks the `{domainComplexityCSV}`
lookup; update the domainComplexityCSV value to the migrated/absolute data path
used elsewhere (match the same resolved/dataDir pattern as the other migrated
entries) so the agent can reliably resolve the file at runtime; ensure you
reference the same path-building logic (the same resolved path or DATA_DIR
constant) used by the other step entries so the lookup and skip logic that reads
`{domainComplexityCSV}` will succeed.
| - Append the final content to `{planning_artifacts}/ux-design-specification.md` | ||
| - Update frontmatter: append step to end of stepsCompleted array | ||
| - Load `./step-07-defining-experience.md` | ||
| - Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md` |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
fd 'step-07-defining-experience.md' --type fRepository: bmad-code-org/BMAD-METHOD
Length of output: 157
Fix path references to step-07-defining-experience.md — file exists at incorrect location.
The file exists at src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md, but lines 218 and 250 reference {project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md. The _bmad directory path does not exist; update both references to the correct src path to prevent workflow deadlock.
Also applies to: 250-250
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md`
at line 218, In
src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md
update the two incorrect include/load references that point to
{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md
(at the occurrences mentioned around lines 218 and 250) to the correct path
src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md
so the loader references the existing file; search for the exact string
"_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md"
and replace it with
"src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md"
for both occurrences.
| ### 3. Suggest Next Steps | ||
|
|
||
| UX Design complete. Read fully and follow: `_bmad/core/tasks/help.md` with argument `Create UX`. | ||
| UX Design complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` with argument `Create UX`. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# 1. Find help.md
echo "=== Searching for help.md ==="
fd 'help.md' --type f
# 2. Check the content of help.md to see how it handles arguments
echo -e "\n=== Content of help.md ==="
if [ -f "{project-root}/_bmad/core/tasks/help.md" ]; then
cat "{project-root}/_bmad/core/tasks/help.md"
else
fd 'help.md' --type f -exec cat {} \;
fi
# 3. Check step-14-complete.md
echo -e "\n=== Checking step-14-complete.md for the reference ==="
fd 'step-14-complete.md' --type f -exec cat {} \;
# 4. Check step-08-complete.md
echo -e "\n=== Checking step-08-complete.md for the reference ==="
fd 'step-08-complete.md' --type f -exec cat {} \;Repository: bmad-code-org/BMAD-METHOD
Length of output: 842
🏁 Script executed:
#!/bin/bash
# 1. Read help.md
echo "=== Content of src/core/tasks/help.md ==="
cat src/core/tasks/help.md
# 2. Read step-14-complete.md around line 85
echo -e "\n=== Content of step-14-complete.md (around line 85) ==="
find . -name "step-14-complete.md" -type f | head -1 | xargs cat
# 3. Read step-08-complete.md
echo -e "\n=== Content of step-08-complete.md ==="
find . -name "step-08-complete.md" -type f | head -1 | xargs cat
# 4. Also check for the full path referenced in the review
echo -e "\n=== Checking for _bmad/core/tasks/help.md ==="
if [ -f "_bmad/core/tasks/help.md" ]; then
cat "_bmad/core/tasks/help.md"
else
echo "Path _bmad/core/tasks/help.md does not exist"
fiRepository: bmad-code-org/BMAD-METHOD
Length of output: 14446
Fix incorrect file path and verify argument mechanism in help.md integration.
Two critical issues:
-
Wrong file path: Both
step-14-complete.mdandstep-08-complete.mdreference_bmad/core/tasks/help.md, but the actual file is atsrc/core/tasks/help.md. This will cause a "file not found" error when users follow the instructions. -
Incorrect argument dispatch assumption: The review assumes
help.mddispatches on argument strings (Create UX,Create Architecture), buthelp.mdactually uses a CSV catalog (_bmad/_config/bmad-help.csv) and infers workflow completion from conversation context, not simple string matching. The arguments as described may not produce the intended routing behavior.
Update both steps to use the correct file path and verify that the argument values align with how help.md actually detects and routes to workflows (via CSV catalog entries, not direct argument dispatch).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md`
at line 85, Both step-14-complete.md and step-08-complete.md reference the wrong
help script path and assume help.md dispatches by literal argument strings;
update both files to point to the actual help script at src/core/tasks/help.md
and then verify/adjust the suggested argument values to match the keys used in
the CSV catalog (_bmad/_config/bmad-help.csv) or the conversation-context
detection used by help.md (rather than relying on direct string dispatch like
"Create UX"/"Create Architecture"); ensure the step text either references the
correct catalog entry names or instructs the user to follow the catalog-based
invocation pattern that help.md expects.
tools/audit-file-refs.md
Outdated
|
|
||
| 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 |
There was a problem hiding this comment.
find command has three silent coverage gaps.
.ymlfiles are missed. Only-name "*.yaml"is specified. Any YAML file with a.ymlextension (e.g.,platform-codes.yaml's siblings or future additions) is never audited.grep -v "4-implementation"is a substring match, not a path-component match. A file atsrc/bmm/workflows/notes-on-4-implementation-trade-offs.mdwould be incorrectly excluded.src/utilitymay not exist;findwill emit aNo such file or directoryerror to stderr, which can confuse CI output even though the rest of the results are valid.
🔧 Proposed fix
- find src/bmm src/core src/utility -type f \( -name "*.md" -o -name "*.yaml" \) | grep -v "4-implementation" | sort
+ find src/bmm src/core $([ -d src/utility ] && echo src/utility) \
+ -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" \) \
+ | grep -v "/4-implementation/" | sort🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tools/audit-file-refs.md` at line 29, The find command misses .yml files,
does a substring grep to exclude "4-implementation", and emits errors if
src/utility is absent; update the command to include the missing pattern,
exclude the 4-implementation directory as a path component, and suppress
non-fatal missing-directory errors (e.g., add an additional -name "*.yml" test
to the find expression, replace the grep -v "4-implementation" filter with a
find -not -path "*/4-implementation/*" style exclusion, and redirect find's
stderr to /dev/null or check directory existence before invoking find so missing
src/utility doesn't print an error).
tools/audit-file-refs.md
Outdated
| > Return findings as a list: | ||
| > `path/to/file.md:LINE_NUMBER | VIOLATION_TYPE | offending text` | ||
| > |
There was a problem hiding this comment.
VIOLATION_TYPE is never defined — subagents will invent inconsistent values, breaking the grouping step.
The output format at line 45 requires VIOLATION_TYPE, but nowhere in this document is the set of valid types enumerated. Different subagent instances will independently choose strings like "relative-path", "RELATIVE_PATH", "Relative Path", "./relative", etc. Step 6 then instructs to "Group findings by violation type" — with no canonical type list, this grouping will be arbitrary and non-reproducible across runs.
🔧 Proposed fix — add a canonical type list
+> Use exactly these VIOLATION_TYPE values (no others):
+> - `RELATIVE_PATH` — for `./` or `../` references
+> - `BARE_FILENAME` — for bare `step-NN.md` with no prefix
+> - `BARE_STEPS_PATH` — for `steps/step-NN.md` without `{project-root}/_bmad/`
+> - `BARE_BMAD_PATH` — for `_bmad/...` without `{project-root}/`
+> - `ABSOLUTE_SYSTEM_PATH` — for `/Users/...`, `C:\...` etc.
+>
> Return findings as a list:
> `path/to/file.md:LINE_NUMBER | VIOLATION_TYPE | offending text`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| > Return findings as a list: | |
| > `path/to/file.md:LINE_NUMBER | VIOLATION_TYPE | offending text` | |
| > | |
| > Use exactly these VIOLATION_TYPE values (no others): | |
| > - `RELATIVE_PATH` — for `./` or `../` references | |
| > - `BARE_FILENAME` — for bare `step-NN.md` with no prefix | |
| > - `BARE_STEPS_PATH` — for `steps/step-NN.md` without `{project-root}/_bmad/` | |
| > - `BARE_BMAD_PATH` — for `_bmad/...` without `{project-root}/` | |
| > - `ABSOLUTE_SYSTEM_PATH` — for `/Users/...`, `C:\...` etc. | |
| > | |
| > Return findings as a list: | |
| > `path/to/file.md:LINE_NUMBER | VIOLATION_TYPE | offending text` | |
| > |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tools/audit-file-refs.md` around lines 44 - 46, The document requires a
canonical set of VIOLATION_TYPE values but none is defined, causing inconsistent
outputs; add a clear enumerated list of allowed violation types (e.g.,
RELATIVE_PATH, ABSOLUTE_PATH, MISSING_LICENSE, LARGE_BINARY, SENSITIVE_DATA,
INVALID_EXTENSION) to the audit-file-refs.md and update the output format
example "path/to/file.md:LINE_NUMBER | VIOLATION_TYPE | offending text" plus the
grouping step ("Group findings by violation type") to reference this canonical
list; also add a short sentence instructing subagents to normalize their output
to the exact enum strings (case-sensitive) so grouping is deterministic.
Summary
src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.mdTest plan
npm test)open at 214, oneclose at 258)🤖 Generated with Claude Code