chore: sync v6.5.0 + refactor to installer-based pipeline (v6.5.0.1) - #69
Open
tgorka wants to merge 57 commits into
Open
chore: sync v6.5.0 + refactor to installer-based pipeline (v6.5.0.1)#69tgorka wants to merge 57 commits into
tgorka wants to merge 57 commits into
Conversation
release: v6.0.0-Beta.8.0
release: v6.0.3.3
…ons-1772002853578 Add Claude Code GitHub Workflow
release: v6.0.3.4
release: v6.0.4.2
release: v6.0.4.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
release: v6.2.0.0
release: v6.2.0.1
release: v6.2.0.2
release: v6.2.0.3
release: v6.2.0.4
release: v6.2.2.0
Complements clean-orphaned-skills.ts (which removes whole orphan skill directories) by detecting individual files that survive inside skill directories that still exist. For example, when upstream renames or removes a sub-file while keeping the skill's top-level directory, the stale file is never cleaned up because sync only copies/overwrites. Multiple upstream sources can contribute into the same plugin skill directory (e.g., skills/research/ receives content from both core and GDS), so the expected file set is the union across all enabled sources, plus SKILL.md (generated) and plugin-only data. Run: bun run find-orphans # report all sources bun run find-orphans -- --source core # filter report bun run find-orphans:delete # delete orphans Opt-in only — not wired into sync-all, mirroring clean:orphaned's invocation pattern.
Upstream release: https://github.com/bmad-code-org/BMAD-METHOD/releases/tag/v6.3.0 Notable upstream changes pulled in: - bmad-init skill eliminated; config now loads from _bmad/bmm/config.yaml - Dev personas Barry/Quinn/Bob consolidated into Developer (Amelia) — corresponding skill dirs removed (bmad-agent-qa, bmad-agent-quick-flow- solo-dev, bmad-agent-sm) - spec-wip.md singleton replaced by spec-{slug}.md (status field) - Custom content installation removed in favor of marketplace-based install Tooling fix included: clean-orphaned-skills.ts now also checks src/core-skills/ for valid skill names. Upstream renamed src/core/skills/ → src/core-skills/ at v6.2.x but the cleanup script was still pointing at the old path, causing it to wrongly remove core skills that sync had just populated (bmad-brainstorming, bmad-distillator, etc.). Backward-compatible: older paths are still checked as fallbacks. Plugin version bumped to 6.3.0.0 via bun run bump-core.
Upstream releases covered: v1.8.0 through v1.12.2 Latest at https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/releases Notable upstream changes pulled in: - v1.9.0: Skills made self-contained with embedded resources (tea-index.csv) - v1.9.1: Playwright 1.59 compatibility, banner and doc cross-link updates - v1.10+: Continued refinements to testarch workflows (atdd, trace, nfr, ci, framework, automate, test-design, test-review, teach-me-testing) The fetch-latest bump picked v1.12.2 rather than the v1.9.1 referenced in issue PabloLION#58 because several intermediate releases have shipped since the issue was opened. Happy to pin to v1.9.1 via --tag if preferred — this brings the plugin to the actual latest TEA release. Plugin version bumped to 6.3.0.1 via bun run bump-module --source tea.
Upstream releases covered: v0.2.3, v0.2.4, v0.3.0 Latest at https://github.com/bmad-code-org/bmad-module-game-dev-studio/releases Notable upstream changes pulled in: - v0.2.2: All 22 workflows renamed with gds- prefix (applied earlier, inherited here) - v0.2.3: Workflow refs changed from markdown links to bare paths (Opencode compatibility) - v0.2.4: Hardcoded _bmad/ paths replaced with relative / skill: prefixes (future-proofing) - v0.3.0: Latest tag — brings plugin to newest GDS release Structural changes surfaced by find-orphan-files: - gds-create-gdd: steps/ → steps-c/ reorganization — 15 old step files removed - gds-quick-dev: steps/ → steps-c/ reorganization — 6 old step files removed - 3 orphan skill dirs removed by clean:orphaned (create-prd, gds-quick-dev-new-preview, gds-quick-spec) - 5 new game-dev agents regenerated The fetch-latest bump picked v0.3.0 rather than the v0.2.4 referenced in issue PabloLION#56 because v0.3.0 shipped between the issue opening and this sync. Happy to pin to v0.2.4 via --tag if preferred. Plugin version bumped to 6.3.0.2 via bun run bump-module --source gds.
Brings main up to 6.3.0.2 (core v6.3.0, TEA v1.12.2, GDS v0.3.0) so the fork's main branch can be used as a Claude Code marketplace source for testing before upstream PR PabloLION#60 merges.
Strip legacy paths and fallbacks ahead of the v6.5.0 regression-style sync: - clean-orphaned-skills.ts: drop 3-element candidate array (src/core/skills, src/core/workflows) and check only the canonical src/core-skills/ location. - path-rewriter.ts (addCoreSpecialWorkflows): remove try-newDir-then-oldDir fallback. Drop the un-prefixed-name back-compat alias map -- v6.5.0 upstream no longer emits _bmad/core/workflows/<name>/ references (verified with grep, zero hits). - sync-upstream-content.ts: replace the inline ad-hoc version-update block (which only touched .plugin-version, package.json, plugin.json) with a delegation to updateJsonVersionFiles() from bump-utils.ts. This fixes the long-standing marketplace.json drift (was stuck at 6.2.0.4 because the inline block never updated it). - upstream-sources.ts: TODO note on TEA agentRefMappings, to be reviewed after Phase 5 validation against TEA v1.15.1 (which moved the agent to SKILL.md format). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Delete the entire plugins/bmad/skills/, plugins/bmad/_shared/, and plugins/bmad/templates/ trees so the next sync rebuilds them purely from the v6.5.0-era upstream sources. This is the strongest guarantee that no v6.3-era artifact survives the upgrade. Preserved: - plugins/bmad/agents/ (22 files, 100% plugin-owned per pluginOnlyAgents) - plugins/bmad/.claude-plugin/plugin.json (plugin manifest) - plugins/bmad/README.md (marketplace landing readme) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
While running the v6.5.0 sync, two new path-pattern categories surfaced that
the rewriter didn't yet handle:
1. **User-side passthrough aliases** (zero rewrites, no warnings):
- _bmad/scripts/ — resolve_config.py / resolve_customization.py (upstream
tooling the user invokes from their project root)
- _bmad/custom/ — user-authored config.toml overrides
- _bmad/planning/ — user-authored PRD / architecture docs
These reference the user's project tree, not plugin content. Treating them
like _memory (silent passthrough) is the correct semantics.
2. **Un-prefixed core skill aliases** (cross-module refs):
- TEA v1.15.1 still emits {project-root}/_bmad/core/workflows/<un-prefixed-name>/
references (e.g., advanced-elicitation, party-mode). Restore the un-prefixed
fallback alias in addCoreSpecialWorkflows so cross-module callers continue
to resolve until upstream catches up.
After both fixes, sync now reports zero rewrite warnings.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream release: https://github.com/bmad-code-org/bmad-module-game-dev-studio/releases/tag/v0.4.0 Notable upstream changes pulled in: - customize.toml authoring pattern adopted across GDS workflow skills - Various agent SKILL.md frontmatter refreshes - Knowledge / step-file content updates Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream release: https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite/releases/tag/v0.2.0 Notable upstream changes pulled in: - customize.toml authoring pattern adopted for all bmad-cis-* workflow skills - Step-file refreshes across design-thinking / brainstorming / problem-solving suites Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream release: https://github.com/bmad-code-org/bmad-builder/releases/tag/v1.7.0 Notable upstream changes pulled in: - bmad-agent-builder, bmad-module-builder, bmad-workflow-builder, bmad-bmb-setup workflow / step refreshes - customize.toml introduced where applicable Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream release: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/releases/tag/v1.15.1 Notable upstream changes pulled in: - TEA agent moved from YAML to SKILL.md format (bmad-tea/SKILL.md) - customize.toml adopted for testarch-* workflow skills - Knowledge base, step-file, and checklist refreshes across the test-architecture workflows (atdd, automate, ci, framework, nfr, test-design, test-review, trace) Note: agentRefMappings retained in scripts/lib/upstream-sources.ts for now — TEA still emits some un-prefixed cross-module refs (advanced-elicitation, party-mode) which the path-rewriter handles via the un-prefixed core alias fallback. TODO to drop these mappings once upstream catches up. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream release: https://github.com/bmad-code-org/BMAD-METHOD/releases/tag/v6.5.0 Notable v6.5.0 upstream changes pulled in: - NEW core skill `bmad-customize` (skill-level [agent]/[workflow] override layer, replacing the older central-config approach) - customize.toml authoring pattern adopted across BMM and core skills - module.yaml introduced at module roots - workflow.md / bmad-skill-manifest.yaml deletions across implementation phase (already in skipContentFiles list, transparent to plugin) - Step-file, instruction, and checklist refreshes across most workflows Plugin version anchors updated to v6.5.0.0 across: - .plugin-version - package.json - plugins/bmad/.claude-plugin/plugin.json - .claude-plugin/marketplace.json (was stuck at v6.2.0.4 — fixed by the bump-utils delegation in the earlier sync-upstream-content.ts edit) - README badge Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ugin-only Validate flagged these two GDS agents as having no upstream counterpart in v0.4.0. They are maintained directly in plugins/bmad/agents/ and are not generated from any upstream SKILL.md, so list them in pluginOnlyAgents. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add an Added/Changed/Removed/Fixed entry covering the v6.5.0 sync, backward-compat removal, marketplace.json fix, and plugin-only agent registrations. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
chore: sync upstreams v6.5.0.0 (regression-style upgrade, no backward compat)
Update all stale numbers and references to reflect the v6.5.0.0 state: - Features section: 9 → 22 agents, 26 → 93 skills (with module breakdown: 40 core + 10 TEA + 4 BMB + 10 CIS + 29 GDS) - Add Customization Layer feature note (new in v6.5.0) - Marketplace pin example: v6.0.0-Beta.4.2 → v6.5.0.0 - Quick Start: drop the removed `init` and `status` skills, point at the current `bmad-help`, `bmad-product-brief`, `bmad-customize` entry points - Agents table: replaced 10-agent flat list with 5-module structure reflecting all 22 agents (10 core, 3 BMB, 1 TEA, 1 plugin-only, 7 GDS) - Workflow Phases: name actual skills per phase, add Phase 5 (Customization) for v6.5.0 - Comparison table: bump version, skill count, agent count, last-updated date; tighten the Key Advantages bullets - Deprecation Notice: capture the per-module SKILL.md migration progress (TEA fully migrated, GDS mostly, BMM still on workflow.yaml) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…n references User audit surfaced a 3-month gap in CHANGELOG.md (no entries between v6.0.0-Beta.4.1 in late January and v6.5.0.0 just released) plus several old-version traces in docs and source comments. CHANGELOG.md: - Reconstruct 10 missing tag entries from git log + tag metadata: v6.0.3.4, v6.0.4.2, v6.0.4.3, v6.2.0.0-4, v6.2.2.0, v6.3.0.2. Each entry summarises the actual sync / fix / refactor that landed. - Fenced as "Reconstructed entries" since they were not authored at the time. - Add compare-link footers for all 11 new entries plus v6.5.0.0. Source comments cleaned (no more pinning historical migrations to v6.2.2): - scripts/lib/upstream-sources.ts: drop "Core v6.2.2:" prefixes from contentRoot and pluginOnlyAgents comments — the layout is just current. - scripts/lib/checks/workflows.ts: same — "since v6.2.2" → just describes what the code does. - scripts/lib/checks/paths.ts: drop "(v6.2.2+ layout)" parenthetical. Examples in scripts/docs updated to current versions: - scripts/release.sh: "6.0.0-Beta.8.0" → "6.5.1.0" - scripts/bump-module.ts: comment example now leads with "6.5.0.1" and notes legacy beta tag support as a fallback case. - AGENTS.md: example "6.0.0-Beta.9.0" → "6.5.1.0". - docs/versioning.md: example "(e.g., 6.0.0-Beta.4)" → "(e.g., 6.5.0)". - docs/releasing.md: examples bumped to 6.5.1.0 / 6.5.0.0. - docs/script-pipeline.md: version-file CSV examples + release example bumped to 6.5.0.0 / 6.5.1.0. docs/bmad-ecosystem.md: - Re-audit date 2026-02-05 → 2026-04-27. - Replace stale module-version table (BMM 6.0.0-Beta.6, TEA 0.1.1-beta.3, CIS 0.1.3, GDS 0.1.4, BMB 0.1.4) with current v6.5.0 state and reframe counts as "plugin output" (post-prefix-rename, post-sync) so the totals reconcile against the README (22 agents / 93 skills). - Update Plugin Integration Status table: CIS / GDS / BMB no longer "Blocked" — they're configured. Drop stale beads issue refs. - Note TEA v1.15.1's move to SKILL.md and GDS v0.4.0's customize.toml adoption. Two intentional Beta references retained: - docs/project-decisions.md historical checklist (project history). - scripts/bump-module.ts comment documenting legacy-tag fallback. Validation: typecheck / lint / validate all green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…shots Both files are point-in-time research artifacts from January 2026 (v6.0.0- alpha.23 era) that drove the plugin's initial design. research.md has a "Created: 2026-01-25" footer; bmad-method-analysis.md ends with a "Source: bmadcode/BMAD-METHOD v6.0.0-alpha.23" citation. Refreshing them would erase useful project history (the Research Needed / Project Goal / .agent.yaml schema sections capture why and how the plugin came to exist). Add a clear Historical-Snapshot callout at the top of each, pointing readers to the current README / bmad-ecosystem / CHANGELOG for live data, and to project-decisions / upstream-sync-design for the decisions that followed from this analysis. Numbers, versions, and "verified" stamps in the body remain frozen as a record of the starting point. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…uation
User audit surfaced ambiguities in the Agents section:
- Did not distinguish auto-generated agents (regenerated each sync) from
hand-maintained plugin-only agents (persist across syncs).
- The two "Quinn" entries (qa.md and quinn.md) looked like duplicates.
Per quinn.md identity ("Simpler, more direct approach than the advanced
Test Architect module") they are intentional flavours: qa is the broad
BMM QA Engineer persona; quinn is a focused rapid-test-generation
alternative with a narrower tool surface (adds Bash, drops the deep
test-architecture workflows). Same first name, different scope.
- The two "Paige" entries (tech-writer + gds-agent-tech-writer) were not
acknowledged at all — game-scoped vs general docs.
Changes:
- Add provenance preamble: 6 generated + 16 plugin-owned (with the exact
list of which is which).
- Add a "Source" column to the GDS table flagging which 5 are generated
and which 2 are plugin-only (gds-agent-game-qa = GLaDOS,
gds-agent-game-scrum-master = Max).
- Re-label the Core section as "9 personas + 1 orchestrator" so the count
is parseable (9 BMM personas + bmad-master = 10).
- Expand the qa/quinn rows to make the distinction obvious.
- Add an explicit Note at the bottom calling out that duplicate persona
names (Quinn × 2, Paige × 2) are intentional, with the disambiguation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Introduces scripts/sync-from-installer.ts which delegates 100% of the
content-shaping work to the official `npx bmad-method install --tools
claude-code` CLI. The installer already produces a Claude Code-native
tree (correct flat layout, customize.toml per skill, agents-as-skills),
so the plugin becomes a thin wrapper:
1. Run `npx bmad-method@<version> install --yes --directory
.upstream-install --modules bmm,bmb,cis,gds,tea --tools claude-code`
2. Wipe plugins/bmad/{skills,_shared,agents,templates}
3. Copy .upstream-install/.claude/skills/* 1:1 to plugins/bmad/skills/
4. Bump version anchors (.plugin-version, package.json, plugin.json,
marketplace.json, .upstream-versions/*.json) via bump-utils.ts
Also:
- package.json: rewire `bun run sync` to the new script. Drop generate:*,
sync:source, sync-all, clean:orphaned, find-orphans (these become
redundant once the installer does the merging — they will be deleted in
Phase 3 of the migration plan).
- .gitignore: add .upstream-install/.
- docs/plan-npx-resync.md: track the multi-phase migration plan that this
commit kicks off.
This commit only adds the new script; the actual wipe-and-regenerate of
plugins/bmad/ happens in the next commit (Phase 2).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Wipes plugins/bmad/skills/, plugins/bmad/_shared/, plugins/bmad/agents/, and plugins/bmad/templates/, then runs the new installer-based sync to rebuild plugins/bmad/skills/ from the official `npx bmad-method@6.5.0 install --tools claude-code` output. This is the first sync since the migration to the installer-based pipeline. Net result: - 102 skill directories (was 93) — picks up the 9 missing/misplaced skills (gds-document-project, bmad-tea, 5 GDS agent skills, plus the 3 research skills that were nested under skills/research/ instead of flat). - 1392 files (was 1296). The increase is mostly customize.toml files the old sync was missing for agent skills, plus correctly-placed resources/. - 90 customize.toml files (was 79) — full upstream coverage. - No plugins/bmad/agents/ directory (Q1 = A: drop entirely). All 22 agent .md files are gone; agent personas now live as skills under plugins/bmad/skills/bmad-agent-* / bmad-tea / gds-agent-*. Invoke via `/bmad:bmad-agent-pm` instead of `Use the pm agent…`. - No plugins/bmad/_shared/ (was 1 file: agent-manifest.csv, made redundant by the installer's per-skill resources/). - No plugins/bmad/templates/ (made redundant — templates ship inside individual skill dirs now). - Zero zombie agents (Bob, Quinn-as-QA, Barry, BMad Master) — they were already gone upstream since v6.3.0; deleting agents/ removes the last trace. - Byte-identical between source (plugins/bmad/) and installed cache (~/.claude/plugins/cache/bmad-method/bmad/6.5.0.0/) — 1392 files, zero hash diffs. The next commit (Phase 3) deletes the now-redundant scripts that the old multi-source sync needed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The installer-based sync introduced in 'feat(scripts): add installer-
based sync' makes the entire multi-source sync pipeline redundant. The
installer (npx bmad-method install --tools claude-code) does all the
merging, path-rewriting, and per-skill structuring that this code used
to do — and does it correctly because it's the upstream's own canonical
output.
Deleted scripts (16 files, ~3455 lines net):
scripts/sync-upstream-content.ts # replaced by sync-from-installer
scripts/sync-all.ts # was sync + generate:* chain
scripts/generate-agents.ts # installer ships agents-as-skills
scripts/generate-skills.ts # installer ships SKILL.md
scripts/generate-agent-manifest.ts # installer ships help-catalog
scripts/clean-orphaned-skills.ts # not needed (wipe-and-replace)
scripts/find-orphan-files.ts # not needed
scripts/bump-core.ts # bumping is in sync now
scripts/bump-module.ts # ditto
scripts/lib/path-rewriter.ts # installer outputs final paths
scripts/lib/workflow-iterator.ts # no per-source iteration
scripts/lib/checks/agents.ts # nothing to cross-check
scripts/lib/checks/agent-skills.ts # ditto
scripts/lib/checks/content.ts # ditto
scripts/lib/checks/naming.ts # ditto
scripts/lib/checks/paths.ts # ditto
scripts/lib/checks/sync.ts # ditto
scripts/lib/checks/workflows.ts # ditto
Shrunken (kept, simplified):
scripts/lib/upstream-sources.ts # 277 → 95 lines: keep only
# the module list + version
# helpers; drop all the
# sync-config fields
scripts/lib/checks/index.ts # only checkVersion survives
scripts/lib/checks/version.ts # no longer needs upstream
# git clones — checks the
# version files directly
scripts/validate-upstream-coverage.ts # was three-way coverage
# check; now: version
# consistency + sanity
# check that
# plugins/bmad/skills/ has
# contents
scripts/update-readme-version.ts # drop "Released" column
# (would have needed git
# clones); keep Version +
# Last-Checked
package.json:
- Drop bump-core, bump-module from scripts (no callers)
- Keep sync, sync:dry, validate, update-readme, typecheck, lint, test
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- README.md
• Replace "Deprecation Notice" + "Features" sections with a "How
it's built" preamble (thin wrapper around npx bmad-method) plus a
feature list framed around the 102-skill output.
• Replace the multi-section Agents listing with a single Agent
Personas table — agents are skills now, no separate directory.
• Update Workflow Phase examples to reference the actual flat skill
names (bmad-market-research etc.).
• Update the comparison table: 102 skills (41 BMM + 11 TEA + 4 BMB +
10 CIS + 36 GDS), 21 agent personas (shipped as skills), source-of-
truth = official npx installer, validation strategy simplified.
• Drop "Released" column from upstream version table (would require
git clones).
- AGENTS.md
• Available Scripts: drop generate:*, sync:source, sync-all,
bump-core, bump-module (deleted in Phase 3).
• Upstream Sync section: rewrite for the npx-installer flow.
• Replace 26-row "Current Agents" table (which mixed BMM zombie
personas + CIS skills) with a smaller reference table pointing
readers at the canonical SKILL.md frontmatter for the full list.
• Automation First: restate around `bun run sync` as the single
sync command.
- docs/upstream-sync-design.md, docs/script-pipeline.md
Mark both as historical (pre-v6.5.0+) since the pipeline they
describe no longer exists. Body of each doc kept as archaeological
reference.
- tests/e2e/skill-load.test.ts
• Update skill names to current v6.5.0 prefixed form (bmad-help,
bmad-brainstorming, bmad-customize, bmad-create-prd, …).
• Replace removed init/status tests with bmad-customize coverage.
• Replace "Use the quinn agent" delegation with /bmad:bmad-tea and
/bmad:bmad-agent-pm slash invocations (agents-as-skills).
• Refresh smoke pool to use real v6.5.0 skill slugs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Detailed CHANGELOG entry covering:
- The architectural shift to npx bmad-method install as the source of
truth (vs the previous multi-source git-clone pipeline).
- The 102-skill output (was 93), with the 9 net-new entries called out
by category (research skills flattened, 6 agent-skills relocated,
gds-document-project added).
- Removal of plugins/bmad/{agents,_shared,templates}/ — agents are
skills now, _shared content moved into per-skill resources/.
- Removal of 16 scripts (~3455 lines net) and the package.json
entries that backed them.
- Migration steps for existing users.
Bump versions: 6.5.0.0 → 6.5.0.1 across .plugin-version,
package.json, plugins/bmad/.claude-plugin/plugin.json,
.claude-plugin/marketplace.json. README badge regenerated.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
chore: re-source plugin from npx bmad-method install (v6.5.0.1)
Bumps core BMAD-METHOD to v6.6.0 and TEA to v1.17.0. BMB / CIS / GDS remain at v1.7.0 / v0.2.0 / v0.4.0 (already at the latest stable GitHub tag). Skill count holds at 102; only 3 upstream skill files changed (the new "Implementation Efficiency" guidance for bmad-create-epics-and-stories). Breaking-change matrix from upstream v6.6.0: - --tools none removed: not used (sync passes --tools claude-code) - project_name moved to [core] in config.toml: end-user install only - legacy bmad-bmm-* / bmad-agent-bmm-* skills auto-removed: none in tree Sync script fixes: - bumpModuleVersions() now reads canonical _bmad/_config/manifest.yaml produced by the v6.6.0 installer. Previous regex against _bmad/<mod>/config.yaml silently no-op'd because that file no longer carries a version: field. Without this fix TEA v1.17.0 would not have been picked up. - Reordered: updateReadmeBadge() runs after bumpModuleVersions() so the README badge and version table reflect freshly-written module versions. Quality gates: typecheck, lint, validate, e2e (6/6 passing) — all green. Idempotent: re-running the sync produces no further diff.
chore: sync upstream BMAD-METHOD v6.6.0 (plugin v6.6.0.0)
- pruneDeprecatedSkills(): drop any skill whose frontmatter description starts with DEPRECATED — the plugin ships only the current surface, no backwards-compatibility forwarders - captureRuntimeTemplate(): copy the installer's _bmad/ runtime tree into plugins/bmad/runtime/_bmad/, templatize the project name as __BMAD_PROJECT_NAME__, strip pruned-shim rows from _config/*.csv, and store nested .gitignore files as dot.gitignore (a real one would exclude sibling template files from this repo's git tree) - plugins/bmad/runtime/ joins the wipe-and-regenerate cycle - validate: no-deprecated-shims invariant + runtime/init asset checks - bump-utils: no spurious version-not-found warnings on idempotent re-sync; sync summary recounts files after pruning - biome: exclude plugins/bmad/skills/ and plugins/bmad/runtime/ entirely (upstream v6.10 ships lintable assets biome would reformat, breaking the byte-for-byte mirror) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Skills resolve per-project files from {project-root}/_bmad/ (module
config, shared scripts like memlog.py / resolve_customization.py —
mandatory since upstream v6.9's canonical memlog) and write artifacts
to configured output folders. The immutable plugin cannot provide
those files, so:
- plugins/bmad/scripts/init.sh: idempotent initializer — fills in
missing _bmad/ files from the runtime template (never overwrites),
substitutes the real project name, restores dot.gitignore →
.gitignore, creates default output folders (_bmad-output/*, docs/,
skills/*-artifacts). Supports --dry-run and a target-dir argument.
- plugins/bmad/commands/init.md: /bmad:init slash command wrapping
the script via ${CLAUDE_PLUGIN_ROOT}
- plugin.json: declare the commands directory
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regenerated plugins/bmad/skills/ from npx bmad-method@6.10.0 install --tools claude-code. Module bumps: TEA v1.17.0 → v1.19.0, BMB v1.7.0 → v2.1.0, CIS v0.2.0 → v0.2.1, GDS v0.4.0 → v0.6.0. Skill count 102 → 100 (42 BMM + 11 TEA + 4 BMB + 10 CIS + 33 GDS): - new: bmad-prd, bmad-architecture, bmad-ux, bmad-spec, bmad-forge-idea, bmad-dev-auto, bmad-eval-runner, gds-gdd, gds-prd, gds-ux, gds-investigate - retired upstream: bmad-distillator, bmad-create-ux-design, the GDS create/edit/validate trios (consolidated into intent-based skills) - pruned deprecated shims (not shipped): bmad-create-prd, bmad-edit-prd, bmad-validate-prd, bmad-create-architecture Also captures the installer's _bmad/ runtime tree as plugins/bmad/runtime/_bmad/ (40 files) for /bmad:init, and adds the test:unit script to package.json alongside the version bump. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- tests/plugin-tree.test.ts: no deprecated shims survive, retired skills absent, v6.7–v6.10 surface present, runtime template complete and templatized, manifest hygiene, plugin manifest wiring - tests/init-script.test.ts: full structure creation, project-name substitution, idempotency (never overwrites), --dry-run - e2e smoke pool: bmad-create-prd → bmad-prd, bmad-create-architecture → bmad-architecture; added bmad-spec and bmad-forge-idea - CI: run bun run validate and bun run test:unit (e2e still needs the claude CLI and stays manual) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- README: 100-skill breakdown, intent-based planning skills, Step 3 /bmad:init walkthrough, documented divergences from raw installer output (shim pruning + runtime template), refreshed comparison table - CHANGELOG: 6.10.0.0 entry with upstream breaking-change matrix (v6.7 → v6.10) - AGENTS.md: sync pipeline steps (prune + runtime capture), test:unit, never-hand-edit warning for generated trees - docs/bmad-ecosystem.md: v6.10.0.0 module inventory (21 personas / 100 skills), removed references to the deleted pre-6.5 sync layer - docs/manual-testing.md: rewritten for the current skill surface and /bmad:init (was describing the pre-v6.5 instructions.md layout) - docs/versioning.md: patch counter starts at .0 (matches practice) - plugins/bmad/README.md: rewritten — still listed the pre-v6.3 agent roster (bmad-master, sm, quick-flow-solo-dev) and retired skills Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bmad-loop (upstream v6.10's successor to bmad-automator) is a Python
orchestrator tool, not an npx-installer module — its Claude Code
skills ship inside its own repo under src/bmad_loop/data/skills/
(BMAD module code bmad-loop). Skill count 100 → 103.
- sync: new syncLoopSkills() step clones bmad-code-org/bmad-loop at
the tag pinned in .upstream-versions/loop.json (--loop-tag to
override) and copies bmad-loop-{setup,resolve,sweep} into the
plugin skill tree; loop skills go through the same deprecation
prune as installer output
- upstream-sources: 'loop' registered → version validation, README
version table and badge row generated automatically
- sync-upstream.yml: check-loop job watches bmad-loop releases weekly
- tests: bmad-loop-* skills added to the expected current surface
- docs: README (6 modules / 103 skills, third divergence note),
CHANGELOG, AGENTS.md sync steps, bmad-ecosystem inventory, plugin
README (bmad-loop-setup quick start)
The orchestrator tool itself is installed per-project by
/bmad:bmad-loop-setup (uv tool install from the bmad-loop repo);
core's bmad-dev-auto remains the inner dev primitive it drives.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
chore: sync upstream BMAD-METHOD v6.6.0 → v6.10.0 (plugin v6.10.0.0)
Core v6.11.0 moves bmad-loop into the installer registry (`bmad-modules.yaml`, `code: bmad-loop`) and renames the deprecation marker, which broke two silent assumptions in the sync: - `pruneDeprecatedSkills()` matched a literal uppercase `DEPRECATED` description. v6.11.0 writes `'Deprecated — forwards to …'`, so the prune matched zero skills while still reporting success. Rather than fix the predicate, the prune is removed: upstream's own `v6-shims/README.md` states external module repos still invoke those IDs and 'removal rides the v7 cut — never a 6.x minor'. - `syncLoopSkills()` cloned bmad-loop at a pinned tag and copied over the installer's own output. Deleted; `bmad-loop` joins `--modules`. New capability: custom sources. A real BMad module absent from the official registry (bmad-manticore) is cloned at a pinned tag and handed to the installer as a local `--custom-source` path, then captured into its own sibling plugin. Local path rather than URL keeps the run reproducible — `--custom-source <url>` resolves the moving default branch. Each custom source gets its own installer run so a plugin's runtime template only advertises the modules that plugin ships. Also templatizes `user_name` and install timestamps (the vendored tree shipped the literal `Dev`), vendors the upstream module-authoring template, replaces six copy-pasted release-watcher jobs with one matrix driven by the source registry, retires the resolved-workaround watcher, and points the badge base URL at this fork rather than its parent. Review hardening (findings from two adversarial review passes): - `.plugin-version` is written LAST, after the three JSON manifests. Advancing it first made any interruption unrecoverable: the re-run reads the already-advanced value, `updateJsonVersionFiles` takes its no-op branch, and the manifests stay behind forever — publishing new content under the old version, which no installed user is offered. The patch counter is now preserved when core is unchanged, so a re-sync cannot walk a published 6.11.0.1 back to 6.11.0.0. - Custom sources are fetched by `refs/tags/<tag>` into a detached HEAD rather than `git clone --branch <tag>`, which resolves branches before tags and so can be shadowed by a same-named branch. The resolved SHA is logged, and the vendored template's SHA is verified against its pin. - `.upstream-versions/<id>.json` for a custom source is written after its content is captured, not right after the clone. The old order let a mid-run failure leave the repo advertising a version it does not ship, with validate green. - Sibling plugins now get their own filtered `_config/skill-manifest.csv`, so the skill-surface gate covers them too; previously a partial upstream prefix rename would have shipped a silent subset past a non-empty `skills/` check. - Help rows naming a skill the installer did not install are dropped at capture. manticore v1.0.1 declares mc-audio, whose frontmatter is invalid YAML, so the installer rejects it — shipping the row made bmad-help offer and route to a skill that is not there. - `rehashFilesManifest()` asserts the manifest header and always logs its count. Its row guard pins the column count and hash width, so an upstream schema change would have made every row skip at once and silently restored the non-idempotency it exists to remove. - `flagValue()` accepts `--flag=value` and rejects a value starting with `--`. `--tag=v6.12.0` used to be ignored, silently syncing the pinned version instead and producing a tree every gate passes. - All throwaway checkouts moved under `.upstream-clones/`, so one .gitignore line covers them. The per-clone literals meant a second CUSTOM_SOURCES entry became committable. Deliberately not widened to `.upstream-*`, which would swallow `.upstream-versions/`. - The release watcher no longer depends on an issue tracker. This repo is a fork, forks ship with issues disabled, and `gh issue list` exits 1 in that state — under `set -euo pipefail` every drifted source would have turned the job red and filed nothing. Drift now always lands in the job summary plus a workflow warning; an issue is filed only if the tracker is enabled, deduped on exact title rather than GitHub's relevance search. The matrix step gained `set -euo pipefail` and fails on an empty matrix instead of instantiating zero jobs and reporting success.
Full from-scratch regeneration — `bun run sync -- --tag v6.11.0` wipes
plugins/bmad/{skills,runtime} and rebuilds them from a fresh installer
run, so every file is byte-identical to what `npx bmad-method install`
produces. 110 skills (was 103), 1388 files.
Skill-surface delta vs v6.10.0:
- Added: bmad-build, bmad-build-auto (replace bmad-quick-dev /
bmad-dev-auto), bmad-review (one skill, many lenses), bmad-deep-recon
(market + domain + technical research consolidated),
bmad-project-context (replaces bmad-document-project and
bmad-generate-project-context).
- Removed upstream: bmad-index-docs, bmad-shard-doc,
bmad-check-implementation-readiness (folded into bmad-sprint-planning's
readiness gate), bmad-agent-tech-writer (Paige retired).
- The 20 v6 deprecation shims now ship. See the pipeline commit: upstream
states external module repos still invoke those IDs in 6.x.
Runtime template additions: _bmad/render/ (content-addressed skill
snapshots written by render_skill.py), _bmad/scripts/render_skill.py and
config_utils.py, _bmad/bmad-loop/ (loop is a registry module now), and
the two v6-shims/README.md stubs. `user_name` and the install
timestamps are templatized — the v6.10 tree shipped a literal `Dev`.
Module versions, all read back from the installer's own
_bmad/_config/manifest.yaml rather than guessed: bmb v2.1.0 -> v2.2.1,
tea v1.19.0 -> v1.23.3, bmad-loop v0.8.0 -> v0.11.0, cis -> v0.3.1,
gds -> v0.7.1. The v6.10 sync had written cis.json and gds.json
transposed (manifest recorded cis v0.2.1 / gds v0.6.0); both are now
correct, so CIS is not the downgrade the numbers suggest.
Gates land with the content they measure: `bun run validate` now
compares plugins/bmad/skills/ against the installer's own
_config/skill-manifest.csv in both directions, replacing the
"no DEPRECATED shims" rule that v6.11's sentence-case rename had turned
into a check that passed while measuring nothing. It also rejects any
vendored file carrying the install-dir name, a non-placeholder
user_name, or a live nested .gitignore, and requires registry sources to
pin a v-prefixed tag. The e2e smoke pool drops the retired and shimmed
skills for their v6.11 replacements.
Gate hardening from review: the templatization check now asserts every
known machine-specific key equals its placeholder (user_name,
project_name, installDate, lastUpdated) AND, independently of those
keys, scans config/manifest files for a surviving ISO timestamp or this
operator's identity. The key-based half shares a predicate with the sync
it audits and therefore cannot catch the sync silently missing a renamed
key; the value-based half can, which is the exact failure mode this
rebuild exists to fix. The skill-surface check runs per published plugin
and additionally resolves every module-help row to a shipped skill.
checkVersion now requires all four version anchors to agree — an
interrupted bump leaves .plugin-version ahead of three manifests that
still agree with each other, so nothing previously noticed.
Each gate mutation-verified: a leaked installDate, a leaked
project_name, the operator's name under a renamed key, a disagreeing
package.json version, and a help row naming a non-existent skill are all
caught.
The identity half of the templatization scan matches only where the
operator's name is the WHOLE value of a `key: value` line — any key, so
a renamed one is still caught, but prose is not. A bare word search
cried wolf on CI: GitHub Actions runs as `runner`, and `bmad-eval-runner`
is a real skill id that appears throughout the manifests.
…the module template The marketplace now carries two plugins. **bmad-manticore** (upstream v1.0.1, 15 skills) is a real BMad module — it ships skills/module.yaml with code `manticore` — but is absent from upstream's official `bmad-modules.yaml` registry, so the sync installs it through `--custom-source` from a tag-pinned local clone. It is a separate plugin rather than 15 more skills inside the aggregate because its prerequisites (ffmpeg, node/npx, uv, Python >=3.11, multi-GB model caches) are irrelevant to most users, because 14 of its 15 skills fail closed until `mc-setup` has written `[modules.manticore]` into _bmad/custom/config.toml, and because mc-agent is an always-on persona that would compete for activation with the aggregate's agents. It stays usable: the only core runtime it needs (_bmad/scripts/resolve_config.py, _bmad/custom/) is materialised by /bmad:init from the bmad plugin. Two upstream defects at v1.0.1 are documented, not patched: mc-audio's frontmatter is invalid YAML (unquoted scalar containing ': ') so the installer drops it, 16 declared skills installing as 15; and mc-agent is absent from the core agent roster. Upstream main fixes the first but marks both 3.0.0 and 3.1.0 '- Unreleased' and carries no tag above v1.0.1, so this bundle stays on the tag. **bmad-module-template** is vendored to plugins/bmad/templates/, NOT published. Its own manifest points at ./skills/my-skill, a directory that exists in no upstream ref — an early .gitignore rule (`.*/skills`) swallowed the scaffold. Publishing it would put a dead `my-module` entry in front of users; vendoring gives module authors the scaffold next to bmad-module-builder. The gates for both additions land with them: validate now requires every plugins/<dir> to be published in the marketplace (a marketplace install is a git clone of the whole repo, so an unlisted directory is dead weight in it) and every declared plugin's plugin.json to agree with its entry; and it requires the vendored template's README. The plugin-tree tests assert the two-plugin marketplace, manticore's mc-* skills plus its module-help.csv, and that the module template is present with a dot.gitignore yet absent from the plugins array. Review hardening: the manticore plugin now carries its own filtered _config/skill-manifest.csv, so the skill-surface gate covers it in both directions rather than only checking that skills/ is non-empty — a partial upstream prefix rename would otherwise ship a silent subset. The mc-audio help row is dropped at capture: upstream declares the skill but its frontmatter is invalid YAML, so the installer never installs it, and shipping the row made bmad-help offer and route to something absent. A new gate resolves every module-help row to a shipped skill so this cannot recur. The plugin.json skills/commands assertions were replaced by the entry points they were standing in for; those manifest keys are no-ops for this layout, so pinning them failed on valid cleanups and passed on nothing real.
- Substitutes the two placeholders the sync added alongside the project name: `__BMAD_USER_NAME__` (from `git config user.name`, falling back to $USER) and `__BMAD_INSTALL_DATE__`. The v6.10 template shipped whoever last ran the sync as the literal user name. - `--with-plugin <name>` registers a sibling plugin from the same marketplace: materializes its `_bmad/<module>/` metadata and merges its help rows into `_bmad/_config/bmad-help.csv` so `bmad-help` lists them. Opt-in, never inferred from the directory listing — a marketplace install is a git clone of the whole repo, so a sibling's files are present whether or not the plugin is enabled. /bmad:init decides from its own loaded skill list. The merge is row-level and idempotent, and pads a missing trailing newline first: the installer writes bmad-help.csv without one, so a naive append glued the first merged row onto the last existing row and produced a 12-column line plus a duplicate on the next run. - Warns (never fails) when `uv` is absent. bmad-build and bmad-build-auto carry no workflow logic in v6.11 — they run `uv run _bmad/scripts/render_skill.py` and HALT without it. - Argument parsing moved to a shift loop; unknown options are now an error instead of being silently treated as the target directory. Tests land with the behaviour: --with-plugin merge idempotency and CSV column integrity after the merge, no-merge-without-the-flag, user-name and install-date substitution with no placeholder surviving, and both error paths. Removing the bmad-help.csv trailing-newline pad fails the merge-idempotency test. Review hardening — the delivery layer was the weakest part of the stack: - **/bmad:init can now upgrade a repo, not only seed one.** `copy_missing` skipped every existing path, so a repo initialized under v6.10 kept its stale shared scripts, a help catalog naming eight skills v6.11 removed while omitting 34 it ships, and the literal `user_name = "Dev"` leak this whole stack exists to delete — making "safe to re-run after a plugin update" false in exactly the case it was written for. `_bmad/custom/**` stays user-owned and untouched; everything else is installer-managed (upstream's own header calls it "Regenerated on every install — treat as read-only") and is refreshed when it differs from the template. Verified end to end against a real v6.10-initialized repo: 7 created, 17 refreshed, the Dev leak gone, bmad-build present. - **Substituted values are sanitized for their destination.** They land inside TOML strings and unquoted YAML scalars, so a git identity like `He said "hi": C:\Users\tg #1` made config.user.toml unparseable by tomllib and config.yaml unparseable by PyYAML — taking down resolve_config.py, which every skill calls. A literal newline aborted the run mid-materialization, unrecoverably. - **The date a repo was initialized is preserved across refreshes.** Restamping made every re-run report a refresh of all twelve date-bearing files. - **Sibling `_config/` is not materialized.** The sibling's filtered skill-manifest exists for this repo's gates; copying it replaced the user's 110-row aggregate manifest with 15 rows. - **Sibling help rows cannot zombie.** The catalog is reassembled from the pristine template plus each registered sibling's current rows, so a point release that reworded or removed a skill cannot leave the old version behind. Naming the same sibling twice merges it once. - **--dry-run no longer reports work it did not do** ("Done: 39 created" with an empty directory). Every one mutation-verified: identity sanitization, the refresh, the custom/ exemption, the sibling _config skip, the dry-run wording, date preservation, sibling dedupe, and the trailing-newline pad each fail the suite when removed.
README: two-plugin marketplace, a Requirements section for the new hard uv/Python>=3.11 dependency, per-module skill counts derived from the installer manifest, the corrected 17-persona roster (Paige retired), the one-chain Phase 4, and the gates `bun run validate` actually runs. The 'no backwards-compatibility shims' claim is replaced by the reversal and its upstream justification. AGENTS.md: the sync section now describes the two installer runs, custom sources, the registry-driven CI matrix, and manifest-sourced version bumps. Adds a Marketplace section, and corrects the Git Workflow section — it claimed PRs target `dev`, while all four merged PRs targeted `main` and `dev` sits 51 commits behind with nothing of its own. CONTRIBUTING.md gets the same correction plus the stacked-PR flow. docs/module-integration.md was fully stale and unmarked: it documented `.upstream/<repo>` clones, an `UpstreamSource` interface of a dozen fields, and `generate:agents` / `generate:skills` scripts, none of which have existed since v6.5.0.1. Rewritten as the real procedure, one section per delivery `kind`, with bmad-manticore and bmad-module-template as worked examples. docs/releasing.md now matches scripts/release.sh and records two defects it has today: the script requires the retired `dev` branch, and its bump step uses BSD `sed -i ''`, which on GNU sed aborts after rewriting `.plugin-version` but before the three JSON files — a partial bump that also trips the clean-tree precondition on retry. Documented, not fixed, because that file is out of this change's scope. Also refreshed: versioning (8 sources, the pin-format rule the gate enforces, manticore's independent version line), bmad-ecosystem (re-audited against gh api — every upstream repo now ships its own marketplace.json, automator is archived, wds is deprecated), terminology (the four-layer TOML precedence, verified from config_utils.py rather than from prose), manual-testing (both plugins, --with-plugin, the uv-missing path), and dated superseding notes on the two historical documents that asserted current-tense falsehoods.
docs: refresh the whole documentation surface for v6.11.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR brings the plugin to v6.5.0.1 and consolidates two coherent
pieces of work that landed on
tgorka/bmad-plugin@main:module bumps (TEA v1.12.2 → v1.15.1, BMB v1.4.0 → v1.7.0, CIS
v0.1.9 → v0.2.0, GDS v0.3.0 → v0.4.0). Regression-style upgrade
with no backward-compat fallbacks.
wrapper around the official
npx bmad-method install --tools claude-codeoutput (replaces the multi-source git-clone-basedsync pipeline). No upstream version change — purely a refactor
of how the plugin is built.
Why the architectural refactor (v6.5.0.1)
While auditing v6.5.0.0, several drift points surfaced between what the
old multi-source sync pipeline produced and what the official
npx bmad-method installproduces. Rather than patch each drift point,the right move is to delegate 100% of content shaping to the official
installer:
customize.tomlfilesskills/research/<name>/skills/<name>/.mdinagents/skills/gds-document-projectskills/workflows/*.mdfilesWhat changed
Added:
scripts/sync-from-installer.ts(~220 lines) — the new sync scriptdocs/plan-npx-resync.md— migration plan / rationaleRemoved:
sync-upstream-content.ts,sync-all.ts,generate-{agents,skills,agent-manifest}.ts,clean-orphaned-skills.ts,find-orphan-files.ts,bump-{core,module}.ts,lib/path-rewriter.ts,lib/workflow-iterator.ts, 7lib/checks/*.tsfilesplugins/bmad/agents/— agents are skills now, invoke via/bmad:bmad-agent-pm,/bmad:bmad-tea, etc.plugins/bmad/_shared/— replaced by per-skillresources/plugins/bmad/templates/— templates ship inside individual skilldirs
Test plan
bun run typecheck— greenbun run lint— greenbun run validate— green (now: version consistency +plugins/bmad/skills/sanity check)bun test— 6 pass, 0 fail (refreshed for v6.5.0+ skill names)claude plugin marketplace addproducesa 1392-file tree byte-identical to source (verified with
sha256sum diff)
/bmad:bmad-help,/bmad:bmad-customize,/bmad:bmad-create-prd,/bmad:bmad-tea,/bmad:gds-create-gddall load correctlyMigration notes for downstream consumers
Agent picker affordance change: agents are skills now, invoke as
/bmad:bmad-agent-pm,/bmad:bmad-teaetc. instead of "Use the pmagent…".
Commit structure
15 atomic commits on
tgorka:mainsincev6.3.0.2. Highlights:v6.5.0.0 (sync):
chore: remove v6.2/v6.3 backward-compat fallbacks before v6.5.0 syncchore: wipe legacy plugins/bmad content for clean v6.5.0 rebuildfix: path-rewriter for v6.5.0 user-side aliases and cross-module refschore: sync upstream {GDS,CIS,BMB,TEA,core} v…fix: register gds-agent-game-qa and gds-agent-game-scrum-master as plugin-onlydocs: changelog for v6.5.0.0v6.5.0.1 (refactor):
feat(scripts): add installer-based sync (replaces multi-source sync)chore: regenerate plugin tree from npx bmad-method@6.5.0 installrefactor(scripts): retire multi-source sync (-3455 lines)docs: refresh README/AGENTS/sync docs for installer-based pipelinedocs: changelog for v6.5.0.1 (installer-based sync refactor)🤖 Generated with Claude Code