fix(installer): rename automator module code to baut

This commit is contained in:
bmad 2026-05-07 21:36:36 -03:00
parent a89b405008
commit 68f6bf223a
No known key found for this signature in database
GPG Key ID: D5BF902A907D3EB6
5 changed files with 16 additions and 16 deletions

View File

@ -31,7 +31,7 @@ npx bmad-method install
The interactive flow asks you five things:
1. Installation directory (defaults to the current working directory)
2. Which modules to install (checkboxes for core, bmm, bmb, cis, gds, tea, bma)
2. Which modules to install (checkboxes for core, bmm, bmb, cis, gds, tea, baut)
3. **"Ready to install (all stable)?"** — Yes accepts the latest released tag for every external module
4. Which AI tools/IDEs to integrate with (claude-code, cursor, and others)
5. Per-module config (name, language, output folder)
@ -39,9 +39,9 @@ The interactive flow asks you five things:
Accept the defaults and you land on the latest stable release of every module, configured for your chosen tool.
:::caution[BMad Automator constraints]
`bma` installs runnable Automator skills only for the Claude Code entrypoint. Codex is supported as a worker target only, and worker sessions currently require `tmux` on macOS.
`baut` installs runnable Automator skills only for the Claude Code entrypoint. Codex is supported as a worker target only, and worker sessions currently require `tmux` on macOS.
While experimental, `bma` defaults to the `next` channel so installs pick up the latest Automator payload compatibility fixes.
While experimental, `baut` defaults to the `next` channel so installs pick up the latest Automator payload compatibility fixes.
:::
:::tip[Just want the newest prerelease?]
@ -59,7 +59,7 @@ Two independent axes control what ends up on disk.
### Axis 1: external module channels
Every external module — bmb, cis, gds, tea, bma, and any community module — installs on one of three channels:
Every external module — bmb, cis, gds, tea, baut, and any community module — installs on one of three channels:
| Channel | What gets installed | Who picks this |
| ------------------ | ---------------------------------------------------------------------------- | --------------------------------------- |

View File

@ -75,7 +75,7 @@ Enterprise-grade test strategy, automation guidance, and release gate decisions
Automates the BMad story build loop with a pure skill bundle sourced from the separate Automator repository.
- **Code:** `bma`
- **Code:** `baut`
- **npm:** [`bmad-story-automator`](https://www.npmjs.com/package/bmad-story-automator)
- **GitHub:** [bmad-code-org/bmad-automator](https://github.com/bmad-code-org/bmad-automator)
- **Default channel:** `next` while experimental, so installs receive the latest Automator payload compatibility fixes.

View File

@ -96,8 +96,8 @@ async function createAutomatorBmadFixture() {
[
'canonicalId,name,description,module,path',
'"bmad-master","bmad-master","Minimal core skill","core","_bmad/core/bmad-master/SKILL.md"',
'"bmad-story-automator","bmad-story-automator","Automator skill","bma","_bmad/bma/bmad-story-automator/SKILL.md"',
'"bmad-story-automator-review","bmad-story-automator-review","Automator review skill","bma","_bmad/bma/bmad-story-automator-review/SKILL.md"',
'"bmad-story-automator","bmad-story-automator","Automator skill","baut","_bmad/baut/bmad-story-automator/SKILL.md"',
'"bmad-story-automator-review","bmad-story-automator-review","Automator review skill","baut","_bmad/baut/bmad-story-automator-review/SKILL.md"',
'',
].join('\n'),
);
@ -110,7 +110,7 @@ async function createAutomatorBmadFixture() {
);
for (const skillName of ['bmad-story-automator', 'bmad-story-automator-review']) {
const skillDir = path.join(fixtureDir, 'bma', skillName);
const skillDir = path.join(fixtureDir, 'baut', skillName);
await fs.ensureDir(skillDir);
await fs.writeFile(
path.join(skillDir, 'SKILL.md'),
@ -3589,7 +3589,7 @@ async function runTests() {
let runtimeTargetRoot42;
try {
const externalManager42 = new ExternalModuleManager();
const automatorInfo42 = await externalManager42.getModuleByCode('bma');
const automatorInfo42 = await externalManager42.getModuleByCode('baut');
assert(automatorInfo42 !== null, 'BMad Automator is registered as an external module');
assert(automatorInfo42.type === 'experimental', 'BMad Automator is marked experimental');
assert(automatorInfo42.sourceRoot === 'payload/.claude/skills', 'BMad Automator uses source-root for pure skill payload');
@ -3626,13 +3626,13 @@ async function runTests() {
const runtimeBmadDir42 = path.join(runtimeTargetRoot42, '_bmad');
const officialModules42 = new OfficialModules();
officialModules42.findModuleSource = async () => automatorSourceFixture42.sourceRoot;
await officialModules42.install('bma', runtimeBmadDir42, null, { skipModuleInstaller: true, silent: true });
await officialModules42.install('baut', runtimeBmadDir42, null, { skipModuleInstaller: true, silent: true });
assert(
await fs.pathExists(path.join(runtimeBmadDir42, 'bma', 'bmad-story-automator', 'scripts', 'story-automator')),
await fs.pathExists(path.join(runtimeBmadDir42, 'baut', 'bmad-story-automator', 'scripts', 'story-automator')),
'BMad Automator source-root install includes runtime helper',
);
assert(
await fs.pathExists(path.join(runtimeBmadDir42, 'bma', 'bmad-story-automator', 'src', 'story_automator', 'cli.py')),
await fs.pathExists(path.join(runtimeBmadDir42, 'baut', 'bmad-story-automator', 'src', 'story_automator', 'cli.py')),
'BMad Automator source-root install includes Python runtime source',
);
await fs.remove(runtimeTargetRoot42).catch(() => {});
@ -3646,7 +3646,7 @@ async function runTests() {
const codexResult42 = await ideManager42.setup('codex', tempProjectDir42, installedBmadDir42, {
silent: true,
selectedModules: ['core', 'bma'],
selectedModules: ['core', 'baut'],
});
assert(codexResult42.success === true, 'Codex setup succeeds with automator module selected');
assert(
@ -3684,7 +3684,7 @@ async function runTests() {
const claudeResult42 = await ideManager42.setup('claude-code', tempProjectDir42, installedBmadDir42, {
silent: true,
selectedModules: ['core', 'bma'],
selectedModules: ['core', 'baut'],
});
assert(claudeResult42.success === true, 'Claude Code setup succeeds with automator module selected');
assert(

View File

@ -574,7 +574,7 @@ class OfficialModules {
}
async copyAutomatorRuntimeIfNeeded(moduleName, sourcePath, targetPath, fileTrackingCallback = null) {
if (moduleName !== 'bma') return;
if (moduleName !== 'baut') return;
const storyTarget = path.join(targetPath, 'bmad-story-automator');
if (!(await fs.pathExists(path.join(storyTarget, 'SKILL.md')))) return;

View File

@ -54,7 +54,7 @@ modules:
bmad-automator:
url: https://github.com/bmad-code-org/bmad-automator
source-root: payload/.claude/skills
code: bma
code: baut
name: "BMad Automator (Experimental)"
description: "Experimental pure-skill story automation. Runs only from Claude Code; supports Claude Code and Codex worker sessions; requires tmux on macOS."
defaultSelected: false