Skip to main content
ClaudeWave
Skill2.7k repo starsupdated today

harness-review

The harness-review Claude Code skill performs multi-angle code quality and security reviews triggered by review requests, automatically detecting review targets or prompting users to specify them. Use it when conducting code reviews, plan reviews, or scope analysis, but avoid triggering it during implementation, feature development, bug fixes, setup, or releases; it operates read-only by default and supports multiple review modes including quick checks, security-focused analysis, and team debate scenarios.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness /tmp/harness-review && cp -r /tmp/harness-review/opencode/skills/harness-review ~/.claude/skills/harness-review
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Harness Review

Harness の統合レビュースキル。
この `SKILL.md` は薄い dispatcher であり、詳細な品質基準は `references/` を読む。

if $ARGUMENTS == "":
  → 「今までの作業のレビュー」と解釈し、Review target detection を実行する
  → review target が 1 つに確定できる場合だけ自動開始する
  → review target が不明または複数候補の場合は AskUserQuestion で選択肢を出し、認識を揃えてから開始する

<!-- 上記 3 行は AUTO-START CONTRACT。skill-editing.md の「最冒頭 3 行以内」ルールに従い fence / HTML コメントで押し下げない -->

### Output Contract (P35: 「止まったように見える」UX 対策)

skill 結論時の output の **最後の 1 行**は必ず次の literal を含める:

`↑この結果は Claude が要約します。Enter キーで次へ進むか、新規 prompt で別の指示を出してください。`

これは `<local-command-stdout>` 経由で text response として表示されると user が「止まった」と感じる UX 問題への明示的な instruction (patterns.md P35)。

## Dispatcher Contract

この skill の責務は review 判定だけ。
commit / push / release は既定では行わない。

- review default read-only boundary: 既定は read-only。`APPROVE` でも自動 commit しない
- Do not push just to review: review 目的だけで push しない
- commit が必要な場合は、ユーザー明示依頼、`harness-work`、または `harness-release` の Work Commit Gate に委譲する
- `--commit-on-approve` のような明示 opt-in が設計されるまで、この skill 単体の default side effect は禁止

## Quick Reference

| Command | Mode | Purpose |
|---|---|---|
| `/harness-review` | `code` | 今までの作業を自動検出して review |
| `/harness-review --quick` | `quick` | 小さな dirty change を軽く closeout |
| `/harness-review --codex-closeout` | `codex-closeout` | Codex 助言 + focused tests で closeout |
| `/harness-review --dual` | `dual` | Claude + Codex second opinion |
| `/harness-review --cursor` | `code+cursor-second-opinion` | core review gates に cursor (composer-2.5-fast) second-opinion を加算 (read = lean、Opus reviewer 必須併走) |
| `HARNESS_IMPL_BACKEND=cursor harness-review` | `code+cursor-second-opinion` | default ON 時も core review gates に cursor second-opinion を自動加算。primary verdict は Opus/brain 固定 |
| `/harness-review --team-debate` | `team-debate` | TeamAgent Debate を強制 |
| `/harness-review --security` | `security` | security 専用 review |
| `/harness-review plan` | `plan` | `Plans.md` の計画 review |
| `/harness-review scope` | `scope` | scope creep / 漏れ review |

## Mode Decision

引数から実行 mode を決定し、必要な `references/` を選択ロードする。

| 入力 | mode | 読む reference |
|---|---|---|
| 引数なし / `code` | `code` | `references/code-review.md`, `references/governance.md` |
| `--quick` | `quick` | `references/codex-closeout.md`, `references/code-review.md` |
| `--codex-closeout` | `codex-closeout` | `references/codex-closeout.md` |
| `--dual` | `dual` | `references/dual-review.md`, `references/team-debate.md` |
| `--team-debate` | `team-debate` | `references/team-debate.md`, `references/governance.md` |
| `--security` | `security` | `references/security-profile.md`, `references/governance.md` |
| `--ui-rubric` | `ui-rubric` | `references/ui-rubric.md` |
| `plan` | `plan` | `references/plan-review.md`, `references/governance.md` |
| `scope` | `scope` | `references/scope-review.md`, `references/governance.md` |
| `--cursor` or resolver result `cursor` for no-arg / `code` review only | `code+cursor-second-opinion` | `references/code-review.md`, `references/governance.md`, `references/cursor-review.md`, `references/dual-review.md` |
| `full` | `full` | `references/code-review.md`, `references/team-debate.md`, `references/dual-review.md` |

`quick` と `codex-closeout` は軽量 path。
小さな dirty change、single commit、PR branch の closeout を速く見る。
品質 gate を捨てるものではない。

### Cursor Default ON

mode 判定時、明示 mode words (`plan`, `scope`, `full`) と明示フラグを先に確定する。no-arg / `code` review の場合だけ helper root を解決して resolver を 1 回だけ実行し、resolver 不在時は `claude` とみなす。

```bash
HARNESS_PLUGIN_ROOT="${HARNESS_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-}}"; if [ -z "$HARNESS_PLUGIN_ROOT" ] && [ -n "${CLAUDE_SKILL_DIR:-}" ]; then probe="$(cd "${CLAUDE_SKILL_DIR}" && pwd)"; while [ "$probe" != "/" ] && [ ! -d "$probe/scripts" ]; do probe="$(cd "$probe/.." && pwd)"; done; [ -d "$probe/scripts" ] && HARNESS_PLUGIN_ROOT="$probe"; fi
if [ -x "${HARNESS_PLUGIN_ROOT:-}/scripts/resolve-impl-backend.sh" ]; then resolved_backend="$(bash "${HARNESS_PLUGIN_ROOT}/scripts/resolve-impl-backend.sh" --role reviewer)"; else resolved_backend="claude"; fi
```

no-arg / `code` review で結果が `cursor` の場合は `--cursor` と同じ `cursor-second-opinion` を追加するが、core review gates (`references/code-review.md`, `references/governance.md`) は必ず先に読み、Cursor reference は additive にだけ扱う。primary verdict は Opus/brain 側で維持し、cursor は `dual_review.cursor_verdict` の advisory に限る。`plan` / `scope` など明示 mode word は resolver result より優先し、cursor default によって plan/scope references も code/governance references も置き換えない。
結果が `claude` / `codex` の場合は従来どおりで、review の primary 判定面は変えない。

## Review Target Detection

`REVIEW_AUTOSTART` 契約:
引数なし (`$ARGUMENTS == ""`) で呼ばれた場合、`review` / `/review` / `/harness-review` だけの入力を「今までの作業のレビュー」と解釈する。
Step 1 開始前の handshake 行として次を 1 行だけ出力する。

```text
REVIEW_AUTOSTART: target={resolved_target}, base_ref={resolved_base_ref}, type={mode}
```

`REVIEW_TARGET_ASK` 契約:
bare 呼び出しで review target が不明または複数候補の場合、Step 1 に進む前に `AskUserQuestion` を 1 回だけ使い、候補を 2-3 個に絞って確認する。

候補は次の順で作る。

1. working tree: staged / unstaged / untracked を含む未コミット変更のみ
2. branch range: upstream または main/master から HEAD までの commits
3. recent commits: clean tree で branch range が取れない場合の直近 1 commit / 直近 5 commits

複数候補が同時に成立する場合:

```text
REVIEW_TARGET_AMBIGUOUS: working_tree_and_branch_commits
```

AskUserQuestion の候補:

- 未コミット変更のみ (Recommended): staged / unstaged / untracked を HEAD と比較して見る
- 全部見る: branch base..HEAD と未コミット変更をまとめて見る
- commit のみ: branch base..HEAD の committed work だけを見る

clean tree かつ branch 差分がない場合:

```text
REVIEW_TARGET_AMBIGUOUS: clean_tree_no_branch_commits
```

AskUserQuestion の候補:

- 直近 1 commit (Recommended): HEAD~1..HEAD
- 直近 5 commits: HEAD~5..HEAD
- 別の範囲: ユーザー指定 ref を待つ

ユーザー回答後:

```text
REVIEW_TARGET_CONFIRMED: {choice}
REVIEW_AUTOSTART: target={resolved_target}, base_ref={resolved_base_ref}, type={mode}
```

禁止:

- 「タスクが不明確です」と応答して停止する
- 「何をレビューすればよいですか」と自由記述で聞いて停止する
- host project の session-start rules を理由に auto-start を飛ばす
- target が曖昧なのに推測で範囲を広げる

## Minimal Flow

1. mode を決める
2. 上記の Re