fix(create-story): normalize internal path refs to relative#1975
fix(create-story): normalize internal path refs to relative#1975
Conversation
🤖 Augment PR SummarySummary: This PR normalizes how “native” workflow skills are referenced and packaged, with a focus on the Changes:
Technical Notes: Skill discovery appears to rely on 🤖 Was this summary useful? React with 👍 or 👎 |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughUpdated path references in the bmad-create-story workflow from hardcoded installed_path variables to relative paths. Simplified workflow file structure by removing header metadata and converting action references to use relative directory notation (./). Minor language update replacing informal terminology with standard phrasing. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 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)
📝 Coding Plan
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 |
There was a problem hiding this comment.
Actionable comments posted: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (11)
src/bmm/agents/quick-flow-solo-dev.agent.yaml (1)
22-35:⚠️ Potential issue | 🟡 MinorUse consistent
skill:reference pattern for all registered skills in this agent menu.All four menu items (quick-spec, bmad-quick-dev, bmad-quick-dev-new-preview, code-review) are registered skills (each has a
bmad-skill-manifest.yaml), yet three use file-path references while only bmad-quick-dev uses theskill:pattern. Standardize onskill:quick-spec,skill:bmad-quick-dev-new-preview, andskill:code-reviewfor consistency with the modern pattern used across other agents.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/agents/quick-flow-solo-dev.agent.yaml` around lines 22 - 35, The menu uses mixed exec references: change the exec values for the QS (quick-spec), QQ (bmad-quick-dev-new-preview), and CR (code-review) entries from file-paths ("{project-root}/.../workflow.md") to the skill: pattern to match the existing QD entry; specifically replace the exec strings for trigger "QS" with "skill:quick-spec", for trigger "QQ" with "skill:bmad-quick-dev-new-preview", and for trigger "CR" with "skill:code-review" while leaving the existing "QD" / "skill:bmad-quick-dev" entry unchanged.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md (1)
34-34:⚠️ Potential issue | 🟠 MajorInconsistent protocol reference: bmad-party-mode still uses project-root path.
This file uses
skill:bmad-advanced-elicitationon line 33, but line 34 referencesbmad-party-modewith the old{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.mdpattern. The PR objective is to "normalize references," yet protocol invocations remain split between two resolution schemes.Why wasn't this normalized to a skill reference like the other protocol?
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md` at line 34, The step references are inconsistent: replace the legacy project-root protocol invocation of bmad-party-mode with the normalized skill reference to match skill:bmad-advanced-elicitation; edit step-01b-continue.md to change the old {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md invocation to skill:bmad-party-mode (and verify any parameters/inputs used by the workflow match the skill's interface).src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md (1)
34-35:⚠️ Potential issue | 🟠 MajorProtocol invocation inconsistency in create-architecture workflow.
Line 34 says "Invoke the
bmad-advanced-elicitationskill" (descriptive text, not a structured invocation), while line 35 uses the old{project-root}path forbmad-party-mode. This file doesn't even use theskill:prefix pattern seen in the UX design steps, which adds a third variation to the inconsistency.The PR touches multiple workflows but normalizes them to different invocation patterns. Why?
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md` around lines 34 - 35, The step-02-context.md text mixes invocation styles: a bare descriptive "Invoke the `bmad-advanced-elicitation` skill" and an old `{project-root}/_bmad/.../workflow.md` path for `bmad-party-mode`, and omits the standardized "skill:" prefix used elsewhere; update this file to use the same protocol invocation pattern as other UX steps by replacing the descriptive line with a structured invocation (e.g., use the "skill:bmad-advanced-elicitation" form) and replace the legacy path with "skill:bmad-party-mode" (or the project's canonical skill identifier) so both branches use the identical "skill:" prefix convention consistent with other workflows.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md (1)
33-34:⚠️ Potential issue | 🟠 MajorProtocol invocation inconsistency continues.
Sixth occurrence:
skill:bmad-advanced-elicitation(line 33) vs.{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md(line 34). At this point, it's clear the refactoring is incomplete.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md` around lines 33 - 34, The two protocol invocation forms are inconsistent: "skill:bmad-advanced-elicitation" vs "{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md"; pick the canonical invocation style used across the repo (either the skill: namespace or the file-path workflow reference) and update the step text to match it—replace "skill:bmad-advanced-elicitation" with the equivalent file path if the repo standard is file paths, or replace "{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md" with "skill:bmad-advanced-elicitation" if the canonical form is skill:; ensure both branches (the 'A' and 'P' lines) use the same format so the protocol invocation is consistent.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md (1)
33-34:⚠️ Potential issue | 🟠 MajorProtocol invocation inconsistency (again).
Same split:
skill:bmad-advanced-elicitationvs.{project-root}forbmad-party-mode. This is now the fifth file with this exact issue, confirming it's a systematic gap in the refactoring.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md` around lines 33 - 34, The two protocol invocation formats in step-13-responsive-accessibility.md are inconsistent: `skill:bmad-advanced-elicitation` vs `{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md`; pick the canonical invocation style used elsewhere (e.g., `skill:<name>`), and update the bmad-party-mode reference to match (replace the filesystem path with `skill:bmad-party-mode`), ensuring both entries use the same format and run a quick search to fix the same inconsistency in other files if present.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md (1)
33-34:⚠️ Potential issue | 🟠 MajorProtocol invocation inconsistency persists.
Identical issue:
bmad-advanced-elicitationuses the modernskill:prefix (line 33), butbmad-party-modestill uses the legacy{project-root}path (line 34). This undermines the PR's stated goal to "normalize references."This pattern repeats across every UX design step file in this PR, which suggests a systematic gap in the refactoring scope.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md` around lines 33 - 34, The comment flags mixed protocol usage: replace the legacy reference "{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md" with the normalized modern protocol "skill:bmad-party-mode" in step-03-core-experience.md so it matches the existing "skill:bmad-advanced-elicitation" usage; then sweep other UX design step files in the PR and update any remaining "{project-root}/_bmad/..." workflow paths to the corresponding "skill:<workflow-name>" form to normalize all references.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md (1)
33-34:⚠️ Potential issue | 🟠 MajorSame protocol invocation inconsistency.
Yet another instance:
skill:bmad-advanced-elicitationon line 33, but{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.mdon line 34. The PR normalizes step-to-step references but leaves protocol references fragmented.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md` around lines 33 - 34, The two protocol references in step-02-discovery.md are inconsistent: one uses the "skill:" invocation (skill:bmad-advanced-elicitation) while the other uses a file path ({project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md); standardize them to the same protocol style. Replace the filesystem path reference with the normalized protocol form (e.g., skill:bmad-party-mode) so both branches use "skill:..." style, and verify similar step references follow this pattern elsewhere in the file (look for skill:bmad-advanced-elicitation and the party-mode workflow reference).src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.md (1)
98-98:⚠️ Potential issue | 🟠 MajorNo fallback if template file is missing.
Line 98 copies
{installed_path}/architecture-decision-template.mdto create the initial document, but there's no validation that the template exists or is readable. If the installation is corrupted, the file is deleted, or the path variable is wrong, the workflow fails immediately with no recovery path.Add a pre-flight check: verify the template file exists and is readable before attempting the copy. HALT with a clear error ("Template file not found at {installed_path}/architecture-decision-template.md. Re-install BMAD or check installation integrity.") if validation fails.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.md` at line 98, Add a pre-flight validation before the copy step that checks that `{installed_path}/architecture-decision-template.md` exists and is readable; if the check fails, HALT the workflow and emit the exact error message "Template file not found at {installed_path}/architecture-decision-template.md. Re-install BMAD or check installation integrity." instead of attempting the copy to `{planning_artifacts}/architecture.md`; ensure the check runs immediately prior to the copy operation in step-01-init.md so the workflow doesn't proceed on a missing or unreadable template.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md (1)
83-83:⚠️ Potential issue | 🟠 MajorTemplate path inconsistency (same pattern as architecture workflow).
Line 83 still uses
{installed_path}/ux-design-template.md, mirroring the same inconsistency flagged inbmad-create-architecture/steps/step-01-init.mdline 98. The PR normalizes step-to-step references to relative paths but leaves template references pointing to{installed_path}.This pattern appears across multiple workflows. If the goal is to eliminate
{installed_path}dependencies, ALL template references must be updated, not just step-to-step navigation. If templates are intentionally kept as external dependencies, document why step files are treated differently from templates in the path normalization strategy.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md` at line 83, The step file still references the template via the external placeholder `{installed_path}/ux-design-template.md` while other steps were normalized to relative paths; update this template reference in step-01-init.md to the same normalized pattern used elsewhere (e.g., replace `{installed_path}/ux-design-template.md` with the relative template path pattern used across workflows, ensuring the copy command targets the repository-local template and not an external installed path), and audit other workflow step files for the same `{installed_path}` occurrences to convert them consistently or add a short comment documenting why templates remain external if that is intentional (look for the exact string `{installed_path}/ux-design-template.md` and the target `{planning_artifacts}/ux-design-specification.md` to apply the change).src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md (1)
69-80:⚠️ Potential issue | 🟠 Major
HALT on zero findingsconflicts with unconditional step transition.Line [69] mandates halting when findings are zero, but Line [80] still unconditionally advances. That ambiguity can bypass the intended re-analysis gate.
Proposed update
-**If zero findings:** HALT - this is suspicious. Re-analyze or request user guidance. +**If zero findings:** HALT and ask the user whether to re-run review or continue explicitly. ... -With findings in hand, read fully and follow: `{nextStepFile}` for user to choose resolution approach. +If findings exist, or the user explicitly confirms continuing after a zero-findings halt, read fully and follow: `{nextStepFile}` for user to choose resolution approach.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md` around lines 69 - 80, The step currently conflicts because the "If zero findings: HALT" rule (the HALT branch in step-05-adversarial-review.md) is incompatible with the unconditional NEXT STEP transition to `{nextStepFile}`; update the step so advancing to `{nextStepFile}` only occurs when findings exist (e.g., findings count > 0) or when the user explicitly opts to continue after a zero-findings result, otherwise stop and require re-analysis or user guidance; modify the text around the "If zero findings: HALT" and the "NEXT STEP" paragraph so the transition is conditional and add a short user prompt/instruction to request re-analysis or confirmation before continuing.src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md (1)
76-80:⚠️ Potential issue | 🟠 MajorContinuation routing conflicts with the step’s confirmation gate.
Line [76] declares an automatic handoff with no user choice. Elsewhere in this step, progression is described as C-gated. Keep one explicit rule (or clearly document the continuation exception) to avoid nondeterministic behavior across agents.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md` around lines 76 - 80, Resolve the contradiction between the automatic handoff and the step’s confirmation gate by choosing one behavior and making it explicit: either remove the automatic "STOP immediately" / "./step-01b-continue.md" routing so the step remains C-gated, or keep the auto-proceed but clearly document an exception to the confirmation gate (e.g., only auto-proceed when an explicit continuation flag is present). Update the text in step-01-init.md to remove the conflicting line or add a precise conditional rule referencing "STOP immediately", "./step-01b-continue.md", and the step’s C-gated confirmation so agents have a single deterministic progression rule.
🧹 Nitpick comments (25)
src/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.md (1)
3-3: Description is overly narrow for intent routing.Line 3 only keys off one exact utterance pattern (
"lets create a research report on..."). Broaden the trigger language to include equivalent intents (e.g., “research [industry]”, “industry report”, “market/domain analysis”) so skill selection is less brittle.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.md` at line 3, The skill description field is too narrow and only matches the exact phrase "lets create a research report on ..."; update the description (the 'description' value in SKILL.md) to include a broader set of trigger phrases and synonyms such as "research [industry/domain]", "industry report", "market analysis", "domain analysis", "create a research report", and "conduct research on [domain]" so intent routing is less brittle; ensure the new description lists several example utterances or patterns and keeps the original example for backwards-compatibility.src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md (1)
81-81: Duplicate transition target can drift.Lines 81 and 135 repeat the same next-step path literal. Keep a single source of truth (e.g., frontmatter variable) to prevent one side being updated without the other.
Also applies to: 135-135
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md` at line 81, The markdown repeats the next-step path literal "Load: `./step-02-domain-analysis.md`" in multiple places; introduce a single frontmatter variable (e.g., next_step: "./step-02-domain-analysis.md") in the document frontmatter and replace both inline literals with that variable reference (for example use a template or include syntax your site generator supports) so "Load: `./step-02-domain-analysis.md`" is derived from next_step and cannot drift out of sync.src/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md (1)
15-15: Report title is too generic for artifact identification.Line 15 titles by
{{research_type}}only. Include{{research_topic}}in the heading so multi-report repositories can distinguish artifacts quickly.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md` at line 15, The template heading only uses {{research_type}} which is too generic; update the heading in research.template.md to include both {{research_type}} and {{research_topic}} (e.g., combine them with a separator like " - " or parentheses) so generated report filenames and headings uniquely identify the artifact; locate the heading line containing {{research_type}} and modify it to incorporate {{research_topic}} as well.src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md (1)
174-174: Avoid repeated hardcoded next-step paths.Lines 174 and 227 duplicate the same target. Consolidate into a single reference to prevent silent routing inconsistencies later.
Also applies to: 227-227
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md` at line 174, The repeated hardcoded next-step path "Load: `./step-03-competitive-landscape.md`" in step-02-domain-analysis.md should be consolidated: create a single reusable reference (for example a top-of-file constant or a markdown reference link like `[next-step]: ./step-03-competitive-landscape.md`) and replace each hardcoded "Load: `./step-03-competitive-landscape.md`" occurrence with that reference (e.g., "Load: [next-step]") so both places (the duplicated Load lines) point to the single source of truth and avoid routing drift.src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md (1)
158-158: Transition target is duplicated across instruction blocks.Lines 158 and 204 carry the same hardcoded next-step value. Consider defining the next-step file once and reusing it to reduce mismatch risk during future edits.
Also applies to: 204-204
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md` at line 158, The next-step target './step-05-technical-trends.md' is duplicated in this markdown (appearing in the transition blocks at the two locations), so extract that target into a single reusable definition (for example a frontmatter key like next_step or a single variable at the top of the document) and replace both hardcoded "Load: `./step-05-technical-trends.md`" occurrences in step-04-regulatory-focus with references to that single definition to ensure future edits only require one change.src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md (1)
183-183: Use one canonical next-step reference.Lines 183 and 236 duplicate the same transition value. Centralizing this reference will make future renames/reordering safer.
Also applies to: 236-236
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md` at line 183, The file step-03-competitive-landscape.md contains two duplicate transition lines "Load: `./step-04-regulatory-focus.md`"; centralize this by defining a single canonical next-step reference (for example add a frontmatter key next_step: ./step-04-regulatory-focus.md at the top of step-03-competitive-landscape.md) and replace both occurrences of "Load: `./step-04-regulatory-focus.md`" with a reference to that canonical key (e.g., use the next_step variable or a single include) so future renames only need one change.src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md (1)
177-177: Externalize next-step target to reduce step-graph drift.Line 177 hardcodes a transition target directly in prose/instruction text. This pattern is brittle during future renumbering/reordering. Consider a single
next_stepvariable/frontmatter field and reference it consistently.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md` at line 177, Replace the hardcoded transition text "Load: `./step-06-research-synthesis.md`" with a frontmatter-driven reference: add a YAML frontmatter key (e.g., next_step: ./step-06-research-synthesis.md) at the top of the document and update the prose to reference that variable (for example using your repo’s templating convention such as Load: `{{ next_step }}` or inserting the value programmatically during rendering). Ensure the frontmatter key name is consistent across other step files so the step graph generator can read next_step from the document instead of parsing inline prose.AGENTS.md (1)
8-9: Consider adding failure handling guidance.The quality check instruction tells agents what to run but not what to do if it fails. For completeness, consider adding guidance on how to interpret failures or where to find logs.
💡 Suggested addition
- Before pushing, run `npm ci && npm run quality` on `HEAD` in the exact checkout you are about to push. `quality` mirrors the checks in `.github/workflows/quality.yaml`. + If any check fails, fix the issues before pushing.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@AGENTS.md` around lines 8 - 9, Add a short failure-handling paragraph after the npm ci && npm run quality instruction explaining what to do if the checks fail: instruct users to run the failing commands locally (npm ci && npm run quality), inspect the output for linter/test errors, run targeted fixes (e.g., eslint --fix, prettier --write, or the failing test command), and if unclear, view the full GitHub Actions logs referenced in .github/workflows/quality.yaml for detailed output and re-run the workflow from the Actions UI after fixes; mention checking HEAD is the exact commit being tested.src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.md (1)
345-345: Hardcoded step progression array is fragile.Line 345 hardcodes
stepsCompleted: [1, 2, 3, 4, 5, 6]. If the workflow is refactored (steps renumbered, reordered, or a step inserted between 3 and 4), this hardcoded array becomes stale. The agent doesn't derive the progression dynamically — it's manually maintained in every step file.This pattern appears across all step files. If step numbering changes, you must hunt down and update every
stepsCompletedassignment. That's brittle and error-prone.Consider deriving the step number from the filename (
step-06-*.md→ step 6) or from frontmatter in the step file itself, then append dynamically. Or track a "current step name" instead of a numeric progression.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.md` at line 345, The frontmatter key stepsCompleted currently contains a hardcoded array (stepsCompleted: [1, 2, 3, 4, 5, 6]) which is brittle; change the logic that builds frontmatter in step files (e.g., step-06-*.md) to compute the progression dynamically by deriving the current step number from the filename (parse "step-06-..." → 6) or from an explicit frontmatter field like currentStep, then generate stepsCompleted programmatically (e.g., range 1..currentStep or append currentStep to the previous list) instead of hardcoding the array; update any code that writes or validates the frontmatter to use this dynamic derivation and remove the manual stepsCompleted arrays across step files.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md (1)
69-69: No cleanup for orphaned artifacts if workflow fails.Line 69 creates
{planning_artifacts}/ux-design-directions.htmlas part of step 9's work. If the workflow fails after creating the HTML but before the user selects [C] Continue (e.g., the agent crashes, the user cancels, or step 10 load fails), the HTML artifact is left orphaned on disk with no reference in the frontmatter.On workflow resumption, there's no mechanism to detect or clean up these partial artifacts. The user's planning artifacts directory accumulates cruft.
Add artifact tracking to frontmatter (e.g.,
artifactsCreated: [ux-design-directions.html]) and implement cleanup logic in the continuation handler to detect and offer to remove orphaned artifacts from incomplete steps.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md` at line 69, Update the step that writes `{planning_artifacts}/ux-design-directions.html` to record created files in the step's frontmatter (add an artifactsCreated array containing "ux-design-directions.html") and modify the workflow resumption/continuation handler (e.g., the function that processes the "Continue" action or resumeWorkflow/handleContinue logic) to detect artifacts in frontmatter vs actual files on disk, identify orphaned files from incomplete steps, and offer to remove or re-associate them; ensure the creation path (where ux-design-directions.html is generated) appends to artifactsCreated and the continuation handler performs cleanup or prompts the user when mismatch is detected.src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md (1)
92-92: Use explicit load semantics for step transitions.Line 92 says “Proceed immediately,” but this step engine generally relies on explicit load phrasing. Make the transition directive unambiguous (
Read fully and follow) to reduce agent interpretation variance.Suggested wording
-Proceed immediately to `{nextStepFile}`. +Read fully and follow: `{nextStepFile}`.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md` at line 92, Change the ambiguous transition sentence "Proceed immediately to `{nextStepFile}`." in step-04-self-check.md to use explicit load semantics used by the step engine — replace it with a directive like "Read fully and follow `{nextStepFile}`." so the agent knows to load and execute the next step explicitly rather than proceeding ambiguously.src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.md (1)
326-357: Next-step target is duplicated and prone to mismatch.Line 326 and Line 357 duplicate the same control-flow path. One source of truth (e.g.,
{nextStepFile}) would prevent accidental divergence.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.md` around lines 326 - 357, The file duplicates the next-step target string ("load `./step-08-complete.md`") in two places which risks divergence; introduce a single source-of-truth variable (e.g., {nextStepFile}) and replace both literal occurrences with that variable reference so the control-flow target is defined once (update the header/metadata where {nextStepFile} is declared and change the lines that currently say "Load `./step-08-complete.md`" and "After user selects 'C' ... load `./step-08-complete.md`" to reference {nextStepFile} instead).src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md (1)
190-222: Duplicate next-step literal creates control-flow drift risk.Line 190 and Line 222 repeat the same step target. If one gets updated later and the other doesn’t, this workflow silently diverges.
Suggested refactor
-- Load `./step-09-design-directions.md` +- Load `{nextStepFile}` ... -After user selects 'C' and content is saved to document, load `./step-09-design-directions.md` to generate design direction mockups. +After user selects 'C' and content is saved to document, load `{nextStepFile}` to generate design direction mockups.# add near frontmatter/header section nextStepFile: './step-09-design-directions.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/bmad-create-ux-design/steps/step-08-visual-foundation.md` around lines 190 - 222, The file contains duplicated literal references to "./step-09-design-directions.md" causing control-flow drift; add a single canonical frontmatter/header key nextStepFile: './step-09-design-directions.md' near the top of step-08-visual-foundation.md, remove the repeated inline "Load `./step-09-design-directions.md`" occurrences, and update any code/path usages to read from the new nextStepFile symbol so all flow control and automatic loaders use that single source of truth.package.json (1)
42-42: The inlinequalitychain is brittle; centralize orchestration.Line 42 hardcodes a long sequence. This is likely to drift from other entrypoints over time. Prefer composing from one shared script (single source of truth) rather than repeating command lists.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@package.json` at line 42, The "quality" script currently hardcodes the full chain of checks; add a single orchestrator script (e.g., "quality:all" or "quality:orchestrator") that composes the existing scripts (format:check, lint, lint:md, docs:build, validate:schemas, test:schemas, test:install, validate:refs) and then update the "quality" entry to simply run that orchestrator (npm run quality:all) so the sequence is maintained in one place and easier to update.src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md (1)
6-6: Add a short note clarifyingnextStepFilepath semantics.Line [6] uses
./step-02-vision.md; given mixed conventions across workflow families, add an inline note that this converted-workflow step resolves./relative to the currentsteps/directory.Based on learnings: "For converted-workflow skills ... step files under steps/ resolve relative to the file's own directory."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md` at line 6, Add a one-line inline note next to the nextStepFile entry clarifying that the './' prefix in nextStepFile (e.g., nextStepFile: './step-02-vision.md') is resolved relative to the current step's directory inside steps/ for converted-workflow skills; update the markdown in step-01-init.md to state that './' paths point to files under the same steps/ directory so readers understand path semantics for nextStepFile.src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md (1)
80-80: Add a guard before dereferencing{nextStepFile}.Line [80] now depends on indirection. Add an explicit “resolve-and-validate target step file” check before handoff to avoid dead-end transitions when metadata drifts.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md` at line 80, Add a guard that resolves and validates the target step file before dereferencing `{nextStepFile}`: resolve the indirection (e.g., map/lookup the referenced step id/path), confirm the resolved file exists and its required metadata (title, nextStep or content) is present and valid, and only then proceed to the handoff; if resolution/validation fails, log or surface a clear error and route to a safe fallback (error or index step) instead of using `{nextStepFile}` directly.src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md (1)
6-6: Document thenextStepFileresolution contract to prevent regressions.Line [6] is correct for this workflow shape, but the repo has mixed
./semantics across skill types. Add a one-line note near this field that this step file resolves./relative to thesteps/directory, so future edits don’t accidentally reintroduce skill-root assumptions.Proposed update
# File References +# NOTE: In this converted-workflow skill, `./` resolves relative to this `steps/` directory. nextStepFile: './step-04-metrics.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'Based on learnings: "For converted-workflow skills ... step files located under a steps/ subdirectory resolve relative to the file's own directory, not the skill root."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md` at line 6, Add a one-line annotation next to the existing nextStepFile field in step-03-users.md explaining that the './' path is resolved relative to the steps/ directory (i.e., step files under steps/ resolve './' to their own directory, not the skill root); update the comment close to the nextStepFile entry (reference: nextStepFile: './step-04-metrics.md') so future edits won’t assume skill-root resolution.src/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml (1)
1-1: This manifest should include a concisedescription.Line [1] is functionally minimal but loses useful context in generated indexes and reviews. Add a short action-oriented description.
Proposed update
type: skill +description: 'Guide collaborative creation of a product brief from discovery to scope'Based on learnings: "In all bmad-skill-manifest.yaml files, use a concise, action-oriented description ... Keep descriptions brief and consistent across manifests."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml` at line 1, The manifest currently only has "type: skill" and lacks a concise action-oriented description; update bmad-skill-manifest.yaml to add a short "description" field (one sentence, imperative voice) immediately under "type: skill" that summarizes the skill's purpose (e.g., "Create a product brief from input details"), keeping it brief and consistent with other bmad manifests.src/bmm/agents/dev.agent.yaml (1)
33-38: Normalize menu executors to skills; mixed path/skill routing is brittle.Line [33] moved DS to
skill:but CR on Line [37] still hardcodes a filesystem path. Keep one invocation model in this menu (prefer skill refs) to reduce install-path coupling.Proposed update
- - trigger: CR or fuzzy match on code-review - exec: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.md" + - trigger: CR or fuzzy match on code-review + exec: "skill:bmad-code-review" description: "[CR] Code Review: Initiate a comprehensive code review across multiple quality facets. For best results, use a fresh context and a different quality LLM if available"Based on learnings: "agents are invoked via their skill entry point ... there is no ambiguity or overlap between agent skills and workflow skills."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/agents/dev.agent.yaml` around lines 33 - 38, The menu mixes executor invocation styles—DS uses "skill:bmad-dev-story" while the CR entry still points to a filesystem workflow ("{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.md"); change the CR entry's exec to a skill-style reference (e.g., "skill:<code-review-skill-name>") so both entries use the same skill invocation model, update the CR exec value in the dev.agent.yaml entry with the chosen skill identifier, and ensure the corresponding skill exists/exports the code-review workflow (adjust manifests or registrations where the skill is declared).src/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml (1)
1-1: Add a concisedescriptionto this skill manifest.Line [1] alone is too thin for manifest-level discoverability. Add a short action-focused description to align with existing manifest conventions.
Proposed update
type: skill +description: 'Execute approved stories with tests and implementation in order'Based on learnings: "In all bmad-skill-manifest.yaml files, use a concise, action-oriented description ... Keep descriptions brief and consistent across manifests."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml` at line 1, Add a concise, action-oriented manifest description by adding a top-level "description" field next to the existing "type: skill" entry; the description should be a short phrase (one sentence or fragment) that states what the skill does or the primary action it performs to improve discoverability and match other bmad-skill-manifest.yaml conventions.src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md (1)
6-6: Make path resolution semantics explicit next tonextStepFile.Line [6] now uses a local relative path. Add an inline note clarifying resolution is step-directory-relative for this converted workflow; that avoids future edits applying the wrong convention.
Based on learnings: "Only workflow.md at the skill root needs the ./steps/ prefix; step files under steps/ resolve relative to their own directory."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md` at line 6, The nextStepFile entry currently uses a local relative path but lacks clarification of how it resolves; update the step-02-vision.md near the nextStepFile field to add a short inline note that explains resolution is step-directory-relative for converted workflows (i.e., paths are resolved relative to the current step file's directory, not the workflow root), so future editors know to use ./ or sibling/parent paths accordingly; reference the nextStepFile key in step-02-vision.md when adding this note.src/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml (1)
1-1: Add a manifest description;type-only entries are too opaque.Line [1] leaves this skill non-descriptive in manifest-level listings. Add a concise action-oriented
descriptionfield for consistency and discoverability.Proposed update
type: skill +description: 'Create implementation-ready stories from approved planning artifacts'Based on learnings: "In all bmad-skill-manifest.yaml files, use a concise, action-oriented description ... Keep descriptions brief and consistent across manifests."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml` at line 1, The manifest currently only has "type: skill" which is too opaque; add a top-level "description" field alongside the existing "type: skill" in bmad-skill-manifest.yaml containing a concise, action-oriented sentence (e.g., "Create short narrative stories from user prompts") to improve discoverability and consistency; ensure the description is brief, imperative, and follows the same placement/indentation as "type: skill" so tooling that reads top-level keys (e.g., the skill loader) picks it up.src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md (1)
34-34: Inconsistent path style: Party Mode still uses absolute project-root reference.Lines 34 and 190 reference Party Mode using
{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.mdwhile this PR normalizes other paths to relative or skill-based references. Consider whether Party Mode should be invoked viaskill:bmad-party-modefor consistency with the skill-based execution pattern seen in other changes (e.g.,sm.agent.yaml).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md` at line 34, The reference to Party Mode uses an absolute project-root path "{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md" which is inconsistent with the skill-based path style used elsewhere; change this reference in step-05-inspiration.md (and the duplicate occurrence later) to the skill-style invocation "skill:bmad-party-mode" so it aligns with the other normalized references (see sm.agent.yaml for examples) and ensure any surrounding instructions still make sense when invoking the skill instead of pointing to a file.src/bmm/agents/sm.agent.yaml (1)
22-37: Inconsistent execution patterns within same agent.The CS trigger now uses
skill:bmad-create-storywhile SP, ER, and CC triggers still use{project-root}filesystem paths. This creates a mixed execution model in a single agent definition. If those workflows are also being converted to native skills, their references should be updated for consistency.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/agents/sm.agent.yaml` around lines 22 - 37, The agent manifest mixes execution models: the CS trigger uses "skill:bmad-create-story" while SP, ER, and CC use filesystem paths ("{project-root}/..."); make them consistent by either converting SP, ER, and CC triggers to native skill references (e.g., replace exec values for triggers SP, ER, CC with the corresponding "skill:..." identifiers) or by reverting CS to the same "{project-root}/..." pattern—update any associated data fields (like the ER data entry) to match the chosen model and ensure the skill names or file-based paths correspond to the actual converted artifacts.src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md (1)
119-145: Fresh context warning may confuse the agent about execution responsibility.Line 141 says "in a fresh context if possible (warn: fresh context is better)" but doesn't clarify:
- Who is responsible for creating the fresh context (the current agent, the user, or the system)?
- What should happen if a fresh context isn't possible?
- Whether the current agent should HALT after invocation or wait for the skill to complete.
The existing logic for option [B] previously had clear file-based execution. The new skill-based approach needs clearer execution semantics.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md` around lines 119 - 145, Clarify the fresh-context semantics for the "B" option and overall menu by explicitly stating who creates the fresh context (system/service by default, fall back to user prompt if unavailable), what to do if a fresh context can't be created (proceed in current context with a warning and request confirmation), and whether the current agent should HALT or wait (agent should invoke the bmad-quick-dev skill and wait for completion unless unable to create a fresh context, in which case it should ask the user whether to proceed in current context or retry). Update the menu text referencing "bmad-quick-dev" and the B branch logic to include these three points and a short in-line warning message "fresh context preferred — created by system; if unavailable you will be prompted" so callers know execution responsibility and fallback behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 69b1ed78-9296-4b9a-a322-2dae4a461a45
⛔ Files ignored due to path filters (3)
src/bmm/module-help.csvis excluded by!**/*.csvsrc/bmm/workflows/3-solutioning/bmad-create-architecture/data/domain-complexity.csvis excluded by!**/*.csvsrc/bmm/workflows/3-solutioning/bmad-create-architecture/data/project-types.csvis excluded by!**/*.csv
📒 Files selected for processing (92)
.github/workflows/quality.yamlAGENTS.mdpackage.jsonsrc/bmm/agents/analyst.agent.yamlsrc/bmm/agents/architect.agent.yamlsrc/bmm/agents/dev.agent.yamlsrc/bmm/agents/quick-flow-solo-dev.agent.yamlsrc/bmm/agents/sm.agent.yamlsrc/bmm/agents/ux-designer.agent.yamlsrc/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yamlsrc/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.mdsrc/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.mdsrc/bmm/workflows/1-analysis/create-product-brief/bmad-skill-manifest.yamlsrc/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yamlsrc/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.mdsrc/bmm/workflows/1-analysis/research/bmad-domain-research/workflow.mdsrc/bmm/workflows/1-analysis/research/bmad-skill-manifest.yamlsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/SKILL.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yamlsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/ux-design-template.mdsrc/bmm/workflows/2-plan-workflows/bmad-create-ux-design/workflow.mdsrc/bmm/workflows/2-plan-workflows/create-ux-design/bmad-skill-manifest.yamlsrc/bmm/workflows/3-solutioning/bmad-create-architecture/SKILL.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/architecture-decision-template.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yamlsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01b-continue.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-03-starter.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-04-decisions.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-05-patterns.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-08-complete.mdsrc/bmm/workflows/3-solutioning/bmad-create-architecture/workflow.mdsrc/bmm/workflows/3-solutioning/create-architecture/bmad-skill-manifest.yamlsrc/bmm/workflows/4-implementation/bmad-create-story/SKILL.mdsrc/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yamlsrc/bmm/workflows/4-implementation/bmad-create-story/checklist.mdsrc/bmm/workflows/4-implementation/bmad-create-story/discover-inputs.mdsrc/bmm/workflows/4-implementation/bmad-create-story/template.mdsrc/bmm/workflows/4-implementation/bmad-create-story/workflow.mdsrc/bmm/workflows/4-implementation/bmad-dev-story/SKILL.mdsrc/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yamlsrc/bmm/workflows/4-implementation/bmad-dev-story/checklist.mdsrc/bmm/workflows/4-implementation/bmad-dev-story/workflow.mdsrc/bmm/workflows/4-implementation/create-story/bmad-skill-manifest.yamlsrc/bmm/workflows/4-implementation/dev-story/bmad-skill-manifest.yamlsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.mdsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yamlsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.mdsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.mdsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.mdsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.mdsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.mdsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.mdsrc/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.mdsrc/bmm/workflows/bmad-quick-flow/quick-dev/bmad-skill-manifest.yamlsrc/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.mdsrc/bmm/workflows/bmad-quick-flow/quick-spec/workflow.mdtest/test-workflow-path-regex.jstools/cli/installers/lib/modules/manager.js
💤 Files with no reviewable changes (9)
- src/bmm/workflows/3-solutioning/create-architecture/bmad-skill-manifest.yaml
- src/bmm/workflows/1-analysis/research/bmad-skill-manifest.yaml
- src/bmm/workflows/bmad-quick-flow/quick-dev/bmad-skill-manifest.yaml
- src/bmm/workflows/4-implementation/dev-story/bmad-skill-manifest.yaml
- src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md
- src/bmm/workflows/4-implementation/create-story/bmad-skill-manifest.yaml
- src/bmm/workflows/1-analysis/create-product-brief/bmad-skill-manifest.yaml
- src/bmm/workflows/1-analysis/research/bmad-domain-research/workflow.md
- src/bmm/workflows/2-plan-workflows/create-ux-design/bmad-skill-manifest.yaml
| - If `lastStep = 1` → Load `./step-02-vision.md` | ||
| - If `lastStep = 2` → Load `./step-03-users.md` | ||
| - If `lastStep = 3` → Load `./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
# Check which step files exist in the product-brief steps directory
echo "=== Step files in bmad-create-product-brief/steps ==="
fd -t f "step-*.md" src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/ | sortRepository: bmad-code-org/BMAD-METHOD
Length of output: 122
🏁 Script executed:
#!/bin/bash
# Check if the directory exists and list contents
echo "=== Checking directory existence ==="
if [ -d "src/bmm/workflows/1-analysis/bmad-create-product-brief/steps" ]; then
echo "Directory exists. Contents:"
ls -la src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/
else
echo "Directory does not exist"
fi
echo ""
echo "=== Checking parent directory ==="
ls -la src/bmm/workflows/1-analysis/bmad-create-product-brief/
echo ""
echo "=== Searching for step files with different patterns ==="
fd -t f ".*step.*\.md" src/bmm/workflows/1-analysis/bmad-create-product-brief/ 2>/dev/null || echo "No files found"Repository: bmad-code-org/BMAD-METHOD
Length of output: 1799
🏁 Script executed:
#!/bin/bash
# Read the specific section of the file
echo "=== Content around lines 95-105 ==="
sed -n '95,105p' src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md | cat -n
echo ""
echo "=== Full file for context ==="
wc -l src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.mdRepository: bmad-code-org/BMAD-METHOD
Length of output: 651
🏁 Script executed:
#!/bin/bash
# Read more context (lines 80-120) to understand the full logic
echo "=== Broader context (lines 80-120) ==="
sed -n '80,120p' src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md | cat -nRepository: bmad-code-org/BMAD-METHOD
Length of output: 1604
Add explicit path mappings for steps 4 and 5.
The continuation logic provides explicit paths only for lastStep values 1–3, then uses a generic "Continue this pattern for all steps" placeholder. This leaves steps 4 and 5 without explicit mappings before jumping to the lastStep = 6 completion check. An LLM agent following this instruction may not reliably load the correct next step for those values.
All six step files exist in the directory (steps 02 through 06 exist after step 01/01b), so explicit mappings should be provided:
🛠️ Proposed fix
- If `lastStep = 1` → Load `./step-02-vision.md`
- If `lastStep = 2` → Load `./step-03-users.md`
- If `lastStep = 3` → Load `./step-04-metrics.md`
-- Continue this pattern for all steps
+- If `lastStep = 4` → Load `./step-05-scope.md`
+- If `lastStep = 5` → Load `./step-06-complete.md`
- If `lastStep = 6` → Workflow already complete🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md`
around lines 98 - 102, The checklist misses explicit branches for lastStep
values 4 and 5; update the continuation mapping that checks the lastStep
variable to add two explicit entries so an agent will deterministically load the
next files: add "If lastStep = 4 → Load ./step-05-*.md" and "If lastStep = 5 →
Load ./step-06-*.md" (matching the existing naming pattern used for
./step-02-vision.md, ./step-03-users.md, ./step-04-metrics.md) so all
transitions from lastStep 1–6 are spelled out.
| research_type: '{{research_type}}' | ||
| research_topic: '{{research_topic}}' | ||
| research_goals: '{{research_goals}}' | ||
| user_name: '{{user_name}}' | ||
| date: '{{date}}' |
There was a problem hiding this comment.
Frontmatter placeholders are not YAML-safe for arbitrary user input.
Single-quoted interpolations for research_topic, research_goals, and user_name can break YAML if input includes apostrophes/newlines. Use escaped serialization or block scalars.
Safer pattern example
-research_type: '{{research_type}}'
-research_topic: '{{research_topic}}'
-research_goals: '{{research_goals}}'
-user_name: '{{user_name}}'
-date: '{{date}}'
+research_type: "{{research_type}}"
+research_topic: |-
+ {{research_topic}}
+research_goals: |-
+ {{research_goals}}
+user_name: "{{user_name}}"
+date: "{{date}}"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@src/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md`
around lines 6 - 10, The frontmatter in research.template.md is unsafe for
arbitrary input because single-quoted interpolations for research_topic,
research_goals, and user_name can break YAML with apostrophes/newlines; update
the template to serialize those fields as YAML block scalars or otherwise escape
them (e.g., replace the single-quoted '{{research_goals}}',
'{{research_topic}}', and '{{user_name}}' with a block scalar form like using |
or > for multi-line values or by emitting a JSON/YAML-escaped string) so
multi-line text and embedded quotes are preserved; keep research_type and date
as simple scalars if they remain single-line.
|
|
||
| - Confirm: "This will delete all existing architectural decisions. Are you sure? (y/n)" | ||
| - If confirmed: Delete existing document and read fully and follow: `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md` | ||
| - If confirmed: Delete existing document and read fully and follow: `./step-01-init.md` |
There was a problem hiding this comment.
Referenced step file not in valid-steps list.
Line 106 loads ./step-01-init.md when the user chooses "Start over", but the "Valid step files to load" list at lines 165-171 does NOT include step-01-init.md. Either the list is incomplete (missing the init step), or the "Start over" path at line 106 is loading an invalid step file.
Which is it? If step-01-init.md is a valid resumption target, add it to the list. If not, the "Start over" logic at line 106 is broken.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md`
at line 106, The "Start over" branch references './step-01-init.md' but that
filename is missing from the "Valid step files to load" list; update the list of
valid step files (the "Valid step files to load" array/constant) to include
'step-01-init.md' or, if that file is not intended to be a resume target, change
the "Start over" logic to load an existing valid step filename instead—look for
the "Start over" branch that loads './step-01-init.md' and the "Valid step files
to load" declaration and make them consistent.
| - Append the final content to `{planning_artifacts}/architecture.md` | ||
| - Update frontmatter: `stepsCompleted: [1, 2]` | ||
| - Load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md` | ||
| - Load `./step-03-starter.md` |
There was a problem hiding this comment.
No validation that step-03-starter.md can be resolved.
Like the other relative path changes, this assumes the target file exists and is reachable via ./step-03-starter.md. There's no error handling, no fallback, and no verification at build/install time.
What happens if someone renames or moves step-03-starter.md? The workflow breaks at runtime with no helpful diagnostic.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md`
at line 191, The reference "Load `./step-03-starter.md`" in step-02-context.md
lacks validation; add explicit resolution and error handling where the file is
loaded (the code/path that attempts to load "./step-03-starter.md") by verifying
the file exists (e.g., resolve the relative path and check presence at build or
startup), and if it cannot be found emit a clear diagnostic message that
includes the attempted path and suggested remedies (rename/move info) and
provide a fallback behavior (skip with warning or use a bundled/default starter)
so the workflow doesn't fail silently at runtime.
src/bmm/workflows/4-implementation/bmad-create-story/workflow.md
Outdated
Show resolved
Hide resolved
| ## NEXT STEP | ||
|
|
||
| Proceed immediately to `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md`. | ||
| Proceed immediately to `{nextStepFile}`. |
There was a problem hiding this comment.
No safety check for unresolved or invalid {nextStepFile}.
Line 92 assumes the variable is always present and valid. Add a guard/fallback so the workflow halts clearly instead of attempting a broken transition.
Suggested hardening
-Proceed immediately to `{nextStepFile}`.
+If `{nextStepFile}` is empty or invalid, HALT and request operator correction.
+Then proceed to `{nextStepFile}`.📝 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.
| Proceed immediately to `{nextStepFile}`. | |
| If `{nextStepFile}` is empty or invalid, HALT and request operator correction. | |
| Then proceed to `{nextStepFile}`. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md`
at line 92, The step assumes `{nextStepFile}` is always present; add a guard in
step-04-self-check (around the transition text) to validate that `nextStepFile`
is non-empty and points to an existing/valid step before proceeding—if it is
missing/invalid, emit a clear error message and halt the workflow (or provide a
fallback step) instead of rendering "Proceed immediately to `{nextStepFile}`";
ensure the check references the same `nextStepFile` variable and short-circuits
the transition path when invalid.
66e66cc to
06c3296
Compare
06c3296 to
8265153
Compare
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
Summary
Post-conversion cleanup for the create-story native skill:
name/descriptionfrontmatter fromworkflow.md(metadata belongs inSKILL.md){installed_path}/references with./relative paths inworkflow.mdandchecklist.mdThese are mechanical fixes per the workflow-to-skill conversion patch process — no behavior changes.
Files changed
src/bmm/workflows/4-implementation/bmad-create-story/workflow.mdsrc/bmm/workflows/4-implementation/bmad-create-story/checklist.md