audit-context-building について
セキュリティ監査前にコードベースを詳しく把握するための Claude スキルです。関数や呼び出し経路を追跡し、不明点を明示します。脆弱性の発見や修正提案は対象外です。
主な機能
- 01モジュールと入口のボトムアップ整理
- 02関数の行単位分析
- 03前提条件と不変条件の追跡
- 04内部・外部呼び出しの追跡
- 05不確実な点の明示
活用シーン
- 01脆弱性調査前のコードベース理解
- 02アーキテクチャレビューの準備
- 03脅威モデリング向けのシステムフロー整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill audit-context-buildingインストール後、Claude Code で/audit-context-buildingを入力して読み込まれたか確認します。
詳細
ディープコンテキストビルダースキル(超詳細な純粋コンテキストモード)
1. 目的
このスキルは、監査のコンテキスト構築フェーズにおけるClaude の思考方法を定めます。
有効にすると、Claude は以下を行います。
- デフォルトで、コードを行ごと/ブロックごとに分析します。
- 第一原理思考、5 Whys、5 Howsをミクロな規模で適用します。
- 洞察 → 関数 → モジュール → システム全体を継続的に関連付けます。
- 新たな証拠に応じて発展する、安定した明示的なメンタルモデルを維持します。
- 不変条件、前提、フロー、推論上の落とし穴を特定します。
このスキルは、構造化された分析形式(以下の「関数のミクロ分析の例」を参照)を定義し、脆弱性探索フェーズの前に実行されます。
使用するタイミング
以下の場合に使用します。
- バグや脆弱性を発見する前に、深い理解が必要な場合。
- 高レベルの推測ではなく、ボトムアップの理解を求める場合。
- ハルシネーション、矛盾、コンテキストの喪失を抑えることが重要な場合。
- セキュリティ監査、アーキテクチャレビュー、脅威モデリングの準備をする場合。
以下には使用しないでください。
- 脆弱性の報告
- 修正の推奨
- エクスプロイトに関する推論
- 深刻度/影響度の評価
カタログの対象範囲と証拠の取り扱い
このツリーには、FUNCTION_MICRO_ANALYSIS_EXAMPLE.md、OUTPUT_REQUIREMENTS.md、COMPLETENESS_CHECKLIST.md、または関数アナライザーのエージェント定義は含まれていません。以下のインライン構造を使用し、上流の資料が見つからないことを報告してください。それらのファイルやエージェントを読んだ、または実行したと主張してはいけません。数値で示された深さの目標は調査を促すものであり、不変条件や前提を捏造する許可ではありません。不明な動作や調査していない外部コードは明示し、未解決の不確実性も妥当な結果として扱い、チェックリストを完了するために消し去ってはいけません。
2. このスキルの動作
有効にすると、Claude は以下を行います。
- 各ブロックと行をデフォルトで超詳細に分析します。
- ミクロレベルの第一原理思考、5 Whys、5 Howsを適用します。
- 持続的なグローバルメンタルモデルを構築し、洗練させます。
- 以前の前提と矛盾する証拠が出た場合、その前提を更新します(「以前は X だと思っていましたが、今は Y です」)。
- コンテキストを安定して保つため、要約を定期的に基準点として確認します。
- 推測を避け、必要に応じて不確実性を明示します。
目標は、深く正確に理解することであり、結論を出すことではありません。
合理化(省略禁止)
| 合理化 | 誤りである理由 | 必須の対応 |
|---|---|---|
| 「だいたい理解できた」 | 要点だけの理解ではエッジケースを見落とします | 行ごとの分析が必要です |
| 「この関数は単純だ」 | 単純な関数も組み合わさると複雑なバグになります | それでも5 Whysを適用します |
| 「この不変条件は覚えておける」 | 覚えてはいられません。コンテキストは劣化します | 明示的に書き留めます |
| 「外部呼び出しはおそらく問題ない」 | 外部のものは、安全が証明されるまでは敵対的なものとして扱います | コードを追うか、悪意のあるものとしてモデル化します |
| 「このヘルパーは省略できる」 | ヘルパーに含まれる前提は後続に伝播します | 呼び出しチェーン全体を追跡します |
| 「時間がかかりすぎている」 | コンテキストを急いで構築すると、その後に脆弱性を幻覚することになります | 急がば回れ |
3. フェーズ1 — 初期オリエンテーション(ボトムアップ調査)
詳細な分析の前に、Claude は最小限のマッピングを行います。
- 主要なモジュール/ファイル/コントラクトを特定します。
- 明らかな公開/外部エントリーポイントを記録します。
- 想定されるアクター(ユーザー、オーナー、リレーヤー、オラクル、その他のコントラクト)を特定します。
- 重要なストレージ変数、辞書、状態構造体、またはセルを特定します。
- 動作を推測せずに、予備的な構造を構築します。
これにより、詳細な分析のための基準点を設定します。
4. フェーズ2 — 超詳細な関数分析(デフォルトモード)
自明でないすべての関数に、完全なミクロ分析を行います。
5.1 関数ごとのマイクロ構造チェックリスト
各関数について、以下を確認します。
-
目的
- 関数が存在する理由と、システムにおける役割。
-
入力と前提条件
- パラメーターと暗黙的な入力(状態、送信者、環境)。
- 事前条件と制約。
-
出力と作用
- 戻り値。
- 状態/ストレージへの書き込み。
- イベント/メッセージ。
- 外部とのやり取り。
-
ブロックごと/行ごとの分析 各論理ブロックについて、以下を確認します。
- 何を行うか。
- なぜこの位置にあるか(順序のロジック)。
- どのような前提に依存しているか。
- どのような不変条件を確立または維持するか。
- 後続のロジックが何に依存するか。
ブロックごとに以下を適用します。
- 第一原理
- 5つのなぜ
- 5つのどのように
5.2 関数間および外部フローの分析
(外部コードへの移動ルールの完全な適用)
呼び出しに遭遇したら、境界を越えて同じマイクロ分析を続けます。
内部呼び出し
- 直ちに呼び出し先へ移動します。
- 関連するコードをブロックごとに分析します。
- データ、前提条件、不変条件の流れを追跡します。 呼び出し元 → 呼び出し先 → 戻り値 → 呼び出し元。
- この特定の呼び出しコンテキストで、呼び出し先のロジックの動作が異なる場合は記録します。
外部呼び出し — 2つのケース
ケース A — コードベース内にコードが存在するコントラクトへの外部呼び出し 内部呼び出しとして扱います。
- 対象のコントラクト/関数へ移動します。
- ブロックごとのマイクロ分析を続けます。
- 不変条件と前提条件を途切れなく引き継ぎます。
- ブラックボックスだと推測するのではなく、実際のコードに基づいてエッジケースを検討します。
ケース B — コードを利用できない外部呼び出し(真の外部/ブラックボックス) 敵対的なものとして分析します。
- 送信されるペイロード/値/ガスまたはパラメーターを記述します。
- 対象に関する前提条件を特定します。
- あらゆる結果を検討します。
- リバート
- 不正確または予期しない戻り値
- 予期しない状態変更
- 誤動作
- 再入可能性(該当する場合)
継続性のルール
呼び出しチェーン全体をひと続きの実行フローとして扱います。 コンテキストをリセットしてはいけません。 すべての不変条件、前提条件、データ依存関係を呼び出しを越えて引き継ぐ必要があります。
5.3 完全な分析の例
FUNCTION_MICRO_ANALYSIS_EXAMPLE.md を参照してください。以下を示す、完全な手順の例です。
- DEX スワップ関数の完全なマイクロ分析
- 第一原理、5つのなぜ、5つのどのようにの適用
- 不変条件と前提条件を含むブロックごとの分析
- 関数間の依存関係のマッピング
- 外部とのやり取りに関するリスク分析
この例は、分析対象となるすべての関数に求められる深さと構成を示しています。
5.4 出力要件
超詳細な分析を行う場合、Claude MUST OUTPUT_REQUIREMENTS.md で定義された形式に従って出力を構成する必要があります。
主な要件:
- 目的(最低2~3文)
- 入力と前提条件(すべてのパラメーター、事前条件、信頼に関する前提)
- 出力と作用(戻り値、状態への書き込み、外部呼び出し、イベント、事後条件)
- ブロックごとの分析(内容、ここにある理由、前提条件、第一原理/5つのなぜ/5つのどのように)
- 関数間の依存関係(内部呼び出し、リスク分析を伴う外部呼び出し、共有状態)
品質基準:
- 関数ごとに不変条件を最低3つ
- 文書化する前提条件を最低5つ
- 外部とのやり取りに関するリスクの検討事項を最低3つ
- 第一原理の適用を最低1回
- 5つのなぜ/5つのどのようにの適用を組み合わせて最低3回
5.5 完全性チェックリスト
関数のマイクロ分析を終える前に、COMPLETENESS_CHECKLIST.md に照らして確認してください。
- 構造上の完全性:必須セクション(目的、入力、出力、ブロックごとの分析、依存関係)がすべて含まれていること
- 内容の深さ:最低基準(不変条件、前提条件、リスク分析、第一原理)を満たしていること
- 継続性と統合:相互参照、引き継がれる前提条件、不変条件の結合
- ハルシネーション対策:行番号による引用、曖昧な記述がないこと、根拠に基づく主張
調査した範囲、裏付けられた不変条件、未解決の疑問をすべて報告してください。出力に要求されたセクションが含まれているという理由だけで、完全に理解したと主張してはいけません。
5. フェーズ 3 — システム全体の理解
十分なマイクロ分析を行った後、次の手順に進みます。
-
状態と不変条件の再構築
- 各状態変数の読み取りと書き込みをマッピングします。
- 複数の関数やモジュールにまたがる不変条件を導き出します。
-
ワークフローの再構築
- エンドツーエンドのフロー(預け入れ、引き出し、ライフサイクル、アップグレード)を特定します。
- これらのフロー全体で状態がどのように変化するかを追跡します。
- 各ステップを通じて引き継がれる前提条件を記録します。
-
信頼境界のマッピング
- アクター → エントリーポイント → 振る舞い。
- 信頼できない入力経路を特定します。
- 権限の変更と、暗黙に期待されるロールを特定します。
-
複雑性と脆弱性のクラスタリング
- 多くの前提条件を含む関数。
- 分岐ロジックが多い箇所。
- 複数ステップにわたる依存関係。
- モジュール間で結び付いた状態変更。
これらのクラスタは、脆弱性の探索フェーズを導くのに役立ちます。
6. 安定性と一貫性のルール
(ハルシネーション対策、矛盾防止)
Claude は次のことを行う必要があります。
-
以前の前提条件に合わせるために、根拠を決して歪めないこと。 矛盾が見つかった場合:
- モデルを更新します。
- 修正内容を明示します。
-
重要な事実を定期的に確認すること。 次の中核事項を要約します。
- 不変条件
- 状態の関係
- アクターの役割
- ワークフロー
-
曖昧な推測を避けること。 次のように述べます。
- 「不明です。X を調査する必要があります。」 次のようには述べません。
- 「おそらく……」
-
常に相互参照すること。 新たな知見を以前の状態、フロー、不変条件と結び付け、全体の一貫性を保ちます。
7. サブエージェントの使用
Claude は次の場合にサブエージェントを起動できます。
- 密度の高い関数や複雑な関数。
- 長いデータフローや制御フローの連鎖。
- 暗号処理や数学的ロジック。
- 複雑な状態機械。
- 複数モジュールにまたがるワークフローの再構築。
関数ごとの詳細な分析には function-analyzer エージェントを使用してください。
このエージェントは、このスキルで定義されている完全なマイクロ構造チェックリスト、関数間フローのルール、品質基準に従い、純粋なコンテキスト構築という制約を徹底します。
サブエージェントは次のことを行う必要があります。
- 同じマイクロ分析優先のルールに従います。
- Claude がグローバルモデルに統合できる要約を返します。
8. 他のフェーズとの関係
このスキルは、次のフェーズより前に実行されます。
- 脆弱性の発見
- 分類/トリアージ
- レポートの作成
- 影響のモデル化
- エクスプロイトの推論
このスキルの目的は、次の構築のみにあります。
- 深い理解
- 安定したコンテキスト
- システムレベルの明確さ
9. 対象外
このスキルが有効な間、Claude は次のことを行ってはいけません。
- 脆弱性を特定する
- 修正を提案する
- 概念実証を生成する
- エクスプロイトをモデル化する
- 深刻度や影響を割り当てる
これは純粋なコンテキスト構築のみを目的としています。
制限事項
- タスクが上記の範囲に明確に該当する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を停止して確認を求めてください。