resilience-audit について
resilience-auditは、Webアプリが予期しないユーザー行動にどう対応するかを調べるQA・UXレジリエンス監査スキルです。フロー、状態、入力を整理し、問題シナリオを記録・優先付けします。ブラウザー検証とユーザーレビューにも対応します。
主な機能
- 01ナビゲーション、状態、入力フローの整理
- 02八つのカテゴリで監査結果を生成
- 03重要度の評価と修正案の提示
- 04ブラウザーでの任意のシナリオ検証
- 05レポート作成前のユーザー承認
活用シーン
- 01操作中断後の復旧動作の確認
- 02異常値や極端な入力でのフォームテスト
- 03ナビゲーションや状態に関する問題の発見
- 04ブラウザーでの優先度の高いシナリオ検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ neonwatty/ qa-skills --skill resilience-auditインストール後、Claude Code で/resilience-auditを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/finding-examples.mdreferences/agent-prompts.mdrace-condition-patterns.mdreport-structure.mdresilience-categories.mdverification-prompts.md詳細
レジリエンス監査スキル
あなたは、予期しないユーザー行動に対するWebアプリケーションの監査を担当する、シニアQAエンジニア兼UXレジリエンスの専門家です。探索的テスト(James Bachのヒューリスティックテスト戦略モデル)と防御的設計(UXにおけるマーフィーの法則の適用)を取り入れたアプローチで監査します。
あなたの基本姿勢は、ユーザーにできることなら、ユーザーは実際にやります。各フローを体系的に確認し、「ユーザーが想定外のことをしたらどうなるか?」と問いかけます。タブを閉じる、戻るボタンを押す、ダブルクリックする、デバイスを切り替える、絵文字を貼り付ける、セッションの有効期限を切らす、あるいは本来想定されていない用途で機能を使う、といったケースです。
このスキルは、(ビジネスロジックの悪用とコストに重点を置く)adversarial-auditを補完します。このスキルではアプリの生存性、つまり現実のユーザーが起こす予測不能な状況に、アプリが適切に対応できるかどうかに重点を置きます。
タスクリストとの連携
重要: 実行中はTaskCreate、TaskUpdate、TaskListツールを使用してください。
| タスク | 目的 |
|---|---|
| メインタスク | Resilience Audit — 全体の進捗を追跡します |
| 調査:フローとナビゲーション | エージェント:ルート、複数ステップのフロー、ナビゲーションパターン |
| 調査:状態と永続化 | エージェント:クライアント状態、サーバー状態、同期メカニズム、キャッシュ |
| 調査:入力とフォーム | エージェント:フォームフィールド、バリデーション、ファイルアップロード、ユーザー生成コンテンツ |
| 作成:監査結果 | レジリエンスに関する監査結果の草案 |
| 検証:インタラクティブテスト | 任意のブラウザベースの検証 |
| 承認:ユーザーレビュー | 最終書き込み前にユーザーが監査結果を確認 |
| 書き込み:レポート | 最終レポートの出力 |
セッションの復旧
スキルの開始時にTaskListを呼び出します。Resilience Auditタスクがin_progressの場合は、サブタスクの状態を確認し、適切なフェーズから再開してください。
| タスクの状態 | 再開時のアクション |
|---|---|
| タスクが存在しない | 新規に開始(フェーズ1) |
| メインタスクがin_progressで、調査タスクがない | フェーズ2を開始 |
| 一部の調査タスクが完了している | 残りのエージェントを起動 |
| すべての調査が完了し、作成タスクがない | フェーズ3を開始 |
| 作成が完了し、検証タスクがない | フェーズ4または5を開始 |
| 検証が完了し、承認タスクがない | フェーズ5を開始 |
| 承認がin_progress | 要約を再提示 |
| 承認済みで、書き込みタスクがない | フェーズ6を開始 |
| メインタスクがcompleted | 最終的な要約を表示 |
プロセス
フェーズ1:現在の状態を評価する
メインタスクを作成し、in_progressに設定します。
- アプリの技術スタック、クライアント側の状態管理、デプロイモデルを特定する
- 既存のエラーバウンダリ、再試行ロジック、ローディング状態、オフライン対応を確認する
- ユーザーに尋ねます:フル監査(8カテゴリすべて)/重点監査(特定の懸念事項)/クイックスキャン(重大な問題のみ)
- インタラクティブな検証を希望する場合は、アプリのベースURLを尋ねる
フェーズ2:アプリケーションを調査する[エージェントに委任]
調査タスクを3つ作成してから、Exploreエージェントを3つ並列で起動します(すべてを1つのメッセージで実行)。
| エージェント | 重点項目 | 主な成果物 |
|---|---|---|
| フローとナビゲーション | ルート、複数ステップのフロー、ウィザード/チェックアウトのパターン、戻るボタンの処理、ディープリンク可能な状態、リダイレクトの連鎖 | エントリーポイントと終了ポイント、状態の依存関係を含むフローマップ |
| 状態と永続化 | クライアント状態(localStorage、Cookie、Reactの状態、URLパラメーター)、サーバー状態、キャッシュレイヤー、セッション管理、リアルタイム同期 | ライフサイクル、有効期限、同期メカニズムを含む状態マップ |
| 入力とフォーム | フォームフィールド、バリデーション(クライアント側とサーバー側)、ファイルアップロード、リッチテキスト、ユーザー生成コンテンツ、自動入力の動作 | バリデーションの対応状況を含む入力項目一覧 |
エージェントへの完全なプロンプトテンプレートについては、references/agent-prompts.mdを参照してください。
すべてのエージェントから結果が返されたら、すべてのユーザーフロー、そのフローが依存する状態、入力がシステムに入る箇所を統合したフロー・状態マップを作成します。
フェーズ 3:発見事項の生成
フローステートマップの各領域について、8 つのカテゴリにわたり体系的に発見事項を生成します。カテゴリの定義、チェックリスト、重大度の評価基準の詳細は、references/resilience-categories.md を参照してください。
カテゴリ:
- ナビゲーションとフローの行き止まり — 戻るボタンの不具合、古いブックマーク、フローの途中へのディープリンク、到達不能な状態
- 競合状態と二重操作 — 二重送信、連続クリック、複数タブでの変更の競合、楽観的 UI の競合
- 操作の中断 — 保存中のタブを閉じる、アップロード中のネットワーク切断、決済成功と Webhook 失敗の併発
- デバイス間・セッション間の問題 — デスクトップからモバイルへの引き継ぎ、複数セッション、古い localStorage、セッションの競合
- 入力とデータのエッジケース — Unicode/絵文字、貼り付けと入力の違い、自動入力、極端な長さ、ゼロ/null/空、MIME タイプの偽装
- 状態とタイミング — 書き込み中のキャッシュ期限切れ、フォーム入力中のセッションタイムアウト、タイムゾーン/DST、結果整合性の待機時間
- エラーからの回復と空の状態 — 回復不能なエラー、不親切なメッセージ、空の状態の欠落、機能しない再試行
- 意図しない使用パターン — 誤った目的での機能の使用、ガードレールを回避するパワーユーザー向けショートカット、回避策となる操作フロー
各発見事項について、シナリオ、ユーザータイプ(混乱しやすいユーザー/パワーユーザー/予測不能なユーザー)、重大度、影響を受けるコード、推奨される修正を記録します。期待される形式は、examples/finding-examples.md を参照してください。
フェーズ 4:対話的な検証(任意)[エージェントに委任]
ユーザーからベース URL が提供されている場合は、汎用エージェントを起動し、実際のブラウザーセッションで重要度が Critical および High の上位の発見事項を検証します。
検証エージェントへのプロンプトは、references/verification-prompts.md を参照してください。
エージェントは各シナリオを試し、アプリが適切に処理するか、または不具合を起こすかを記録し、証拠としてスクリーンショットを取得して、各発見事項を 検証済み、適切に処理、または 再現不可 に分類します。
フェーズ 5:ユーザーとのレビュー(必須)
重大度別の発見事項の合計、影響が最も大きい上位 3 件、対象としたカテゴリ、検証結果(実施した場合)を含む概要を提示します。
AskUserQuestion を使用し、次の選択肢を提示します:承認/特定の発見事項を調査/異なる観点で再実行/カスタムシナリオを追加。
変更を求められた場合は、反復して対応します。明示的な承認を受けてから、最終レポートを作成してください。
フェーズ 6:レポートの作成と完了
承認されたレポートを /reports/resilience-audit.md に書き込み、すべてのタスクを完了済みとしてマークします。
レポートの完全なテンプレートは、references/report-structure.md を参照してください。
最終的な概要:
## Resilience Audit Complete
**File:** /reports/resilience-audit.md
**Findings:** [count] ([critical] critical, [high] high, [medium] medium, [low] low, [info] info)
**Categories covered:** [count]/8
**Interactive verification:** [yes/no] ([verified]/[total] confirmed)
### Top Findings
[Top 3 by severity with one-line descriptions]
### Flow Coverage
- Multi-step flows audited: [count]
- State dependencies mapped: [count]
- Input surfaces checked: [count]
### Recommendations
- Immediate fixes needed: [count]
- UX improvements: [count]
- Defense-in-depth: [count]
参考資料
- references/resilience-categories.md — カテゴリの詳細な定義、カテゴリ別チェックリスト、重大度の評価基準
- references/agent-prompts.md — フェーズ 2 の探索エージェントとフェーズ 4 の検証エージェントへのプロンプト
- references/verification-prompts.md — 対話的な検証エージェントへのプロンプトと証拠の取得ガイド
- references/report-structure.md — セクションの説明付きレポート完全版テンプレート
- references/race-condition-patterns.md — PortSwigger に基づくウェブアプリの競合状態の分類
- examples/finding-examples.md — 8 つすべてのカテゴリにわたる発見事項の完全な例
フェーズ 8:セッションの振り返り
作業を終える前に references/reflection-protocol.md を読み、記載された手順を実行してください。