Harness Review (v3)
Harness v3 の統合レビュースキル。
以下の旧スキルを統合:
harness-review — コード・プラン・スコープ多角的レビュー
codex-review — Codex CLI によるセカンドオピニオン
verify — ビルド検証・エラー復旧・レビュー修正適用
troubleshoot — エラー・障害の診断と修復
Quick Reference
| ユーザー入力 |
サブコマンド |
動作 |
| "レビューして" / "review" |
code(自動) |
コードレビュー(直近の変更) |
"harness-plan 実行後" |
plan(自動) |
計画レビュー |
| "スコープ確認" |
scope(自動) |
スコープ分析 |
harness-review code |
code |
コードレビュー強制 |
harness-review plan |
plan |
計画レビュー強制 |
harness-review scope |
scope |
スコープ分析強制 |
レビュータイプ自動判定
| 直前のアクティビティ |
レビュータイプ |
観点 |
harness-work 後 |
Code Review |
Security, Performance, Quality, Accessibility, AI Residuals |
harness-plan 後 |
Plan Review |
Clarity, Feasibility, Dependencies, Acceptance |
| タスク追加後 |
Scope Review |
Scope-creep, Priority, Feasibility, Impact |
Code Review フロー
Step 1: 変更差分を収集
# BASE_REF が harness-work から渡された場合はそれを使用、なければ HEAD~1 にフォールバック
CHANGED_FILES="$(git diff --name-only --diff-filter=ACMR "${BASE_REF:-HEAD~1}")"
git diff ${BASE_REF:-HEAD~1} --stat
git diff ${BASE_REF:-HEAD~1} -- ${CHANGED_FILES}
Step 1.5: AI Residuals を静的走査
LLM の印象だけで判定せず、再実行できる形で残骸候補を拾う。scripts/review-ai-residuals.sh は stable な JSON を返すので、その結果をレビュー根拠として使う。
# 差分ベース
AI_RESIDUALS_JSON="$(bash scripts/review-ai-residuals.sh --base-ref "${BASE_REF:-HEAD~1}")"
# 対象ファイルを明示したい場合
bash scripts/review-ai-residuals.sh path/to/file.ts path/to/config.sh
Step 2: 5観点でレビュー
| 観点 |
チェック内容 |
| Security |
SQLインジェクション, XSS, 機密情報露出, 入力バリデーション |
| Performance |
N+1クエリ, 不要な再レンダリング, メモリリーク |
| Quality |
命名, 単一責任, テストカバレッジ, エラーハンドリング |
| Accessibility |
ARIA属性, キーボードナビ, カラーコントラスト |
| AI Residuals |
mockData, dummy, fake, localhost, TODO, FIXME, it.skip, describe.skip, test.skip, ハードコードされた秘密情報/環境依存 URL, 明らかな仮実装コメント |
Step 2.2: AI Residuals の severity 判定表
AI Residuals は、まず scripts/review-ai-residuals.sh の JSON を確認し、その後に diff 文脈で「本当に出荷リスクか」を最終判断する。
| 重要度 |
代表例 |
判定の考え方 |
| major |
localhost / 127.0.0.1 / 0.0.0.0 の接続先、it.skip / describe.skip / test.skip、ハードコードされた秘密情報っぽい値、dev/staging 固定 URL |
本番事故、誤設定、検証抜けに直結しやすい。1 件でも REQUEST_CHANGES |
| minor |
mockData, dummy, fakeData, TODO, FIXME |
残骸の可能性は高いが、即事故とは限らない。修正推奨だが verdict は変えない |
| recommendation |
temporary implementation, replace later, placeholder implementation のような仮実装コメント |
コメント単体では即バグ断定できないが、追跡・明確化を促したい |
Step 2.5: 閾値基準による verdict 判定
各指摘を以下の重要度に分類し、この基準のみで verdict を決定する。
| 重要度 |
定義 |
verdict への影響 |
| critical |
セキュリティ脆弱性、データ損失リスク、本番障害の可能性 |
1 件でも → REQUEST_CHANGES |
| major |
既存機能の破壊、仕様との明確な矛盾、テスト不通過 |
1 件でも → REQUEST_CHANGES |
| minor |
命名改善、コメント不足、スタイル不統一 |
verdict に影響しない |
| recommendation |
ベストプラクティス提案、将来の改善案 |
verdict に影響しない |
重要: minor / recommendation のみの場合は 必ず APPROVE を返すこと。
「あったほうが良い改善」は REQUEST_CHANGES の理由にならない。
AI Residuals でも同じ。major に入るのは「出荷事故や誤設定に直結しやすいもの」だけで、単なる残骸候補は minor または recommendation に留める。
Step 3: レビュー結果出力
{
"verdict": "APPROVE | REQUEST_CHANGES",
"critical_issues": [],
"major_issues": [],
"observations": [
{
"severity": "critical | major | minor | recommendation",
"category": "Security | Performance | Quality | Accessibility | AI Residuals",
"location": "ファイル名:行番号",
"issue": "問題の説明",
"suggestion": "修正案"
}
],
"recommendations": ["必須ではない改善提案"]
}
Step 4: コミット判定
- APPROVE: 自動コミット実行(
--no-commit でなければ)
- REQUEST_CHANGES: critical/major の指摘箇所と修正方針を提示。
harness-work の修正ループで自動修正後に再レビュー(最大 3 回)
Plan Review フロー
- Plans.md を読み込む
- 以下の 5 観点 でレビュー:
- Clarity: タスク説明が明確か
- Feasibility: 技術的に実現可能か
- Dependencies: タスク間の依存関係が正しいか(Depends カラムと実際の依存が一致しているか)
- Acceptance: 完了条件(DoD カラム)が定義され、検証可能か
- Value: このタスクはユーザー課題を解くか?
- 「誰の、どんな問題」が明示されているか
- 代替手段(作らない選択肢)は検討されたか
- Elephant(全員気づいているが放置されている問題)はないか
- DoD / Depends カラムの品質チェック:
- DoD が空欄のタスク → 警告(「完了条件が未定義です」)
- DoD が検証不能(「いい感じ」「ちゃんと動く」等) → 警告 + 具体化提案
- Depends に存在しないタスク番号 → エラー
- 循環依存 → エラー
- 改善提案を提示
Scope Review フロー
- 追加されたタスク/機能をリスト化
- 以下の観点で分析:
- Scope-creep: 当初スコープからの逸脱
- Priority: 優先度は適切か
- Feasibility: 現在のリソースで実現可能か
- Impact: 既存機能への影響
- リスクと推奨アクションを提示
異常検知
| 状況 |
アクション |
| セキュリティ脆弱性 |
即座に REQUEST_CHANGES |
| テスト改ざん疑い |
警告 + 修正要求 |
| force push 試み |
拒否 + 代替案提示 |
Codex Environment
Codex CLI 環境(CODEX_CLI=1)では一部ツールが利用不可のため、以下のフォールバックを使用する。
| 通常環境 |
Codex フォールバック |
TaskList でタスク一覧取得 |
Plans.md を Read して WIP/TODO タスクを確認 |
TaskUpdate でステータス更新 |
Plans.md のマーカーを Edit で直接更新(例: cc:WIP → cc:完了) |
| レビュー結果を Task に書き込み |
レビュー結果を stdout に出力 |
検出方法
if [ "${CODEX_CLI:-}" = "1" ]; then
# Codex 環境: Plans.md ベースのフォールバック
fi
Codex 環境でのレビュー出力
Task ツール非対応のため、レビュー結果は標準出力にマークダウン形式で出力する。
Lead エージェントまたはユーザーが結果を読み取り、次のアクションを判断する。
関連スキル
harness-work — レビュー後に修正を実装
harness-plan — 計画を作成・修正
harness-release — レビュー通過後にリリース
1---2name: harness-review3description: Harness v3 統合レビュースキル。コード・プラン・スコープを多角的にレビュー。以下で起動: レビュー、コードレビュー、プランレビュー、スコープ分析、セキュリティ、品質チェック、harness-review。実装・新機能・バグ修正・セットアップ・リリースには使わない。4---56# Harness Review (v3)78Harness v3 の統合レビュースキル。9以下の旧スキルを統合:1011- `harness-review` — コード・プラン・スコープ多角的レビュー12- `codex-review` — Codex CLI によるセカンドオピニオン13- `verify` — ビルド検証・エラー復旧・レビュー修正適用14- `troubleshoot` — エラー・障害の診断と修復1516## Quick Reference1718| ユーザー入力 | サブコマンド | 動作 |19|------------|------------|------|20| "レビューして" / "review" | `code`(自動) | コードレビュー(直近の変更) |21| "`harness-plan` 実行後" | `plan`(自動) | 計画レビュー |22| "スコープ確認" | `scope`(自動) | スコープ分析 |23| `harness-review code` | `code` | コードレビュー強制 |24| `harness-review plan` | `plan` | 計画レビュー強制 |25| `harness-review scope` | `scope` | スコープ分析強制 |2627## レビュータイプ自動判定2829| 直前のアクティビティ | レビュータイプ | 観点 |30|--------------------|--------------|------|31| `harness-work` 後 | **Code Review** | Security, Performance, Quality, Accessibility, AI Residuals |32| `harness-plan` 後 | **Plan Review** | Clarity, Feasibility, Dependencies, Acceptance |33| タスク追加後 | **Scope Review** | Scope-creep, Priority, Feasibility, Impact |3435## Code Review フロー3637### Step 1: 変更差分を収集3839```bash40# BASE_REF が harness-work から渡された場合はそれを使用、なければ HEAD~1 にフォールバック41CHANGED_FILES="$(git diff --name-only --diff-filter=ACMR "${BASE_REF:-HEAD~1}")"42git diff ${BASE_REF:-HEAD~1} --stat43git diff ${BASE_REF:-HEAD~1} -- ${CHANGED_FILES}44```4546### Step 1.5: AI Residuals を静的走査4748LLM の印象だけで判定せず、再実行できる形で残骸候補を拾う。`scripts/review-ai-residuals.sh` は stable な JSON を返すので、その結果をレビュー根拠として使う。4950```bash51# 差分ベース52AI_RESIDUALS_JSON="$(bash scripts/review-ai-residuals.sh --base-ref "${BASE_REF:-HEAD~1}")"5354# 対象ファイルを明示したい場合55bash scripts/review-ai-residuals.sh path/to/file.ts path/to/config.sh56```5758### Step 2: 5観点でレビュー5960| 観点 | チェック内容 |61|------|------------|62| **Security** | SQLインジェクション, XSS, 機密情報露出, 入力バリデーション |63| **Performance** | N+1クエリ, 不要な再レンダリング, メモリリーク |64| **Quality** | 命名, 単一責任, テストカバレッジ, エラーハンドリング |65| **Accessibility** | ARIA属性, キーボードナビ, カラーコントラスト |66| **AI Residuals** | `mockData`, `dummy`, `fake`, `localhost`, `TODO`, `FIXME`, `it.skip`, `describe.skip`, `test.skip`, ハードコードされた秘密情報/環境依存 URL, 明らかな仮実装コメント |6768### Step 2.2: AI Residuals の severity 判定表6970`AI Residuals` は、まず `scripts/review-ai-residuals.sh` の JSON を確認し、その後に diff 文脈で「本当に出荷リスクか」を最終判断する。7172| 重要度 | 代表例 | 判定の考え方 |73|--------|--------|-------------|74| **major** | `localhost` / `127.0.0.1` / `0.0.0.0` の接続先、`it.skip` / `describe.skip` / `test.skip`、ハードコードされた秘密情報っぽい値、dev/staging 固定 URL | 本番事故、誤設定、検証抜けに直結しやすい。1 件でも `REQUEST_CHANGES` |75| **minor** | `mockData`, `dummy`, `fakeData`, `TODO`, `FIXME` | 残骸の可能性は高いが、即事故とは限らない。修正推奨だが verdict は変えない |76| **recommendation** | `temporary implementation`, `replace later`, `placeholder implementation` のような仮実装コメント | コメント単体では即バグ断定できないが、追跡・明確化を促したい |7778### Step 2.5: 閾値基準による verdict 判定7980各指摘を以下の重要度に分類し、**この基準のみ**で verdict を決定する。8182| 重要度 | 定義 | verdict への影響 |83|--------|------|-----------------|84| **critical** | セキュリティ脆弱性、データ損失リスク、本番障害の可能性 | 1 件でも → REQUEST_CHANGES |85| **major** | 既存機能の破壊、仕様との明確な矛盾、テスト不通過 | 1 件でも → REQUEST_CHANGES |86| **minor** | 命名改善、コメント不足、スタイル不統一 | verdict に影響しない |87| **recommendation** | ベストプラクティス提案、将来の改善案 | verdict に影響しない |8889> **重要**: minor / recommendation のみの場合は **必ず APPROVE** を返すこと。90> 「あったほうが良い改善」は REQUEST_CHANGES の理由にならない。91> `AI Residuals` でも同じ。`major` に入るのは「出荷事故や誤設定に直結しやすいもの」だけで、単なる残骸候補は `minor` または `recommendation` に留める。9293### Step 3: レビュー結果出力9495```json96{97 "verdict": "APPROVE | REQUEST_CHANGES",98 "critical_issues": [],99 "major_issues": [],100 "observations": [101 {102 "severity": "critical | major | minor | recommendation",103 "category": "Security | Performance | Quality | Accessibility | AI Residuals",104 "location": "ファイル名:行番号",105 "issue": "問題の説明",106 "suggestion": "修正案"107 }108 ],109 "recommendations": ["必須ではない改善提案"]110}111```112113### Step 4: コミット判定114115- **APPROVE**: 自動コミット実行(`--no-commit` でなければ)116- **REQUEST_CHANGES**: critical/major の指摘箇所と修正方針を提示。`harness-work` の修正ループで自動修正後に再レビュー(最大 3 回)117118## Plan Review フロー1191201. Plans.md を読み込む1212. 以下の **5 観点** でレビュー:122 - **Clarity**: タスク説明が明確か123 - **Feasibility**: 技術的に実現可能か124 - **Dependencies**: タスク間の依存関係が正しいか(Depends カラムと実際の依存が一致しているか)125 - **Acceptance**: 完了条件(DoD カラム)が定義され、検証可能か126 - **Value**: このタスクはユーザー課題を解くか?127 - 「誰の、どんな問題」が明示されているか128 - 代替手段(作らない選択肢)は検討されたか129 - Elephant(全員気づいているが放置されている問題)はないか1303. DoD / Depends カラムの品質チェック:131 - DoD が空欄のタスク → 警告(「完了条件が未定義です」)132 - DoD が検証不能(「いい感じ」「ちゃんと動く」等) → 警告 + 具体化提案133 - Depends に存在しないタスク番号 → エラー134 - 循環依存 → エラー1354. 改善提案を提示136137## Scope Review フロー1381391. 追加されたタスク/機能をリスト化1402. 以下の観点で分析:141 - **Scope-creep**: 当初スコープからの逸脱142 - **Priority**: 優先度は適切か143 - **Feasibility**: 現在のリソースで実現可能か144 - **Impact**: 既存機能への影響1453. リスクと推奨アクションを提示146147## 異常検知148149| 状況 | アクション |150|------|----------|151| セキュリティ脆弱性 | 即座に REQUEST_CHANGES |152| テスト改ざん疑い | 警告 + 修正要求 |153| force push 試み | 拒否 + 代替案提示 |154155## Codex Environment156157Codex CLI 環境(`CODEX_CLI=1`)では一部ツールが利用不可のため、以下のフォールバックを使用する。158159| 通常環境 | Codex フォールバック |160|---------|-------------------|161| `TaskList` でタスク一覧取得 | Plans.md を `Read` して WIP/TODO タスクを確認 |162| `TaskUpdate` でステータス更新 | Plans.md のマーカーを `Edit` で直接更新(例: `cc:WIP` → `cc:完了`) |163| レビュー結果を Task に書き込み | レビュー結果を stdout に出力 |164165### 検出方法166167```bash168if [ "${CODEX_CLI:-}" = "1" ]; then169 # Codex 環境: Plans.md ベースのフォールバック170fi171```172173### Codex 環境でのレビュー出力174175Task ツール非対応のため、レビュー結果は標準出力にマークダウン形式で出力する。176Lead エージェントまたはユーザーが結果を読み取り、次のアクションを判断する。177178## 関連スキル179180- `harness-work` — レビュー後に修正を実装181- `harness-plan` — 計画を作成・修正182- `harness-release` — レビュー通過後にリリース