変更のレビュー
このスキルはガイダンスであり、完全なチェックリストではありません。 変更のライブベースと正確なヘッドを検証・取得し、プロファイルの commands.change-scope を使用して変更されたパスをリストアップしてから、差分と設計を理解するのに十分な周辺コードを読みます。リターゲットまたはマージ後はベースを再確立します。スタイルよりも、正確性、ライフサイクル、セキュリティ、壊れた要求された動作を優先します。実質的な根拠のあるブロッカーが1つある短いレビューは、細かい指摘のリストよりも優れています。
差分を判断する前に要件を読んでください。 変更されたパスを以下の情報源にマッピングし、各所有ページを開き、その後に要件と照らし合わせて差分を読みます。ルールを記憶で判断すると、違反がレビューを通過する原因になります。
情報源
- ルートおよび各タッチされたサブツリーの
AGENTS.md:常設指示。 .agents/project-profile.md:コマンド、有効化されたサーフェス、サーフェスごとの証拠、およびプロジェクト固有のルール。docs/defensive-patterns/:レビューで適用されるルール。アーティファクトファミリーごとに1ページ。差分が触れるすべてのページを読む。docs/AGENTS.mdおよび docs-standard:ドキュメントの配置と規律。- prose-standard:コメント、ドキュメント、プロンプト、表示文字列に対する必要なカバレッジと編集判断。
- error-handling:障害の分類、所有権、封じ込め、保証、およびレポート。
- lifecycle-review:プラグイン、サービス、コンポーネントにおけるシングルトン状態、元に戻されない影響、およびクリーンアップの順序。
- test-reliability:リソースを所有する、非同期、または不安定なテストの分離と回帰防止。
.agents/notes/:設計の根拠。エージェントノートとの不一致は自動的な拒否ではなく、設計上の議論として扱う。- プロファイルが
surfaces.uiを有効化している場合、ui-ux-reviewおよびresponsive-uiスキル。
ブロッキング要件
- 新しい散文は意味論的レビューを受ける。 追加または変更されたすべてのMarkdown文章、APIドキュメント、コメント、プロンプト、説明、診断、表示文字列に prose-standard を適用する。自動チェックは正確性、配置、またはカバレッジを確立しない。
- ドキュメントはコードと一致する。 設定、デフォルト、エラー、ワイヤーフィールド、イベント、および公開動作は、同じ差分で所有する README と API ドキュメントを更新する。実装のナレーション、テストのウォークスルー、レビュー履歴、重複した根拠をフラグする。
- 所有権とクリーンアップ。 ライフサイクルを持つプラグイン、サービス、またはコンポーネントコードに対して、lifecycle-review を変更された動作と影響を受けるコンシューマーに適用する。新しい登録はその廃棄を証明する。
- 必要な証拠が存在する。 作成者が差分に関連するチェックを実行したことを検証し(pre-push-checks を参照)、CI が残りをカバーしていることを確認する。どちらも検出できない意味論的ギャップをレビューする。
- ローカライズされたUIコピー。 プロファイルが
surfaces.localized-uiを有効化している場合、マークアップ、テンプレート、ヘルパー戻り値、アクセシビリティ属性、またはコンポーネントデフォルトに埋め込まれた製品テキストを拒否する。ロケール機構と各影響ロケールでの証拠を要求する。ユーザー、モデル、およびワイヤーデータはそのままにする。 - 破壊的変更は記録される。 プロファイルが
surfaces.public-apiを有効化している場合、外部から認識可能な破壊は同じ差分にアップグレードガイドを含める(upgrade-guide を参照)。
手動チェック
- 意図とインターフェース契約: 変更されたすべてのインターフェースの両側をトレースする。実装が説明とエージェントノートと一致することを確認する(エラー、キャンセル、所有権、および廃棄を含む)。
- エラーハンドリング: 後続の作業の前提条件が保持されていることを状態の所有者が確立しない限り、キャッチアンドコンティニューを拒否する。
- ライフサイクルと並行性: 非同期セットアップ、コールバック、プロセス、またはティアダウンの場合、公開前の競合、アウェイト中のキャンセル、独立したエラーレポート、コールバックの封じ込め、再入前の所有権、完全なデタッチクリーンアップ、および静止した廃棄をチェックする。
- 機能とコンシューマの適合性: 現在のすべてのコンシューマーをトレースし、コンシューマー固有の動作が共有インターフェースに漏れている場合をフラグする。逆もまたフラグする:汎用サービス上の新しいパブリックメソッドで、唯一の呼び出し元が1つの内部コンシューマーである場合。構築時にそのコンシューマーに渡されるプライベート機能を優先する。
- スコープ、所有権、必要性: 各抽象化、状態機械、オプション、防御的コピー、および互換性パスを、その現在の契約、プロダクションコンシューマー、および所有モジュールにマッピングする。無関係な機能や投機的な一般性に挑戦する。
- 設定と公開の選択: 各デフォルト、公開操作セット、フォーマット、またはインポートされた外部概念をサポートする現在のコンシューマー証拠または先行技術を問う。その証拠がない場合は、明示的な選択または延期を要求する。
- モデル視点: プロジェクトがプロンプト、ツールスキーマ、または結果をモデルに送信する場合、モデルが受信する正確なテキストを検査する。モデルのタスクの範囲外の概念をフラグし、安定したテキストをそのまま、動的な動作をテストまたはスナップショットを通じて検証する。
- 強制: すべての拒否パスを、それを実行する操作まで追跡する。スキーマ、プロンプト、ファサード、ラッパー、またはリスナーの順序をバイパスできる直接および代替の呼び出し元を実行する。
- 借用および派生状態: 保持された各値が借用か所有かを判断し、通知とすべてのキャッシュ、プロンプト、UIエコー、リプレイ、およびクエリビューを、文書化された成功ポイントと信頼できる情報源までトレースする。
- 境界は最終操作をカバーする: ラッパーとメタデータを含む、完全な出力または保持された結果の所有者を特定する。非常に小さく正確な制限、巨大な単一チャンク、およびマルチバイトテキストをバイト制限に対して調査する。
- 実際のエントリパス: テストは関連する場合に出荷されたローダー、バイナリ、ワーカー、またはサブプロセスを実行する。手動で組み立てられたテスト設定は無効なエクスポートをキャッチしない。
- テストの強度: アサーションは意図した回帰で失敗し、実装を再述するのではなく、外部状態、ログ、イベント、または廃棄を検証する。カバレッジは必要だが、シナリオが正しいことの証拠ではない。
- ネガティブコントロール: 変更された各受理ルールに対して、実際のランナーを通じて意図的に無効なケースが失敗することを確認する。
- 実装されたエージェントノートが出荷された現実と一致する: 変更が提案されたノートを実装する場合、同じ差分でそれを現在形の出荷状態として移動して書き直す。
- 翻訳: 両側で意味と用語を比較する。構造が一致しても翻訳品質が証明されるわけではない。
結果の報告
欠陥、場所、影響、および証拠を記載する。最も関連する差分範囲にローカライズされた欠陥をインラインで配置する。クロスカッティングなアーキテクチャ、スコープ、または総合にはトップレベルのコメントを使用する。ブロッカーと提案を分離し、通過したチェックで既に強制されている問題は省略する。レビューを受けるときは、各主張を検証し、修正するか技術的根拠に基づいて反論する。