Breakthrough Method for Agile Ai Driven Development
Go to file
jheyworth 65b810a11f
fix(installer): generate slash-command and Agent pointer files (OpenCode + GitHub Copilot) (#2324)
* fix(installer): generate OpenCode /<skill> slash commands

Adds .opencode/commands/<canonicalId>.md pointer files for each installed
skill so users can invoke skills directly (e.g. /bmad-quick-dev) instead
of going through the /skills menu.

- platform-codes.yaml: add commands_target_dir field for opencode
- _config-driven.js: installCommandPointers() with skip-if-exists default,
  reserved-name collision guard, YAML-safe description quoting
- _config-driven.js: cleanupCommandPointers() for symmetric uninstall
- test-installation-components.js: extend OpenCode suite with assertions
  covering pointer creation, content, and idempotency

OpenCode-only and opt-in via the new yaml field; other adapters unchanged.

Refs #2267

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

* fix(installer): address PR #2324 review feedback

Six fixes from CodeRabbit + Augment review on the OpenCode command
pointer generation:

- skipTarget no longer suppresses installCommandPointers in multi-IDE
  shared-target_dir batches. Pointers live in a per-IDE directory and
  are not deduped across peers, so OpenCode must still generate them
  even when a peer (e.g. openhands) won the .agents/skills write race.
- skipTarget no longer suppresses cleanupCommandPointers either, so
  partial uninstalls leave no stale pointers when a peer remains.
- canonicalId is validated as a safe basename before being interpolated
  into a file path (defense in depth against a malformed manifest entry
  writing outside commands_target_dir).
- yamlSafeSingleLine now quotes descriptions starting with `[` or `{`
  so YAML doesn't parse them as a sequence/map.
- Per-record fs.writeFile failures are caught and counted (writeFailures)
  rather than aborting the whole IDE install — pointer files are a
  non-essential adjunct to the skill copy.
- Generator-shaped pointer files are refreshed when the manifest
  description changes; hand-modified files (body diverges from the
  generator pattern) are still preserved unless forceCommands is set.

Tests: extends Suite 8 with description-update propagation; adds new
Suite 40c covering OpenCode + openhands batches in both orderings plus
partial-IDE uninstall pointer cleanup. 308 tests pass (was 296).

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

* fix(installer): address PR #2324 follow-up nitpicks

Four nitpicks from CodeRabbit's original review that were missed in the
first triage pass:

- Hand-edited pointers now survive the production install flow.
  cleanupCommandPointers spares pointers for canonicalIds that are still
  in the new manifest when called from the install/update flow (signal:
  options.previousSkillIds is set). Uninstall and partial-IDE removal
  flows still wipe pointers as before. The previous behavior wiped every
  pointer in removalSet before installCommandPointers could run, so its
  skip-if-exists guard never fired and hand edits were lost on every
  reinstall — contradicting the docstring's preservation claim.
- RESERVED_OPENCODE_COMMANDS is now gated on this.name === 'opencode'
  so future adapters opting into commands_target_dir don't silently
  inherit OpenCode's reserved-name set.
- printSummary now surfaces results.commands so users see how many
  pointers were created/refreshed/skipped per install, plus a warning
  for any per-file write failures.
- Dropped a dead `typeof entry !== 'string'` check; fs.readdir without
  withFileTypes always yields strings.

Tests: extends Suite 8 with a hand-edit-preservation regression that
calls setup with previousSkillIds (the production shape) and asserts a
sentinel byte sequence in the pointer body survives. 310 tests pass.

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

* fix(installer): extend command-pointer generation to Copilot Custom Agents

Re-scopes #2324 to cover the second user-facing pain: GitHub Copilot's
Custom Agents picker, where installed BMAD skills currently don't show up
even though slash commands work natively.

Generalizes the per-platform pointer-file mechanism so the same
installCommandPointers / cleanupCommandPointers code path serves both
OpenCode (slash commands palette) and Copilot (Custom Agents picker), with
all platform-specific shape pushed into platform-codes.yaml as data:

- commands_target_dir       — where pointer files live (existing)
- commands_extension        — file extension (default '.md'; Copilot uses
                              '.agent.md' per VS Code Custom Agents docs)
- commands_body_template    — pointer body, supports {canonicalId} and
                              {target_dir} placeholders. Default matches
                              OpenCode's `@skills/<id>` resolver. Copilot
                              has no such resolver, so its template uses
                              the {project-root}/<target_dir>/<id>/SKILL.md
                              LOAD pattern (consistent with PR #1769).

OpenCode behavior is unchanged. Copilot users now get a per-skill
.github/agents/<canonicalId>.agent.md file that surfaces the skill in the
Custom Agents picker — addressing the "agents being gone" complaint
flagged by enterprise users.

Tests: extends Suite 17 with assertions for Copilot agent pointer
creation, body content (LOAD pattern with {project-root}-rooted path),
and idempotency. 318 tests pass (was 310).

Refs #2267

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

* fix(installer): filter Copilot Custom Agents picker to persona agents only

Earlier commit naively wrote a `.github/agents/<id>.agent.md` for every
installed skill, which would clutter the Custom Agents picker with 90+
workflow/tool entries that don't belong there.

Adds an `agents-only` filter that gates the per-skill emission on whether
the canonical id signals a persona agent:

- Primary rule: id contains `-agent-` (e.g. `bmad-agent-pm`,
  `gds-agent-game-dev`, `wds-agent-freya-ux`,
  `bmad-cis-agent-storyteller`).
- Allowlist: `bmad-tea` — TEA's Murat persona uses the bare module code
  rather than the `-agent-` convention. Listed explicitly so the rule
  still surfaces it.

Verified against the full installed manifest (114 skills): catches all
20 description-confirmed personas across BMM, CIS, GDS, WDS, TEA;
excludes all 94 workflows/tools.

Wired through a new yaml field on github-copilot:

  commands_filter: agents-only

OpenCode is unaffected — it has no `commands_filter` set, so the loop
behaves as before (every skill becomes a slash command).

Tests: extends Suite 17 with a multi-skill manifest fixture covering
persona/agent + bmad-tea + workflow cases; asserts persona agents and
bmad-tea get .agent.md files while workflows do not. 322 tests pass.

Refs #2267

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

* fix(installer): detect personas via customize.toml [agent] section

Per maintainer review on PR #2324: the `-agent-` naming convention isn't
a load-bearing contract anywhere else in the codebase, and the bmad-tea
allowlist already shows it starting to break. A future persona that
doesn't follow the convention would silently disappear from the Copilot
Custom Agents picker.

Replaces the name-based filter with a behavior-based signal: read each
skill's source `customize.toml` and check for an `[agent]` section. This
is the actual configuration source of truth — every BMAD persona is
configured under `[agent]`, every workflow under `[workflow]`, every
standalone skill has no customize.toml.

Verified on disk against the full installed manifest (114 skills):

- 20 personas detected — exactly the description-confirmed count across
  BMM, CIS, GDS, WDS, TEA. bmad-tea is caught natively (no allowlist).
- 94 workflows/tools correctly excluded.
- `bmad-agent-builder` (meta-skill that builds agent skills) is now
  CORRECTLY excluded — its canonical id contains `-agent-` but its
  customize.toml has [workflow], not [agent], because it isn't a
  persona itself. The previous naming-based filter was including it in
  the agents picker, which would have been a silent UX bug.

`NON_CONVENTIONAL_AGENT_IDS` constant is removed entirely — the toml
signal subsumes it.

Tests: extends Suite 17 with a 4-skill fixture that covers persona +
non-conventional persona + workflow + meta-skill cases. 388 tests pass.

Refs #2267

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

* fix(installer): always include bmad-help in Copilot agents picker

Adds a single, deliberate exception to the toml-based agents-only filter:
`bmad-help` is the structural meta-skill across BMAD — the orientation
helper that points users at every other skill. Users invoke it
persona-style ("ask the helper") even though it has no `[agent]`
customize.toml of its own (it isn't a configurable persona).

Implemented as a one-element ALWAYS_AGENT_IDS set rather than a hardcode
in the function body so the exception is named, documented, and
discoverable. The skill is structurally unique — there is no second
meta-help skill — so this is not the start of a growing allowlist; it's
a one-off for the one orientation surface BMAD ships.

Verified on disk: agents picker now shows 21 entries (20 personas via
[agent] in customize.toml + bmad-help). bmad-agent-builder stays
correctly excluded (its customize.toml has [workflow], not [agent]).

Tests: extends Suite 17 with a `bmad-help` fixture (no customize.toml,
must still appear in agents picker). 389 tests pass.

Refs #2267

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-04-29 22:13:06 -05:00
.augment chore(tools): align Augment config with skill-validator as single source of truth 2026-03-15 17:41:54 -06:00
.claude-plugin chore(release): draft v6.6.0 changelog and bump marketplace plugins (#2356) 2026-04-28 22:52:51 -05:00
.github fix(publish): advance @next dist-tag after stable release (#2320) 2026-04-26 10:30:41 -05:00
.husky docs: fix docs build (#1336) 2026-01-15 16:44:14 -06:00
.vscode 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
docs docs(zh-cn): complete missing translations and localize ecosystem sidebar (#2355) 2026-04-28 22:01:40 -05:00
src fix: align bmad-help.csv with documented schema and clean up source rows (#2278) (#2349) 2026-04-27 23:54:21 -05:00
test fix(installer): generate slash-command and Agent pointer files (OpenCode + GitHub Copilot) (#2324) 2026-04-29 22:13:06 -05:00
tools fix(installer): generate slash-command and Agent pointer files (OpenCode + GitHub Copilot) (#2324) 2026-04-29 22:13:06 -05:00
website docs(zh-cn): complete missing translations and localize ecosystem sidebar (#2355) 2026-04-28 22:01:40 -05:00
.coderabbit.yaml feat(coderabbit): add docs-staleness check for all src/ changes 2026-03-17 15:30:32 -06:00
.gitignore feat(skills): TOML-based agent and workflow customization (#2284) 2026-04-19 19:30:29 -05:00
.markdownlint-cli2.yaml refactor: replace 'execute' with 'Read fully and follow:' in workflow prompts (#1387) 2026-01-23 22:25:19 -06:00
.npmignore chore: remove dead agent schema validation infrastructure 2026-03-17 20:20:12 -06:00
.npmrc fix: resolve npm install peer dependency issues 2026-01-30 15:37:42 +00:00
.nvmrc feat: v6.0.0-alpha.0 - the future is now 2025-09-28 23:17:07 -05:00
.prettierignore chore: ignore .junie/ IDE integration folder (#1719) 2026-02-20 20:33:23 -06:00
AGENTS.md feat(tools): add deterministic skill validator for CI 2026-03-17 23:49:01 -06:00
CHANGELOG.md chore(release): draft v6.6.0 changelog and bump marketplace plugins (#2356) 2026-04-28 22:52:51 -05:00
CNAME Add CNAME file 2026-01-07 18:18:12 +08:00
CONTRIBUTING.md docs: add contribution guardrails for unsolicited PRs (#2207) 2026-04-04 12:13:06 -05:00
CONTRIBUTORS.md project licence, contribution and discord noise updates, along with improved simplified issue templates 2026-01-18 17:03:47 -06:00
LICENSE project licence, contribution and discord noise updates, along with improved simplified issue templates 2026-01-18 17:03:47 -06:00
README.md feat(installer): add --set and --list-options for non-interactive config (#2354) 2026-04-28 20:15:57 -05:00
README_CN.md chore: remove SM agent (Bob) and migrate to Developer agent (#2186) 2026-04-02 12:25:24 -07:00
README_VN.md docs(vi-vn): sync translations and add missing checkpoint-preview page (#2222) 2026-04-09 20:49:18 -07:00
SECURITY.md Enhance security policy documentation (#1312) 2026-01-14 16:27:52 -06:00
TRADEMARK.md project licence, contribution and discord noise updates, along with improved simplified issue templates 2026-01-18 17:03:47 -06:00
Wordmark.png feat: update website header with new BMAD Method branding (#1352) 2026-01-18 00:25:12 -06:00
banner-bmad-method.png feat: update website header with new BMAD Method branding (#1352) 2026-01-18 00:25:12 -06:00
eslint.config.mjs feat(skills): TOML-based agent and workflow customization (#2284) 2026-04-19 19:30:29 -05:00
package-lock.json chore(release): v6.6.0 [skip ci] 2026-04-29 03:53:32 +00:00
package.json chore(release): v6.6.0 [skip ci] 2026-04-29 03:53:32 +00:00
prettier.config.mjs feat: v6.0.0-alpha.0 - the future is now 2025-09-28 23:17:07 -05:00
removals.txt fix(installer): remove pre-v6.2.0 wrapper skills on update (closes #2309) (#2315) 2026-04-25 22:08:44 -05:00

README.md

BMad Method

Version License: MIT Node.js Version Python Version uv Discord

Build More Architect Dreams — An AI-driven agile development module for the BMad Method Module Ecosystem, the best and most comprehensive Agile AI Driven Development framework that has true scale-adaptive intelligence that adjusts from bug fixes to enterprise systems.

100% free and open source. No paywalls. No gated content. No gated Discord. We believe in empowering everyone, not just those who can pay for a gated community or courses.

Why the BMad Method?

Traditional AI tools do the thinking for you, producing average results. BMad agents and facilitated workflows act as expert collaborators who guide you through a structured process to bring out your best thinking in partnership with the AI.

  • AI Intelligent Help — Invoke the bmad-help skill anytime for guidance on what's next
  • Scale-Domain-Adaptive — Automatically adjusts planning depth based on project complexity
  • Structured Workflows — Grounded in agile best practices across analysis, planning, architecture, and implementation
  • Specialized Agents — 12+ domain experts (PM, Architect, Developer, UX, and more)
  • Party Mode — Bring multiple agent personas into one session to collaborate and discuss
  • Complete Lifecycle — From brainstorming to deployment

Learn more at docs.bmad-method.org


🚀 What's Next for BMad?

V6 is here and we're just getting started! The BMad Method is evolving rapidly with optimizations including Cross Platform Agent Team and Sub Agent inclusion, Skills Architecture, BMad Builder v1, Dev Loop Automation, and so much more in the works.

📍 Check out the complete Roadmap →


Quick Start

Prerequisites: Node.js v20+ · Python 3.10+ · uv

npx bmad-method install

Want the newest prerelease build? Use npx bmad-method@next install. Expect higher churn than the default install.

Follow the installer prompts, then open your AI IDE (Claude Code, Cursor, etc.) in your project folder.

Non-Interactive Installation (for CI/CD):

npx bmad-method install --directory /path/to/project --modules bmm --tools claude-code --yes

Override any module config option with --set <module>.<key>=<value> (repeatable). Run --list-options [module] to see locally-known official keys (built-in modules plus any external officials cached on this machine):

npx bmad-method install --yes \
  --modules bmm --tools claude-code \
  --set bmm.project_knowledge=research \
  --set bmm.user_skill_level=expert

See all installation options

Not sure what to do? Ask bmad-help — it tells you exactly what's next and what's optional. You can also ask questions like bmad-help I just finished the architecture, what do I do next?

Modules

BMad Method extends with official modules for specialized domains. Available during installation or anytime after.

Module Purpose
BMad Method (BMM) Core framework with 34+ workflows
BMad Builder (BMB) Create custom BMad agents and workflows
Test Architect (TEA) Risk-based test strategy and automation
Game Dev Studio (BMGD) Game development workflows (Unity, Unreal, Godot)
Creative Intelligence Suite (CIS) Innovation, brainstorming, design thinking

Documentation

BMad Method Docs Site — Tutorials, guides, concepts, and reference

Quick links:

Community

Support BMad

BMad is free for everyone and always will be. Star this repo, buy me a coffee, or email contact@bmadcode.com for corporate sponsorship.

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

License

MIT License — see LICENSE for details.


BMad and BMAD-METHOD are trademarks of BMad Code, LLC. See TRADEMARK.md for details.

Contributors

See CONTRIBUTORS.md for contributor information.