アッセイ
このスキルを使用して、ローカルでゲートベースの静的コードレビューを実行します。レビューは品質ゲートを順に開きます。下位のゲート(基本的な衛生状態、命名、エラーハンドリングなど)で失敗すると、上位のゲートはブロックされます。これは、基本がすでに壊れている場合に後続の判断が役に立たないためです。
このスキルはリモートサービスを呼び出したり、コメントを投稿したり、コードを承認したり、ファイルを変更したりしません。ローカルまたはペーストされた入力をレビューし、構造化されたレポートを生成します。
ワークフロー
フェーズ0: ローカル入力の解決
ユーザーの入力をレビュースコープに正規化します:
| 入力 | 解決方法 |
|---|---|
| ペーストされたコードまたはdiff | 提供された内容を直接レビュー |
| ローカルファイルパス | ファイル内容を全件読み込み。利用可能でない限りdiffコンテキストはなし |
| ローカルgit diff | 変更されたファイルとハンクをレビュー |
| コミットハッシュまたは範囲 | 利用可能な場合はローカルgit diffを使用 |
| ブランチ名 | 利用可能な場合はローカルマージベースdiffを使用 |
| 曖昧なリクエスト | ファイル、diff、コミット/範囲、ブランチ、またはペーストされたコードを確認 |
MR/PRデータを取得したり、リモートAPIを呼び出したり、認証を要求したりしないでください。リモートコンテキストが必要な場合は、ユーザーにローカルdiffまたはペーストされたコンテンツを提供するよう依頼してください。
フェーズ1: レビュー深度の調整
開くゲートの数を選択します。通常のローカル変更の場合は、デフォルトでゲート1~5とします。
| コンテキスト | ゲート範囲 |
|---|---|
| ドラフト、WIP、探索的コード | ゲート1~3 |
| 通常の機能または内部ツール | ゲート1~5 |
| 共有ライブラリ、本番パス、または公開API | ゲート1~7 |
| セキュリティに敏感なコード、認証、暗号、コマンド実行、またはユーザー入力境界 | ゲート1~8 |
曖昧な場合は、コードの宛先やリスクレベルを確認してください。
フェーズ2: 大規模スコープのトリアージ
レビュースコープが5ファイルを超える場合は、詳細検査の前に迅速なトリアージを実行します。ファイル数が5以下の場合はトリアージをスキップし、構造抽出に進みます。
トリアージチェック:
| # | チェック | 失敗シグナル |
|---|---|---|
| 1 | デッドコード | コメントアウトされたコード、未使用のインポート、デバッグ出力 |
| 2 | 命名の明確さ | 公開名が曖昧または誤解を招く |
| 3 | ネストの深さ | ネストが3レベルを超える |
| 4 | 関数の長さ | 関数が複数の責務を隠すのに十分な長さ |
| 5 | エラーの無視 | 空のcatch/except、または無視された障害 |
| 6 | ドメインの混在 | I/Oとビジネスロジックが1つのユニットに混在 |
| 7 | 生のフィールドアセンブリ | 複雑な条件に意味論的なヘルパーがない |
| 8 | 重複の兆候 | 類似したロジックが繰り返し出現 |
| 9 | セキュリティの臭い | シークレット、安全でない補間、機密ログ、チェックされていない危険な入力 |
ファイルを分類:
| クラス | 基準 | 次のアクション |
|---|---|---|
| 赤 | 3つ以上のチェック不合格 | 全ゲート検査 |
| 黄 | 1~2のチェック不合格 | 対象ゲートとそれ以下の全ゲートを検査 |
| 緑 | 0チェック不合格 | 特に要求がない限り合格 |
セキュリティの臭いはデュアルトラックです。ゲート8が下位ゲートでブロックされていても、トリアージ警告として報告してください。
フェーズ3: 構造抽出
ゲートを開く前に、レビュー対象の各関数、クラス、モジュール、または関連コードユニットの構造を抽出します。抽出結果をゲートレビューのガイドとして使用し、生のdiffテキストのみに依存しないでください。
記録:
- クロージャ、コールバック、またはネストされた関数
- インラインオブジェクトまたは振る舞いを持つローカルエンティティ
- I/O操作と外部副作用
- 最も深いネストとその理由
- ドメイン分布: インフラストラクチャ、ビジネス、プレゼンテーション、または混合
- ライフサイクル: ワンショット、永続的、または混合
- キャプチャされた変数と隠れた依存関係
- 抽出中に発見された明らかな異常
- ゲート6の真実の情報源: ロジックを判断するためのスペックまたはガバナンスドキュメント (
openspec/、PROJECT.md、AGENTS.md、ADR、リンクされたIssue) を見つけるか、見つからなかったことを記録
フェーズ4: シーケンシャルゲートレビュー
ゲート定義については references/gates.md を参照してください。
ゲートを順番に開きます。ゲートが失敗した場合、そのファイルまたはレビュースコープに対して上位のゲートを開くのを停止します。発見事項をでっち上げないでください。詳細セクションでは沈黙は準拠を意味しますが、ゲートインデックスにはどのゲートが開かれ、合格、失敗、またはブロックされたかが記録されます。
フェーズ5: レポート
以下の形式でレポートを生成します:
## レビューレコード
**ソース**: [入力参照]
**調整**: ゲート1-[N] ([理由])
**トリアージ**: [スキップ | 赤 M / 黄 N / 緑 K]
**評決**: [合格 | ゲートNで失敗]
### ゲートインデックス
| ゲート | 焦点 | ステータス |
|---:|---|---|
| 1 | 書式と構文の衛生状態 | [合格 | 失敗 | ブロック | 未検査] |
| 2 | 命名と可読性 | [合格 | 失敗 | ブロック | 未検査] |
| 3 | エラーハンドリングと可観測性 | [合格 | 失敗 | ブロック | 未検査] |
| 4 | 制御フローと構造的な明確さ | [合格 | 失敗 | ブロック | 未検査] |
| 5 | 責務と境界 | [合格 | 失敗 | ブロック | 未検査] |
| 6 | ビジネスロジックの整合性 | [合格 | 失敗 | ブロック | 未検査] |
| 7 | 重複排除と構成 | [合格 | 失敗 | ブロック | 未検査] |
| 8 | セキュリティとパラメータの整合性 | [合格 | 失敗 | ブロック | 未検査] |
### セキュリティトリアージ警告
[トリアージチェック9が失敗した場合のみ含める]
### ゲートN: [名称]
| # | 場所 | 違反 | 修正 |
|---|---|---|---|
| 1 | `ファイル:行` | ゲートN: 違反した具体的な標準 | 具体的な修正 |
### 構造的付録
[発見事項に関連するコードユニットのサマリーを含める]
フェーズ6: オプションの修正計画
ユーザーが要求した場合にのみ修正計画を作成します。
修正計画のルール:
- 修正ごとに1つの違反
- 修正順序はゲート順に従う
- 同じゲート内では、論理的な依存関係がない限りファイルと行の順序に従う
- 日和見的な修正はしない
- 各修正には検証基準を含める
ルール
- レビューのみ。コードは変更しない。
- ローカルまたはペーストされた入力のみを使用。リモートPR/MR APIを呼び出さない。
- ゲートを順次開き、最初に失敗したゲートで停止する。
- 深いセキュリティ検査がブロックされていても、セキュリティトリアージ警告を報告する。
- 具体的な修正を示す。「改善を検討してください」などの曖昧な提案は避ける。
- 開かれたすべてのゲートが合格した場合、ゲートインデックスがレポートとなる。発見事項をでっち上げない。
- テスト、ビルド、またはランタイムチェックが実行されなかった場合は言及する。
- 自分の役割に徹し、境界で引き継ぐ。このスキルは静的でローカルなレビューのみである。
ランタイム/動作の正しさについては
verifyを参照し、ゲート8の表面的なチェックを超える深いセキュリティ分析についてはsecurity-reviewを参照するように指示する。他のスキルの役割を中途半端に行うのではなく、明確に引き継ぎ先を指定する。