成果物(ドキュメント・コード・設計書)をクリティカルレビューで批判的に検証し、品質を保証する。 ドキュメントレビュー(要件カバレッジ、章間整合性、数値・データの妥当性、可読性)と 技術仕様レビュー(仕様乖離、会計整合性、境界値攻撃、セキュリティ、パフォーマンス、テストカバレッジ)に対応。 Use when user says「ドキュメントをレビューして」「クリティカルレビューを実施して」 「要件カバレッジをチェックして」「仕様との乖離を確認して」「数値を検証して」 「コードレビューして」「セキュリティチェックして」「章間整合性を確認して」。 Do NOT use for: データの数値整合性のみの検証(→ data-validation)、 単体テストの設計・生成(→ test)、知識の蒸留・構造化(→ distill)。
Trust, but Verify — 信頼せよ、されど検証せよ
distill → 成果物作成 → [review] ── Approved ──→ 完了
│ ── Rejected ──→ 修正へ戻る
↓
仕様に問題発見 → distill に差し戻し
| 番号 | ディレクトリ | レビューとの関係 |
|---|---|---|
| 20 | 20_notes/ | レビューの基準(仕様・用語集・ビジネスルール) |
| 30 | 30_proposal/ | レビュー対象(提案書・設計書) |
| 40 | 40_decision_log/ | レビュー結果・判断根拠の記録先 |
| 50 | 50_snapshots/ | レビュー前後の差分をマイルストーンとして記録 |
レビュー開始前に必ず確認する。準備不足でレビューを開始すると、表面的な指摘に終始する。
| 確認項目 | 確認方法 | 不合格時の対応 |
|---|---|---|
| 仕様の理解 | 20_notes/ を精読 | distill に差し戻し |
| 成果物の理解 | レビュー対象を通読 | 不明点を質問 |
| 過去の判断 | 40_decision_log/ を確認 | ADR を読み込み |
| 品質基準 | レビュー種別に応じた基準を特定 | 基準を仮設定し ADR に記録 |
| レビュー種別 | ドキュメント / 技術仕様 / ソースコードを判定 | — |
レビュー対象は?
├── 提案書・設計書・仕様書 → Step 2: ドキュメントレビュー
├── ソースコード → Step 3: 技術仕様レビュー
├── PR / コミット → Step 3 + Step 4: 挑戦的レビュー
└── 複合(ドキュメント+コード)→ Step 2 + Step 3
チェックリスト:
品質基準:
レビューコメント数 最大 50 件/PR
レビュー応答時間 閾値: 24 時間以内
20_notes/ を読み、仕様を完全に理解した
レビュー対象の成果物を読み、内容の意図を理解した
40_decision_log/ を確認し、過去の設計判断を理解した
品質基準を確認した
レビュー種別を判定した
提案書・設計書・仕様書の品質を 4 つの観点で検証する。
要件定義の全項目がドキュメントで漏れなく回答されているか。
| チェック項目 | 検証方法 | 深刻度 |
|---|---|---|
| 全要件に対応する章が存在 | 要件リスト vs 目次の照合 | Critical |
| 重要項目に十分なページ | ページ配分の評価 | Major |
| 「対応可能」の実現方法が具体的 | 記述の具体性確認 | Major |
| 未対応項目の代替案明記 | 代替案の有無確認 | Major |
ドキュメントの各章が互いに矛盾していないか。
| チェック項目 | 検証方法 | 深刻度 |
|---|---|---|
| スケジュール工数 vs 機能量 | 工数の妥当性検算 | Critical |
| 目標値 vs アーキテクチャ | 実現可能性検証 | Critical |
| 体制人員 vs スケジュール | 稼働率の検算 | Major |
| 見積金額 vs スコープ | 範囲の一致確認 | Critical |
| 用語の統一 | glossary.md 準拠チェック | Minor |
| チェック項目 | 検証方法 | 深刻度 |
|---|---|---|
| 数値の前提条件が明記 | 前提の有無確認 | Major |
| 積算根拠の提示 | 計算式の検証 | Major |
| リスクバッファの計上 | バッファ率確認(10-20%) | Major |
| 外部費用の計上漏れ | 費目の網羅性確認 | Major |
| ランニングコスト | 運用保守費の有無 | Minor |
| チェック項目 | 検証方法 | 深刻度 |
|---|---|---|
| 章構成が目的に沿っている | 論理フローの確認 | Minor |
| 図表が適所に配置 | 文章密度の確認 | Minor |
| 差別化ポイントが明確 | 「なぜ我々か」の有無 | Major |
| 専門用語に説明あり | 読者レベルとの適合 | Minor |
| 各章冒頭にサマリー | ナビゲーション性の確認 | Minor |
チェックリスト:
20_notes/glossary.md に準拠しているかソースコード・技術設計を 6 つの観点で検証する。
実装が notes の仕様から逸脱していないか。
検証方法: 20_notes/domain-model.md のエンティティ定義を読み、実装コード(src/models/ 等)と照合する。
| チェック項目 | 深刻度 |
|---|---|
| エンティティの属性が仕様通り | Critical |
| ビジネスルールのロジックが仕様通り | Critical |
| API リクエスト/レスポンス形式の一致 | Critical |
| データ型、精度、制約の一致 | Major |
| チェック項目 | 深刻度 |
|---|---|
| 実績と見込の混同なし | Critical |
| 通貨精度(浮動小数点型禁止) | Critical |
| 二重計上なし | Critical |
| 丸め処理の統一 | Major |
| タイムゾーンの考慮 | Major |
| チェック項目 | 深刻度 |
|---|---|
| Null/Undefined でクラッシュしない | Critical |
| 境界値(0, -1, MAX_SAFE_INTEGER)で破綻しない | Critical |
| 型攻撃(文字列, NaN, Infinity)に耐える | Major |
| 並行処理での同一リソースアクセス | Major |
| チェック項目 | 深刻度 |
|---|---|
| ログに PII を出力していない | Critical |
| エラーメッセージに内部情報なし | Major |
| API レスポンスに不要な機密情報なし | Critical |
| デバッグ用コードが本番に残っていない | Major |
| 成果物に機密情報なし | Critical |
| チェック項目 | 深刻度 |
|---|---|
| N+1 クエリ問題なし | Major |
| 適切なインデックス定義 | Major |
| 大量データでメモリリークなし | Critical |
| キャッシュ戦略の適切性 | Minor |
| 非同期処理の適切な利用 | Minor |
ペルソナの State Dimensions(Belief/Value/Stance/Emotion/Communication)が、 ストーリーの受入基準・テストデータ・UX 設計に一貫して反映されているか検証する。
| チェック項目 | 深刻度 |
|---|---|
| State Dimensions が定義されたペルソナに対し、受入基準に心理状態の考慮がある | Major |
| テストデータがペルソナの Stance/Emotion の多様性を反映している | Major |
| UX 設計がペルソナの Emotion に対応した Peak-End 設計を持つ | Minor |
| 全ペルソナの State Dimensions が均質化していない(差別化されている) | Major |
| State Dimensions の推定値に根拠が明記されている | Minor |
State Alignment 評価ルーブリック:
| スコア | 基準 |
|---|---|
| S (5) | 全ペルソナに State Dimensions が定義され、受入基準・テストデータ・UX 設計に一貫して伝播。ペルソナ間の差別化が明確 |
| A (4) | State Dimensions が定義され、受入基準への反映あり。テスト/UX への伝播は部分的 |
| B (3) | State Dimensions が定義されているが、一部ペルソナで均質化。下流への伝播が不十分 |
| C (2) | State Dimensions が一部ペルソナのみ。受入基準への反映なし |
| D (1) | State Dimensions 未定義、またはペルソナ定義に心理状態の考慮が皆無 |
適用条件: State Dimensions が
20_notes/または story-map 成果物に定義されている場合に適用。 未定義の場合は Info レベルで「State Dimensions の定義を推奨」と指摘する。
| チェック項目 | 深刻度 |
|---|---|
| 全公開関数にテストあり | Major |
| 異常系のテスト | Major |
| エッジケーステスト | Major |
| カバレッジ 80%+ | Minor |
| 振る舞いベースのテスト | Minor |
各基準の詳細なコード例と指摘パターンは references/technical-review-examples.md を参照。
チェックリスト:
レビュー完了後、以下のセルフチャレンジを実施して品質を一段引き上げる。
| チャレンジ | プロンプト例 | 効果 | 適用場面 |
|---|---|---|---|
| 証明要求 | Prove to me this works | main と feature branch の振る舞い差分を検証し、動作保証の客観的根拠を得る | PR レビュー |
| 厳格検証 | Grill me on these changes | レビューアとして最も厳しい基準で検証する | 最終レビュー |
| 再実装要求 | Scrap this and implement the elegant solution | 中途半端な修正を捨て、最適解を一発で得る | リファクタリング |
| 差分比較 | git diff main...HEAD | 振る舞いレベルで main との差異を検証する | PR レビュー |
原則: 挑戦的レビューは全レビューの仕上げフェーズとして推奨。特に PR レビュー時には必須。
チェックリスト:
# レビューレポート
## メタ情報
- 案件名: <案件名>
- レビュー対象: <ファイル名 or PR 番号>
- レビュー種別: ドキュメント / 技術仕様 / 複合
- レビュー日: YYYY-MM-DD
- レビュー基準: Step 2(2a-2d) / Step 3(3a-3f) / 挑戦的レビュー
## 結果サマリー
| 深刻度 | 件数 |
|:---|---:|
| Critical | X |
| Major | X |
| Minor | X |
| Info | X |
## 総合判定: Approved / Conditional / Rejected
## 指摘一覧
| # | 深刻度 | 箇所 | 問題 | 影響 | 修正案 |
|---:|:---|:---|:---|:---|:---|
| 1 | Critical | ... | ... | ... | ... |
## 推奨アクション
1. ...
## 挑戦的レビュー結果(実施した場合)
成果物が完璧であると論理的に証明できない限り、承認を与えてはならない。
| 判定 | 条件 | 次のアクション |
|---|---|---|
| Approved | Critical 0 + Major 0 | 次工程に進行 |
| Conditional | Critical 0 + Major 1+ | 修正後に再レビュー(Minor 以下は次回対応可) |
| Rejected | Critical 1+ | 即座に修正、全面再レビュー |
| レベル | 定義 | 対応 |
|---|---|---|
| Critical | データ損失、システム停止、目的達成を阻害する致命的な問題 | 即座に修正必須 |
| Major | ビジネスロジックの誤り、セキュリティリスク、要件漏れ | 修正必須 |
| Minor | 品質問題、パフォーマンス懸念、表現の不統一 | 修正推奨 |
| Info | ベストプラクティスの提案、改善余地 | 参考情報 |
レビュー結果が定型文の羅列に収束すると、レビュー対象固有の本質的な問題を見逃し、レビューが「儀式」に退化する。レビューの価値は、対象に踏み込んだ固有の洞察にある。
| # | レビュー出力 Slop パターン | 検出方法 | 対策 |
|---|---|---|---|
| RV-1 | 固定比率カテゴリ分布 | 指摘が毎回 Critical 1〜2 件 / Major 3〜4 件 / Minor 5〜6 件の「見栄えの良い」比率に収まっている | 実際の品質に応じた分布を出す。優秀な成果物は Critical 0 / Major 0 もあり得る。意図的に指摘を「作る」のは逆効果 |
| RV-2 | テンプレート語彙レビュー | 指摘文が「改善が必要です」「検討すべきです」「見直しを推奨します」等の定型句で、具体的な問題と修正案がない | 指摘は「何が」「なぜ」問題で「どう直すか」を具体的に記述する(例: 「見積書 p.12 の工数 40 人月は機能一覧 23 項目に対して過少。類似規模案件の実績 60-70 人月と乖離」) |
| RV-3 | 横並びスコアリング | 異なるレビュー対象に対して毎回似たようなスコア(coverage: 0.75, consistency: 0.80 等)が出力される | スコアリングには対象固有の根拠を付記する。定量メトリクス(カバレッジ%、整合性チェック通過率)に基づいて算出し、恣意的な数値を避ける |
| RV-4 | 汎用カテゴリ根因分析 | 問題の原因が「設計の見通し不足」「コミュニケーション不足」「テスト不足」等の汎用カテゴリに常に帰着する | 対象固有の技術的・構造的原因まで掘り下げる(例: 「OrderService がドメインロジックとインフラ操作を混在させており、Humble Object パターンで分離すべき」) |
| RV-5 | 対象不参照の改善提案 | 改善提案がレビュー対象の具体的な内容を参照せず、一般論に終始している | 改善提案は対象の具体的な箇所(ファイル名、行番号、章番号、テーブル名)を明示し、修正後の具体的なコード/文章を示す |
| RV-6 | 金太郎飴レビュー構造 | ドキュメントレビューでもコードレビューでも PR レビューでも、毎回同じセクション構成・同じ観点順序で出力する | レビュー対象の種類・文脈に応じてセクション構成と重点を動的に変える(例: セキュリティ関連 PR なら 3d を厚く、提案書なら 2a-2b を重点化) |
核心原則: レビューは対象の「鏡」であり、レビューアの「定型文置き場」ではない — レビューレポートだけを読んで、レビュー対象が何であったか特定できるか?「別の成果物のレビューに差し替えても違和感がないか?」→ 違和感がないならレビュー出力 Slop である。
チェックリスト:
40_decision_log/ にレビュー判断を記録したか「review スキルで、ドキュメントを要件カバレッジの観点からレビューして」
→ Step 1: 20_notes/ を精読、レビュー種別 = ドキュメントレビュー
→ Step 2(2a): 要件リスト vs 目次を照合。全 25 要件中 23 要件カバー、2 要件漏れ(Critical)
→ Step 2(2d): 漏れ要件の代替案が記載されていないことを確認(Major)
→ Step 5: Rejected — Critical 2 件。漏れ要件の章追加を指示
「review スキルで、ドキュメントの章間整合性と数値の妥当性をチェックして」
→ Step 1: 20_notes/ + 30_proposal/ を精読
→ Step 2(2b): スケジュール章の工数 120 人月 vs 見積章の合計 115 人月 → 不一致(Critical)
→ Step 2(2c): リスクバッファ 5% — 低すぎる(Major)
→ Step 5: Rejected — Critical 1 件。工数の不一致を解消し再提出を指示
「review スキルで、ソースコードを notes との整合性の観点からレビューして」
→ Step 1: 20_notes/domain-model.md を精読、レビュー種別 = 技術仕様レビュー
→ Step 3(3a): User エンティティの email 属性が UNIQUE 制約なし(Major)
→ Step 3(3c): age フィールドの負数チェック漏れ(Major)
→ Step 3(3d): ログに email をプレーンテキストで出力(Critical)
→ Step 5: Rejected — Critical 1 件。PII ログ出力の修正を最優先指示
「この PR の変更点を grill して、テストに通るまで PR を作らないで」
→ Step 1: 対象ブランチの差分を把握
→ Step 3: 技術仕様レビュー(3a-3f)を適用
→ Step 4: `git diff main...HEAD` で振る舞い差分を検証
→ Step 4: `Prove to me this works` で動作保証の根拠を確認
→ Step 5: Critical/Major 指摘がゼロになるまで修正→再検証を反復
→ 結果: Approved — 3 回の修正反復で全 Critical/Major を解消
「CI テストが 3 件落ちています。レビューして修正方針を示してください」
→ Step 1: CI ログから失敗テストを特定(test_auth, test_payment, test_report)
→ Step 3(3a): 仕様乖離がないか確認 — リファクタリングでインターフェース変更を検出
→ Step 3(3c): 境界値・環境依存(タイムゾーン)の問題を検出
→ Step 3(3f): テスト自体の品質を検証 — test_report は偽陽性と判定
→ Step 5: 修正方針をレベル別に提示(Critical: auth 即修正 / Major: payment / Info: report)
「API 仕様書と実装コードのクロスレビューをして」
→ Step 1: 20_notes/api-spec.md と src/routes/ を照合準備
→ Step 3(3a): エンドポイント定義の一致確認(HTTP メソッド、パス、パラメータ)
→ Step 2(2c): レスポンスのステータスコードとエラーメッセージの妥当性
→ Step 3(3d): レスポンスに不要な内部情報(stack trace、DB ID)が漏洩していないか
→ Step 5: 不一致リストをテーブル形式で提示。Conditional — Major 2 件
| 問題 | 原因 | 対処 |
|---|---|---|
| notes が不十分でレビュー不可 | distill フェーズの不足 | distill スキルに差し戻して仕様を補完 |
| 評価基準が不明 | 情報不足 | 仮の評価基準を設定し、40_decision_log/ に記録 |
| 章間矛盾が多すぎる | 複数人が独立に執筆 | 章横断レビュー会議を実施し、用語統一から開始 |
| 技術仕様とドキュメントの乖離 | 仕様更新後の反映漏れ | トレーサビリティマトリクスで差分を特定 |
| テストカバレッジが低い | テスト工数不足 | ビジネスルール起点でテストケースを優先生成 |
| レビューが表面的すぎる | 挑戦的レビューの不足 | Step 4 を適用。Scrap this で根本的な改善を促す |
| PR レビューで見落としが多い | diff の振る舞い変化を見ていない | git diff main...HEAD でセマンティック差分を検証 |
| レビュー結果に定量的根拠がない | 主観的な指摘のみ | カバレッジ%・行数・複雑度等の定量メトリクスを添える |
| レビュー範囲が広すぎて時間不足 | スコープ未定義 | レビュー前にスコープを合意。Critical/Major に絞った段階的レビュー |
| 承認後に欠陥が発見された | レビュー基準の漏れ | 40_decision_log/ に根因を記録し、チェック項目を追加 |
| 指摘の優先度判断に迷う | 影響度の見積もり困難 | 「ユーザーへの影響 × 発生頻度」のマトリクスで判断 |
| ファイル | 用途 |
|---|---|
| technical-review-examples.md | 詳細なコード例・指摘パターン・レポートテンプレート |
| review-type-checklists.md | レビュー種別ごとの専用チェックリスト(コード・ドキュメント・アーキテクチャ・提案書) |
| severity-classification.md | 重要度分類ガイド(判断マトリクス・インフレ防止・構造化出力との対応) |
project/00_schemas/REVIEW_RESULT_TEMPLATE.md | レビュー結果記録テンプレート |
レビュー結果を 40_decision_log/ に蓄積するための JSON 出力形式を定義する。
{
"review_id": "REV-YYYY-MM-DD-NNN",
"date": "YYYY-MM-DD",
"target": {
"file": "path/to/file",
"type": "document | code | design | proposal"
},
"reviewer": "Claude Opus 4.6",
"summary": {
"overall_score": "S | A | B | C | D",
"critical_count": 0,
"major_count": 0,
"minor_count": 0,
"suggestion_count": 0
},
"findings": [
{
"id": "F-001",
"severity": "critical | major | minor | suggestion",
"category": "A-1 | A-2 | A-3 | A-4 | B-1 | B-2 | B-3 | B-4 | B-5 | B-6 | B-7",
"location": "section or line reference",
"finding": "description of the issue",
"recommendation": "suggested fix",
"resolved": false
}
],
"metrics": {
"coverage": 0.0,
"consistency": 0.0,
"accuracy": 0.0,
"readability": 0.0
}
}
レビュー完了後、以下のファイルに保存する:
40_decision_log/REV-YYYY-MM-DD-NNN.jsonREV- + 日付 + - + 連番(001〜999)このスキルの出力品質を検証し、AI Decay(品質劣化)を防止するためのアンチパターン検出リスト。各項目は品質劣化パターンの検出条件を定義し、不合格時は対応する対策(修正ガイドライン)に従って改善する。
| スキル | 関係 | 連携内容 |
|---|---|---|
| distill | 前工程 | レビュー結果により仕様の修正を依頼 |
| data-validation | 補助 | テーブルデータの整合性チェック |
| pdf-convert | 間接 | inbox 資料の原本参照 |
| test | 連携 | テストカバレッジの検証、テスト設計の改善提案 |
| ai-agents | 連携(設計レビュー) | エージェント設計書の品質をクリティカルレビューで検証 |
| agent-ops | 姉妹(品質観点) | agent-ops は LLM 出力の継続的品質評価、review は成果物の一回性レビュー |
| software-architecture | 連携(設計レビュー) | アーキテクチャ推奨レポート・ADR のクリティカルレビュー |
| flow-architecture | 連携(設計レビュー) | Canvas・Wardley Map・BC 設計・チーム編成のレビュー |
| decision-framework | 連携(判断レビュー) | ADR・トレードオフ分析・リスク評価の品質検証。Decision の Why の十分性を確認 |