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..5a7f821 100644 --- a/release.py +++ b/release.py @@ -10,10 +10,16 @@ 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 -- 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. +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 @@ -39,7 +45,7 @@ # 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"}) @@ -69,15 +75,24 @@ 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: - fail( - f"{slug}/{skill_dir.name}: keys must be exactly {', '.join(sorted(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}") - 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 +115,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, 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())) + fail(f"module `{module}` skills disagree on version: {detail}") collected[module] = ([skill_dir for skill_dir, _ in entries], entries[0][1]["version"]) return collected