Commit Graph

176 Commits

Author SHA1 Message Date
Alex Verkhovsky b93d0087db fix(skill): clean up bmad-create-product-brief validation findings
Remove name/description from step frontmatter (STEP-06), inline
intra-skill path variables (PATH-04), prefix bare external path
with {project-root} (PATH-03), and normalize template placeholders
to double-curly convention (REF-01).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:49:07 -06:00
Alex Verkhovsky 3678dbe3ff fix: correct relative step paths to resolve from originating file
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>
2026-03-14 14:58:21 -06:00
Alex Verkhovsky 40bb9abd31 fix: use skill: URI for quick-spec in agent menu
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>
2026-03-14 14:58:20 -06:00
Alex Verkhovsky d050711b07 feat(bmm): convert quick-spec workflow to native skill package 2026-03-14 14:58:20 -06:00
Alex Verkhovsky 1457e0b552 fix(bmm): remove workflow metadata from generate-project-context workflow
Move name/description to SKILL.md; workflow.md carries only execution content.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 14:55:16 -06:00
Alex Verkhovsky e7f87af938 convert generate-project-context to native skill packaging 2026-03-14 14:55:16 -06:00
Alex Verkhovsky 7ea11c2db9
Merge branch 'main' into convert-document-project-skill 2026-03-14 14:52:50 -06:00
Alex Verkhovsky 76d5db5395
Merge branch 'main' into convert-technical-research-skill 2026-03-14 14:25:04 -06:00
Alex Verkhovsky c9658e0039
Merge branch 'main' into convert-technical-research-skill 2026-03-14 14:24:40 -06:00
Alex Verkhovsky 717e013f55 refactor(skills): convert technical research to native skill
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.
2026-03-14 14:22:27 -06:00
Alex Verkhovsky aecead265f chore: remove sprint-status workflow metadata 2026-03-14 14:19:13 -06:00
Alex Verkhovsky a64e4de621 chore: convert sprint-status workflow to native skill 2026-03-14 14:19:13 -06:00
Alex Verkhovsky cc2a4142d4 chore(bmm): remove workflow metadata from document-project skill
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.
2026-03-14 14:18:51 -06:00
Alex Verkhovsky 6ce3801dff chore(bmm): convert document-project workflow to native skill package 2026-03-14 14:18:51 -06:00
Alex Verkhovsky a62e7a3c25
Convert qa-generate-e2e-tests workflow to native skill packaging (#1951)
* 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>
2026-03-14 13:38:42 -06:00
Alex Verkhovsky 74b53e13a7
Convert sprint-planning workflow to native skill packaging (#1944)
* chore: convert sprint-planning workflow to native skill

* fix(skills): normalize sprint planning native skill refs
2026-03-14 11:27:21 -06:00
Alex Verkhovsky 6a98b94949
Convert correct-course workflow to native skill packaging (#1942)
* 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>
2026-03-14 11:15:09 -06:00
Alex Verkhovsky 8dbc9b375d
Convert retrospective workflow to native skill packaging (#1943)
* chore: convert retrospective workflow to native skill

* fix(skills): normalize retrospective metadata
2026-03-14 11:14:40 -06:00
Alex Verkhovsky 6cb0cc40fc
refactor(skills): convert create-epics-and-stories workflow to native skill (#1937)
* 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>
2026-03-14 11:02:55 -06:00
Alex Verkhovsky bc8d239834
fix(create-story): normalize native skill metadata refs (#1975) 2026-03-14 11:01:02 -06:00
Alex Verkhovsky e97aecda28
fix: enforce document_output_language in planning workflow step files (#1977)
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
2026-03-14 10:40:37 -06:00
Alex Verkhovsky ac769b230f
Convert code-review workflow to native skill packaging (#1941)
* chore: convert code-review workflow to native skill

* fix: normalize code-review native skill references
2026-03-14 06:03:45 -06:00
Alex Verkhovsky 9e7aeec385
Convert check-implementation-readiness to native skill package (#1938)
* convert check-implementation-readiness to native skill package

* fix(skills): normalize implementation-readiness metadata
2026-03-14 06:02:51 -06:00
Alex Verkhovsky 5f92146a29
refactor(skills): convert create-architecture workflow to native skill (#1936)
* refactor(skills): convert create-architecture workflow to native skill

* fix(skills): remove workflow metadata from create-architecture

* fix(skills): normalize create-architecture step links

* fix(agents): use skill ref for create-architecture
2026-03-14 00:14:13 -06:00
Alex Verkhovsky 79a829b591
refactor(bmm): convert create-ux-design workflow to native skill (#1934)
* refactor(bmm): convert create-ux-design workflow to native skill

* fix(bmm): normalize create-ux-design skill metadata and links

* fix(bmm): normalize create-ux-design skill step links

* fix(bmm): invoke create-ux-design via skill id
2026-03-13 15:43:55 -06:00
Alex Verkhovsky 80671650c2
refactor(bmm): convert create-product-brief to native skill package (#1933)
* refactor(bmm): convert create-product-brief to native skill package

* fix(skills): normalize create-product-brief metadata refs

* fix(skills): normalize create-product-brief step links
2026-03-13 09:15:23 -06:00
Alex Verkhovsky 25d24d02c4
convert dev-story workflow to native skill package (#1940)
* convert dev-story workflow to native skill package

* align dev-story skill references with upstream patterns

* remove obsolete skill frontmatter from dev-story workflow
2026-03-13 09:12:01 -06:00
Alex Verkhovsky 037c34b897
refactor(bmm): convert domain research workflow to native skill (#1928)
* refactor(bmm): convert domain research workflow to native skill

* fix(bmm): correct domain-research step relative paths

* fix domain research skill metadata refs
2026-03-13 06:05:28 -06:00
Alex Verkhovsky 75867b0bea
chore(bmm): convert quick-dev workflow to native skill (#1948)
* chore(bmm): convert quick-dev workflow to native skill package

* fix(bmm): normalize quick-dev skill references

* fix(bmm): remove duplicate quick-dev workflow metadata

* fix(bmm): inline quick-dev skill handoff references
2026-03-13 00:11:14 -06:00
Alex Verkhovsky d39fcd5938
Convert create-story workflow to native skill package (#1939)
* convert create-story workflow to native skill package

* fix(create-story): update converted workflow path refs

* fix(sm-agent): use skill reference for create-story
2026-03-12 22:58:53 -06:00
Alex Verkhovsky 997c2e3655
refactor(skills): convert advanced-elicitation.xml to native skill (#1925)
* refactor(skills): convert advanced-elicitation.xml to native skill

* fix(skills): clarify indirect advanced elicitation invocation

* fix(architecture): use native skill invocation wording

* fix(validate-prd): remove unused elicitation reference

* fix(quick-spec): clarify handler reference comment

* fix(skills): simplify advanced elicitation metadata
2026-03-12 22:34:47 -06:00
Alex Verkhovsky a48fd4aae8
refactor(skills): convert brainstorming to native skill (#1924)
* refactor(skills): convert brainstorming to native skill

* fix(installer): skip workflow metadata for native skills

* revert: restore workflow metadata handling

* refactor(skills): remove duplicate party-mode workflow metadata

* fix(agents): invoke native skills via skill refs
2026-03-12 16:49:35 -06:00
Alex Verkhovsky 861716fbe3
fix: address PR review findings from party-mode skill conversion (#1919)
- 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>
2026-03-12 00:37:30 -06:00
Alex Verkhovsky 5a5ade333a
refactor(skills): convert party-mode to native skill directory (#1906)
- 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>
2026-03-11 22:48:29 -05:00
Nikolas Hor 5e1149dc14
fix: consume UX Design Specification as first-class input in create-epics-and-stories (#1909)
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>
2026-03-11 22:39:31 -05:00
Nikolas Hor 9cd362d2d8
fix: remove mandatory minimum issue count from code review workflow (#1913)
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.
2026-03-11 22:33:50 -05:00
Nikolas Hor e64cef80b6
fix: add brainstorming reconciliation step to PRD polish workflow (#1914)
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.
2026-03-11 22:32:00 -05:00
Alex Verkhovsky 874ae40bb2
fix(quick-dev): correct commit ordering, add loopback directive, fix typo (#1876)
* 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>
2026-03-11 11:35:04 -06:00
Alex Verkhovsky 30a98633cd
revert: restore QA checklist wording (#1888) 2026-03-10 05:54:07 -06:00
Alex Verkhovsky 10f02a8f15
docs: tweak QA checklist wording (#1882) 2026-03-09 22:30:21 -06:00
Alex Verkhovsky 063aa58b8d
chore(core): convert help.md to native skill directory (#1874)
* 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>
2026-03-09 19:02:27 -06:00
Alex Verkhovsky 956c43ff62
chore(skills): convert review-edge-case-hunter.xml to native skill (#1871)
* 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>
2026-03-09 08:20:16 -06:00
Alex Verkhovsky 1b3c3c5013
refactor(skills): add SKILL.md entrypoint to skill directories (#1868)
* 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>
2026-03-09 02:08:29 -06:00
Alex Verkhovsky 066bfe32e9
fix: harden quick-dev-new-preview and fix standalone agent dash names (#1867)
* 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>
2026-03-09 02:06:35 -06:00
Alex Verkhovsky ee25fcca6f
refactor: remove legacy YAML/XML workflow engine plumbing (#1864)
* 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>
2026-03-08 18:02:57 -06:00
Alex Verkhovsky 4c470d9948
refactor: convert document-project workflow.yaml to workflow.md (step 9) (#1863)
* 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>
2026-03-08 12:30:12 -06:00
Alex Verkhovsky 0782e291fd
refactor: convert create-story workflow.yaml to workflow.md (step 7) (#1862)
* 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>
2026-03-08 12:15:27 -06:00
Alex Verkhovsky 5c9227340e
chore: convert dev-story workflow from yaml to markdown (#1861)
* 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>
2026-03-08 12:08:49 -06:00
Alex Verkhovsky 350a1eaa47
chore: convert code-review workflow.yaml to workflow.md (#1860)
* 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>
2026-03-08 11:19:17 -06:00
Alex Verkhovsky c9ebe1b417
chore(correct-course): convert workflow.yaml to unified workflow.md (#1858)
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>
2026-03-08 07:20:03 -06:00
Alex Verkhovsky 835d6d85a5
feat(tasks): convert review-adversarial-general XML task to native skill (#1857)
* feat(tasks): convert review-adversarial-general from XML task to native skill

Convert the simplest core task (review-adversarial-general.xml) from
type:task XML format to type:skill markdown format. This establishes
the pattern for converting remaining XML tasks to self-contained skills.

- Convert XML task to workflow.md with frontmatter, role, execution steps
- Add type:skill manifest for verbatim directory copying
- Extend manifest-generator getTasksFromDir to recurse into subdirectories
  and detect type:skill entries (mirrors existing workflow skill detection)
- Update cross-references in quick-dev-new-preview, quick-dev, quick-spec
- Update module-help.csv to use skill: prefix

* refactor: replace file path references with skill name invocations

Consumers of review-adversarial-general now invoke by skill name
instead of loading via _bmad/ file path. Removes the indirection
variable from frontmatter and inlines the skill name directly.

* refactor(installer): scan tasks/ for type:skill entries

Teach collectWorkflows to also scan the tasks/ subdirectory for
type:skill entries. Skills can live anywhere in the source tree —
the workflow scanner just needs to look in more places.

* fix: update stale task terminology to skill after format conversion

Address review findings from PR #1857: replace remaining "task"
references with "skill" in workflow steps and test documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 06:52:55 -06:00
Alex Verkhovsky dc8293e5df
chore(sprint-planning): convert workflow.yaml to unified workflow.md (#1856)
* chore(sprint-planning): convert workflow.yaml + instructions.md to unified workflow.md

Step 4 of 9 in the yaml-to-md conversion plan. Merges config
and instructions into a single self-contained workflow.md,
dropping engine scaffolding (critical tags, invoke-protocol).

* fix(sprint-planning): address review findings from PR triage

- Update stale workflow.yaml references to workflow.md in sm.agent.yaml and module-help.csv
- Widen epics_pattern from epic*.md to *epic*.md to match documented input files
- Fix placeholder mismatch: epics_in_progress_count → in_progress_count

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 04:51:50 -06:00
Alex Verkhovsky 7f1a55ca8c
feat(skills): add type:skill manifest for verbatim directory copying (#1851)
* feat(skills): add type:skill manifest for verbatim skill directory copying

Introduce `type: skill` in bmad-skill-manifest.yaml to signal the
installer to copy entire skill directories verbatim into IDE skill
directories, replacing the launcher-based approach.

Changes:
- skill-manifest.js: fix single-entry detection for type-only manifests,
  add getArtifactType export
- manifest-generator.js: collect type:skill entries separately, write
  skill-manifest.csv, derive canonicalId from directory name
- _config-driven.js: add installVerbatimSkills with YAML-safe SKILL.md
  generation, stale file cleanup, and warning on parse failures
- Rename quick-dev-new-preview to bmad-quick-dev-new-preview so
  directory name is the canonical ID
- Update workflow.md installed_path to reference IDE skill base directory

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: replace {installed_path} with relative paths in quick-dev skill

Skills resolve paths relative to the skill root directory per the
open agent standard, so the installed_path variable is unnecessary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(skills): add install_to_bmad flag and skill: help catalog reference

Add install_to_bmad flag to skill manifests (default true) enabling
skills to opt out of _bmad/ copy while retaining .claude/skills/
installation. Support skill:<canonicalId> references in module-help.csv
workflow-file column. Fix stale quick-dev-new-preview directory
references in agent YAML and help catalog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: add install_to_bmad design contract tests

Unit tests against getInstallToBmad and loadSkillManifest that nail
down the 4 core design decisions for the install_to_bmad flag.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: reset skills array between runs and allow skill-only targets

- Reset this.skills and this.files in ManifestGenerator to prevent stale
  data when instance is reused across multiple manifest runs
- Allow targets with empty artifact_types to still install verbatim
  skills by checking skill_format before short-circuiting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve broken file references in quick-dev-new-preview workflow

- Fix step-02-plan.md templateFile path (./tech-spec-template.md → ../tech-spec-template.md)
- Teach validate-file-refs.js to skip skill: prefixed references in CSV

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:23:26 -07:00
Alex Verkhovsky 44ba15f9a1
feat: add skill manifest for advanced-elicitation workflow (#1840)
* feat: add skill manifest for advanced-elicitation workflow

Register advanced-elicitation as an invocable skill so it can be
triggered as a standalone slash command, matching the pattern used
by party-mode and brainstorming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: convert advanced-elicitation from XML to markdown workflow

The installer only discovers workflow.yaml and workflow.md files,
so workflow.xml was never registered. Convert to workflow.md with
YAML frontmatter while preserving all elicitation logic verbatim.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update all references from workflow.xml to workflow.md

Update 67 references across 50 files to point to the new markdown
workflow. Also fix incorrect methods.csv filename and bare
advanced-elicitation.xml reference in generate-project-context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-03-07 18:51:05 -07:00
Alex Verkhovsky ec973ebcf3
refactor: convert workflow.yaml to workflow.md (steps 1-3) (#1842)
* refactor(sprint-status): convert workflow.yaml + instructions.md to single workflow.md

Merge workflow config and instruction content into a unified workflow.md
with YAML frontmatter, following the established convention for converted
workflows. Update module-help.csv reference accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(sprint-status): restore no-time-estimates rule dropped during conversion

The <critical> preamble removal incorrectly classified this behavioral
rule as boilerplate. It is an actual output constraint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: add comprehensive workflow conversion test results

- 14 test fixtures covering data and validate modes
- Tested across Opus, Sonnet, and Haiku models
- OLD format (yaml+md) vs NEW format (workflow.md)
- Confirms zero regressions in conversion
- Includes reproduction instructions for future sessions

* fix(sprint-status): consolidate no-time-estimates into role line

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(qa-generate-e2e-tests): convert workflow.yaml + instructions.md to single workflow.md

Task 2 of yaml-to-md conversion plan. Merges config variables into
INITIALIZATION section, inlines instructions into EXECUTION section.
Drops non-consumed yaml keys (required_tools, tags, execution_hints).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(retrospective): convert workflow.yaml + instructions.md to single workflow.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update workflow.yaml references to workflow.md for converted workflows

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: remove test results file from version control

SPRINT_STATUS_CONVERSION_TEST_RESULTS.md contains hardcoded local
filesystem paths and is a session-specific test artifact. Added to
.bare/info/exclude to keep it ignored across all worktrees.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 16:11:34 -07:00
Alex Verkhovsky 5aab72caba
feat(skills): migrate all remaining platforms to native skills format (#1841)
* feat(skills): migrate Roo Code installer to native skills format

Move Roo Code from legacy `.roo/commands/` flat files to native
`.roo/skills/{skill-name}/SKILL.md` directory output. Verified
skill discovery in Roo Code v3.51 with 43 skills installed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(skills): add native skills tests for Claude Code, Codex, and Cursor

Add dedicated test suites covering config validation, fresh install,
legacy cleanup, and ancestor conflict detection for Claude Code, Codex
CLI, and Cursor. Updates migration checklist to reflect verified status.

84 assertions now pass (up from 50).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(skills): add Roo Code reinstall/upgrade test

Verify that running Roo setup over existing skills output succeeds
and preserves SKILL.md output. Checks off the last Roo checklist item.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(skills): migrate GitHub Copilot to config-driven native skills

Replace 699-line custom installer with config-driven skill_format.
Output moves from .github/agents/ + .github/prompts/ to
.github/skills/{skill-name}/SKILL.md. Legacy cleanup strips BMAD
markers from copilot-instructions.md and removes old directories.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update migration checklist with Copilot and Roo verified results

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(skills): migrate Cline to config-driven native skills

Move Cline installer from .clinerules/workflows to .cline/skills with
SKILL.md directory output. Add legacy cleanup and 9 test assertions.

* feat(skills): migrate CodeBuddy to config-driven native skills

Move CodeBuddy installer from .codebuddy/commands to .codebuddy/skills
with SKILL.md directory output. Add legacy cleanup and 9 test assertions.

* feat(skills): migrate Crush to config-driven native skills

Move Crush installer from .crush/commands to .crush/skills with
SKILL.md directory output. Add legacy cleanup and 9 test assertions.

* feat(skills): migrate Trae to config-driven native skills

Move Trae installer from .trae/rules to .trae/skills with SKILL.md
directory output. Add legacy cleanup and 9 test assertions.

* feat(skills): migrate KiloCoder to config-driven native skills

Replace 269-line custom kilo.js installer with config-driven entry in
platform-codes.yaml targeting .kilocode/skills/ with skill_format: true.

- Add installer config: target_dir, skill_format, template_type, legacy_targets
- Add cleanupKiloModes() to strip BMAD modes from .kilocodemodes on cleanup
- Remove kilo.js from manager.js customFiles and Kilo-specific result handling
- Delete tools/cli/installers/lib/ide/kilo.js
- Add test Suite 22: 11 assertions (config, install, legacy cleanup, modes, reinstall)
- Update migration checklist with verified results

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(skills): migrate Gemini CLI to config-driven native skills

Replace TOML-based .gemini/commands output with native SKILL.md output
in .gemini/skills/. Gemini CLI confirms native skills support per
geminicli.com/docs/cli/skills/.

- Update platform-codes.yaml: target_dir, skill_format, legacy_targets
- Add test Suite 23: 9 assertions (config, install, legacy, reinstall)
- Add Gemini CLI section to migration checklist

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(skills): migrate iFlow, QwenCoder, and Rovo Dev to native skills

Complete the native skills migration for all remaining platforms:

- iFlow: .iflow/commands → .iflow/skills (config change)
- QwenCoder: .qwen/commands → .qwen/skills (config change)
- Rovo Dev: replace 257-line custom rovodev.js with config-driven
  .rovodev/skills, add cleanupRovoDevPrompts() for prompts.yml cleanup

All platforms now use config-driven native skills. No custom installer
files remain. Manager.js customFiles array is now empty.

- Add test suites 24-26: 20 new assertions (173 total)
- Update migration checklist: all summary gates passed
- Delete tools/cli/installers/lib/ide/rovodev.js

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(installer): preserve bmad-os-* skills during cleanup

The cleanupTarget method removed all entries starting with "bmad" from
IDE skills directories, which would also wipe version-controlled
bmad-os-* skills from the BMAD-METHOD repo. Add exclusion for the
bmad-os- prefix so those skills survive reinstalls.

* docs: flag all unverified platforms for manual IDE testing

Add NEEDS MANUAL IDE VERIFICATION to KiloCoder, Gemini CLI, iFlow,
QwenCoder, and Rovo Dev checklists. CodeBuddy, Crush, and Trae already
had the flag.

* fix(installer): suspend Kilo Code and add verified Gemini/Crush results

Kilo Code does not support the Agent Skills standard — the migration
from modes+workflows to skills was based on a false fork assumption.

- Add suspended field to platform-codes.yaml, hiding Kilo from the IDE
  picker and blocking setup with a clear message
- Fail the installer early (before writing _bmad/) if all selected IDEs
  are suspended, protecting existing installations from being corrupted
- Still clean up legacy Kilo artifacts (.kilocodemodes, .kilocode/workflows)
  when users switch to a different IDE
- Mark Crush and Gemini CLI as manually verified (both work end-to-end)
- Replace Suite 22 install tests with suspended-behavior tests (7 assertions)

* docs: update KiloCoder checklist to reflect suspended status

* fix(skills): add canonicalIds for BMM research and PRD workflows

Drop the bmm module prefix from 6 workflow skill names so they
install as bmad-create-prd, bmad-domain-research, etc. instead of
bmad-bmm-create-prd, bmad-bmm-domain-research, etc.

* fix(installer): address PR review findings from automated reviewers

Triage of 18 findings from Augment and CodeRabbit reviews on PR #1841:

Source code fixes:
- Exclude bmad-os-* from findAncestorConflict to match cleanupTarget
- Wrap cleanupCopilotInstructions in try/catch (best-effort, not fatal)
- Wrap suspended-platform cleanup in try/catch (failure boundary)
- Clean up temp backup dirs in catch block when install aborts
- Normalize IDE keys to lowercase before suspended lookup
- Delete dead loadCustomInstallerFiles method and stale references
- Rename "Roo Cline" to "Roo Code" in both platform-codes.yaml files
- Fix Gemini CLI package name (@google/gemini-cli, not @anthropic-ai)

Test improvements:
- Add name/frontmatter invariant check to 6 missing platform suites
- Assert stale bmad-architect skill is removed after cleanup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:30:49 -07:00
Alex Verkhovsky 434e7efab6
fix: add missing skill manifests for research and PRD workflows (#1839)
These manifests were missed during the all-is-skills migration (#1834),
leaving 6 workflows undiscoverable by the native skills installer.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 21:59:27 -07:00
Alex Verkhovsky 0d3b317598
refactor: all-is-skills - Convert BMAD to skills-based architecture (#1834)
* feat(skills): add canonical bmad- naming via skill manifests

Add bmad-skill-manifest.yaml sidecars to all 38 capabilities (tasks,
agents, workflows) declaring canonicalId as the single source of truth
for skill names. Update Claude Code and Codex installers to prefer
canonicalId over path-derived names, with graceful fallback.

- 24 manifest files covering 38 capabilities
- New shared skill-manifest.js utility for manifest loading
- resolveSkillName() in path-utils.js bridges manifest → installer
- All command generators propagate canonicalId through CSV manifests
- Drops bmm module prefix from all user-facing skill names

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(skills): claude-code installer outputs .claude/skills/<name>/SKILL.md

Refactor the config-driven installer to emit Agent Skills Open Standard
format for Claude Code: directory-per-skill with SKILL.md entrypoint,
unquoted YAML frontmatter, and full canonical names.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(installer): migrate codex to config-driven pipeline

Delete the custom codex.js installer (441 lines) and route Codex
through the config-driven pipeline via platform-codes.yaml. This
fixes 7 task/tool descriptions that were generic due to bypassing
manifests, and eliminates duplicate transformToSkillFormat code.

Key changes:
- Add codex entry to platform-codes.yaml with skill_format + legacy_targets
- Remove codex from custom installer list in manager.js
- Add installCustomAgentLauncher() to config-driven for custom agent support
- Add detect() override for skill_format platforms (bmad-prefix check)
- Set configDir from target_dir for base-class detect() compatibility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(installer): guard codex skill installs in nested directories

* fix(installer): warn on stale global legacy skill dirs

* feat(installer): migrate cursor to native skills

* Migrate Windsurf installer to native skills

* Clarify Windsurf skill invocation in checklist

* feat(installer): migrate kiro to native skills

* docs: record kiro skill visibility verification

* Migrate Antigravity installer to native skills

* Document Antigravity ancestor skill verification

* Synchronize native skills migration checklist

* Migrate Auggie installer to native skills

* Migrate OpenCode installer to native skills

* Document live skill verification for Auggie and OpenCode

* fix(test): replace _bmad filesystem dependency with self-contained fixture

The installation component tests walked up the filesystem looking for a
pre-installed _bmad directory, which exists locally but not in CI. Replace
findInstalledBmadDir() with createTestBmadFixture() that creates a minimal
temp directory with fake compiled agents, making tests fully self-contained.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-03-06 21:39:19 -06:00
Chandan Veerabhadrappa 09ce8559f2
fix: use last_updated instead of generated for sprint-status staleness check (#1836)
The staleness warning in sprint-status always fired after 7 days because
it checked the 'generated' timestamp, which is only set once during
sprint-planning. Other workflows (dev-story, create-story, code-review,
retrospective) update statuses but never touched 'generated'.

This adds a 'last_updated' field that is:
- Set initially alongside 'generated' during sprint-planning
- Bumped to current date by every workflow that modifies sprint-status.yaml
- Used by the staleness check (with fallback to 'generated' for backward
  compatibility)

Fixes bmad-code-org/BMAD-METHOD#1820

Co-authored-by: Oz <oz-agent@warp.dev>
2026-03-06 20:25:59 -06:00
Alex Verkhovsky e3ffdf9c90
fix(create-story): replace missing validate-workflow invoke with explicit checklist action (#1837)
Co-authored-by: Brian <bmadcode@gmail.com>
2026-03-06 20:24:13 -06:00
Alex Verkhovsky d812205470
fix(quick-flow): add input trust guardrail to step 1 clarify-and-route (#1825)
Prevent the agent from treating detailed, plan-like input as a validated
plan and short-circuiting the workflow. The new rule ensures the full
workflow is followed regardless of input specificity.
2026-03-06 20:22:56 -06:00
Alex Verkhovsky 35a7f101dd
feat(quick-flow): add quick-dev2 unified workflow (#1807)
* feat(quick-flow): add quick-dev2 unified workflow

Add the quick-dev2 workflow that unifies clarify, plan, implement,
review, and present into a single flow. Register it in the agent
menu, module-help catalog, and test fixtures.

* fix(quick-flow): rename QD2 trigger to QQ for schema compliance

COMPOUND_TRIGGER_PATTERN only allows uppercase letters in shortcuts.
Rename to QQ so quick-dev2 passes agent schema validation.

* fix(quick-flow): address PR review findings for quick-dev2

- step-04-review: fix copy-paste fallback text to say "perform all
  three reviews inline sequentially" instead of "implement directly"
- workflow.md: add missing planning_artifacts to initialization list,
  matching quick-spec and quick-dev siblings
- quick-flow-solo-dev.agent.yaml: change QD and QQ menu entries from
  workflow: to exec: for .md files, matching the exec-for-md convention

* fix(quick-flow): use human-in-the-loop fallback for review without subagents

Sequential inline reviews in the same context suffer from anchoring
bias and context blowout. Instead, generate separate review prompt
files and ask the human to run each in a separate session.

* refactor(quick-flow): rename quick-dev2 to quick-dev-new-preview

Rename directory, update all references in agent menu, module-help,
and workflow internals.
2026-03-02 19:36:14 -06:00
Alex Verkhovsky d43663e3af
fix(workflows): remove ambiguous with-argument from help task chaining (#1740)
* fix(workflows): remove ambiguous with-argument from help task chaining

The "with argument" clause in 7 workflow completion steps caused LLMs
to interpret "Read fully and follow: help.md with argument X" as a
skill/function invocation rather than a file-read instruction. Drop the
clause entirely — help.md already infers the completed workflow from
the preceding "[Workflow] complete." text in conversation context.

Closes #1637

* fix(workflows): correct broken qa/automate file references

The QA workflow was renamed to qa-generate-e2e-tests but three files
still referenced the old qa/automate path, breaking CI file-ref
validation.

* fix(test): update QA agent test to match renamed workflow path

The workflow path changed from qa/automate to qa-generate-e2e-tests
but the installation component test was not updated to match.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-23 15:48:52 -06:00
Brian Madison 0d858cbc5b standardize all workflow descriptions to use proper quotes to not break command or skilll front matter 2026-02-23 15:31:03 -06:00
Brian Madison 476082fda7 refactor(workflows): standardize workflow descriptions for skill generation
- Standardize all workflow descriptions to follow format: [short description]. Use when the user says 'explicit action phrase' or 'another phrase'
- Remove verbose descriptions in favor of concise summaries with explicit trigger phrases
- Use max 2 phrases per workflow to minimize context and false positives
- Phrases are explicit actions (e.g., "lets create", "run X") not questions
- No slash commands in descriptions - users invoke via /name directly
- Rename qa/automate to qa-generate-e2e-tests for clarity
- Update various core tasks and workflows
2026-02-22 12:21:00 -06:00
Alex Verkhovsky 276fcb1042
fix(workflows): correct broken step refs in create-architecture (#1734)
Update 9 files that referenced the old path
bmm/workflows/3-solutioning/architecture/steps/ to the correct
bmm/workflows/3-solutioning/create-architecture/steps/ after the
directory was renamed.

Fixes #1625

Co-authored-by: Junie <junie@jetbrains.com>
2026-02-22 10:45:38 -06:00
Daniel Bates eeb773c33d
fix: correct step file path in check-implementation-readiness workflow (#1716)
Fixes #1615

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-20 20:34:34 -06:00
Alex Verkhovsky fb05848dd3
fix: correct 3 broken file refs and enforce validator in CI (#1717)
- create-architecture/workflow.md: fix installed_path dir name
  from 'architecture' to 'create-architecture'
- create-story/checklist.md: fix 2 refs from validate-workflow.xml
  to workflow.xml (file does not exist with validate- prefix)
- package.json: add --strict to validate:refs so broken references
  fail CI instead of logging warnings and exiting 0

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-20 20:32:34 -06:00
Alex Verkhovsky d0ecfc0dd9
fix: standardize all relative step file refs to {project-root}/_bmad/ paths (#1722)
* fix: replace bare _bmad/ backtick refs with {project-root}/_bmad/

Closes #1718 (partial — bare _bmad/ category only)

* fix: replace relative step refs with {project-root}/_bmad/ paths

Converts all ./step-XX.md, step-XX.md, and steps/step-XX.md
backtick references in new-format workflow and step files to
full {project-root}/_bmad/... paths.

Refs #1718

* fix: correct create-architecture installed path and remaining relative refs

- replace create-architecture with architecture in all step path refs
  to match workflow.md installed_path definition
- convert ../data/ relative refs in create-prd step-05/06/11 frontmatter
- fix stale nextStepFile example in create-prd step-01b-continue
- fix bare step-01-init.md ref in create-architecture step-01b-continue

Fixes #1718

* fix: convert remaining relative data refs and fix stale examples in continue steps

* fix: inline quick-spec step navigation paths, remove frontmatter tokens

Replace {nextStepFile} and {skipToStepFile} frontmatter tokens with
explicit {project-root}/_bmad/ paths in all quick-spec step files.
These are LLM prompts, not config files -- inline paths are clearer
and carry semantic information without indirection. Also standardize
wording from "Load" to "Read fully and follow:" for consistency.

Also add .junie/ to .prettierignore to fix unrelated CI noise.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-20 20:17:51 -06:00
Alex Verkhovsky a135622429
fix: correct code fence imbalance in step-03-starter.md (#1724)
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.
2026-02-20 20:17:09 -06:00
H Paul Hammann 3dd37bc94d
Added language to go back and replace [Research overview and methodology will be appended here] (#1703)
Co-authored-by: H Paul Hammann <git@hammann.com>
2026-02-18 18:46:36 -06:00
Alex Verkhovsky 454b19a125
feat(prd): add missing steps 2b (vision) and 2c (executive summary) (#1675)
The PRD workflow step-02 was refactored to be discovery-only with
forward references to steps 2b and 2c, but those files were never
created. This left a gap where the workflow jumped from classification
directly to success criteria with no executive summary generation.

- Add step-02b-vision.md: collaborative vision/differentiator discovery
- Add step-02c-executive-summary.md: generate and append exec summary
- Update step-02 nextStepFile to chain through 02b instead of skipping to 03
2026-02-16 13:46:26 -06:00
Brian Madison 98c1fa8282 document project remove legacy workflow init and workflow- status function calls 2026-02-14 15:16:51 -06:00
Pablo LION 5b79330f72
fix: fix typos in tech-writer and ux-designer agent definitions (#1599)
- tech-writer: "1000s works" → "1000s of words" (idiom typo)
- ux-designer: "PRovides" → "Provides", "that" → "than" (typos in description)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 12:09:12 -06:00
Alex Verkhovsky b4d118c897
fix: remove output_folder/story_dir aliases, flatten variables sections (#1608)
* fix: remove output_folder/story_dir aliases, flatten variables sections (#1602)

Drop pointless alias variables (output_folder, story_dir, story_directory)
from Phase 4, Quick Flow, and QA workflows. Replace all references with
the canonical {implementation_artifacts} or {planning_artifacts} variables.

Also flatten unnecessary `variables:` YAML nesting in all affected
workflow.yaml files — the workflow engine treats all keys as top-level,
so the nesting added complexity with no semantic value.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add missing config declarations, remove remaining aliases and dead variables

- Add missing document_output_language and user_skill_level to create-story
  (referenced in instructions.xml but never declared)
- Remove retrospectives_folder alias, replace with canonical implementation_artifacts
- Remove unused sprint_status and duplicate validation alias from correct-course
- Remove unused date, planning_artifacts, tracking_system from sprint-status

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address PR review findings and rename shadowed output_folder variable

- Fix single/double brace mismatch for {implementation_artifacts} in
  create-story instructions.xml (F1)
- Remove escaped asterisks in glob patterns in retrospective
  instructions.md (F2)
- Eliminate redundant {config_source} re-resolution for story_location
  in sprint-planning workflow.yaml (F5)
- Add explicit instruction to discover previous_story_num by scanning
  artifacts instead of leaving it undefined (#7)
- Rename output_folder to project_knowledge in document-project
  workflows to stop shadowing the canonical core config variable (#13)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use plural retrospectives in previous retro search instructions

The glob pattern can match multiple retrospective files for the same
epic (e.g., partial mid-sprint retro and full completion retro). Use
plural "retrospectives" to make clear the LLM should load all matches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:59:18 -06:00
Alex Verkhovsky 3e35057b89
fix: auto-discover PRD in validate-prd instead of always asking (#1619)
When only one PRD exists in planning_artifacts, use it automatically
instead of prompting the user for its path. Still asks when multiple
PRDs are found or falls back to manual input when none are discovered.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 18:02:23 -06:00
Alex Verkhovsky 0659aac02c
fix(bmm): add missing project-context references to workflows (#1597)
* fix(bmm): add missing project-context references to workflows

correct-course, retrospective, and sprint-status workflows were missing
project_context entirely. quick-spec referenced it in step files but not
in the initialization sequence.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(bmm): add explicit project-context load instructions to workflows

Add Load project_context if exists action to instruction files for
correct-course, retrospective, sprint-status, and sprint-planning.
The workflow.yaml declarations alone do not cause the file to be loaded;
the instruction files must explicitly reference it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 09:50:00 -06:00
jheyworth 36c21dbada
feat: custom GitHub Copilot installer handler (#1606)
* feat: add custom GitHub Copilot installer handler

Adds a dedicated GitHub Copilot handler that generates:
- Agent files with .agent.md extension and enriched descriptions
- Prompt files (.prompt.md) for workflows, tasks, and agent activators
- copilot-instructions.md with project config and agent reference table

Replaces the generic config-driven handler with a custom one that
properly supports Copilot's agent/prompt file conventions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: escape YAML descriptions and preserve user copilot-instructions

- Escape single quotes in YAML frontmatter descriptions across all prompt
  generators (createWorkflowPromptContent, createTechWriterPromptContent,
  createAgentActivatorPromptContent) to match createAgentContent behavior
- Make copilot-instructions.md non-destructive using BMAD markers
  (<!-- BMAD:START --> / <!-- BMAD:END -->) to preserve user content
- On cleanup, only remove content between markers; skip files without markers
- Back up existing unmarked files before overwriting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add error handling for CSV read/parse in loadAgentManifest and loadBmadHelp

Wrap file read and csv.parse in try/catch blocks so malformed or
unreadable CSV files gracefully degrade instead of aborting setup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use specific detection paths instead of .github configDir

Set configDir to null and use detectionPaths with
.github/copilot-instructions.md and .github/agents/ so the base
detect() doesn't false-positive on every GitHub repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add comments explaining hardcoded bmm/config.yaml in prompts

Clarify that bmm/config.yaml is safe to hardcode in generated prompt
content because these prompts are only created when bmm module data
(bmad-help.csv, agent artifacts) exists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: guard against missing workflow-file in bmad-help.csv entries

Skip entries where workflow-file is empty/undefined to prevent
workflowFile.endsWith() from throwing during prompt generation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: guard escapeYamlSingleQuote against undefined input

Default to empty string when value is undefined/null to prevent
replaceAll from throwing on missing CSV fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: preserve customised tool permissions across reinstalls

Before this change, reinstalling would overwrite any user-customised
tools arrays in agent and prompt frontmatter with the hardcoded default.

Now the installer reads existing tool permissions from .agent.md and
.prompt.md files before cleanup, and re-applies them to the regenerated
files. Falls back to the default ['read', 'edit', 'search', 'execute']
for new files or files without prior customisation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: prevent cleanup from stripping copilot-instructions.md markers before generation

The cleanup() method was removing the BMAD marker section from
copilot-instructions.md, leaving user content without markers.
generateCopilotInstructions() then treated the markerless file as
legacy, backed it up, and overwrote user content.

Fix: remove the copilot-instructions.md block from cleanup() entirely.
generateCopilotInstructions() already handles marker-based replacement
in a single read-modify-write pass that correctly preserves user content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update manager.js comments to include github-copilot.js

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: make agent capabilities data-driven via agent YAML metadata

Replace the hardcoded getAgentCapabilities() map with a data-driven
pipeline. Capabilities are now defined in each .agent.yaml source file,
compiled into the XML output, extracted into agent-manifest.csv by the
manifest generator, and read by the GitHub Copilot handler at install
time. New agents automatically get their capabilities without code
changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use this.bmadFolderName instead of hardcoded _bmad in template paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 13:41:11 -06:00
Brian Madison c563cef0c2 refactor: replace module installer scripts with declarative directories config
Removes the security-risky _module-installer pattern (code execution at
install time) in favor of a declarative `directories` key in module.yaml.
The main installer now handles directory creation centrally based on this
config, eliminating per-module installer.js scripts and their CJS/ESM issues.

Changes:
- Delete src/bmm/_module-installer/installer.js
- Delete src/core/_module-installer/installer.js
- Add `directories` key to src/bmm/module.yaml
- Rename runModuleInstaller() -> createModuleDirectories()
- Remove _module-installer from ESLint overrides
- Remove _module-installer from file-ref validator skip dirs
2026-02-08 19:21:48 -06:00
Brian Madison 90d9204dc9 fix: update help task path from bmad-help.md to help.md
Update all references to the help task file from the old path
`_bmad/core/tasks/bmad-help.md` to the new path `_bmad/core/tasks/help.md`.

Affected files:
- 7 workflow step files across multiple workflows
- 1 IDE tool command generator (updated comments)
2026-02-06 21:27:14 -06:00
Brian Madison 09316ecc7f fix: remove forbidden workflow_path variable from step files
Remove the forbidden `workflow_path` frontmatter variable from 16 step files
across 3 workflows (quick-dev, quick-spec, check-implementation-readiness).
Per BMAD workflow standards, step files should use relative paths or
{project-root} references instead.

Changes:
- quick-dev (6 files): removed workflow_path and unused thisStepFile
- quick-spec (4 files): removed workflow_path, updated templateFile to use relative path
- check-implementation-readiness (6 files): removed workflow_path, updated all references to use relative paths

Also fixes incorrect path in check-implementation-readiness that referenced
non-existent 'implementation-readiness' folder instead of 'check-implementation-readiness'.

Fixes #1546
2026-02-06 21:16:14 -06:00
Brian Madison a79f581003 fix(technical-research): route step-05 to step-06 and fix stepsCompleted values
Fixes #1547

- step-05 now correctly routes to step-06-research-synthesis.md instead of presenting itself as the final step
- Fixed step-04 stepsCompleted: [1,2,3] → [1,2,3,4]
- Fixed step-05 stepsCompleted: [1,2,3,4] → [1,2,3,4,5]
- Fixed step-06 stepsCompleted: [1,2,3,4,5] → [1,2,3,4,5,6]
- Fixed step-05 title from "Step 4" to "Step 5"
- Fixed step-06 title from "Step 5" to "Step 6"
- Updated success/failure metrics and NEXT STEP sections

This mirrors the fix applied to market research in Beta.5, ensuring the technical research workflow properly completes through all 6 steps.
2026-02-06 20:49:54 -06:00
Michael Pursifull c1a927ae8d
refactor: replace 'invoke/run' with 'load and follow' in workflow prompts (#1570)
- Replace "invoke the review task" with "load and follow the review task"
- Replace "run this step/task" with "load this step/task"
- Aligns with canonical phrasing from PR #1387

Closes #1378
2026-02-06 20:32:44 -06:00
Brian Madison bd620e38e5 trivariate workflows added 2026-02-04 21:34:47 -06:00
Brian Madison 731bee26ea additional slash commands added that were missing from trivariate workflows 2026-02-04 20:42:33 -06:00
Brian Madison 5276d58b2c fix internal project skills and rename to prefix with bmad-os 2026-02-04 17:04:34 -06:00
Brian Madison f699a3683f excorcise the deamons part 1 - remove dead uneeed artifacts and items no longer being supported beyond beta of the BMM or core - but could return later as a module 2026-02-04 15:44:25 -06:00
murat 006a1f707e fix: docs llms order, bmgd draft, tea link 2026-02-04 07:16:51 -06:00
Michael Pursifull 594235522c
fix: add process control and building automation domains (#1510)
Adds two operational technology domains to domain-complexity.csv
in both PRD and architecture workflows. Addresses the gap in OT
domain coverage for physical process control and building systems.

process_control: industrial automation, SCADA, PLC, DCS, I&C,
P&ID — covers power/utilities, water treatment, oil & gas,
manufacturing, chemical, pharmaceutical, food & beverage, mining,
and other sectors where software controls physical processes.
Key concerns include functional safety, process safety and hazard
analysis, environmental compliance, OT cybersecurity, and plant
reliability/maintainability. Requires engineering_authority PRD
section for PE/EOR credential requirements.

building_automation: BAS/BMS, HVAC, fire alarm, fire protection,
life safety, elevators, lighting, access control, commissioning —
covers commercial and institutional building systems. Key concerns
include life safety codes, multi-trade coordination, commissioning,
and indoor environmental quality.

Both domains are high complexity, include engineering_authority
as a required PRD section, and follow established entry patterns.

Fixes #1240

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-03 13:24:33 -06:00
Murat K Ozcan 7ecae1d000
test: quinn to qa (#1508)
* test: quinn to qa

* Removed the TEA sidebar section from the main docs nav

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-03 13:23:37 -06:00
Michael Pursifull 04e3dc8f75
Fix leaked source paths in PRD validation report (#1481)
Replace /src/core/ paths with {project-root}/_bmad/core/ convention
in validation-report-prd-workflow.md lines 293-294.

These paths reference party-mode and advanced-elicitation workflows
using the source tree layout (/src/core/) instead of the installed
layout ({project-root}/_bmad/core/) that Beta.4 standardized
across all other files.

This is the remaining half of the fix for #1435, which was closed
as "will fix with .4 release" but only the brianmadison path on
line 11 and the XML syntax issue were addressed. The /src/core/
paths on lines 293-294 were missed.

Fixes #1480
2026-02-01 10:15:35 -06:00
Alex Verkhovsky ef7abb7ca5
fix: complete sharding of market research customer analysis steps (#1486)
Connect orphaned detailed customer analysis chain (steps 02-behavior,
03-pain-points, 04-decisions) by updating step-01-init to load
step-02-customer-behavior instead of the condensed
step-02-customer-insights. Remove the now-superseded monolithic file.

Fixes #1399

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-01 10:14:50 -06:00
Brian Madison 1665ad68df fix agent scan and help csv files 2026-01-31 21:58:55 -06:00
Michael Pursifull 0a7329ff23
fix: correct relative path to prd-purpose.md in step-11-polish (#1497)
The purposeFile reference uses ./data/prd-purpose.md but data/ is a
sibling of steps-c/, not a child. Corrected to ../data/prd-purpose.md.

Fixes #1495
2026-01-31 19:27:48 -06:00
Michael Pursifull 7afe018f82
fix: correct relative path to validation workflow in step-e-04-complete (#1498)
The validationWorkflow reference uses ./steps-v/step-v-01-discovery.md
but steps-v/ is a sibling of steps-e/, not a child. Corrected to
../steps-v/step-v-01-discovery.md.

Fixes #1496

Co-authored-by: Brian <bmadcode@gmail.com>
2026-01-31 19:27:17 -06:00
Ramiz 8c59fb96a7
Enable sidecar for tech writer agent (#1487)
fix Pagie hasSidecar
2026-01-31 17:27:57 -06:00
Alex Verkhovsky 542a7429ec
Restore generate-project-context workflow (#1491) 2026-01-31 14:22:13 -06:00
Michael Pursifull 903710be1b
fix: HELP_STEP placeholder not replaced in compiled agents, fix hardcoded path, fix single quote in HELP_STEP (#1437)
* fix: correct malformed XML syntax and remove hardcoded path

- Fix missing opening quote in activation-steps.txt: `n={HELP_STEP}"` → `n="{HELP_STEP}"`
- Remove spurious hyphen: `-Let` → `Let`
- Replace hardcoded `/Users/brianmadison/...` path with relative path

Fixes #1435

* fix: add missing HELP_STEP placeholder replacement

The activation-steps.txt template includes a {HELP_STEP} placeholder,
but activation-builder.js never calculated or replaced it. This caused
the literal string "{HELP_STEP}" to appear in compiled agent files.

Added helpStep calculation between menuStep and haltStep, and adjusted
subsequent step numbers accordingly.

Fixes #1441

* Update src/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
2026-01-29 05:58:56 -08:00
Alex Verkhovsky f01c5cef4d
Set default project_key for file-system sprint status (#1446)
Co-authored-by: Brian <bmadcode@gmail.com>
2026-01-28 22:27:54 -08:00
Murat K Ozcan 98bce75905
feat: removed tea module, added sdet with 1 workflow for automate (#1443)
* feat: removed tea module, added sdet with 1 workflow for automate

* fix: addressed PR comments

* fix: addressed Alex's comments

* fix: addressed Brian 2nd round of comments
2026-01-28 22:26:04 -08:00