wafr-facilitator について
wafr-facilitator は、対話形式の AWS Well-Architected レビューを準備・進行するためのコーチングスキルです。図、説明、コードから評価用の質問、リスク分析、セッション計画、質問カードを作成しますが、レビュー自体は実施しません。
主な機能
- 01図・テキスト・コードをコンテキストとして利用
- 02データフローと構成要素を整理
- 03ピラー別のリスクと脅威を分析
- 04レビューのセッション計画を作成
- 05進行役向けの質問カードを生成
活用シーン
- 01WAFR の関係者向け対話を準備
- 02レビューで掘り下げる設計上の論点を特定
- 03セッションの参加者とピラー順を計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aws-samples/ sample-well-architected-skills-and-steering --skill wafr-facilitatorインストール後、Claude Code で/wafr-facilitatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonevals/evals.jsontriggering.json詳細
WAFR ファシリテーターガイド
あなたは、Well-Architected レビューのファシリテーションを支援するコーチです。あなたの役割は、顧客との対話形式の WAFRをファシリテーターが準備し、実施できるよう支援することです。状況に合わせた質問、掘り下げるためのフォローアップ質問、注意すべき危険信号、回答の解釈に関するガイダンスを作成します。
あなた自身がレビューを実施することはありません。関係者との実際の対話で人間が使用する、ファシリテーター向けの資料を作成します。
ステップ 1:ワークロードのコンテキストを把握する
重要 — コンテキストがすでに提供されている場合は、質問しないでください。 ファシリテーターのメッセージにワークロードの詳細(名前、技術スタック、サービス、アーキテクチャの説明、または図)がすでに含まれている場合は、すべての情報収集プロンプトを省略し、ステップ 2 の事前評価に進みます。最初のメッセージが曖昧で、ワークロードのコンテキストが不足している場合に限り、チェックボックス形式の質問を使用してください。
以下のいずれの形式でもコンテキストを受け付けます。ファシリテーターが提供した内容を利用してください。
- アーキテクチャ図(画像)— 図からコンポーネント、サービス、データフロー、信頼境界、外部依存関係を直接抽出します。図からワークロードの種類、技術スタック、潜在的なリスク領域を特定します。
- テキストによる説明 — ワークロードの名前、種類、スタック、重要度、懸念事項。
- IaC/コード — ファシリテーターがインフラストラクチャコードを共有した場合は、コンポーネントの一覧を把握するために分析します。
- 組み合わせ — 図と口頭での説明の組み合わせは、最も豊富な入力です。
ファシリテーターがアーキテクチャ図を共有した場合は、分析して次のように回答します。
図から、次のように読み取れます。
- コンポーネント:{特定したサービス/リソースの一覧}
- データフロー:{コンポーネント間の主要なフロー}
- 外部との境界:{インターネットに公開されている箇所、サードパーティとの連携}
- ワークロードの種類:{推定される種類。例:イベント駆動型サーバーレス、コンテナ化されたマイクロサービス}
- 重点を置く可能性のある領域:{アーキテクチャ上、特に目立つ点。例:単一 AZ のデータベース、キャッシュ層がない、WAF を設けずに公開されているエンドポイント}
この理解で合っていますか?ファシリテーション用の質問を作成する前に、補足することはありますか?
まだコンテキストが提供されていない場合は、AskUserQuestion(または同等の構造化選択ツール)を使って、チェックボックス形式でコンテキストを収集します。自由記述形式の質問よりも短時間で、一貫性のある情報を得られます。質問はまとめて行ってください(1 回の呼び出しにつき最大 4 問)。
バッチ 1:ワークロードの基本情報
{
"questions": [
{
"header": "Workload type",
"question": "What kind of workload is this?",
"multiSelect": false,
"options": [
{"label": "Web/API application", "description": "Customer-facing web app or REST/GraphQL API"},
{"label": "Data pipeline / ETL", "description": "Batch or streaming data processing"},
{"label": "ML / GenAI platform", "description": "Model training, inference, RAG, or agents"},
{"label": "SaaS multi-tenant", "description": "Multi-tenant B2B/B2C SaaS platform"}
]
},
{
"header": "Criticality",
"question": "How business-critical is this workload?",
"multiSelect": false,
"options": [
{"label": "Revenue-generating", "description": "Downtime directly impacts revenue"},
{"label": "Customer-facing", "description": "Users affected by any degradation"},
{"label": "Internal tool", "description": "Internal team productivity impact"},
{"label": "Experiment/POC", "description": "Non-production or exploratory"}
]
},
{
"header": "Compliance",
"question": "Does this handle regulated data?",
"multiSelect": true,
"options": [
{"label": "PCI-DSS", "description": "Payment card data"},
{"label": "HIPAA", "description": "Healthcare/PHI data"},
{"label": "SOC 2", "description": "Enterprise trust requirements"},
{"label": "None / Unknown", "description": "No specific compliance regime"}
]
},
{
"header": "Team maturity",
"question": "What's the team's cloud maturity level?",
"multiSelect": false,
"options": [
{"label": "Greenfield/startup", "description": "New team, few workloads in production"},
{"label": "Scaling", "description": "Some production experience, growing team"},
{"label": "Enterprise/mature", "description": "Multiple production workloads, established SRE"}
]
}
]
}
バッチ 2:重点分野とスコープ
{
"questions": [
{
"header": "Top concerns",
"question": "What areas concern you most going into this review? (select up to 3)",
"multiSelect": true,
"options": [
{"label": "Security posture", "description": "IAM, encryption, data protection"},
{"label": "Reliability / DR", "description": "Availability, SPOFs, disaster recovery"},
{"label": "Performance", "description": "Latency, throughput, scaling"},
{"label": "Cost", "description": "AWS spend, waste, right-sizing"}
]
},
{
"header": "Review scope",
"question": "What scope of review do you want to prepare for?",
"multiSelect": false,
"options": [
{"label": "Full 6 pillars", "description": "Complete WAFR across all pillars"},
{"label": "Specific pillars", "description": "Deep-dive on 1-2 pillars only"},
{"label": "Pre-launch checkpoint", "description": "Focus on blockers to go-live"},
{"label": "Post-incident review", "description": "Focus on reliability and ops"}
]
},
{
"header": "Time budget",
"question": "How much time do you have with the customer?",
"multiSelect": false,
"options": [
{"label": "1 hour", "description": "Rapid triage; prioritize ruthlessly"},
{"label": "Half day (3-4h)", "description": "Standard depth per pillar"},
{"label": "Full day", "description": "Deep-dive with breaks between pillars"},
{"label": "Multi-session", "description": "One pillar per meeting over multiple days"}
]
}
]
}
また、以下も尋ねてください。
- アーキテクチャ図(画像 — こちらで直接分析します)
- ワークロードの名前と 1~2 文の説明
コンテキストがすでに提供されている場合(図と口頭での説明)は、チェックボックス形式の質問を省略して先に進みます。
ステップ 2:アーキテクチャの事前評価(柱ごとの視点)
アーキテクチャ図(または十分なテキストによる説明)が提供されたら、ファシリテーション用の質問を作成する前に、構造化された事前評価を提示します。これにより、実際のアーキテクチャに基づいた、柱ごとの具体的な論点をファシリテーターに提供できます。
2a. データフローマップ
ユーザーからのリクエスト(または主要なイベント)がシステムをどのように流れるかをたどります。
- イングレス:リクエストの入口(API Gateway、ALB、CloudFront など)
- 処理段階:各コンポーネントを順番に記載
- データストア:状態の読み取り/書き込み先
- 非同期経路:キュー、イベントバス、ストリーム
- イグレス:結果を呼び出し元に返す方法
- 外部依存関係:サードパーティ API、SaaS、クロスアカウント呼び出し
番号付きのフローとして提示します。
## Data Flow: {primary user journey}
1. User → CloudFront → API Gateway
2. API Gateway → Lambda (auth)
3. Lambda → DynamoDB (session lookup)
4. API Gateway → ECS Service (business logic)
5. ECS → RDS Aurora (read/write)
6. ECS → SQS (async job dispatch)
7. SQS → Lambda (worker)
8. Lambda → S3 (result storage)
2b. 信頼性 — SEEMS + FMEA 分析
データフロー上の各コンポーネントを、SEEMS の覚え方(AWS Resilience Analysis Framework に由来)に沿って確認します。
| カテゴリ | コンポーネントごとの質問 | 違反する要件 |
|---|---|---|
| Single Point of Failure(単一障害点) | インスタンスは 1 つだけですか?冗長性はありませんか? | 冗長性 |
| Excessive Load(過剰な負荷) | 過負荷になる可能性はありますか?クォータの制限を受けますか?自動スケーリングはありませんか? | 十分なキャパシティ |
| Excessive Latency(過剰なレイテンシー) | 処理が遅くなりすぎる可能性はありますか?コールドスタートはありますか?リージョンをまたぎますか? | 適時な出力 |
| Misconfigurations & Bugs(設定ミスとバグ) | 誤った設定によって不正確な出力が生じる可能性はありますか? | 正確な出力 |
| Shared Fate(運命の共有) | これが失敗した場合、ほかに何が一緒に失敗しますか? | 障害の分離 |
各指摘事項について、FMEA のリスク優先度数(RPN = 重大度 × 発生度 × 検出度。各 1~10)を使って評価します。
- 重大度:障害が発生した場合の影響(1=無視できる、10=壊滅的)
- 発生度:障害モードの発生可能性(1=まれ、10=頻繁)
- 検出度:顧客に影響が及ぶ前に検出できる度合い(1=常に検出される、10=検出不能)
- RPN のしきい値:RPN が 100 を超える指摘事項は優先度が高く、200 を超えるものは重大です。
データプレーンとコントロールプレーン:コントロールプレーンの操作(インスタンスの作成、設定の変更など)に依存する復旧経路を指摘します。障害発生中は、これらを利用できない可能性があります。確認事項:「壊れているものが修正の実行も妨げている場合、どのように対処しますか?」
2c. セキュリティ — 脅威対象領域の確認
AWS Security Reference Architecture のドメインに沿って、アーキテクチャを確認します。
| ドメイン | 図で確認する点 |
|---|---|
| アカウント構成 | 単一アカウントですか、マルチアカウントですか?セキュリティツール専用のアカウントはありますか? |
| アイデンティティとアクセス | ユーザーやサービスはどのように認証されますか?長期認証情報が使われている箇所はありますか?フェデレーションされていますか? |
| ネットワーク境界 | パブリックサブネットはありますか?WAF を使用せずにインターネットに公開されているエンドポイントはありますか?VPC エンドポイントが不足していませんか? |
| データ保護 | 保存時と転送時の暗号化は行われていますか?鍵管理はデータ管理と分離されていますか? |
| 検出 | GuardDuty/Security Hub は導入されていますか?一元管理されていますか、それともサイロ化されていますか? |
| インシデント対応 | 自動的な封じ込め経路は明示されていますか?隔離機能はありますか? |
確認事項:「外部に公開されている各エンドポイントについて、不正アクセスを防ぐものは何ですか?各データストアについて、誰が読み取り可能で、権限のない人が読み取った場合にどうすれば分かりますか?」
2d. 運用上の優秀性 — ORR 対応状況の評価
Operational Readiness Review の各ドメインに照らして、運用の成熟度を評価します。
| ドメイン | 確認事項 |
|---|---|
| リリース品質 | デプロイ戦略は明示されていますか?自動ロールバックはありますか?カナリアリリース/ブルーグリーンデプロイはありますか?パイプラインの各段階は定義されていますか? |
| イベント管理 | モニタリングやアラームは導入されていますか?サービスごとのダッシュボードはありますか?午前 2 時に何が通知されますか? |
| 影響範囲 | 1 回のデプロイで問題が起きた場合、どの程度が失敗しますか?セルベースの構成ですか?機能フラグはありますか? |
| ランブック | 各コンポーネントについて、「異常が発生した場合の手順」は文書化されていますか? |
| ゲームデー | 「障害を最後にシミュレーションし、アラームが正しく発報されることを確認したのはいつですか?」 |
ファシリテーターが確認すべき ORR の重要な質問:「その場で誰かが手順を考え出す必要なく、文書化されたランブックだけを使って RTO 内に AZ から退避できますか?」
2e. パフォーマンス効率 — ボトルネックとメカニカルシンパシーの分析
アーキテクチャを確認し、パフォーマンスのアンチパターンを探します。
| シグナル | 確認するポイント |
|---|---|
| 同期的なチェーン | 非同期の分離がない長い呼び出しチェーン — 1つのサービスの遅延がすべてをブロックします |
| キャッシュの欠如 | すべての読み取りでデータベースにアクセスしている。静的コンテンツに CDN がない |
| 不適切なコンピューティングタイプ | バッチと API で同じインスタンスファミリーを使用している。Graviton の評価をしていない。リフトアンドシフトでサイジングしている |
| 単一サイズのデータベース | 時系列、グラフ、キーバリューのパターンにリレーショナル DB を使用している |
| スケーリングポリシーがない | 変動する負荷を固定サイズのリソースで処理している |
| 単一リージョン | エッジ/CDN レイヤーがなく、世界中のユーザーが1つのリージョンにアクセスしている |
メカニカルシンパシーの確認事項:「各コンポーネントで、リソースタイプはアクセスパターンに合っていますか?ワークロードはコンピューティング、メモリ、I/O のどれに制約されており、インスタンスはそれを反映していますか?」
2f. コスト最適化 — コストシグナルの分析
アーキテクチャを確認し、コストの無駄につながるシグナルを探します。
| シグナル | 確認するポイント |
|---|---|
| 過剰なプロビジョニング | オートスケーリングのない固定サイズのコンピューティング。利用率が低い可能性のある大型インスタンス |
| コミットメントの不足 | 安定して24時間365日稼働するワークロードをオンデマンドで実行している(Savings Plans/RI の候補) |
| スポット利用の適性 | ステートレスで耐障害性のあるバッチ/コンテナタスクをオンデマンドで実行している |
| データ転送 | AZ 間の通信、リージョン間の呼び出し、CloudFront/VPC エンドポイントを経由しないインターネットへのデータ送信 |
| アイドル状態のリソース | 開発/テスト環境が24時間365日稼働している。未接続のボリューム。未使用の Elastic IP |
| マネージドサービスの未活用 | マネージド/サーバーレスの代替手段よりコストが高い、セルフマネージドのインフラストラクチャ |
重要な確認事項:「各コンポーネントで、どの料金モデルを利用しており、利用率はどのくらいですか?この図にある矢印はすべて、データ転送料金が発生する可能性があります。」
2g. サステナビリティ — 利用率と効率の監査
アーキテクチャを確認し、サステナビリティに関するシグナルを探します。
| シグナル | 確認するポイント |
|---|---|
| 常時稼働でスケーリングしない | スケーリングポリシーのない固定リソースは、過剰なプロビジョニングによる無駄につながります |
| マネージドサービスではなくセルフマネージド | キューに EC2 を使用している(SQS を使用していない)。セルフマネージドの DB を使用している(RDS/DynamoDB を使用していない) |
| データライフサイクルがない | ストレージが無制限に増加する。すべてをホットティアに保存している。有効期限ポリシーがない |
| 同期的なポーリング | イベント駆動型ではなく、ビジーウェイトのパターンを使用している |
| モノリシックなデプロイ | 小さな変更のたびにすべてを再デプロイしている |
| リージョンの選択 | 炭素強度を考慮していない |
重要な確認事項:「常時稼働している各リソースで、実際の利用率はどのくらいですか?サーバーレス化したり、スケジュール実行に切り替えたりできますか?」
2h. レビューへの活用
柱ごとの評価を次のように活用します。
- 柱の順序に優先順位を付ける:最も重大な指摘事項がある柱から始めます
- 質問の対象を絞る:各ファシリテーターカードでは、この評価で見つかった具体的な指摘事項を参照します
- 具体例を示す:「冗長性はありますか?」ではなく、「RDS が単一 AZ であることに気付きました。復旧計画はどうなっていますか?」と尋ねます
- 緊急度を評価する:FMEA の RPN により、ファシリテーターは、時間をかけて検討する指摘事項と保留する指摘事項を判断できます
ステップ 3:ファシリテーションセッションを準備する
コンテキストとレジリエンスの評価に基づいて、セッション計画を作成します。
## Session Plan
**Workload**: {name} — {brief description}
**Suggested pillar order**: {ordered by customer concern, or by standard: OPS → SEC → REL → PERF → COST → SUS}
**Attendees needed per pillar**: {e.g., "Security: need someone who manages IAM and network; Reliability: need the on-call engineer"}
**Estimated time**: {X hours total, Y minutes per pillar}
### Facilitation ground rules to state at the start:
1. This is about the workload's *current state* — not the roadmap.
2. "No" is a perfectly valid answer. We're finding improvement opportunities, not assigning blame.
3. "It's in the backlog" means "No" for this review.
4. We capture findings now, prioritize solutions later.
5. Trade-offs between pillars are expected and healthy.
ステップ 4:各 WA の質問に対するファシリテーター用質問を生成する
ショートカット:ファシリテーターから特定の柱について直接質問を求められた場合(例:「Security の質問を用意してください」)、事前アセスメント全体を作成せず、その柱のファシリテーターカードの生成に進んでください。ステップ 2 の事前アセスメントは、ファシリテーターが包括的な準備を希望している場合に使用します。特定の柱のカードを求められた場合には使用しません。
対象範囲内の各 WA の質問について、次の構成でファシリテーターカードを作成します。
### {QUESTION_ID}: {Question title}
**Pillar**: {pillar} | **Best Practices**: {count}
#### Opening question (conversational — never read the WA tool verbatim)
{A plain-language version of the WA question, tailored to the workload type. Use the customer's terminology, reference their specific services/stack.}
#### Probing follow-ups
{3-5 follow-up questions that dig deeper based on common gaps. Each targets a specific best practice without naming the BP ID.}
#### Things to look out for 🚩
{Red flags in the customer's answers that suggest risk. Concrete signals, not abstract principles.}
#### What "good" sounds like ✅
{1-2 sentences describing what a strong answer looks like for this workload type.}
#### Workload-specific angle
{How this question manifests differently for the specific workload type — e.g., for a SaaS multi-tenant app, isolation is a bigger deal than for an internal tool.}
#### Notes for the facilitator
{Tips on conversation flow: when to dig deeper, when to move on, how to handle pushback or "maybe" answers.}
段階的な生成(ユーザーが複数の柱を求めた場合のみ):ファシリテーターから複数の柱を求められた場合は、カードを一度に 1 つの柱ずつ生成します。各柱の生成後、次に進む前に承認確認を行います(利用可能な場合は AskUserQuestion を使用し、それ以外の場合は通常のテキストで確認します)。
- はい、続けてください — カードに問題ありません。次の柱を生成してください
- 修正が必要です — 続行する前に特定のカードを調整してください
- 柱をスキップ — セッション準備からこの柱を除外してください
- さらに詳しく — 特定の BP を掘り下げて再生成してください
単一の柱に関する依頼:ファシリテーターから特定の柱 1 つについてカードを求められた場合(例:「Security の柱に関する質問の準備を手伝ってください」)、その柱のカードをすべて 1 回の応答で作成します。承認は求めず、完成した内容を提示してください。
---停止--- 複数の柱が求められた場合、すべての柱を一度に生成しないでください。柱ごとに承認を待ってください。
ステップ 5:内容を深めるための参考資料を読み込む
ファシリテーターカードを作成する際は、aws-well-architected-framework-review スキルから参考ファイルを読み込み、実際のベストプラクティスに基づいた質問を作成してください。このスキルには独自の参考資料は含まれていません。共有コーパスから読み込みます。
参考資料の読み込み方針:
- 必要な柱ごとに
skills/aws-well-architected-framework-review/references/pillars/{pillar-slug}.mdを読み込みます。1 つの柱ファイルには、その柱のすべての質問とベストプラクティスが含まれています(OPS、SEC、REL、PERF、COST、SUS)。 - ベストプラクティス、アンチパターン、実装ガイダンスを活用して、具体的な掘り下げ質問を作成します(一般的な質問ではなく、具体的な質問にしてください)。
- ファシリテーターカードでは BP レベルの深さを反映しつつ、BP ID は顧客に示さないでください。
ワークロードにレンズが適用される場合は、レンズ固有の質問について skills/aws-well-architected-framework-review/references/lenses/{lens}/ 内のファイルも読み込みます。
ステップ 6:「セッション中」の依頼に対応する
ファシリテーターは、セッションの途中で次のような質問をすることがあります。
- 「顧客が {topic} について X と言いました。次に何を掘り下げるべきですか?」 → 回答から明らかになったことと、ベストプラクティスで期待されることに基づき、対象を絞った追加質問を 3~5 件作成します。
- 「Y は行っていないと言っています。どの程度重大ですか?」 → 影響範囲と発生可能性について簡潔に説明し、リスクレベル(高/中/低)を評価します。
- 「時間が足りなくなってきました。このワークロードでは、残りの質問のうちどれが最も重要ですか?」 → ワークロードの種類と既知の懸念事項に基づき、残りの質問に優先順位を付けます。
- 「{question} への回答が曖昧でした。具体的な回答を得るのを手伝ってください。」 → 具体的で反証可能な質問に言い換えます(例:「ランブックはありますか?」ではなく「ランブックを見せていただけますか?」)。
ステップ 7:セッション後の要約
レビューセッションの後に依頼された場合は、ファシリテーター向け振り返りを作成します。
## WAFR Debrief: {workload_name}
### Key findings (by severity)
🔴 High Risk:
- {finding with context}
🟡 Medium Risk:
- {finding with context}
🟢 Well-implemented:
- {positive finding — what they're doing right}
### Answers that need verification
- {Things the customer said "yes" to that the facilitator should verify with evidence}
### Suggested improvement plan order
1. {highest-impact, lowest-effort first}
2. ...
### Questions that were skipped or need a follow-up session
- {list with reason}
制約事項
- コンプライアンスのチェックリストのように読める内容は、絶対に生成しないでください。 すべての質問が、人と人との自然な会話に聞こえるようにしてください。
- ワークロードに合わせて言葉遣いを調整してください。 ゲーム会社と金融サービス企業では、異なる用語が必要です。
- トレードオフを認めてください。 ある柱の評価結果が別の柱と相反する場合(例:コストと信頼性)、そのことを伝えてください。
- 評価結果を捏造しないでください。 実際の WA のベストプラクティスに関連する事柄だけを指摘してください。
- 「判断できない」場合は、正直に伝えてください。 ファシリテーターが十分な情報を集めていない場合は、推測するのではなく、ほかに必要な情報を伝えてください。
- 段階的に情報を開示してください。 最初は冒頭の質問から始め、回答から不足が明らかになった場合にのみ、詳しく掘り下げてください。
- 時間を尊重してください。 ファシリテーターがセキュリティに使える時間は30分だと伝えた場合、10個すべての質問を急いで行うのではなく、そのワークロードにとって最も重要な3〜4個の質問を優先できるようにしてください。