Commit Graph

1479 Commits

Author SHA1 Message Date
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
cccczl 4974cd847f
docs: fix chinese documentation translation errors (#1848) 2026-03-07 14:34:12 -06: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 ed76f57a19
feat(i18n): add zh-CN locale support (#1822)
* feat(i18n): add zh-cn locale support with Starlight routing

Reorganize Chinese translations from docs_cn/ into docs/zh-cn/
following Starlight's i18n content structure. Configure Starlight
with root locale (en, unprefixed) and zh-cn (/zh-cn/ prefix).

- Move 28 files from docs_cn/*_cn.md to docs/zh-cn/*.md
- Fix 21 internal links to remove _cn suffixes
- Add defaultLocale + locales config to astro.config.mjs
- Add .gitignore exception for docs/zh-cn/ (overrides z*/ rule)
- Language switcher activates automatically via existing Header
- hreflang tags auto-generated by Starlight on all pages

* feat(i18n): add zh-CN UI translations and sidebar labels

- Add website/src/content/i18n/zh-CN.json with Starlight UI strings
- Add sidebar group label translations (欢迎, 路线图, 教程, etc.)
- Register i18n collection in content config to fix deprecation warning

* fix(i18n): exclude 404 pages from sitemap

Custom 404 pages (root and zh-cn) were indexed as regular content in
the sitemap. Add a filter to the @astrojs/sitemap integration that
matches the /404 path segment precisely via regex on the URL pathname.
2026-03-06 20:21:43 -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
cccczl 259e8a11ba
docs: add Chinese documentation translation (#1795)
* docs: add Chinese documentation translation

* Update link to modules documentation in Chinese
2026-03-04 14:37:22 -06:00
Alex Verkhovsky 9536e1e6e3
feat(skills): add bmad-os-review-prompt skill (#1806)
PromptSentinel v1.2 - reviews LLM workflow step prompts for known
failure modes including silent ignoring, negation fragility, scope
creep, and 14 other catalog items. Uses parallel review tracks
(adversarial, catalog scan, path tracing) with structured output.
2026-03-03 22:38:58 -06:00
Alex Verkhovsky 7ece8b09fa
feat(skills): add bmad-os-findings-triage HITL triage skill (#1804)
Team-based skill that orchestrates human-in-the-loop triage of review
findings using parallel Opus agents. One agent per finding researches
autonomously, proposes a plan, then holds for human conversation before
a decision is recorded. Team lead maintains scorecard and lifecycle.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:08:55 -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
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 44972d62b9 chore(release): bump to v6.0.4 2026-02-28 19:20:45 -06:00
Brian Madison deedf18fc5 changelog: prepare v6.0.4 release 2026-02-28 19:20:28 -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
Dicky Moore d036d34892
fix(templates): replace @ path prefixes with {project-root} (#1769)
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-28 18:49:31 -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
Chris Chen 1677d54f22
fix: correct docs domain to docs.bmad-method.org (#1777)
* fix: correct docs domain to docs.bmad-method.org

Fixes BMAD-METHOD#1712

* fix: update all docs.bmad-method.org links to HTTPS

- Changed http:// to https:// across README.md and issue templates
- Addresses review comments on PR #1776

---------

Co-authored-by: OpenClaw Assistant <assistant@openclaw.ai>
2026-02-27 13:03:16 -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
Alex Verkhovsky 2f484f15b6
feat(skills): add bmad-os-root-cause-analysis skill (#1741)
New internal skill that analyzes bug-fix commits or PRs and produces
a structured Root Cause Analysis report with pyramid communication.

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-25 21:01:26 -06:00
Alex Verkhovsky 2d2f4855b1
fix(installer): refuse install when ancestor dir has BMAD commands (#1735)
* fix(installer): refuse install when ancestor dir has BMAD commands

Claude Code inherits slash commands from parent directories, so
installing into a nested project when a parent already has .claude/commands
with bmad-* files causes duplicate entries in the autocomplete.

Add ancestor_conflict_check flag (enabled for claude-code) that walks
up the directory tree before install. If BMAD files are found in an
ancestor target_dir, the installer refuses with an actionable error.

Also fix IdeManager.setup() to propagate handler success status instead
of unconditionally returning success: true.

* Address code review feedback from CodeRabbit and Augment

- Move "Setting up..." log after conflict check so it only shows when
  install will proceed
- Fix rm command: add -rf flags and correct quoting for glob outside quotes
- Improve error wording: "ancestor installation" instead of misleading
  "ancestor directory"
- Use case-insensitive startsWith for bmad file detection (macOS/Windows)
- Document ancestor_conflict_check in the installer config schema

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

* fix(installer): resolve symlinks before ancestor conflict walk

Use fs.realpath() instead of path.resolve() so the ancestor directory
walk follows the physical filesystem path, not the logical symlink path.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 21:01:04 -06:00
Ssabae d94757a7d4
Update README.md (#1772)
Fix broken hyperlinks
2026-02-25 20:59:45 -06:00
Davor Racic 6bfc937bd3
fix(installer): OpenCode integration: replace `name` frontmatter with `mode: all` and update directory names (#1764)
* fix(opencode): use mode: all in agent template, remove name frontmatter, fix directory names

- Replace name: '{{name}}' with mode: all in opencode-agent.md
  mode: all enables both Tab-key agent switching in the TUI and @subagent
  invocation via the Task tool (mode: primary blocked subagent use)
- Remove name: '{{name}}' from opencode-task/tool/workflow/workflow-yaml templates
  OpenCode derives command name from filename, not from a name frontmatter field;
  the bare {{name}} value was overriding the bmad- prefixed filename causing
  name collisions with built-in OpenCode commands (fixes #1762)
- Fix deprecated singular directory names in platform-codes.yaml:
  .opencode/agent -> .opencode/agents, .opencode/command -> .opencode/commands
- Add legacy_targets migration: cleanup() now removes stale bmad-* files from
  old singular directories on reinstall so existing users don't get duplicates
- Fix removeEmptyParents to continue walking up to parent when starting dir is
  already absent instead of breaking early

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

* fix(opencode): address code review findings for cleanup and schema docs

- Add project boundary guard to removeEmptyParents() using path.resolve
  and startsWith check to prevent traversal outside projectDir (Augment)
- Fix JSDoc: "Recursively remove" -> "Walk up ancestor directories"
- Add user-visible migration log message when processing legacy_targets
- Document legacy_targets field in Installer Config Schema comment block
  in platform-codes.yaml (CodeRabbit + Augment)

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

* fix(opencode): improve removeEmptyParents error handling and loop clarity

- Distinguish recoverable errors (ENOTEMPTY, ENOENT) from fatal errors in
  removeEmptyParents() catch block — skip level and continue upward on
  TOCTOU races or concurrent removal, break only on fatal errors (EACCES)
- Add comment clarifying loop invariant for missing-path continue branch

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-25 11:12:05 -06:00
Alex Verkhovsky 72a9325a40
docs: rebrand BMAD acronym to Build More Architect Dreams (#1765)
Update the BMAD acronym expansion from "Breakthrough Method of
Agile AI Driven Development" to "Build More Architect Dreams"
across README, docs homepage, and package.json description.

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-25 11:11:24 -06:00
Brian Madison 5ed436cda0 6.0.3 2026-02-24 18:47:36 -06:00
PinkyD 97a533e298
fix(installer): remove double-escaping of quotes in CSV manifest pipeline (#1746)
* fix(installer): remove double-escaping of quotes in CSV manifest pipeline

cleanForCSV() pre-escaped " to "" before storing in memory, then
escapeCsv() escaped again at CSV write time. After csv-parse round-trip
(which only un-escapes once), descriptions retained doubled quotes
instead of originals, corrupting generated output files.

Fix: remove the redundant quote escaping from cleanForCSV() since
escapeCsv() already handles CSV quoting correctly at write time.

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

* fix(installer): use single quotes for description in Gemini workflow templates

Replace triple-quoted """{{description}}""" with single-quoted '{{description}}'
to avoid TOML escaping issues in Gemini workflow templates.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:43:33 -06:00
Brian Madison b83ccc71b9 docs(changelog): add 6.0.3 release notes 2026-02-23 17:12:12 -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 3ad6985643 6.0.2 2026-02-22 19:48:27 -06:00
Brian Madison 44eeaa8a71 feat(docs): add public roadmap and improve site navigation
- Add comprehensive public roadmap with In Progress, Getting Started, and Community sections
- Add roadmap callout to README.md and docs welcome page
- Add roadmap-specific card grid styles with equal-height cards
- Fix rehype-markdown-links plugin to detect docs directory in various project structures
- Rename roadmap.md to roadmap.mdx for proper Astro/Starlight rendering
- Update doc link validator to support .mdx files
2026-02-22 19:41:57 -06:00
Brian Madison 1d49fe1802 feat(templates): remove disable-model-invocation to enable workflow skill calls
This change removes the disable-model-invocation flag from all IDE installer
templates. By allowing model invocation, bmad help can now properly invoke
suggested workflows as direct skill calls, improving the user experience by
enabling automatic workflow execution when desired.
2026-02-22 16:38:05 -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
Brian Madison 8cf22a4182 open source tool skills updated, will move to separate plugin at a later time 2026-02-22 11:26:19 -06:00
Wendy Smoak d48d40d397
feat: migrate Codex installer from .codex/prompts to .agents/skills format (#1729)
* feat: migrate Codex installer from .codex/prompts to .agents/skills format

Switch CodexSetup to write BMAD artifacts as Agent Skills (agentskills.io
format) in .agents/skills/<name>/SKILL.md instead of flat files in
.codex/prompts. Remove global/project location prompt. Add legacy cleanup
of old .codex/prompts directories during install and uninstall.

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

* ignore .agents for codex

* fix: normalize line endings and use platform-native EOL in SKILL.md output

Normalize all content to LF in transformToSkillFormat, then convert to
os.EOL (CRLF on Windows, LF on Linux/macOS) before writing SKILL.md
files in both writeSkillArtifacts and installCustomAgentLauncher.

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

* ignore .agents directory

* use description from metadata in custom agent launcher

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:47:05 -06:00
Alex Verkhovsky 675e753e9b
refactor(skills): convert review-pr and audit-file-refs to bmad-os skills (#1732)
Move Raven PR review and file-ref audit from tools/ into
.claude/skills/ as proper bmad-os skills with SKILL.md + prompts/
instructions.md split pattern. Strip XML tags from Raven content,
promote sections to H2 headings. Delete originals from tools/.

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-22 10:46:32 -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
Alex Verkhovsky 99c1fa940a
feat: add LLM audit prompt for file reference conventions (#1720)
tools/audit-file-refs.md — a repeatable prompt that spawns parallel
Haiku subagents to semantically audit new-format source files for
non-conforming file references. Includes a self-check that verifies
all files are accounted for before producing the final report.

Replaces the planned regex extension (Item 1 of the master plan) with
an approach that can handle the full surface area of reference patterns
without exhaustive pattern enumeration.

Also excludes .junie/ from Prettier checks (IDE integration folder,
user-specific, not in repo).

Refs #1718

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-20 20:42:33 -06:00
wison bea89893fd
feat: add CodeBuddy platform support (#1483)
Add CodeBuddy (Tencent Cloud Code Assistant) as a supported IDE platform:

- Add platform config to tools/platform-codes.yaml

- Add installer config to tools/cli/installers/lib/ide/platform-codes.yaml

- Add .codebuddy to .gitignore

CodeBuddy uses the default template type with target directory .codebuddy/commands

Co-authored-by: wison <wisonlin@tencent.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-20 20:39:52 -06:00
Daniel Bates eb6cf96912
fix: correct step file path in check-implementation-readiness workflow (#1709)
Fixes #1615

Co-authored-by: Your Name <your-email@example.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:38:12 -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 35dff6b105
chore: ignore .junie/ IDE integration folder (#1719)
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-20 20:33:23 -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 e72b82ed31
fix(installer): add custom Rovo Dev installer with prompts.yml generation (#1701)
* fix(installer): add custom Rovo Dev installer with prompts.yml generation

Rovo Dev CLI requires a .rovodev/prompts.yml manifest to register prompts
for /prompts access. The config-driven installer was writing .md files but
never generating this manifest, so /prompts showed nothing.

- Create custom rovodev.js installer extending BaseIdeSetup
- Generate prompts.yml indexing all written workflow files
- Merge with existing user entries (only touch bmad- prefixed entries)
- Remove stale rovo entry from tools/platform-codes.yaml

Closes #1466

* fix(installer): prefix prompts.yml descriptions with entry name

The /prompts list in Rovo Dev only shows descriptions, making it hard
to identify entries. Prefix each description with the bmad entry name
so users see e.g. "bmad-bmm-create-prd - PRD workflow..." instead of
just the description text.

* refactor(installer): address review findings in Rovo Dev installer

- Hoist toDashPath import to module top level
- Extract _collectPromptEntries helper replacing 3 duplicated loops
- Remove unused detectionPaths (detect() is overridden)
- Guard generatePromptsYml when writtenFiles is empty
- Align cleanup() with detect() predicate (remove any bmad-*, not just .md)
- Use BaseIdeSetup abstractions (this.pathExists/readFile/writeFile) in cleanup()
- Update loadHandlers() JSDoc to include rovodev.js

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-20 20:31:45 -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