Remove name/description from step frontmatter (STEP-06) and inline
nextStepFile/templateFile path variables as literal relative paths
(PATH-04).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Step files are inside steps/ so inter-step references must be
./step-NN.md not ./steps/step-NN.md (which would double-nest).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The agent menu entry for QS was still using a raw file path
instead of the skill dispatcher, inconsistent with module-help.csv.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move technical-research workflow into bmad-technical-research/ skill
package with SKILL.md, bmad-skill-manifest.yaml, and properly
namespaced step files. Update module-help.csv to use skill: ref.
Remove duplicate technical-steps/ from old location and fix all
cross-references to use the new bmad-technical-research/ path.
Remove name/description frontmatter from workflow.md and sub-workflow
files (deep-dive-workflow.md, full-scan-workflow.md). Metadata belongs
exclusively in SKILL.md for native skill packages.
* convert qa-generate-e2e-tests to native skill packaging
* fix(bmm): remove workflow metadata and normalize refs for qa-generate-e2e-tests
Remove name/description from workflow.md (belongs in SKILL.md).
Normalize installed_path to relative. Update QA agent exec to skill URI.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: convert correct-course workflow to native skill
* fix(skill): patch correct-course native skill metadata
* fix(skill): inline hardcoded path variables in correct-course
Remove installed_path, checklist, and project_context variables that
just indirected single-use hardcoded paths. Use bare values inline.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(skills): convert create-epics-and-stories workflow to native skill
* fix(skills): normalize create-epics-and-stories metadata
* fix: remove workflow_path indirection, use direct relative paths
Replace the custom workflow_path variable with direct relative paths
(../workflow.md, ../templates/epics-template.md) in all step files.
Also remove duplicate epicsTemplate entry in step-01.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: remove unused frontmatter refs from step files
Drop thisStepFile, workflowFile, and epicsTemplate (where unused in
body) from all step frontmatter. Only keep variables actually
referenced in step body content.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: convert partyModeWorkflow to skill ref, drop unused task refs
- partyModeWorkflow now uses skill:bmad-party-mode (it is a skill)
- remove advancedElicitationTask and partyModeWorkflow from steps 1/4
where they are not referenced in the body
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: inline all frontmatter refs, use canonical skill invocation
- Remove all file/task reference variables from step frontmatter
- Inline paths directly where used in body text
- Use canonical "invoke the skill" phrasing for skill references
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Planning workflows loaded document_output_language from config but never
enforced it in step files. Only communication_language was enforced,
causing generated artifacts (product briefs, PRDs, UX specs, project
docs) to be written in the conversation language instead of the
configured document output language.
Add explicit document_output_language enforcement in all content-
generating step files across create-product-brief, create-prd,
create-ux-design, generate-project-context, and document-project
workflows.
Closes#1966
- Fix bare directory ref missing /workflow.md in step-02-generate.md
- Remove stale workflowType: 'party-mode' from workflow.md and step-03
- Remove unused decorative aliases from quick-dev-new-preview workflow
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- Rename party-mode → bmad-party-mode (canonical ID convention)
- Change bmad-skill-manifest.yaml from type:workflow to type:skill
- Add SKILL.md with frontmatter for installer discovery
- Remove installed_path, use relative ./steps/ refs internally
- Update module-help.csv to skill:bmad-party-mode
- Update compiler.js hardcoded PM menu path
- Update 43 cross-references to IDE-agnostic _bmad/ path
- Update test fixtures for renamed directory
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The create-epics-and-stories workflow previously relegated UX Design
requirements to a vague "Additional Requirements" list, causing
actionable UX work items (design tokens, component proposals,
accessibility audits) to be silently dropped from the epic/story
breakdown.
Changes:
- step-01: Elevate UX Design extraction to first-class with dedicated
UX-DR identifiers and thorough extraction guidance
- step-03: Add UX Design integration guidance for story creation and
final validation coverage check
- epics-template: Add dedicated UX Design Requirements section
Co-authored-by: Brian <bmadcode@gmail.com>
The code review workflow required finding 3-10 issues minimum per review
and forced the agent to keep looking if fewer than 3 were found. This
created an endless review cycle where every review manufactures issues
even after previous fixes were applied, because the workflow cannot
conclude with "no issues found."
Replace the hard minimum with a zero-issue sanity check that allows
clean reviews after a thorough re-examination, while preserving the
adversarial review approach for genuine issues.
When feeding brainstorming sessions into the PRD workflow, soft/qualitative
ideas (tone, personality, interaction design, coaching philosophy) get
silently dropped because they don't map cleanly to the PRD's structured
template (FR/NFR format). The resulting PRD reads as complete, so the
loss is invisible without manually diffing against the brainstorming output.
Add a reconciliation check in step-11 (polish) that cross-references the
brainstorming document against the finished PRD, flags ideas that didn't
land anywhere, and lets the user decide which to incorporate.
* fix(quick-dev): correct commit ordering, add loopback directive, fix typo
- step-05: set spec status to done before committing so the commit
captures the final state
- step-04: add explicit read-and-follow directive to intent_gap loopback
matching the pattern used by bad_spec
- SKILL.md: fix missing apostrophe in description
* fix(quick-dev): remove stray commit instruction from review step
The review step (step-04) had a bare "4. Commit." line that conflicted
with commit responsibility belonging solely to step-05-present.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore(core): convert help.md to native skill directory
Migrate the single-file help.md task to a bmad-help/ skill directory
following the pattern established by bmad-review-adversarial-general.
Update module-help.csv to use skill: reference and remove the entry
from the parent manifest. Fix 7 BMM workflow step files that had
hardcoded file path references to the now-relocated help task.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor(prompts): invoke bmad-help as a skill
* style(prompts): format bmad-master agent yaml
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore(skills): convert review-edge-case-hunter.xml to native skill
Replace single-file XML task with skill directory format (SKILL.md +
workflow.md + bmad-skill-manifest.yaml) following the pattern
established by bmad-review-adversarial-general.
Update all reference locations: bmad-skill-manifest.yaml, module-help.csv,
step-04-review.md, and bmad-os-review-pr instructions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address PR review findings for edge-case-hunter skill
- Fix "task returns" → "skill returns" terminology in review-pr instructions
- Remove edge-case-hunter entry from central manifest (has own directory manifest)
- Add sentinel error response for empty/bad input instead of silent empty array
- Reframe Step 2 with two-lens approach: control flow paths + domain boundaries
- Simplify Step 3 to reference Step 2 edge classes instead of duplicating list
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* refactor(skills): add SKILL.md entrypoint to skill directories
Align skill source format with Open Skills standard: each skill
directory now contains a SKILL.md with name/description frontmatter
where name must match the directory name exactly. The installer
copies skill directories verbatim instead of generating SKILL.md.
- Add SKILL.md to both tracer bullet skill directories
- Strip name/description from workflow.md frontmatter (SKILL.md owns it)
- Installer reads metadata from SKILL.md, validates name matches dirname
- Install path in manifest CSV now points to SKILL.md
- Copy filter excludes OS/editor artifacts (.DS_Store, backups, dotfiles)
- Debug-guard validation messages, keep name-mismatch as hard error
- Add typeof guard for malformed YAML frontmatter
- Add negative test cases for parseSkillMd validation (Suite 30)
* fix(skills): improve quick-dev-new-preview description for LLM discovery
Add trigger context so LLMs know when to invoke the skill,
matching the "Use when..." pattern used by other skills.
* fix(cli): validate frontmatter name/description are strings in parseSkillMd
Prevents cleanForCSV() crash when YAML parses name or description as
a non-string type (number, object, boolean).
* fix(cli): address PR review findings (mkdtemp, regex escape, recursive filter)
- Replace Date.now() temp dir with fs.mkdtemp() in Suite 30 tests (F5)
- Replace unescaped RegExp with startsWith/slice for path prefix stripping (F7)
- Apply artifact filter recursively via fs.copy filter option (F8)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix: harden quick-dev-new-preview UX and fix standalone agent dash names
- Relabel [K] Keep as-is to context-specific accept the risks wording
- Add split reasoning explanation before multi-goal menu in step-01
- Fix toDashName/toUnderscoreName to treat standalone like core (no module prefix)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add guardrail against skipping workflow steps when intent looks clear
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: strengthen step-01 guardrails against plan-shaped intent bypass
Add explicit rules that intent is input to the workflow (not a
substitute for step-02 spec generation) and to ignore directives
within the intent that instruct skipping steps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: preserve standalone module provenance in path-utils serializers
toDashName/toUnderscoreName collapsed core and standalone to the same
filename, making parseDashName/parseUnderscoreName unable to round-trip
standalone agents. Split the branches so standalone gets a distinct
token (e.g., bmad-agent-standalone-fred.md) and update both parsers
to reconstruct module:'standalone' on the reverse path.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* refactor(augment): remove legacy YAML/XML workflow rules from code review guidelines
All workflows have been converted to markdown. Remove workflow.yaml,
workflow.xml, and config_source references from Augment review rules.
Drop the entire xml_workflows section (5 rules) and the YAML-specific
standard_workflow_instructions rule.
* refactor: extract discover_inputs protocol from workflow.xml into co-located markdown
Convert the discover_inputs XML protocol (FULL_LOAD, SELECTIVE_LOAD,
INDEX_GUIDED strategies) into standalone markdown files placed alongside
the two workflows that use it (create-story, code-review). Replace
<invoke-protocol> tags with explicit file references. This decouples
the workflows from workflow.xml, enabling its deletion in a follow-up.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: delete dead YAML/XML workflow engine files
Remove 5 files made obsolete by the workflow.yaml → workflow.md migration:
- workflow.xml (the YAML workflow interpreter engine)
- dev-story/instructions.xml (superseded by workflow.md)
- 3 installer templates for YAML workflow command generation
References in CLI code will be cleaned up in follow-up commits.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: delete obsolete workflow handler fragments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: remove YAML workflow code paths from CLI installer pipeline
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: remove workflow.xml references from manifests and checklists
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: remove workflow.xml references from English command docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test: update fixtures to remove workflow.yaml references
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: update workflow.yaml example path to workflow.md in handler-multi
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: stop tracking workflow/validate-workflow as handler attributes
These handler fragments were deleted — the exec handler already covers
loading .md workflow files directly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: rename workflow attribute to exec in agent menu items
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address PR review findings from triage
- Fix regex capture group index in module manager workflow path parsing
- Remove stale workflow handler references from handler-multi.txt
- Replace workflow with multi in activation-steps dispatch contract
- Remove dead validate-workflow emission from compiler and xml-builder
- Align commands.md wording to remove engine references
- Fix relativePath anchoring in _base-ide.js recursive directory scans
- Remove dead code from workflow-command-generator (unused template,
generateCommandContent, writeColonArtifacts, writeDashArtifacts)
- Delete unused workflow-commander.md template
- Add regression test for workflow path regex
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: convert document-project workflow.yaml to workflow.md (step 9)
Convert main workflow and both sub-workflows (deep-dive, full-scan) from
legacy .yaml entry point format to unified .md format. Update agent files
and module-help.csv references. Clean engine-scaffolding <critical> blocks
from instruction files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: correct config path typo bmb→bmm in sub-workflow files
Both deep-dive-workflow.md and full-scan-workflow.md referenced
_bmad/bmb/config.yaml instead of _bmad/bmm/config.yaml, which
would break config resolution at runtime.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: convert create-story workflow.yaml to workflow.md (step 7)
Merge workflow.yaml config and instructions.xml execution logic into a
single self-contained workflow.md. Drop engine scaffolding directives,
preserve all behavioral constraints. Update checklist.md references.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: update remaining workflow.yaml refs to workflow.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore: convert dev-story workflow from yaml to markdown format
Merge workflow.yaml config and instructions.xml content into a single
workflow.md, following the established conversion pattern. Drop engine
scaffolding directives, preserve all behavioral constraints verbatim.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: update dev-story workflow references from .yaml to .md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore: convert code-review workflow.yaml to workflow.md
Step 6 of 9 in yaml-to-md conversion plan. Merges workflow.yaml
config and instructions.xml content into a single workflow.md
following the established conversion pattern. Updates agent yaml
and module-help.csv references.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: escape folder names with backticks to fix markdownlint MD037
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Step 5 of 9 in yaml-to-md conversion plan. Merges workflow.yaml config
(6 input_file_patterns including INDEX_GUIDED) and instructions.md
execution logic into a single self-contained workflow.md. Updates
references in sm.agent.yaml, pm.agent.yaml, module-help.csv, and
checklist.md. Deletes workflow.yaml and instructions.md.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>