Skip to content

chore: sync v6.5.0 + refactor to installer-based pipeline (v6.5.0.1) - #69

Open
tgorka wants to merge 57 commits into
PabloLION:devfrom
tgorka:main
Open

chore: sync v6.5.0 + refactor to installer-based pipeline (v6.5.0.1)#69
tgorka wants to merge 57 commits into
PabloLION:devfrom
tgorka:main

Conversation

@tgorka

@tgorka tgorka commented Apr 28, 2026

Copy link
Copy Markdown

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:

  1. v6.5.0.0 — sync core BMAD-METHOD v6.3.0 → v6.5.0 plus all 4
    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.
  2. v6.5.0.1 — architectural refactor making the plugin a thin
    wrapper around the official npx bmad-method install --tools claude-code output (replaces the multi-source git-clone-based
    sync pipeline). No upstream version change — purely a refactor
    of how the plugin is built.

⚠️ Stacks on PR #60. PR #60 is still open with the previous
v6.3.0 sync. This PR can be merged after #60 lands, or rebased onto
dev if #60 is dropped in favor of this consolidated PR.

🔄 Supersedes PR #68 (closed). PR #68 covered just v6.5.0.0 and
was stale once the installer-based refactor landed on top.

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 install produces. Rather than patch each drift point,
the right move is to delegate 100% of content shaping to the official
installer:

Symptom v6.5.0.0 v6.5.0.1
customize.toml files 79 90
Total skills 93 102
Research skills layout nested skills/research/<name>/ flat skills/<name>/
TEA + GDS agent skills flat .md in agents/ full skill dirs in skills/
gds-document-project missing present
Stray skills/workflows/*.md files shipped gone
Zombie agents (Bob/Quinn-as-QA/Barry/BMad Master) shipped gone

What changed

Added:

  • scripts/sync-from-installer.ts (~220 lines) — the new sync script
  • docs/plan-npx-resync.md — migration plan / rationale

Removed:

  • 16 scripts (~3455 net lines): 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, 7 lib/checks/*.ts files
  • plugins/bmad/agents/ — agents are skills now, invoke via
    /bmad:bmad-agent-pm, /bmad:bmad-tea, etc.
  • plugins/bmad/_shared/ — replaced by per-skill resources/
  • plugins/bmad/templates/ — templates ship inside individual skill
    dirs

Test plan

  • bun run typecheck — green
  • bun run lint — green
  • bun run validate — green (now: version consistency +
    plugins/bmad/skills/ sanity check)
  • bun test — 6 pass, 0 fail (refreshed for v6.5.0+ skill names)
  • Sandbox install via claude plugin marketplace add produces
    a 1392-file tree byte-identical to source (verified with
    sha256sum diff)
  • Smoke test: /bmad:bmad-help, /bmad:bmad-customize,
    /bmad:bmad-create-prd, /bmad:bmad-tea,
    /bmad:gds-create-gdd all load correctly

Migration notes for downstream consumers

claude plugin uninstall bmad@bmad-method
claude plugin install bmad@bmad-method

Agent picker affordance change: agents are skills now, invoke as
/bmad:bmad-agent-pm, /bmad:bmad-tea etc. instead of "Use the pm
agent…".

Commit structure

15 atomic commits on tgorka:main since v6.3.0.2. Highlights:

v6.5.0.0 (sync):

  1. chore: remove v6.2/v6.3 backward-compat fallbacks before v6.5.0 sync
  2. chore: wipe legacy plugins/bmad content for clean v6.5.0 rebuild
  3. fix: path-rewriter for v6.5.0 user-side aliases and cross-module refs
  4. chore: sync upstream {GDS,CIS,BMB,TEA,core} v…
  5. fix: register gds-agent-game-qa and gds-agent-game-scrum-master as plugin-only
  6. docs: changelog for v6.5.0.0

v6.5.0.1 (refactor):

  1. feat(scripts): add installer-based sync (replaces multi-source sync)
  2. chore: regenerate plugin tree from npx bmad-method@6.5.0 install
  3. refactor(scripts): retire multi-source sync (-3455 lines)
  4. docs: refresh README/AGENTS/sync docs for installer-based pipeline
  5. docs: changelog for v6.5.0.1 (installer-based sync refactor)

🤖 Generated with Claude Code

PabloLION and others added 30 commits February 10, 2026 15:11
…ons-1772002853578

Add Claude Code GitHub Workflow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
tgorka and others added 27 commits April 27, 2026 17:18
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants