From e8c33a6f0d3d2f1aaf2accbef83f9d6d6760e7e7 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 19 Sep 2026 13:28:26 +0800 Subject: [PATCH 1/3] refactor: rename the toolbox plugin to core-tools BMAD-METHOD renames its `toolbox` module to `core-tools`, so the plugin built from it becomes `bmad-core-tools`: the plugin directory, both marketplace manifests, the Codex plugin manifest, and the `module` and `update_source` keys in the shipped copies. release.py follows the manifest schema that comes with the rename. `knowledge` is now a list of paths to documents inside the skill that names them, and `requires` is a new optional per-skill dependency table. Both belong to the skill rather than the module, so skills of one module may differ on either and only `version` still has to agree across a module. Knowledge paths are checked for containment and for actually being shipped, since the plugin ships a copy of the skill. The skills trees are generated. They are left at their current content here and regenerated by release.py once BMAD-METHOD has released the rename. --- .agents/plugins/marketplace.json | 4 +- .claude-plugin/marketplace.json | 8 +-- README.md | 6 +-- .../.codex-plugin/plugin.json | 8 +-- .../skills/bmad-advanced-elicitation/SKILL.md | 0 .../assets/methods.csv | 0 .../bmad-advanced-elicitation/customize.toml | 0 .../module-manifest.toml | 4 +- .../scripts/pick_methods.py | 0 .../scripts/tests/test_pick_methods.py | 0 .../skills/bmad-brainstorming/SKILL.md | 0 .../assets/brain-icons.json | 0 .../assets/brain-methods.csv | 0 .../assets/brain-selector.html | 0 .../skills/bmad-brainstorming/customize.toml | 0 .../bmad-brainstorming}/module-manifest.toml | 4 +- .../bmad-brainstorming/references/converge.md | 0 .../bmad-brainstorming/references/finalize.md | 0 .../bmad-brainstorming/references/headless.md | 0 .../references/in-chat-techniques.md | 0 .../references/mode-autonomous.md | 0 .../references/mode-facilitator.md | 0 .../references/mode-partner.md | 0 .../bmad-brainstorming/references/resume.md | 0 .../bmad-brainstorming/scripts/brain.py | 0 .../scripts/tests/test_brain.py | 0 .../skills/bmad-customize/SKILL.md | 0 .../bmad-customize}/module-manifest.toml | 4 +- .../scripts/list_customizable_skills.py | 0 .../tests/test_list_customizable_skills.py | 0 .../skills/bmad-deep-recon/SKILL.md | 0 .../assets/research.template.md | 0 .../skills/bmad-deep-recon/customize.toml | 0 .../bmad-deep-recon}/module-manifest.toml | 4 +- .../bmad-deep-recon/references/draft.md | 0 .../bmad-deep-recon/references/finalize.md | 0 .../references/html-briefing.md | 0 .../bmad-deep-recon/references/lifecycle.md | 0 .../bmad-deep-recon/references/process.md | 0 .../skills/bmad-deep-recon/references/run.md | 0 .../bmad-deep-recon/references/selection.md | 0 .../bmad-deep-recon/references/synthesis.md | 0 .../references/verification.md | 0 .../bmad-deep-recon/scripts/recon_kit.py | 0 .../scripts/tests/test_recon_kit.py | 0 .../bmad-deep-recon/types/academic-lit.md | 0 .../bmad-deep-recon/types/competitive.md | 0 .../skills/bmad-deep-recon/types/domain.md | 0 .../skills/bmad-deep-recon/types/market.md | 0 .../skills/bmad-deep-recon/types/technical.md | 0 .../bmad-deep-recon/types/user-voice.md | 0 .../skills/bmad-forge-idea/SKILL.md | 0 .../skills/bmad-forge-idea/customize.toml | 0 .../bmad-forge-idea/module-manifest.toml | 4 ++ .../scripts/resolve_personas.py | 0 .../scripts/tests/test_resolve_personas.py | 0 .../skills/bmad-party-mode/SKILL.md | 0 .../skills/bmad-party-mode/customize.toml | 0 .../bmad-party-mode/module-manifest.toml | 4 ++ .../references/create-party.md | 0 .../references/mode-agent-team.md | 0 .../bmad-party-mode/references/mode-auto.md | 0 .../references/mode-subagent.md | 0 .../references/party-memory.md | 0 .../bmad-party-mode/scripts/resolve_party.py | 0 .../scripts/tests/test_resolve_party.py | 0 .../skills/bmad-review/SKILL.md | 0 .../skills/bmad-review/customize.toml | 0 .../skills/bmad-review/module-manifest.toml | 4 ++ .../references/editorial-common.md | 0 .../references/lens-adversarial.md | 0 .../references/lens-edge-case-hunter.md | 0 .../bmad-review/references/lens-prose.md | 0 .../bmad-review/references/lens-structure.md | 0 .../references/lens-verification-gap.md | 0 .../references/structure-models.md | 0 .../scripts/tests/test_word_metrics.py | 0 .../bmad-review/scripts/word_metrics.py | 0 .../skills/bmad/SKILL.md | 0 .../skills/bmad/assets/config.template.toml | 0 .../skills/bmad/module-manifest.toml | 4 ++ .../skills/bmad/references/help.md | 0 .../skills/bmad/references/setup.md | 0 .../skills/bmad/scripts/config_utils.py | 0 .../skills/bmad/scripts/memlog.py | 0 .../skills/bmad/scripts/render_skill.py | 0 .../skills/bmad/scripts/resolve_config.py | 0 .../bmad/scripts/resolve_customization.py | 0 .../skills/bmad/scripts/setup.py | 0 .../bmad/scripts/tests/test_config_utils.py | 0 .../skills/bmad/scripts/tests/test_memlog.py | 0 .../bmad/scripts/tests/test_render_skill.py | 0 .../bmad/scripts/tests/test_resolve_config.py | 0 .../tests/test_resolve_customization.py | 0 .../bmad-forge-idea/module-manifest.toml | 4 -- .../bmad-party-mode/module-manifest.toml | 4 -- .../skills/bmad-review/module-manifest.toml | 4 -- .../toolbox/skills/bmad/module-manifest.toml | 4 -- release.py | 51 ++++++++++++------- 99 files changed, 71 insertions(+), 54 deletions(-) rename plugins/{toolbox => core-tools}/.codex-plugin/plugin.json (72%) rename plugins/{toolbox => core-tools}/skills/bmad-advanced-elicitation/SKILL.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-advanced-elicitation/assets/methods.csv (100%) rename plugins/{toolbox => core-tools}/skills/bmad-advanced-elicitation/customize.toml (100%) rename plugins/{toolbox/skills/bmad-deep-recon => core-tools/skills/bmad-advanced-elicitation}/module-manifest.toml (55%) rename plugins/{toolbox => core-tools}/skills/bmad-advanced-elicitation/scripts/pick_methods.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/SKILL.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/assets/brain-icons.json (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/assets/brain-methods.csv (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/assets/brain-selector.html (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/customize.toml (100%) rename plugins/{toolbox/skills/bmad-advanced-elicitation => core-tools/skills/bmad-brainstorming}/module-manifest.toml (55%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/converge.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/finalize.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/headless.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/in-chat-techniques.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/mode-autonomous.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/mode-facilitator.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/mode-partner.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/references/resume.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/scripts/brain.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-brainstorming/scripts/tests/test_brain.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-customize/SKILL.md (100%) rename plugins/{toolbox/skills/bmad-brainstorming => core-tools/skills/bmad-customize}/module-manifest.toml (55%) rename plugins/{toolbox => core-tools}/skills/bmad-customize/scripts/list_customizable_skills.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-customize/scripts/tests/test_list_customizable_skills.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/SKILL.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/assets/research.template.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/customize.toml (100%) rename plugins/{toolbox/skills/bmad-customize => core-tools/skills/bmad-deep-recon}/module-manifest.toml (55%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/draft.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/finalize.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/html-briefing.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/lifecycle.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/process.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/run.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/selection.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/synthesis.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/references/verification.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/scripts/recon_kit.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/scripts/tests/test_recon_kit.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/types/academic-lit.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/types/competitive.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/types/domain.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/types/market.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/types/technical.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-deep-recon/types/user-voice.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-forge-idea/SKILL.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-forge-idea/customize.toml (100%) create mode 100644 plugins/core-tools/skills/bmad-forge-idea/module-manifest.toml rename plugins/{toolbox => core-tools}/skills/bmad-forge-idea/scripts/resolve_personas.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/SKILL.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/customize.toml (100%) create mode 100644 plugins/core-tools/skills/bmad-party-mode/module-manifest.toml rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/references/create-party.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/references/mode-agent-team.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/references/mode-auto.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/references/mode-subagent.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/references/party-memory.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/scripts/resolve_party.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-party-mode/scripts/tests/test_resolve_party.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/SKILL.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/customize.toml (100%) create mode 100644 plugins/core-tools/skills/bmad-review/module-manifest.toml rename plugins/{toolbox => core-tools}/skills/bmad-review/references/editorial-common.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/references/lens-adversarial.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/references/lens-edge-case-hunter.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/references/lens-prose.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/references/lens-structure.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/references/lens-verification-gap.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/references/structure-models.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/scripts/tests/test_word_metrics.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad-review/scripts/word_metrics.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/SKILL.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad/assets/config.template.toml (100%) create mode 100644 plugins/core-tools/skills/bmad/module-manifest.toml rename plugins/{toolbox => core-tools}/skills/bmad/references/help.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad/references/setup.md (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/config_utils.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/memlog.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/render_skill.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/resolve_config.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/resolve_customization.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/setup.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/tests/test_config_utils.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/tests/test_memlog.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/tests/test_render_skill.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/tests/test_resolve_config.py (100%) rename plugins/{toolbox => core-tools}/skills/bmad/scripts/tests/test_resolve_customization.py (100%) delete mode 100644 plugins/toolbox/skills/bmad-forge-idea/module-manifest.toml delete mode 100644 plugins/toolbox/skills/bmad-party-mode/module-manifest.toml delete mode 100644 plugins/toolbox/skills/bmad-review/module-manifest.toml delete mode 100644 plugins/toolbox/skills/bmad/module-manifest.toml diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 896f953..8f89d0e 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -17,10 +17,10 @@ "category": "Productivity" }, { - "name": "bmad-toolbox", + "name": "bmad-core-tools", "source": { "source": "local", - "path": "./plugins/toolbox" + "path": "./plugins/core-tools" }, "policy": { "installation": "AVAILABLE", diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index d2057a7..61b866c 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -31,11 +31,11 @@ } }, { - "name": "bmad-toolbox", - "displayName": "BMAD Toolbox", - "source": "./plugins/toolbox", + "name": "bmad-core-tools", + "displayName": "BMAD Core Tools", + "source": "./plugins/core-tools", "strict": false, - "description": "BMAD Toolbox — generally useful standalone skills from the BMAD Method.", + "description": "BMAD Core Tools — generally useful standalone skills from the BMAD Method.", "version": "6.13.0-next", "author": { "name": "Brian (BMad) Madison" diff --git a/README.md b/README.md index e755756..21ccafb 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ requests happen in ## The plugins - **bmad-method** — the BMAD Method core: agents and workflows for product analysis, planning, architecture, and implementation. -- **bmad-toolbox** — generally useful standalone skills. +- **bmad-core-tools** — generally useful standalone skills. Both ecosystems below serve the same two skills trees -(`plugins/method/skills/`, `plugins/toolbox/skills/`) with their own metadata. +(`plugins/method/skills/`, `plugins/core-tools/skills/`) with their own metadata. ## Claude Code @@ -24,7 +24,7 @@ This repository is a Claude Code plugin marketplace: /plugin marketplace add bmad-code-org/bmad-plugins ``` -Then install `bmad-method` and/or `bmad-toolbox` from it. +Then install `bmad-method` and/or `bmad-core-tools` from it. ## OpenAI Codex diff --git a/plugins/toolbox/.codex-plugin/plugin.json b/plugins/core-tools/.codex-plugin/plugin.json similarity index 72% rename from plugins/toolbox/.codex-plugin/plugin.json rename to plugins/core-tools/.codex-plugin/plugin.json index b007535..c95b872 100644 --- a/plugins/toolbox/.codex-plugin/plugin.json +++ b/plugins/core-tools/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { - "name": "bmad-toolbox", + "name": "bmad-core-tools", "version": "6.13.0-next", - "description": "BMAD Toolbox — generally useful standalone skills from the BMAD Method.", + "description": "BMAD Core Tools — generally useful standalone skills from the BMAD Method.", "author": { "name": "Brian (BMad) Madison" }, @@ -17,8 +17,8 @@ "skills" ], "interface": { - "displayName": "BMAD Toolbox", - "shortDescription": "BMAD Toolbox — generally useful standalone skills from the BMAD Method.", + "displayName": "BMAD Core Tools", + "shortDescription": "BMAD Core Tools — generally useful standalone skills from the BMAD Method.", "longDescription": "Standalone skills extracted from the BMAD Method that are useful on their own, outside the full planning-to-implementation workflow. From the team behind BMAD-METHOD.", "developerName": "BMad Code Open Source Team", "category": "Productivity", diff --git a/plugins/toolbox/skills/bmad-advanced-elicitation/SKILL.md b/plugins/core-tools/skills/bmad-advanced-elicitation/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad-advanced-elicitation/SKILL.md rename to plugins/core-tools/skills/bmad-advanced-elicitation/SKILL.md diff --git a/plugins/toolbox/skills/bmad-advanced-elicitation/assets/methods.csv b/plugins/core-tools/skills/bmad-advanced-elicitation/assets/methods.csv similarity index 100% rename from plugins/toolbox/skills/bmad-advanced-elicitation/assets/methods.csv rename to plugins/core-tools/skills/bmad-advanced-elicitation/assets/methods.csv diff --git a/plugins/toolbox/skills/bmad-advanced-elicitation/customize.toml b/plugins/core-tools/skills/bmad-advanced-elicitation/customize.toml similarity index 100% rename from plugins/toolbox/skills/bmad-advanced-elicitation/customize.toml rename to plugins/core-tools/skills/bmad-advanced-elicitation/customize.toml diff --git a/plugins/toolbox/skills/bmad-deep-recon/module-manifest.toml b/plugins/core-tools/skills/bmad-advanced-elicitation/module-manifest.toml similarity index 55% rename from plugins/toolbox/skills/bmad-deep-recon/module-manifest.toml rename to plugins/core-tools/skills/bmad-advanced-elicitation/module-manifest.toml index 060c9c8..370a6e0 100644 --- a/plugins/toolbox/skills/bmad-deep-recon/module-manifest.toml +++ b/plugins/core-tools/skills/bmad-advanced-elicitation/module-manifest.toml @@ -1,4 +1,4 @@ -module = "toolbox" +module = "core-tools" version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" +update_source = "plugin:bmad-core-tools" knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-advanced-elicitation/scripts/pick_methods.py b/plugins/core-tools/skills/bmad-advanced-elicitation/scripts/pick_methods.py similarity index 100% rename from plugins/toolbox/skills/bmad-advanced-elicitation/scripts/pick_methods.py rename to plugins/core-tools/skills/bmad-advanced-elicitation/scripts/pick_methods.py diff --git a/plugins/toolbox/skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py b/plugins/core-tools/skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py similarity index 100% rename from plugins/toolbox/skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py rename to plugins/core-tools/skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py diff --git a/plugins/toolbox/skills/bmad-brainstorming/SKILL.md b/plugins/core-tools/skills/bmad-brainstorming/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/SKILL.md rename to plugins/core-tools/skills/bmad-brainstorming/SKILL.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/assets/brain-icons.json b/plugins/core-tools/skills/bmad-brainstorming/assets/brain-icons.json similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/assets/brain-icons.json rename to plugins/core-tools/skills/bmad-brainstorming/assets/brain-icons.json diff --git a/plugins/toolbox/skills/bmad-brainstorming/assets/brain-methods.csv b/plugins/core-tools/skills/bmad-brainstorming/assets/brain-methods.csv similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/assets/brain-methods.csv rename to plugins/core-tools/skills/bmad-brainstorming/assets/brain-methods.csv diff --git a/plugins/toolbox/skills/bmad-brainstorming/assets/brain-selector.html b/plugins/core-tools/skills/bmad-brainstorming/assets/brain-selector.html similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/assets/brain-selector.html rename to plugins/core-tools/skills/bmad-brainstorming/assets/brain-selector.html diff --git a/plugins/toolbox/skills/bmad-brainstorming/customize.toml b/plugins/core-tools/skills/bmad-brainstorming/customize.toml similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/customize.toml rename to plugins/core-tools/skills/bmad-brainstorming/customize.toml diff --git a/plugins/toolbox/skills/bmad-advanced-elicitation/module-manifest.toml b/plugins/core-tools/skills/bmad-brainstorming/module-manifest.toml similarity index 55% rename from plugins/toolbox/skills/bmad-advanced-elicitation/module-manifest.toml rename to plugins/core-tools/skills/bmad-brainstorming/module-manifest.toml index 060c9c8..370a6e0 100644 --- a/plugins/toolbox/skills/bmad-advanced-elicitation/module-manifest.toml +++ b/plugins/core-tools/skills/bmad-brainstorming/module-manifest.toml @@ -1,4 +1,4 @@ -module = "toolbox" +module = "core-tools" version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" +update_source = "plugin:bmad-core-tools" knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/converge.md b/plugins/core-tools/skills/bmad-brainstorming/references/converge.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/converge.md rename to plugins/core-tools/skills/bmad-brainstorming/references/converge.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/finalize.md b/plugins/core-tools/skills/bmad-brainstorming/references/finalize.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/finalize.md rename to plugins/core-tools/skills/bmad-brainstorming/references/finalize.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/headless.md b/plugins/core-tools/skills/bmad-brainstorming/references/headless.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/headless.md rename to plugins/core-tools/skills/bmad-brainstorming/references/headless.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/in-chat-techniques.md b/plugins/core-tools/skills/bmad-brainstorming/references/in-chat-techniques.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/in-chat-techniques.md rename to plugins/core-tools/skills/bmad-brainstorming/references/in-chat-techniques.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/mode-autonomous.md b/plugins/core-tools/skills/bmad-brainstorming/references/mode-autonomous.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/mode-autonomous.md rename to plugins/core-tools/skills/bmad-brainstorming/references/mode-autonomous.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/mode-facilitator.md b/plugins/core-tools/skills/bmad-brainstorming/references/mode-facilitator.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/mode-facilitator.md rename to plugins/core-tools/skills/bmad-brainstorming/references/mode-facilitator.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/mode-partner.md b/plugins/core-tools/skills/bmad-brainstorming/references/mode-partner.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/mode-partner.md rename to plugins/core-tools/skills/bmad-brainstorming/references/mode-partner.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/references/resume.md b/plugins/core-tools/skills/bmad-brainstorming/references/resume.md similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/references/resume.md rename to plugins/core-tools/skills/bmad-brainstorming/references/resume.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/scripts/brain.py b/plugins/core-tools/skills/bmad-brainstorming/scripts/brain.py similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/scripts/brain.py rename to plugins/core-tools/skills/bmad-brainstorming/scripts/brain.py diff --git a/plugins/toolbox/skills/bmad-brainstorming/scripts/tests/test_brain.py b/plugins/core-tools/skills/bmad-brainstorming/scripts/tests/test_brain.py similarity index 100% rename from plugins/toolbox/skills/bmad-brainstorming/scripts/tests/test_brain.py rename to plugins/core-tools/skills/bmad-brainstorming/scripts/tests/test_brain.py diff --git a/plugins/toolbox/skills/bmad-customize/SKILL.md b/plugins/core-tools/skills/bmad-customize/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad-customize/SKILL.md rename to plugins/core-tools/skills/bmad-customize/SKILL.md diff --git a/plugins/toolbox/skills/bmad-brainstorming/module-manifest.toml b/plugins/core-tools/skills/bmad-customize/module-manifest.toml similarity index 55% rename from plugins/toolbox/skills/bmad-brainstorming/module-manifest.toml rename to plugins/core-tools/skills/bmad-customize/module-manifest.toml index 060c9c8..370a6e0 100644 --- a/plugins/toolbox/skills/bmad-brainstorming/module-manifest.toml +++ b/plugins/core-tools/skills/bmad-customize/module-manifest.toml @@ -1,4 +1,4 @@ -module = "toolbox" +module = "core-tools" version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" +update_source = "plugin:bmad-core-tools" knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-customize/scripts/list_customizable_skills.py b/plugins/core-tools/skills/bmad-customize/scripts/list_customizable_skills.py similarity index 100% rename from plugins/toolbox/skills/bmad-customize/scripts/list_customizable_skills.py rename to plugins/core-tools/skills/bmad-customize/scripts/list_customizable_skills.py diff --git a/plugins/toolbox/skills/bmad-customize/scripts/tests/test_list_customizable_skills.py b/plugins/core-tools/skills/bmad-customize/scripts/tests/test_list_customizable_skills.py similarity index 100% rename from plugins/toolbox/skills/bmad-customize/scripts/tests/test_list_customizable_skills.py rename to plugins/core-tools/skills/bmad-customize/scripts/tests/test_list_customizable_skills.py diff --git a/plugins/toolbox/skills/bmad-deep-recon/SKILL.md b/plugins/core-tools/skills/bmad-deep-recon/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/SKILL.md rename to plugins/core-tools/skills/bmad-deep-recon/SKILL.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/assets/research.template.md b/plugins/core-tools/skills/bmad-deep-recon/assets/research.template.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/assets/research.template.md rename to plugins/core-tools/skills/bmad-deep-recon/assets/research.template.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/customize.toml b/plugins/core-tools/skills/bmad-deep-recon/customize.toml similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/customize.toml rename to plugins/core-tools/skills/bmad-deep-recon/customize.toml diff --git a/plugins/toolbox/skills/bmad-customize/module-manifest.toml b/plugins/core-tools/skills/bmad-deep-recon/module-manifest.toml similarity index 55% rename from plugins/toolbox/skills/bmad-customize/module-manifest.toml rename to plugins/core-tools/skills/bmad-deep-recon/module-manifest.toml index 060c9c8..370a6e0 100644 --- a/plugins/toolbox/skills/bmad-customize/module-manifest.toml +++ b/plugins/core-tools/skills/bmad-deep-recon/module-manifest.toml @@ -1,4 +1,4 @@ -module = "toolbox" +module = "core-tools" version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" +update_source = "plugin:bmad-core-tools" knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/draft.md b/plugins/core-tools/skills/bmad-deep-recon/references/draft.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/draft.md rename to plugins/core-tools/skills/bmad-deep-recon/references/draft.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/finalize.md b/plugins/core-tools/skills/bmad-deep-recon/references/finalize.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/finalize.md rename to plugins/core-tools/skills/bmad-deep-recon/references/finalize.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/html-briefing.md b/plugins/core-tools/skills/bmad-deep-recon/references/html-briefing.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/html-briefing.md rename to plugins/core-tools/skills/bmad-deep-recon/references/html-briefing.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/lifecycle.md b/plugins/core-tools/skills/bmad-deep-recon/references/lifecycle.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/lifecycle.md rename to plugins/core-tools/skills/bmad-deep-recon/references/lifecycle.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/process.md b/plugins/core-tools/skills/bmad-deep-recon/references/process.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/process.md rename to plugins/core-tools/skills/bmad-deep-recon/references/process.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/run.md b/plugins/core-tools/skills/bmad-deep-recon/references/run.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/run.md rename to plugins/core-tools/skills/bmad-deep-recon/references/run.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/selection.md b/plugins/core-tools/skills/bmad-deep-recon/references/selection.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/selection.md rename to plugins/core-tools/skills/bmad-deep-recon/references/selection.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/synthesis.md b/plugins/core-tools/skills/bmad-deep-recon/references/synthesis.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/synthesis.md rename to plugins/core-tools/skills/bmad-deep-recon/references/synthesis.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/references/verification.md b/plugins/core-tools/skills/bmad-deep-recon/references/verification.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/references/verification.md rename to plugins/core-tools/skills/bmad-deep-recon/references/verification.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/scripts/recon_kit.py b/plugins/core-tools/skills/bmad-deep-recon/scripts/recon_kit.py similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/scripts/recon_kit.py rename to plugins/core-tools/skills/bmad-deep-recon/scripts/recon_kit.py diff --git a/plugins/toolbox/skills/bmad-deep-recon/scripts/tests/test_recon_kit.py b/plugins/core-tools/skills/bmad-deep-recon/scripts/tests/test_recon_kit.py similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/scripts/tests/test_recon_kit.py rename to plugins/core-tools/skills/bmad-deep-recon/scripts/tests/test_recon_kit.py diff --git a/plugins/toolbox/skills/bmad-deep-recon/types/academic-lit.md b/plugins/core-tools/skills/bmad-deep-recon/types/academic-lit.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/types/academic-lit.md rename to plugins/core-tools/skills/bmad-deep-recon/types/academic-lit.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/types/competitive.md b/plugins/core-tools/skills/bmad-deep-recon/types/competitive.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/types/competitive.md rename to plugins/core-tools/skills/bmad-deep-recon/types/competitive.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/types/domain.md b/plugins/core-tools/skills/bmad-deep-recon/types/domain.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/types/domain.md rename to plugins/core-tools/skills/bmad-deep-recon/types/domain.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/types/market.md b/plugins/core-tools/skills/bmad-deep-recon/types/market.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/types/market.md rename to plugins/core-tools/skills/bmad-deep-recon/types/market.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/types/technical.md b/plugins/core-tools/skills/bmad-deep-recon/types/technical.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/types/technical.md rename to plugins/core-tools/skills/bmad-deep-recon/types/technical.md diff --git a/plugins/toolbox/skills/bmad-deep-recon/types/user-voice.md b/plugins/core-tools/skills/bmad-deep-recon/types/user-voice.md similarity index 100% rename from plugins/toolbox/skills/bmad-deep-recon/types/user-voice.md rename to plugins/core-tools/skills/bmad-deep-recon/types/user-voice.md diff --git a/plugins/toolbox/skills/bmad-forge-idea/SKILL.md b/plugins/core-tools/skills/bmad-forge-idea/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad-forge-idea/SKILL.md rename to plugins/core-tools/skills/bmad-forge-idea/SKILL.md diff --git a/plugins/toolbox/skills/bmad-forge-idea/customize.toml b/plugins/core-tools/skills/bmad-forge-idea/customize.toml similarity index 100% rename from plugins/toolbox/skills/bmad-forge-idea/customize.toml rename to plugins/core-tools/skills/bmad-forge-idea/customize.toml diff --git a/plugins/core-tools/skills/bmad-forge-idea/module-manifest.toml b/plugins/core-tools/skills/bmad-forge-idea/module-manifest.toml new file mode 100644 index 0000000..370a6e0 --- /dev/null +++ b/plugins/core-tools/skills/bmad-forge-idea/module-manifest.toml @@ -0,0 +1,4 @@ +module = "core-tools" +version = "6.13.0-next" +update_source = "plugin:bmad-core-tools" +knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-forge-idea/scripts/resolve_personas.py b/plugins/core-tools/skills/bmad-forge-idea/scripts/resolve_personas.py similarity index 100% rename from plugins/toolbox/skills/bmad-forge-idea/scripts/resolve_personas.py rename to plugins/core-tools/skills/bmad-forge-idea/scripts/resolve_personas.py diff --git a/plugins/toolbox/skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py b/plugins/core-tools/skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py similarity index 100% rename from plugins/toolbox/skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py rename to plugins/core-tools/skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py diff --git a/plugins/toolbox/skills/bmad-party-mode/SKILL.md b/plugins/core-tools/skills/bmad-party-mode/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/SKILL.md rename to plugins/core-tools/skills/bmad-party-mode/SKILL.md diff --git a/plugins/toolbox/skills/bmad-party-mode/customize.toml b/plugins/core-tools/skills/bmad-party-mode/customize.toml similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/customize.toml rename to plugins/core-tools/skills/bmad-party-mode/customize.toml diff --git a/plugins/core-tools/skills/bmad-party-mode/module-manifest.toml b/plugins/core-tools/skills/bmad-party-mode/module-manifest.toml new file mode 100644 index 0000000..370a6e0 --- /dev/null +++ b/plugins/core-tools/skills/bmad-party-mode/module-manifest.toml @@ -0,0 +1,4 @@ +module = "core-tools" +version = "6.13.0-next" +update_source = "plugin:bmad-core-tools" +knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-party-mode/references/create-party.md b/plugins/core-tools/skills/bmad-party-mode/references/create-party.md similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/references/create-party.md rename to plugins/core-tools/skills/bmad-party-mode/references/create-party.md diff --git a/plugins/toolbox/skills/bmad-party-mode/references/mode-agent-team.md b/plugins/core-tools/skills/bmad-party-mode/references/mode-agent-team.md similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/references/mode-agent-team.md rename to plugins/core-tools/skills/bmad-party-mode/references/mode-agent-team.md diff --git a/plugins/toolbox/skills/bmad-party-mode/references/mode-auto.md b/plugins/core-tools/skills/bmad-party-mode/references/mode-auto.md similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/references/mode-auto.md rename to plugins/core-tools/skills/bmad-party-mode/references/mode-auto.md diff --git a/plugins/toolbox/skills/bmad-party-mode/references/mode-subagent.md b/plugins/core-tools/skills/bmad-party-mode/references/mode-subagent.md similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/references/mode-subagent.md rename to plugins/core-tools/skills/bmad-party-mode/references/mode-subagent.md diff --git a/plugins/toolbox/skills/bmad-party-mode/references/party-memory.md b/plugins/core-tools/skills/bmad-party-mode/references/party-memory.md similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/references/party-memory.md rename to plugins/core-tools/skills/bmad-party-mode/references/party-memory.md diff --git a/plugins/toolbox/skills/bmad-party-mode/scripts/resolve_party.py b/plugins/core-tools/skills/bmad-party-mode/scripts/resolve_party.py similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/scripts/resolve_party.py rename to plugins/core-tools/skills/bmad-party-mode/scripts/resolve_party.py diff --git a/plugins/toolbox/skills/bmad-party-mode/scripts/tests/test_resolve_party.py b/plugins/core-tools/skills/bmad-party-mode/scripts/tests/test_resolve_party.py similarity index 100% rename from plugins/toolbox/skills/bmad-party-mode/scripts/tests/test_resolve_party.py rename to plugins/core-tools/skills/bmad-party-mode/scripts/tests/test_resolve_party.py diff --git a/plugins/toolbox/skills/bmad-review/SKILL.md b/plugins/core-tools/skills/bmad-review/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/SKILL.md rename to plugins/core-tools/skills/bmad-review/SKILL.md diff --git a/plugins/toolbox/skills/bmad-review/customize.toml b/plugins/core-tools/skills/bmad-review/customize.toml similarity index 100% rename from plugins/toolbox/skills/bmad-review/customize.toml rename to plugins/core-tools/skills/bmad-review/customize.toml diff --git a/plugins/core-tools/skills/bmad-review/module-manifest.toml b/plugins/core-tools/skills/bmad-review/module-manifest.toml new file mode 100644 index 0000000..370a6e0 --- /dev/null +++ b/plugins/core-tools/skills/bmad-review/module-manifest.toml @@ -0,0 +1,4 @@ +module = "core-tools" +version = "6.13.0-next" +update_source = "plugin:bmad-core-tools" +knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-review/references/editorial-common.md b/plugins/core-tools/skills/bmad-review/references/editorial-common.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/references/editorial-common.md rename to plugins/core-tools/skills/bmad-review/references/editorial-common.md diff --git a/plugins/toolbox/skills/bmad-review/references/lens-adversarial.md b/plugins/core-tools/skills/bmad-review/references/lens-adversarial.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/references/lens-adversarial.md rename to plugins/core-tools/skills/bmad-review/references/lens-adversarial.md diff --git a/plugins/toolbox/skills/bmad-review/references/lens-edge-case-hunter.md b/plugins/core-tools/skills/bmad-review/references/lens-edge-case-hunter.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/references/lens-edge-case-hunter.md rename to plugins/core-tools/skills/bmad-review/references/lens-edge-case-hunter.md diff --git a/plugins/toolbox/skills/bmad-review/references/lens-prose.md b/plugins/core-tools/skills/bmad-review/references/lens-prose.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/references/lens-prose.md rename to plugins/core-tools/skills/bmad-review/references/lens-prose.md diff --git a/plugins/toolbox/skills/bmad-review/references/lens-structure.md b/plugins/core-tools/skills/bmad-review/references/lens-structure.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/references/lens-structure.md rename to plugins/core-tools/skills/bmad-review/references/lens-structure.md diff --git a/plugins/toolbox/skills/bmad-review/references/lens-verification-gap.md b/plugins/core-tools/skills/bmad-review/references/lens-verification-gap.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/references/lens-verification-gap.md rename to plugins/core-tools/skills/bmad-review/references/lens-verification-gap.md diff --git a/plugins/toolbox/skills/bmad-review/references/structure-models.md b/plugins/core-tools/skills/bmad-review/references/structure-models.md similarity index 100% rename from plugins/toolbox/skills/bmad-review/references/structure-models.md rename to plugins/core-tools/skills/bmad-review/references/structure-models.md diff --git a/plugins/toolbox/skills/bmad-review/scripts/tests/test_word_metrics.py b/plugins/core-tools/skills/bmad-review/scripts/tests/test_word_metrics.py similarity index 100% rename from plugins/toolbox/skills/bmad-review/scripts/tests/test_word_metrics.py rename to plugins/core-tools/skills/bmad-review/scripts/tests/test_word_metrics.py diff --git a/plugins/toolbox/skills/bmad-review/scripts/word_metrics.py b/plugins/core-tools/skills/bmad-review/scripts/word_metrics.py similarity index 100% rename from plugins/toolbox/skills/bmad-review/scripts/word_metrics.py rename to plugins/core-tools/skills/bmad-review/scripts/word_metrics.py diff --git a/plugins/toolbox/skills/bmad/SKILL.md b/plugins/core-tools/skills/bmad/SKILL.md similarity index 100% rename from plugins/toolbox/skills/bmad/SKILL.md rename to plugins/core-tools/skills/bmad/SKILL.md diff --git a/plugins/toolbox/skills/bmad/assets/config.template.toml b/plugins/core-tools/skills/bmad/assets/config.template.toml similarity index 100% rename from plugins/toolbox/skills/bmad/assets/config.template.toml rename to plugins/core-tools/skills/bmad/assets/config.template.toml diff --git a/plugins/core-tools/skills/bmad/module-manifest.toml b/plugins/core-tools/skills/bmad/module-manifest.toml new file mode 100644 index 0000000..370a6e0 --- /dev/null +++ b/plugins/core-tools/skills/bmad/module-manifest.toml @@ -0,0 +1,4 @@ +module = "core-tools" +version = "6.13.0-next" +update_source = "plugin:bmad-core-tools" +knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad/references/help.md b/plugins/core-tools/skills/bmad/references/help.md similarity index 100% rename from plugins/toolbox/skills/bmad/references/help.md rename to plugins/core-tools/skills/bmad/references/help.md diff --git a/plugins/toolbox/skills/bmad/references/setup.md b/plugins/core-tools/skills/bmad/references/setup.md similarity index 100% rename from plugins/toolbox/skills/bmad/references/setup.md rename to plugins/core-tools/skills/bmad/references/setup.md diff --git a/plugins/toolbox/skills/bmad/scripts/config_utils.py b/plugins/core-tools/skills/bmad/scripts/config_utils.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/config_utils.py rename to plugins/core-tools/skills/bmad/scripts/config_utils.py diff --git a/plugins/toolbox/skills/bmad/scripts/memlog.py b/plugins/core-tools/skills/bmad/scripts/memlog.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/memlog.py rename to plugins/core-tools/skills/bmad/scripts/memlog.py diff --git a/plugins/toolbox/skills/bmad/scripts/render_skill.py b/plugins/core-tools/skills/bmad/scripts/render_skill.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/render_skill.py rename to plugins/core-tools/skills/bmad/scripts/render_skill.py diff --git a/plugins/toolbox/skills/bmad/scripts/resolve_config.py b/plugins/core-tools/skills/bmad/scripts/resolve_config.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/resolve_config.py rename to plugins/core-tools/skills/bmad/scripts/resolve_config.py diff --git a/plugins/toolbox/skills/bmad/scripts/resolve_customization.py b/plugins/core-tools/skills/bmad/scripts/resolve_customization.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/resolve_customization.py rename to plugins/core-tools/skills/bmad/scripts/resolve_customization.py diff --git a/plugins/toolbox/skills/bmad/scripts/setup.py b/plugins/core-tools/skills/bmad/scripts/setup.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/setup.py rename to plugins/core-tools/skills/bmad/scripts/setup.py diff --git a/plugins/toolbox/skills/bmad/scripts/tests/test_config_utils.py b/plugins/core-tools/skills/bmad/scripts/tests/test_config_utils.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/tests/test_config_utils.py rename to plugins/core-tools/skills/bmad/scripts/tests/test_config_utils.py diff --git a/plugins/toolbox/skills/bmad/scripts/tests/test_memlog.py b/plugins/core-tools/skills/bmad/scripts/tests/test_memlog.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/tests/test_memlog.py rename to plugins/core-tools/skills/bmad/scripts/tests/test_memlog.py diff --git a/plugins/toolbox/skills/bmad/scripts/tests/test_render_skill.py b/plugins/core-tools/skills/bmad/scripts/tests/test_render_skill.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/tests/test_render_skill.py rename to plugins/core-tools/skills/bmad/scripts/tests/test_render_skill.py diff --git a/plugins/toolbox/skills/bmad/scripts/tests/test_resolve_config.py b/plugins/core-tools/skills/bmad/scripts/tests/test_resolve_config.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/tests/test_resolve_config.py rename to plugins/core-tools/skills/bmad/scripts/tests/test_resolve_config.py diff --git a/plugins/toolbox/skills/bmad/scripts/tests/test_resolve_customization.py b/plugins/core-tools/skills/bmad/scripts/tests/test_resolve_customization.py similarity index 100% rename from plugins/toolbox/skills/bmad/scripts/tests/test_resolve_customization.py rename to plugins/core-tools/skills/bmad/scripts/tests/test_resolve_customization.py diff --git a/plugins/toolbox/skills/bmad-forge-idea/module-manifest.toml b/plugins/toolbox/skills/bmad-forge-idea/module-manifest.toml deleted file mode 100644 index 060c9c8..0000000 --- a/plugins/toolbox/skills/bmad-forge-idea/module-manifest.toml +++ /dev/null @@ -1,4 +0,0 @@ -module = "toolbox" -version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" -knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-party-mode/module-manifest.toml b/plugins/toolbox/skills/bmad-party-mode/module-manifest.toml deleted file mode 100644 index 060c9c8..0000000 --- a/plugins/toolbox/skills/bmad-party-mode/module-manifest.toml +++ /dev/null @@ -1,4 +0,0 @@ -module = "toolbox" -version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" -knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad-review/module-manifest.toml b/plugins/toolbox/skills/bmad-review/module-manifest.toml deleted file mode 100644 index 060c9c8..0000000 --- a/plugins/toolbox/skills/bmad-review/module-manifest.toml +++ /dev/null @@ -1,4 +0,0 @@ -module = "toolbox" -version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" -knowledge = "`references/help.md` in the `bmad` skill" diff --git a/plugins/toolbox/skills/bmad/module-manifest.toml b/plugins/toolbox/skills/bmad/module-manifest.toml deleted file mode 100644 index 060c9c8..0000000 --- a/plugins/toolbox/skills/bmad/module-manifest.toml +++ /dev/null @@ -1,4 +0,0 @@ -module = "toolbox" -version = "6.13.0-next" -update_source = "plugin:bmad-toolbox" -knowledge = "`references/help.md` in the `bmad` skill" diff --git a/release.py b/release.py index cb1138d..ed22130 100644 --- a/release.py +++ b/release.py @@ -10,10 +10,14 @@ Routing: SOURCES maps each source repo to the modules it ships, and a skill's `module` key names the plugin directory it ships in, so a module comes -entirely from the one source that declares it. Each manifest must carry -exactly the keys module, version, update_source, and knowledge -- -update_source naming its own source repo, and version and knowledge each -identical across every skill in its module, whatever they say. +entirely from the one source that declares it. Each manifest must carry the +keys module, version, update_source and knowledge, plus an optional requires +table -- update_source naming its own source repo, and version identical +across every skill in its module, whatever it says. + +knowledge lists documents inside the skill that names them, and requires is +that skill's dependencies; both belong to the skill rather than the module, so +skills of one module may differ on either. Both are copied through untouched. A version belongs to a module, not to a release of this repo: what a plugin ships as is its own module's version, and two modules need not agree, whether @@ -39,10 +43,11 @@ # Source repo -> the modules it ships. A module name is both the plugin # directory (plugins/) and the plugin itself (bmad-). SOURCES = { - "bmad-code-org/BMAD-METHOD": ("method", "toolbox"), + "bmad-code-org/BMAD-METHOD": ("method", "core-tools"), } PLUGINS = tuple(module for modules in SOURCES.values() for module in modules) MANIFEST_KEYS = frozenset({"module", "version", "update_source", "knowledge"}) +OPTIONAL_MANIFEST_KEYS = frozenset({"requires"}) CLAUDE_MARKETPLACE = REPO_ROOT / ".claude-plugin" / "marketplace.json" COPY_IGNORE = shutil.ignore_patterns("__pycache__", "*.pyc", ".pytest_cache") @@ -69,15 +74,27 @@ def read_manifest(skill_dir, slug): manifest = tomllib.load(f) except tomllib.TOMLDecodeError as e: fail(f"{slug}/{skill_dir.name}: {e}") - if set(manifest) != MANIFEST_KEYS: + keys = set(manifest) + if not MANIFEST_KEYS <= keys or not keys <= MANIFEST_KEYS | OPTIONAL_MANIFEST_KEYS: fail( - f"{slug}/{skill_dir.name}: keys must be exactly {', '.join(sorted(MANIFEST_KEYS))}; " + f"{slug}/{skill_dir.name}: keys must be {', '.join(sorted(MANIFEST_KEYS))} " + f"plus optionally {', '.join(sorted(OPTIONAL_MANIFEST_KEYS))}; " f"found {', '.join(sorted(manifest)) or 'none'}" ) if manifest["update_source"] != update_source(slug): fail(f"{slug}/{skill_dir.name}: update_source must be exactly {update_source(slug)!r}") - if not isinstance(manifest["knowledge"], str) or not manifest["knowledge"].strip(): - fail(f"{slug}/{skill_dir.name}: knowledge must be a non-empty string") + knowledge = manifest["knowledge"] + if not isinstance(knowledge, list) or not knowledge: + fail(f"{slug}/{skill_dir.name}: knowledge must be a non-empty list of paths inside the skill") + for entry in knowledge: + if not isinstance(entry, str) or not entry: + fail(f"{slug}/{skill_dir.name}: knowledge has invalid value {entry!r}") + # The plugin ships a copy of the skill, so a document must live inside it. + parts = entry.split("/") + if entry.startswith("/") or "://" in entry or "\\" in entry or ":" in entry or ".." in parts: + fail(f"{slug}/{skill_dir.name}: knowledge has unsafe value {entry!r}") + if not (skill_dir / entry).is_file(): + fail(f"{slug}/{skill_dir.name}: knowledge names {entry!r}, which the skill does not ship") return manifest @@ -100,14 +117,14 @@ def collect_skills(skills_root, slug, modules): for module, entries in found.items(): if not entries: fail(f"{slug} ships no skills for module `{module}`") - # A module speaks for itself, so these values are whatever it says -- - # but every skill in one module must say the same thing. Modules need - # not agree with each other, even within one source repo. - for key in ("version", "knowledge"): - values = {skill_dir.name: manifest[key] for skill_dir, manifest in entries} - if len(set(values.values())) > 1: - detail = ", ".join(f"{name}={value!r}" for name, value in sorted(values.items())) - fail(f"module `{module}` skills disagree on {key}: {detail}") + # A module speaks for itself, so its version is whatever it says -- but + # every skill in one module must agree, because the plugin ships as one + # version. Modules need not agree with each other, even within one + # source repo. knowledge and requires are per-skill. + versions = {skill_dir.name: manifest["version"] for skill_dir, manifest in entries} + if len(set(versions.values())) > 1: + detail = ", ".join(f"{name}={value!r}" for name, value in sorted(versions.items())) + fail(f"module `{module}` skills disagree on version: {detail}") collected[module] = ([skill_dir for skill_dir, _ in entries], entries[0][1]["version"]) return collected From 565f37c15a413bf9650c9883ec2493f75b11369d Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 19 Sep 2026 17:28:23 +0800 Subject: [PATCH 2/3] fix(release): accept the recommends table in skill manifests BMAD-METHOD 6.13 adds an optional recommends table beside requires: what a skill works better with, as opposed to what it cannot work without. The agent personas declare one, so the build would have refused them. Like knowledge and requires it belongs to the skill and is copied through untouched. --- release.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/release.py b/release.py index ed22130..3c20a0d 100644 --- a/release.py +++ b/release.py @@ -11,13 +11,14 @@ Routing: SOURCES maps each source repo to the modules it ships, and a skill's `module` key names the plugin directory it ships in, so a module comes entirely from the one source that declares it. Each manifest must carry the -keys module, version, update_source and knowledge, plus an optional requires -table -- update_source naming its own source repo, and version identical -across every skill in its module, whatever it says. +keys module, version, update_source and knowledge, plus optional requires and +recommends tables -- update_source naming its own source repo, and version +identical across every skill in its module, whatever it says. -knowledge lists documents inside the skill that names them, and requires is -that skill's dependencies; both belong to the skill rather than the module, so -skills of one module may differ on either. Both are copied through untouched. +knowledge lists documents inside the skill that names them, requires is what +that skill cannot work without, and recommends is what it works better with. +All three belong to the skill rather than the module, so skills of one module +may differ on any of them. All three are copied through untouched. A version belongs to a module, not to a release of this repo: what a plugin ships as is its own module's version, and two modules need not agree, whether @@ -47,7 +48,7 @@ } PLUGINS = tuple(module for modules in SOURCES.values() for module in modules) MANIFEST_KEYS = frozenset({"module", "version", "update_source", "knowledge"}) -OPTIONAL_MANIFEST_KEYS = frozenset({"requires"}) +OPTIONAL_MANIFEST_KEYS = frozenset({"requires", "recommends"}) CLAUDE_MARKETPLACE = REPO_ROOT / ".claude-plugin" / "marketplace.json" COPY_IGNORE = shutil.ignore_patterns("__pycache__", "*.pyc", ".pytest_cache") @@ -120,7 +121,7 @@ def collect_skills(skills_root, slug, modules): # A module speaks for itself, so its version is whatever it says -- but # every skill in one module must agree, because the plugin ships as one # version. Modules need not agree with each other, even within one - # source repo. knowledge and requires are per-skill. + # source repo. knowledge, requires and recommends are per-skill. versions = {skill_dir.name: manifest["version"] for skill_dir, manifest in entries} if len(set(versions.values())) > 1: detail = ", ".join(f"{name}={value!r}" for name, value in sorted(versions.items())) From dad6b9644904bbf614ee73856b33bd428c15e1a2 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 19 Sep 2026 22:27:01 +0800 Subject: [PATCH 3/3] fix(release): accept manifest keys the script does not know The runtime ignores keys it does not read, so a skill may carry fields of its own. release.py demanded an exact key set and would refuse to build from such a release. It now requires module, version, update_source and knowledge, and copies everything else through untouched. --- release.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/release.py b/release.py index 3c20a0d..5a7f821 100644 --- a/release.py +++ b/release.py @@ -11,9 +11,10 @@ Routing: SOURCES maps each source repo to the modules it ships, and a skill's `module` key names the plugin directory it ships in, so a module comes entirely from the one source that declares it. Each manifest must carry the -keys module, version, update_source and knowledge, plus optional requires and -recommends tables -- update_source naming its own source repo, and version -identical across every skill in its module, whatever it says. +keys module, version, update_source and knowledge -- update_source naming its +own source repo, and version identical across every skill in its module, +whatever it says. Any other key is the skill's own business: the runtime +ignores keys it does not know, so this script does too. knowledge lists documents inside the skill that names them, requires is what that skill cannot work without, and recommends is what it works better with. @@ -48,7 +49,6 @@ } PLUGINS = tuple(module for modules in SOURCES.values() for module in modules) MANIFEST_KEYS = frozenset({"module", "version", "update_source", "knowledge"}) -OPTIONAL_MANIFEST_KEYS = frozenset({"requires", "recommends"}) CLAUDE_MARKETPLACE = REPO_ROOT / ".claude-plugin" / "marketplace.json" COPY_IGNORE = shutil.ignore_patterns("__pycache__", "*.pyc", ".pytest_cache") @@ -75,13 +75,10 @@ def read_manifest(skill_dir, slug): manifest = tomllib.load(f) except tomllib.TOMLDecodeError as e: fail(f"{slug}/{skill_dir.name}: {e}") - keys = set(manifest) - if not MANIFEST_KEYS <= keys or not keys <= MANIFEST_KEYS | OPTIONAL_MANIFEST_KEYS: - fail( - f"{slug}/{skill_dir.name}: keys must be {', '.join(sorted(MANIFEST_KEYS))} " - f"plus optionally {', '.join(sorted(OPTIONAL_MANIFEST_KEYS))}; " - f"found {', '.join(sorted(manifest)) or 'none'}" - ) + # The runtime ignores keys it does not know, so a build must not refuse them. + missing = MANIFEST_KEYS - set(manifest) + if missing: + fail(f"{slug}/{skill_dir.name}: manifest is missing {', '.join(sorted(missing))}") if manifest["update_source"] != update_source(slug): fail(f"{slug}/{skill_dir.name}: update_source must be exactly {update_source(slug)!r}") knowledge = manifest["knowledge"]