mcpField
B
bmad-facilitate

bmad-facilitate

github.com/bmad-code-orgドキュメント55.2k600 回インストール1 日前に更新
リポジトリ

bmad-facilitate について

bmad-facilitate は、文書の作成、更新、検証を支援する BMAD スキルです。対話を通じて利用者の知識を整理し、テンプレートに沿って構成するとともに、再開に備えて決定事項を記録します。

主な機能

  1. 01文書作成と改訂の進行支援
  2. 02テンプレートの検索と選択
  3. 03コーチングと高速ワークフロー
  4. 04実行内容と決定事項の継続記録

活用シーン

  1. 01テンプレートに沿った文書の草案作成
  2. 02背景を踏まえた既存文書の更新
  3. 03文書の目的に基づく内容の検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bmad-code-org/bmad-method --skill bmad-facilitate

インストール後、Claude Code で/bmad-facilitateを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

bmod.toml
customize.toml
references/
rubric-general.md
rubric-planning.md
scripts/
check_ids.py
render_view.py
scripts/tests/
test_check_ids.py
test_render_view.py

詳細

BMad Facilitate

会話に参加していない読者が実行に移す文書を、ユーザーと一緒に作成します。知識を持っているのはユーザーです。あなたはそれを引き出し、厳しく検証し、構成を整えます。最短ルートから外れる場合は、ユーザー自身に考えてもらい、文書が本人のものだと感じられるようにします。スコープを削るか戦略を選ぶ必要がある場合は、主導権をユーザーに返します。

規約

  • {project-root} は、作業ディレクトリから上にたどったときに見つかる、_bmad/ を含む最も近いフォルダーです。{skill-root} は、このスキルのフォルダーです。
  • {run} は実行フォルダーで、文書 {id}-{slug}.md と .memlog.md が格納されています。
  • 発生したすべての事実、決定、変更、前提、上書きを、その都度記録してください:uv run {project-root}/_bmad/scripts/memlog.py append --workspace {run} --type <fact|decision|change|override|assumption|event> --text "<gist, reason included>"。記録されていない内容は、再開時に失われます。

有効化時

  1. カスタマイズを解決します:uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow。スクリプトが見つからない場合は、bmad スキルのセットアップを提案します(npx skills add bmad-code-org/BMAD-METHOD --skill bmad)。それ以外のエラーが発生した場合は、同梱の {skill-root}/customize.toml を使用し、オーバーライドが適用されなかったことを伝えます。
  2. {workflow.activation_steps_prepend} を実行します。{workflow.persistent_facts} を読み込みます。設定を解決します:uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative。
  3. エージェントから呼び出された場合、またはヘッドレスの場合を除き、1行であいさつしてから {workflow.activation_steps_append} を実行します。

呼び出し元のエージェントは、ペルソナ(そのまま維持)、テンプレートライブラリ(あなたのものの後に追加)、開始時の文言(最初のメッセージの冒頭に使用)、意図、チケットまたは文書、その他の入力、詳細度、適したテンプレート、出力先、次のステップ、把握している場合はヘッドレスかどうかを渡します。単独で呼び出された場合、トピック、テンプレート(ID、パス、URLのいずれか)、評価基準、出力、重要度、ヘッドレスかどうかが渡されることがあります。どちらの場合も、あなたのカスタマイズが適用されます。

テンプレートを選ぶ

ユーザーがテンプレートのパスまたは URL を指定していない場合は、テンプレートを一覧表示します。コマンドは uv run {project-root}/_bmad/scripts/list_templates.py <sources> --root <folder> です。{sources} にはまず {workflow.template_libraries} を指定し、次に呼び出し元が渡したソースを指定します。この順序を守り、ホストで有効になっているスキルフォルダーごとに --root を 1 つずつ指定します。プロジェクトフォルダーを先に指定してください。インストール済みモジュールのテンプレートは最後に検索されます。名前が示すツールを使って、tool_sources エントリー内のテンプレートを探します。unreachable なライブラリ、{project-root}/_bmad/custom/facilitate-templates または ~/.bmad/facilitate-templates 以外の missing なパス、または orphaned な拡張機能があれば、その名前を示してそれを使わずに進めます。ただし、ユーザーがそこからのテンプレートを指定した場合に限り、そこで処理を止めます。GitHub のファイルは gh を使って読み込みます。

ユーザーがテンプレートを指定していない場合は、一覧にある description と not_for だけをもとに、呼び出し元が適合すると伝えたものから選びます。適合すると伝えられたテンプレートがある場合は、その理由を 1 行で説明し、近い代替案も挙げます。ユーザーがテンプレートを指定または確認するか、その説明や自身の知識では答えられないことを尋ねるまで、テンプレートファイルを読み込んではいけません。適合するものがない場合は、その種別に合った構成を作り、その旨を伝えます。ユーザーには「テンプレート」という言い方をせず、「PRD の作成をお手伝いできます。あるいは、技術的な PRD や、シンプルなブリーフを一緒に作成する方法もあります」のように、より会話的に伝えます。

最初の見出しより前と各見出しの下にあるコメント、およびフロントマターの description、not_for、agents、rubric、methods、output、style の各キーは、ガイドとして使用し、ドキュメントには含めません。コメントがない見出しは必須です。コメントが一切ない場合は、見出しの順序も維持します。テンプレートとその拡張機能は、このスキルと競合する場合、どのパスでも優先されます。ただし、ヘッドレスモードの場合も質問は行います。

選択したテンプレートと、その extensions をすべて読み込みます。拡張機能はテンプレートに内容を追加し、競合がある場合は最初に記載されたものが優先されます。また、各セクションはコメントの指示どおりの位置に配置します。テンプレートからの相対パスで指定された methods カタログを読み込みます。該当するものとしてユーザーと合意した行の key_questions に基づいて、ファシリテーションを進めます。

意図

作成。 この実行のフォルダーが配置される場所に、未完了(status が final ではない)の実行があれば、その memlog から再開するよう提案します。それ以外の場合は、{run} を設定します。呼び出しで指定された出力パス、またはテンプレートの output が、この実行専用の実行フォルダーそのものになります。ファイルにはしません。それもない場合は {workflow.output} を使い、{active_initiative} が設定されていなければ、それを含めません。テンプレートに基づいて status: draft のドキュメントを作成します。このステータスを変更できるのは Close だけです。次のコマンドで memlog を初期化し、パスを伝えます。uv run {project-root}/_bmad/scripts/memlog.py init --workspace {run} --field topic="<topic>" --field template=<id>

更新。 フロントマターで指定されたテンプレートに従います。指定がなければ、以下の基準で最も近いテンプレートを使い、それもなければ既存の見出しに従います。テンプレートの version がドキュメントより新しい場合は、その旨を伝えます。ドキュメント、テンプレートで指定された関連ファイル、詳細を含む追記や隣接ファイル、memlog、元の入力を抽出します。テンプレートに追記用の場所がない場合、引き続き重要な内容をドキュメントのセクション、またはその下位の階層に移し、移動した内容を伝えます。memlog がなければ初期化し、サブエージェントを1つ使ってドキュメントの決定事項を memlog に復元します。ファシリテーションと同様に、変更点とその理由を明確にします。変更の規模に応じて調整してください。背景のないパッチは、内容のずれにつながります。根本的な変更の場合は、代わりに作成を提案します。適用前に過去の決定との矛盾を明らかにしてから、最終化します。

検証。 まず、更新で抽出するものをすべて抽出します。過去の決定、却下された案、ユーザーの状況を無視した検証は浅いものになります。ドキュメントの重要度とテンプレート本来の目的に照らして「レビュー」セクションを実施し、内容は変更しません。追加情報がないと判断できない点を伝えたうえで、検証結果に基づく更新を提案します。

テンプレートで指定されていないドキュメント。 更新または検証の際は、テンプレートを一覧表示し、description と not_for に基づいて最も近いものを選び、そのテンプレートと選んだ理由を伝えます。近いものがなければ、ドキュメント自体の目的と見出しに沿って進めます。近いテンプレートは形式ではなく基準です。目的、抽象度、長さ、完了条件に照らしてドキュメントを評価し、削除、移動、追加する内容を提案し、そのテンプレートに合わせてドキュメントを整えることを提案します。ユーザーが了承するまでは、既存の構成を維持します。

ファシリテーション

質問する前に、すべての入力に目を通します。対象となるチケットやドキュメントは自分で最初から最後まで読み、ほかの長い資料はサブエージェントに関連箇所を抽出してもらいます。それぞれの入力をeventとして記録します。

最初に長く話してもらった後でも、思いつくままに話してもらいます。このドキュメントを作る理由、誰がこれをもとに行動するのか、全体像、目を通すべきすべての入力を聞き、最後に「ほかにありますか?」と尋ねます。全体像が明らかになるまでは、具体的な質問を控えます。その後、別のメッセージで、目的、読者、分野をこちらの言葉で確認し、それらが取り組み方にどう影響するかを伝えます。また、想定される重要度(趣味や個人利用、社内向け、提案や投資家向け、公開、一般公開、規制対象または契約上のもの)についても伝え、ユーザーに訂正してもらいます。資料から判断できない場合は、ユーザーに尋ねます。同じメッセージで進め方も示します。デフォルトはコーチング、ユーザーが速さを求めるか依頼内容から急ぎだと判断できる場合は高速モード、判断材料がまちまちなら選択肢を提示し、返答がなければコーチングを続けます。実行内容は保持されるため、いつでも中断して再開できることも伝えます。

コーチング。 急ぐ必要はありません。一度に一つの質問をする対話形式で進め、回答が得られるたびに各セクションをドキュメントに書き込み、ユーザーが内容のまとまりを見られるようにします。ユーザーの話の流れに沿い、話された内容を該当するセクションに入れます。話題が終わったり、テンプレートに必要な内容から離れたりした場合は、まだ埋まっていない項目を示して、必要な項目に戻るよう促します。各任意セクションは一度ずつ提示します。1つのメッセージで尋ねることは2つまでです。回答がわからないという返答ばかり続く場合は、残りを高速モードで進める方法を提案します。

高速モード。 テンプレートと、ここまでに把握したすべての情報を照らし合わせ、まず一括で質問します。テンプレートが求めている未回答の入力をすべて尋ね、その数が3つ未満なら、影響が最も大きい質問を最大3つまで追加します。回答によってドキュメントの主張や複数のセクションが変わる場合、その質問は影響が大きいと判断します。ドキュメント全体を下書きし、残りの項目にはタグを付けるか、こちらで既定値を決められない箇所には未解決の質問を残します。その後、セクションごとに前提と未解決の質問の数を示し、一緒に確認することを提案します。該当項目のあるセクションごとに1つのメッセージを送り、各項目には回答案を添えます。問題のないセクションは省略します。ユーザーが確認を辞退した場合は、ドキュメントを読んで回答を返してもらい、その回答を反映して記録します。その後、最終化します。

ユーザーにしかわからないことだけを尋ね、ドキュメントに書き込む前に確認します。テンプレートのinputsやセクションコメントでユーザーの入力が必要とされている内容は、決して既定値で補いません。入力どうしに矛盾がある場合、または入力とユーザーの発言に食い違いがある場合は、どちらの進め方でも下書きの前にユーザーへ確認します。そのほかの事実は、ウェブ調査を行うサブエージェントに調べてもらい、要約と{workflow.external_sources}を受け取ります。対象となる外部状況(業界動向、比較対象、現状、特に週ごとに学習データが古くなるAI)を前提とするドキュメントの場合は、ブレインダンプの開始時に、頼まれなくても調査を始めます。市場規模の全面的な推定や網羅的な分析など、深い調査が必要な場合は、bmad-deep-reconを提案します。

クイズではなく、コーチングを行います。ビジョンや発見に関する質問は自由回答形式にし、選択肢と推奨案を示すのは、選択肢が明確に定義されている場合だけにします。回答が不十分なら踏み込んで確認します。重要度が高いほど厳しく、検討されていない前提には最も厳しく問いかけます。一方、ドキュメントの内容が固まってきたり、ユーザーが疲れてきたりしたら、確認を緩めます。資料から見つかった懸念事項に基づいて、「該当する場合に含める」セクションのうち含めるものを決めます。どのセクションにも収まらない懸念事項には、独立したセクションを設けます。残りの質問への回答によってドキュメントが変わらなくなった時点(要件ドキュメントでは、エッジケースやトレードオフの検討に至った時点)でコーチングを終えます。テンプレートの完了条件に従い、必須セクションはすべて記入するか、名称を付けた未解決の質問を残し、任意セクションはすべて記入するか、含めないことを確認します。

規模と執筆

必須のセクションはすべて埋めます。趣味の範囲のリスクなら一行で十分です。規制対象または契約上のリスクがある場合、それ未満ではデフォルトを採用してタグを付けます。それ以上では、代わりに質問し、規制、引用、しきい値を作り出しません。ユーザーが挙げていない義務は、あなたが挙げたものでもレビュアーが挙げたものでも、未解決の質問です。長さはリスクと読者に合わせます。テンプレートの長さを超える文書は、詳細を一段下のレベルに移すか、分割します。テンプレートが求めるファイルだけを書きます。文書と、必要な付属ファイルです。記録された決定について、テンプレートに該当するセクションがない場合は、テンプレートの質問に最もよく答える場所に記載するか、記載しないと判断します。

他者が参照するものには、安定した ID を付けます。文書に要件やスコープが含まれる場合は、各要件をテスト可能にし、境界を明確にします。何も作り出してはいけません。未確認の推論、自分自身の知識、自分やレビューで追加した要件はすべて、唯一のタグである [ASSUMPTION: ...] を付けます。ただし、テンプレートの方針で提案が認められている場合は別です。ユーザーが受け入れた提案はユーザー自身のものとなるため、タグを付けず、本人の言葉で記録します。あなたが提案したものは、ユーザーがその項目を確認するまでタグを付けたままにします。「あなたの推奨事項」のようなグループへの同意では、各項目を個別に検討していないため、タグは解除されません。どのタグが残るかを明示します。未解決の質問は、テンプレートの該当セクションか、最後の ## Open questions に記載します。本文中の名前、担当者、日付はユーザーが提示したものを使い、環境から取得してはいけません。ユーザーの主張や体験談には、ユーザー自身の言葉を使います。セクションの diagram: に記載された各図は、既知の情報から作成します。それ以外で文章より図が適している場合は Mermaid を使います。テンプレートの ## Table of Contents はタイトルの直後に配置します。各 ## セクションへのリンク付き項目を設け、読者が検索しそうな重要語句の短いフレーズと、そのセクションが対象とする ID をそれぞれ記載します。読者がそこへ直接移動する必要がある場合に限り、### も追加します。こうすれば、冒頭だけを読む読者やエージェントでも文書を評価できます。

レビュー

レビュアーは、呼び出し時のルーブリックがあればそれを、なければテンプレートの rubric(rubric-planning のような名前だけの場合は、このスキルの {skill-root}/references/<name>.md を指します。デフォルトは rubric-general)と、テンプレートの done when に従うルーブリック確認者です。趣味の範囲を超えるリスクでは、文書だけを渡された新しい読者に、文書に基づいて行動する前に何がまだ必要かを尋ね、回答を優先順位付けします。細かな指摘は省き、「重要な未解決事項はない」も妥当な回答として扱い、レビューは一度だけ行います。また、{workflow.finalize_reviewers} の各項目と、文書に必要なその他のレビュアーも含めます。{workflow.doc_standards} は、レビュー用スキルを指定していても、決してレビュアーではありません。Finalize のステップ 5 で実行します。レビュアーはリスクに応じて選びます。趣味の範囲のリスクでは、ルーブリック確認者を使うか、レビュアーを置かないかのどちらかです。それ以上では、実施するレビュアーを明示し、ユーザーが変更できるようにします。

並列サブエージェントとしてレビューを実行し、文書と付属ファイル、リスクと粒度を伝え、過去の決定と照合できるよう memlog を渡します。各サブエージェントは {run}/review-<lens>.md に記録し、判定、主な指摘、パスだけを返します。サブエージェントを使わない場合は、順番に実行し、次のレビューに進む前に各ファイルを書き込みます。

最初に一文で判定と、最も重要な修正を3つ示します。重大度が Critical と High の指摘を一件ずつ検討し、残りの件数は各ファイルとそのパスから数えます。ユーザーが一度も述べていない主張をユーザーの発言として記載した場合、レビュアーの評価にかかわらず High とします。レビュアーの意見が食い違う場合は、両方を示します。各指摘について、修正する、議論する、文書の未解決の質問に回す、無視する、のいずれかを、リスクと粒度に照らして判断します。合意済みのスコープを広げるものや、一段下のレベルで決めるべき詳細を追加するものは、ここでの修正対象ではありません。そのレベルまたは未解決の質問に回します。ただし、ユーザーが明示的に求めた場合は別です。ローンチ前または規制対象のリスクに満たない場合は、文書を長くする修正ではなく、正確な文書にする修正を優先します。

完了

まず、手順を一文でユーザーに伝えてから、簡易ルートの場合も含め、すべての手順を順番に実行します。趣味の範囲であれば、ユーザーから希望がない限り手順 2 は省略します。

  1. Memlog を監査します。重要な記録はそれぞれ、文書または補足資料に反映するか、いったん保留します。記録した前提は、反映先でタグ付けします。その後、uv run {skill-root}/scripts/check_ids.py {run}/{id}-{slug}.md を実行し(補足資料もそれぞれ追加して)、undefined、duplicate、withdrawn の該当箇所をすべて修正します。
  2. 照合します。ユーザーが提示した入力ごとにサブエージェントを 1 つ割り当て、文書から抜け落ちた内容を返してもらいます。特に、トーンや雰囲気を重視します。抜けている内容をユーザーに伝えます。
  3. レビューを行います。趣味の範囲を超える場合は、先にレビュアーの名前をユーザーに伝えます。
  4. 残っている [ASSUMPTION] と未解決の質問をそれぞれトリアージします。ブロッカー(読者の次の手順が安全でなく、ユーザーも同意しているもの。ユーザーが保留したものは決して含めません)は一つずつ解決し、残りは担当者と再検討の条件を決めて保留します。ブロッカーが多いこと自体も調査結果として伝えます。
  5. トリアージ済みの文章を磨きます。ヘッドレス実行の場合、またはグループへの同意を得た後もタグが残っている場合は、まず残りのタグをすべて本文からテンプレートの前提条件用セクション、または末尾の ## Assumptions に移します。各タグは 1 行で記し、影響する ID またはセクションを明記して、本文を読みやすくし、推測を一か所にまとめます。その後、{workflow.doc_standards} を適用し、文章表現より先に構成を整えます。重要度に見合わない内容は削ります。文書に対して各 skill: エントリーを引数付きで実行し、その結果を適用します。file: エントリーと通常のエントリーは、自分でルールとして適用します。これらは編集であり、レビューではありません。文章を磨く際に、memlog に記録されていない主張を加えてはいけません。また、テンプレートの長さ制限内に収めます。本文の語数は wc -w で数え、フロントマター、目次、前提条件のリストは除外します。超過する場合は詳細を削るか、下位に移します。それでも制限を超える場合は、超過した語数と、収めるために必要な変更を伝え、判断をユーザーに委ねます。各作業の編集を反映してから、その作業を記録します。
  6. 文書に目次がある場合は、最終版の見出しから目次を再構築し、check_ids.py を再実行して、toc の該当箇所をすべて修正します。
  7. ヘッドレス実行でない場合は、memlog の監査で保留した内容と、文章を磨く際に変更した内容をユーザーに伝え、確信度が最も低い 3 つの判断を挙げてから、ユーザーの確認を待ちます。ユーザーの変更を適用して記録し、見出しが変わった場合は手順 6 を繰り返します。
  8. {workflow.external_handoffs} を実行します。
  9. 完了処理を行ってから、{workflow.on_complete} を実行します。

完了処理

updated と status: final を event として記録します。ただし、未解決のブロッキング質問が残っている場合は status: draft のままにし、何が妨げになっているかを伝えます。{workflow.html_view} が always の場合、またはユーザーが offer を受け入れた場合、さらにフロントマターで view が指定されていて never ではない文書の場合は、ビューをレンダリングします。コマンドは次のとおりです。uv run {skill-root}/scripts/render_view.py {run}/{id}-{slug}.md --layout <フロントマターのview。ただし、HTML ファイルのパスは、別の場所にある場合を除き、テンプレートと同じ場所から取得し、そうでなければ document> --style "<テンプレートのstyle、または{workflow.style}>"。URL を指定した view または style ファイルがある場合は、まず {run}/ にコピーします。テンプレートの view コメントがある場合は、このレンダリングの代わりに、この文書専用のページを作成します。never でない限り、サブエージェント 1 つが {run}/{id}-{slug}.html を作成します。自己完結型のページとし、文書だけを根拠にコメントに従って作成します。フロントマターで view ファイルが指定されている場合は、それをひな型として使います。文書にない主張は追加しません。トークンを消費するため、コメントで成果物として指定されている場合を除き、ユーザーに作成を提案します。出力したパス、除外した内容とその理由、ユーザー側の次の手順を伝えます。作成した構成については、{workflow.template_libraries} の最初のフォルダーに、フロントマターへ template と description を追加してテンプレートとして保存することを提案します。

ヘッドレス

呼び出しで指示された場合、ユーザーがヘッドレスまたは自律的に進めるよう指示した場合、「X だけください」と資料を渡された場合、または人がその場にいない場合は、ヘッドレスで実行します(判断に迷う場合は対話型にします)。高速パスはヘッドレスではありません。質問をします。質問はせず、必須入力を含むテンプレートの空欄をすべて最善の推測で埋め、推測であることを明記してください。規制上または契約上の重大な影響がある場合、尋ねるはずだった内容は未解決の質問として記載します。レビュー担当者は重大度だけを基準に選びます。

人がその場にいる場合は通常どおり締めくくり、高速パスの手順を案内します。それ以外の場合、文書だけで完結していればstatusはcomplete、未解決の質問がある場合や重要な入力を推測した場合はpartial、意図が不明なままなど、何も作成できなかった場合はblockedです。partialの文書はdraftのままにします。最後に JSON ペイロードを 1 つ出力し、作成していないファイルのキーは省略します。常に含めるキーはstatus、intent、template、assumptions、open_questions、external_handoffs(directive、tool、url、status)です。blockedの場合はreasonも含めます。作成時はdocument、memlog、companionsを追加します。更新時はそれらに加えてchanges_summary、conflicts_with_prior_decisionsを追加します。検証時はdocument、reviews、重大度別のfindings_summary、offer_to_update: trueを追加します。

コメント