bmad-bmb-setup について
bmad-bmb-setupは、プロジェクトにBMadモジュールをインストールして設定するスキルです。ユーザー設定とモジュール設定を収集し、共有設定と個人設定を分けて保存します。機能の登録や旧形式の設定の移行にも対応します。
主な機能
- 01BMadモジュールのインストールと設定
- 02コア設定とモジュール設定の収集
- 03共有設定と個人設定の分離
- 04ヘルプシステムへの機能登録
- 05旧形式のファイルの移行と削除
活用シーン
- 01プロジェクトにBMadモジュールを設定
- 02設定済みモジュールを更新
- 03旧形式のモジュール設定を統合
- 04ヘルプ用にモジュール機能を登録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bmad-code-org/ bmad-builder --skill bmad-bmb-setupインストール後、Claude Code で/bmad-bmb-setupを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/module-help.csvmodule.yamlscripts/cleanup-legacy.pymerge-config.pymerge-help-csv.py詳細
モジュールのセットアップ
概要
BMad モジュールをプロジェクトにインストールして設定します。モジュールの識別情報(名前、コード、バージョン)は ./assets/module.yaml から取得します。ユーザーの設定を収集し、次の 3 つのファイルに書き込みます。
{project-root}/_bmad/config.yaml— プロジェクト共通の設定:ルートにコア設定(例:output_folder、document_output_language)と、メタデータおよびモジュール固有の値を含むモジュールごとのセクションを記述します。ユーザー専用のキー(user_name、communication_language)は、ここには書き込みません。{project-root}/_bmad/config.user.yaml— Git の追跡対象から除外することを想定した個人設定:user_name、communication_language、および./assets/module.yamlでuser_setting: trueと指定されたモジュール変数を記述します。これらの値は、このファイルだけに保存されます。{project-root}/_bmad/module-help.csv— ヘルプシステムにモジュールの機能を登録します。
どちらの設定スクリプトもアンチゾンビパターンを使用します。書き込み前に、このモジュールの既存のエントリーを削除するため、古い値が残ることはありません。
{project-root} は、設定の_値_(上記ファイルに書き込まれるデータ)に含まれる文字列そのもののトークンです。ここで実際のパスに置き換えてはいけません。値がスキルのルートではなく、プロジェクトのルートからの相対パスであることを、使用する LLM に示します。これは、以下のスクリプトに渡すファイルシステムパスの_引数_(--target、--config-path、--user-config-path、--legacy-dir、--bmad-dir、--skills-dir)には適用されません。これらは実際のパスなので、実行前に {project-root} を実際のプロジェクトルートに解決する必要があります。解決しないと、スクリプトはスキルフォルダーの下にある、文字列 {project-root}/ という名前のディレクトリに書き込みます。未解決のトークンがある場合、スクリプトはエラーで処理を拒否します。
有効化時
- モジュールのメタデータと変数定義について、
./assets/module.yamlを読み込みます(codeフィールドがモジュールの識別子です)。 {project-root}/_bmad/config.yamlが存在するか確認します。モジュールのコードに一致するセクションがすでにある場合は、更新であることをユーザーに伝えます。{project-root}/_bmad/bmb/config.yamlと{project-root}/_bmad/core/config.yamlにモジュールごとの設定があるか確認します。いずれかのファイルが存在する場合:{project-root}/_bmad/config.yamlにこのモジュールのセクションがまだない場合:これは新規インストールです。インストーラーの設定が検出され、値が新しい形式に統合されることをユーザーに伝えます。{project-root}/_bmad/config.yamlにこのモジュールのセクションがすでにある場合:これはレガシー移行です。既存の設定とともにモジュールごとのレガシー設定が見つかり、レガシーの値がフォールバックのデフォルトとして使用されることをユーザーに伝えます。- いずれの場合も、セットアップ後にモジュールごとの設定ファイルとディレクトリを削除します。
ユーザーが引数を指定した場合(例:accept all defaults、--headless、または user name is BMad, I speak Swahili のようなインライン値)、指定された値を設定キーに割り当て、残りにはデフォルト値を使用して、対話形式での確認を省略します。それでも最後に、確認内容の全項目を表示します。
設定を収集する
ユーザーに値を尋ねます。デフォルト値は角括弧で示します。すべての値をまとめて提示し、変更したい値だけを一度に回答できるようにします(例:「言語をスワヒリ語に変更、ほかはそのままで」)。チャットインターフェースではユーザーが何か入力する必要があるため、「Enter キーを押す」や「空欄のままにする」とは決して伝えないでください。
デフォルト値の優先順位(上位ほど優先):既存の新しい設定値 > 従来の設定値 > ./assets/module.yaml のデフォルト値。従来の設定ファイルが存在する場合は、それらを読み込み、module.yaml のデフォルト値の代わりに一致する値をデフォルトとして使用します。現在のスキーマに一致するキーのみ引き継ぎます。変更または削除されたキーは無視します。
コア設定(コアキーがまだ存在しない場合のみ):user_name(デフォルト:BMad)、communication_language と document_output_language(デフォルト:英語 — 言語について一度に質問し、両方のキーに同じ回答を設定します)、output_folder(デフォルト:{project-root}/_bmad-output)。このうち、user_name と communication_language は config.user.yaml にのみ書き込みます。残りはルートにある config.yaml に書き込み、すべてのモジュールで共有します。
モジュール設定:./assets/module.yaml 内で prompt フィールドがある各変数を読み込みます。デフォルト値(または利用可能な場合は従来の値)とともに、そのプロンプトを使って尋ねます。
ファイルを書き込む
収集した回答を {"core": {...}, "module": {...}} の形式で構成した一時 JSON ファイルに書き込みます(コア設定がすでに存在する場合は core を省略します)。この JSON 内の値では、{project-root} トークンをそのまま保持します。その後、両方のスクリプトを実行します。別々のファイルに書き込むため、並行して実行できます。
以下のコマンドでは、実行前にすべてのパス引数の {project-root} を実際のプロジェクトルート(例:/home/me/myapp)に置き換えます。これらはファイルシステム上のパスであり、設定値ではありません。{temp-file} と bmb はそのままにします。
uv run ./scripts/merge-config.py --config-path "{project-root}/_bmad/config.yaml" --user-config-path "{project-root}/_bmad/config.user.yaml" --module-yaml ./assets/module.yaml --answers {temp-file} --legacy-dir "{project-root}/_bmad"
uv run ./scripts/merge-help-csv.py --target "{project-root}/_bmad/module-help.csv" --source ./assets/module-help.csv --legacy-dir "{project-root}/_bmad" --module-code bmb
両方のスクリプトは結果を JSON で標準出力に出力します。どちらかがゼロ以外のコードで終了した場合は、エラーを提示して停止します。スクリプトはフォールバックのデフォルト値として従来の設定値を自動的に読み込み、マージに成功した後、従来のファイルを削除します。出力の legacy_configs_deleted と legacy_csvs_deleted を確認し、クリーンアップが完了したことを確認します。
使用方法の詳細は、./scripts/merge-config.py --help または ./scripts/merge-help-csv.py --help を実行して確認します。
出力ディレクトリを作成する
設定を書き込んだ後、設定された出力ディレクトリを作成します。ファイルシステム操作(ディレクトリの作成など)に限り、{project-root} トークンを実際のプロジェクトルートに置き換え、まだ存在しない config.yaml 内のパス型の値をそれぞれ作成します。これには output_folder と、値が {project-root}/ で始まるモジュール変数が含まれます。設定ファイルに保存するパスでは、{project-root} トークンをそのまま使い続けます。実際のディレクトリを作成するときだけ、解決済みのパスを使用します。mkdir -p または同等の方法で、パス全体を作成します。
従来のディレクトリをクリーンアップする
両方のマージスクリプトが正常に完了した後、インストーラーのパッケージディレクトリを削除します。これらのディレクトリにあるスキルとエージェントは、すでに .claude/skills/ にインストールされています。_bmad/ ディレクトリには設定ファイルのみを残します。
マージスクリプトの場合と同様に、実行前に --bmad-dir と --skills-dir のパス引数にある {project-root} を実際のプロジェクトルートに置き換えます。
uv run ./scripts/cleanup-legacy.py --bmad-dir "{project-root}/_bmad" --module-code bmb --also-remove _config --skills-dir "{project-root}/.claude/skills"
スクリプトは、従来のディレクトリ内にあるすべてのスキルが .claude/skills/ に存在することを確認してから、削除を開始します。スキルのないディレクトリ(_config/ など)は直接削除されます。スクリプトがゼロ以外のコードで終了した場合は、エラーを提示して停止します。存在しないディレクトリ(以前の実行ですでにクリーンアップ済みのもの)はエラーではありません。スクリプトはべき等です。
確認のため、JSON 出力の directories_removed と files_removed_count を確認します。使用方法の詳細は、./scripts/cleanup-legacy.py --help を実行して確認します。
確認
スクリプトの JSON 出力を使って、書き込まれた内容を表示します。設定値(コアの場合はルートの config.yaml、モジュールの場合はモジュールセクションに書き込まれます)、config.user.yaml に書き込まれたユーザー設定(結果の user_keys)、追加されたヘルプ項目、新規インストールか更新かを表示してください。レガシーファイルが削除された場合は、移行について説明してください。レガシーディレクトリが削除された場合は、削除数と一覧を報告してください(例:「bmb/, core/, _config/ からインストーラーパッケージファイルを 106 個削除しました。スキルは .claude/skills/ にインストールされています。」)。その後、./assets/module.yaml の module_greeting をユーザーに表示してください。
結果
ユーザーの user_name と communication_language が(収集した入力、引数、既存の設定のいずれかから)判明したら、セッションの残りの間は一貫してその情報を使用してください。設定された名前でユーザーに呼びかけ、設定された communication_language でコミュニケーションしてください。