Commit Graph

145 Commits

Author SHA1 Message Date
Alex Verkhovsky ce23cb5d5a
fix(skill): improve bmad-help description for accurate trigger matching (#2012)
Refined through adversarial review to accurately reflect the skills
state-analysis, question-answering, and workflow-recommendation
capabilities with precise trigger phrases that avoid false positives.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:48:33 -05:00
Alex Verkhovsky 8efc8c309c fix(skills): restore full CSV column list in brainstorming steps
The CSV parse instructions were incorrectly truncated to 3 columns.
Restore all 7: category, technique_name, description,
facilitation_prompts, best_for, energy_level, typical_duration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 14:49:36 -06:00
Alex Verkhovsky 4937ce1bc2 fix(skills): revert out-of-scope changes from validation pass
- Revert step renumbering in retrospective (no validator rule)
- Revert full-scan-instructions, quick-dev-preview, quick-spec changes
- Restore duration/energy/time content in brainstorming steps 02a-d, 03
  (SEQ-02 time estimate removal was misapplied to display templates)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 14:46:05 -06:00
Alex Verkhovsky 1558a68a0a fix(skills): add missing ./ prefix to bare step file references
Bare filenames like `step-e-02-review.md` in "Read fully and follow:"
directives need `./` prefix for consistent relative path resolution.
Fixes 9 references across edit-prd, create-prd, and brainstorming.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:42:12 -06:00
Alex Verkhovsky cb16a4fac2 fix(skills): strip redundant [workflow.md](workflow.md) links repo-wide
Replace `[workflow.md](workflow.md)` with bare `workflow.md` in all 34
SKILL.md files. Redundant markdown link syntax adds noise for LLM
consumers. Also update the validator example to match.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:24:57 -06:00
Alex Verkhovsky 6ee4062e56 fix(skills): add remaining HALT instructions in brainstorming menus
STEP-04 compliance: add HALT directives to 5 additional menu locations
in brainstorming steps (01b, 02a, 02b, 02c, 02d). Also fixes bracket
typo [3 -> [3] in step-01b-continue.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
EOF
)
2026-03-15 11:13:57 -06:00
Alex Verkhovsky 75292af47c fix(skills): add missing HALT instructions before user menus
STEP-04 compliance: add explicit HALT directives after menu presentations
in brainstorming (4 locations) and generate-project-context (2 locations)
to prevent LLM from auto-selecting options without waiting for user input.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 10:58:16 -06:00
Alex Verkhovsky a2f4bfea8f fix(skills): address re-validation findings in edit-prd, validate-prd, brainstorming
- STEP-06: Remove name/description from step frontmatter in edit-prd (5 files)
  and validate-prd (14 files) — these belong only in SKILL.md
- REF-02: Fix brainstorming step-02a/b/c/d CSV parse instructions to match
  actual brain-methods.csv columns (3 cols, not 7)
- SEQ-02: Remove time estimates from brainstorming step-02a/b/c/d and step-03,
  replace time-based thresholds with idea-count criteria

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 10:53:47 -06:00
Alex Verkhovsky 098c96740c fix(skills): validation pass 2 — fix path, variable, and sequence issues across 32 files
Run skill-validator against all 36 skills on HEAD (42b1d0f6). Fixes:

- PATH-01: relative path corrections in product-brief-preview, brainstorming,
  distillator, generate-project-context, edit-prd, quick-dev-new-preview
- PATH-04: remove 5 intra-skill path variables from edit-prd
- REF-01: single-curly template vars → double-curly in create-architecture,
  create-epics-and-stories, create-story
- REF-02: fix dangling file refs in advanced-elicitation, validate-prd, edit-prd
- REF-03: update rule to prefer natural language `Invoke the skill` form;
  fix stale persona ref in qa-generate-e2e-tests
- SEQ-01: "skip to" → "proceed to" in quick-dev-new-preview
- SEQ-02: remove time estimates from document-project, quick-spec
- SKILL-06: add "Use when" trigger to review-edge-case-hunter
- STEP numbering: renumber step n="0.5" to integer sequence in retrospective

Also updates REF-03 rule in tools/skill-validator.md to clarify that
natural language invocation is canonical — no skill: prefix required.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 10:38:43 -06:00
Alex Verkhovsky 1ec0d8ba43 chore: normalize skill invocation syntax to `Invoke the skill` pattern
Replace three inconsistent skill reference patterns (frontmatter variables
with raw paths, frontmatter variables with skill: prefix, inline Execute
skill: syntax) with a single natural-language convention across all workflow
and task step files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 07:59:30 -06:00
Alex Verkhovsky a98bf008fc fix: replace broken party-mode workflow refs with skill syntax
Party-mode moved from core/workflows/ to core/skills/ in PR #1959,
breaking 11 file references. Convert all to skill:bmad-party-mode
matching the convention used by skill:bmad-advanced-elicitation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 02:03:46 -06:00
Brian 9fa51d996b
prototype preview of new version of product brief skill (#1959)
* prototype preview of new version of product brief skill

* chore: re-enable bmad-builder external module

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* config loading with existing location

* refactor: rename bmad-bmm-product-brief-preview to bmad-product-brief-preview

Drop the redundant bmm prefix from the product brief preview skill folder
to align with the standard naming convention.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add core tools reference and apply Diataxis style fixes

Add comprehensive reference doc for all 11 built-in core tools (tasks
and workflows) that ship with every BMad installation — bmad-help,
brainstorming, party-mode, distillator, advanced-elicitation, both
review tools, both editorial tools, shard-doc, and index-docs. Each
entry follows the Configuration Reference structure with purpose,
use cases, how it works, inputs, and outputs.

Style fixes across existing docs:
- reference/commands.md: convert #### headers to bold text, replace
  sparse task table with link to new core-tools reference
- how-to/get-answers-about-bmad.md: remove horizontal rule between
  sections (Diataxis violation)
- how-to/project-context.md: consolidate 4 consecutive tip admonitions
  into single admonition with bullet list, add AGENTS.md reference

Also includes:
- Add bmad-distillator task to core module with compression agents,
  format reference, splitting strategy, and analysis scripts
- Add Distillator entry to module-help.csv
- Rename supports-autonomous to supports-headless in product-brief
  manifest

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* core items to skills folder

* fix calls to invoke party mode

* fix calls to invoke party mode and AE as skills

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 00:05:53 -05:00
Alex Verkhovsky b42f1e732a fix(skill): clean up bmad-create-prd validation findings
Strip name/description from all step frontmatter (STEP-06), remove
intra-skill path variables and inline them (PATH-04), move outputFile
to workflow.md (WF-03), fix stale step-11-complete refs (REF-02),
fix product_knowledge typo (REF-01), rewrite continuation logic
to use a lookup table, and strip legacy source workflow frontmatter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:22:40 -06:00
Alex Verkhovsky 9f8f7f4a3e refactor(skills): convert create-prd to native skill directory
Move the create-prd workflow into src/core/tasks/bmad-create-prd/ as a
self-contained native skill with SKILL.md, workflow.md, steps-c/, data/,
and templates/. Update all internal path references from absolute
{project-root}/_bmad/... to relative paths. Mark the source
workflow-create-prd.md as standalone:false to prevent duplicate manifest
entries. Update pm.agent.yaml and module-help.csv to use skill:bmad-create-prd.
2026-03-14 17:21:11 -06:00
Alex Verkhovsky 73e5552aad fix(skill): batch validation cleanup for 6 skills
Remove installed_path definitions, unused intra-skill path variables,
and inline variable references across: bmad-sprint-status,
bmad-document-project, bmad-generate-project-context,
bmad-qa-generate-e2e-tests, bmad-advanced-elicitation, and
bmad-brainstorming.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:02:04 -06:00
Alex Verkhovsky 8ba428ee35 fix(skills): remove redundant advanced elicitation workflow metadata 2026-03-12 22:42:34 -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 8f1cb7fb70 chore(brainstorming): drop redundant workflow frontmatter 2026-03-12 17:43:24 -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
Alex Verkhovsky 32693f1a6b
refactor(skills): convert shard-doc.xml to native skill directory (#1896)
Replace single-file XML task with bmad-shard-doc/ skill directory
(SKILL.md, workflow.md, bmad-skill-manifest.yaml). Update parent
manifest and module-help.csv references. Preserves all 6 steps
including Step 6 branching logic for original document handling.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:41:56 -06:00
Alex Verkhovsky 6292b0323f
refactor(skills): convert index-docs.xml to native skill directory (#1878)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:46:18 -06:00
Alex Verkhovsky 3339f24890
refactor(skills): convert editorial-review-prose.xml to native skill (#1877)
* refactor(skills): convert editorial-review-prose.xml to native skill directory

Replace single-file XML task with standard skill directory structure
(SKILL.md + workflow.md + bmad-skill-manifest.yaml). Update parent
manifest and module-help.csv references. No behavioral changes.

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

* fix: add mandatory execution instructions to editorial-review-prose workflow

Review found missing MANDATORY step-order enforcement and critical marker
on Step 3, which were present in the original XML and the reference pattern
(editorial-review-structure). Adds both to match established conventions.

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

* fix(tasks): align editorial-review-prose role text with section heading

Rename EXECUTION heading to STEPS and update the role instruction
to reference the correct section name.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 06:08:45 -06:00
Alex Verkhovsky ffd7d53be5
refactor(skills): convert editorial-review-structure.xml to native skill (#1875)
* refactor(skills): convert editorial-review-structure.xml to native skill directory

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

* fix: mark Step 3 as CRITICAL in editorial-review-structure workflow

The original XML had critical="true" on Step 3 (Structural Analysis).
This attribute was lost during the XML-to-markdown conversion.

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

* fix: replace ambiguous section references in editorial-review-structure workflow

Rename "EXECUTION" heading to "STEPS" and update the inline reference
from "flow section" to "STEPS section" to avoid LLM misinterpretation.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 04:35:04 -06:00
Alex Verkhovsky 2a12c6b2f0
docs: drop slash-command prefix from skill references (#1892)
* docs: drop slash-command syntax from skill references (editorial)

Skill names like bmad-help are now shown without a / prefix since
invocation syntax varies across platforms. First-encounter locations
(README, getting-started, get-answers, installer message, bmad-help
display rules) get editorial framing so new users understand these
are skill names to invoke by name.

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

* docs: mechanical removal of slash prefix from all remaining skill references

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 02:35:16 -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 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 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 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 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
Alex Verkhovsky f7846fd5eb
feat(skills): add edge case hunter as parallel review layer in PR review (#1791)
* feat(skills): add edge case hunter as parallel review layer in PR review

Wire review-edge-case-hunter.xml into bmad-os-review-pr as a second
review layer running in parallel with the adversarial review. Both
subagents receive the same PR diff concurrently. Findings are merged,
deduplicated, and tagged by source before tone transformation.

* fix(core): resolve contradictions in edge case hunter task spec

- Show array wrapper [{}] in output-format example to match JSON array
  contract, and document empty array [] as valid output
- Consolidate empty-content handling: step 1 now defers to halt-conditions
  instead of defining separate "ask and abort" behavior
- Zero-findings halt no longer contradicts JSON contract: re-analyze once,
  then return [] instead of ambiguous "HALT or re-analyze"
- Soften "Execute ALL steps" to acknowledge halt-conditions can interrupt

* fix(review): address PR #1791 review feedback

- Remove "Task tool" reference per maintainer; use generic "subagents"
- Fix nested triple-backtick fencing with four-tick outer fence
- Widen location format to support multi-line ranges and hunk refs
- Add JSON-safety constraint to guard_snippet field
- Tighten input loading to "strictly from provided input"
- Replace vague "unreadable" with "cannot be decoded as text"
- Replace vague "increased scrutiny" with concrete re-analysis checklist
- Resolve HALT-immediately vs re-analysis conflict in LLM instructions

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:21:28 -06:00
Alex Verkhovsky abf3d25f06
fix(core): remove stale tool_supports_subagents and tool_supports_agent_teams config (#1827)
These config keys were added in efc69ffb but never consumed by any
template, conditional logic, or runtime code. They represent platform
capabilities that the agent can determine at runtime — persisting a
stale user guess adds installation friction with zero execution value.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 09:59:16 -06:00
Brian Madison efc69ffb2c config for agent teams opt in and subagents opt out core config 2026-03-01 13:27:39 -06:00
Brian Madison 17fe438452 fix brainstorming so that it will not overwrite previous brainstormings, and it will also ask if you want to continue a previous one or start a new one when older brainstormings are found. 2026-02-28 19:16:44 -06:00
Alex Verkhovsky bc7c7f0757
fix(core): remove zero-findings halt condition from edge case hunter (#1797)
The "HALT if zero findings" condition pressures the LLM to hallucinate
findings when reviewing trivial diffs with no branching logic. Since
this task runs non-interactively as a subagent, it cannot ask for
guidance either. Zero findings is a valid outcome for clean code.
2026-02-28 18:37:13 -06:00
Alex Verkhovsky 43cfc01f2c
feat(core): add edge case hunter review task (#1790)
Method-driven review that exhaustively walks branching paths and
boundary conditions, reporting only unhandled gaps. Orthogonal to
the attitude-driven adversarial review for complementary coverage.
2026-02-27 23:08:30 -06:00
Brian Madison 5ad35d68bd docs(changelog): complete 6.0.3 release notes
Add all changes since v6.0.2 including new root-cause-analysis skill,
installer fixes, workflow fixes, and documentation updates.

Also standardize quotes in remaining task/workflow files.
2026-02-25 21:22:40 -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 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
Brian Madison c8481c21c3 fix: clarify phase routing and catalog path in help task
- Add note about optional phases with no required steps
- Fix catalog path to use relative bmad-help.csv location
2026-02-17 23:39:04 -06:00
Pablo LION c8ca083316
fix: remove unnecessary quotes and fix grammar in bmad-master principles (#1600)
- Remove YAML quotes from principles list item (consistency with other agents)
- Add missing comma: "at runtime never" → "at runtime, never" (run-on fix)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 12:10:33 -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
Michael Pursifull dbb754f085
fix(party-mode): add return protocol to prevent lost-in-the-middle failures (#1569)
After Party Mode completes within a parent workflow, the LLM fails to
re-present the parent workflow's completion menu due to lost-in-the-middle
effect at 50-100K tokens. The parent workflow instructions get pushed into
mid-context where they are no longer proactively recalled.

Add a Return Protocol section to step-03-graceful-exit.md that instructs
the LLM to:
1. Identify the parent workflow that invoked party-mode
2. Re-read that file to restore context
3. Resume from the invocation point
4. Present required menus/options

This is platform-independent prompt engineering that forces proactive
re-reading rather than relying on mid-context recall.

Fixes #1319

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-06 20:43:12 -06:00
Michael Pursifull 420e720242
fix: bmad-help reads project docs and respects communication_language (#1535)
* fix: bmad-help agent reads project docs and respects communication_language

The help task fabricated tech stack information instead of reading actual
project documentation (#1460) and ignored communication_language config
(#1457). Three changes:

1. Step 2 now also extracts communication_language and project_knowledge
   from the active module's config.yaml
2. New step 3 scans project_knowledge path for documentation and uses
   discovered facts as grounding context, with anti-hallucination guard
3. Step 7 enforces {communication_language} in all output

Chose inline config resolution over workflow.yaml conversion to match
existing core task patterns (index-docs, shard-doc).

Fixes #1460
Relates to #1457

* fix: clarify config extraction wording in help task

Remove "active module" reference from step 2 — config extraction
happens during the all-modules scan, before module detection in
step 4. Changed to "each scanned module's config" to match the
existing iteration pattern.

Addresses CodeRabbit review feedback on PR #1535.

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-05 19:04:31 -06:00