fortify について
fortify は、外部サービスを呼び出すワークフローの障害対応を強化するエージェントスキルです。入力検証、再試行、フォールバック、サーキットブレーカー、タイムアウト、監査項目を示します。
主な機能
- 01入力検証とサイズ制限
- 02指数バックオフ付き再試行
- 03フォールバック応答とエスカレーション
- 04サーキットブレーカーとタイムアウト
- 05障害対策の監査チェックリスト
活用シーン
- 01外部 API を呼ぶワークフローの強化
- 02一時的な障害時の動作の定義
- 03ワークフロー各部のエラー処理の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sharpdeveye/ maestro --skill fortifyインストール後、Claude Code で/fortifyを入力して読み込まれたか確認します。
詳細
必須の準備
/agent-workflow を呼び出してください。ワークフローの原則、アンチパターン、Context Gathering Protocolが含まれています。作業を進める前にプロトコルに従ってください。ワークフローのコンテキストがまだ存在しない場合は、必ず最初に /teach-maestro を実行してください。 多層防御のパターンとエラー境界の設計については、agent-workflow スキルの guardrails-safety リファレンスを確認してください。
ワークフローの耐障害性を高めましょう。外部呼び出しはすべて、いずれ失敗します。モデル API、ツール、データベース、サードパーティサービスなど、Fortify を使えばワークフローが障害に適切に対処できるようになります。
強化レイヤー
レイヤー 1:入力の検証
- 処理前にすべての入力を検証します
- 無効な入力には、明確なエラーメッセージを返します
- すべての入力フィールドにサイズ制限を設定します
レイヤー 2:バックオフ付きの再試行 一時的な障害(ネットワークエラー、レート制限、タイムアウト)の場合:
Retry strategy:
max_retries: 3
initial_delay: 1s
backoff_multiplier: 2
max_delay: 30s
retryable_errors: [429, 500, 502, 503, 504, TIMEOUT, CONNECTION_ERROR]
non_retryable_errors: [400, 401, 403, 404]
レイヤー 3:フォールバック応答 再試行を使い切った場合:
- 該当する場合は、キャッシュ済みの前回の応答を使用します
- フォールバックとして、よりシンプルで安価なモデルを使用します
- 適切に機能を縮退させた応答を返します
- 人間によるレビューにエスカレーションします
レイヤー 4:サーキットブレーカー サービスで障害が継続的に発生している場合:
Circuit breaker:
failure_threshold: 5 consecutive failures
state: CLOSED → OPEN (after threshold) → HALF_OPEN (after cooldown)
cooldown: 60 seconds
half_open_max_requests: 1
レイヤー 5:タイムアウト制御 すべての外部呼び出しにタイムアウトを設定する必要があります:
- モデル API 呼び出し:タスクに応じて 30~120s
- ツールの実行:ツールに応じて 10~60s
- データベースクエリ:5~15s
- サードパーティ API:10~30s
強化の監査
各コンポーネントについて、以下を確認します:
- 入力検証がある
- 一時的な障害に対する再試行ロジックがある
- 再試行に失敗した場合のフォールバックがある
- タイムアウトが設定されている
- コンテキストとともにエラーがログに記録される
- ユーザーに意味のあるエラーが表示される(スタックトレースではない)
推奨される次のステップ
強化の後、/evaluate を実行して、現実的な障害シナリオでエラー処理が機能することを確認してください。
絶対にしてはいけないこと:
- 再試行できないエラー(認証失敗、検証エラー)を再試行する
- バックオフなしで再試行する(問題が悪化します)
- エラーを黙って握りつぶす(無視せず、ログに記録して処理してください)
- 無限のタイムアウトを設定する(永久に停止する可能性があります)
- フォールバックを省略する(フォールバックなしで再試行を使い切ると、ユーザーにエラーが表示されます)