# Diff Review

> 作業ブランチの diff を複数観点(レンズ)で並列レビューするオーケストレーションスキル。「レビューして」「diff をレビュー」「〇〇観点で見て」などユーザーが明示的にコードレビューを依頼したときに必ず使用する。決定論スクリプトで差分を収集し、レンズごとに diff-reviewer サブエージェントを並列起動して結果を統合報告する。コードの修正は行わない。

- **Type:** Skill
- **Install:** `agentstack add skill-yasunori0418-skills-diff-review`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [yasunori0418](https://agentstack.voostack.com/s/yasunori0418)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [yasunori0418](https://github.com/yasunori0418)
- **Source:** https://github.com/yasunori0418/skills/tree/main/skills/git/diff-review

## Install

```sh
agentstack add skill-yasunori0418-skills-diff-review
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# diff-review: 並列多観点 diff レビュー

フローは 3 段階: **1. 差分収集(決定論)→ 2. レンズごとに diff-reviewer agent を並列起動 → 3. 統合報告**。
レビューは読み取り専用。修正・コミットはこのスキルの範囲外で、ユーザーの指示があってから別途行う。

## 1. 差分収集

以下、`` はこのスキルの base directory(スキル起動時に表示される絶対パス)を指す。
agent への prompt に埋め込むときは必ず実際の絶対パスに展開する(`` のまま渡さない)。

`/scripts/collect-diff.sh manifest []` を実行する。

- 出力: レビュー範囲(base / head の sha)・コミット一覧と統計・未コミット変更・未追跡ファイル・除外ファイル(lockfile 等は統計のみ)。総変更が小さければ全文 diff も同梱される
- `NO_CHANGES` が返ったら「レビュー対象の変更がない」と報告して終了する
- ユーザーがコミット範囲・ファイル等を指定した場合は base-ref 引数で範囲を合わせる

### GROUND_TRUTH 節(あるときだけ現れる)

リポジトリに仕様・基本設計・テストケース(`docs/dev//spec.md` 等)またはタスク境界ファイル
(`.claude/task-boundary.json`)があると、manifest に `== GROUND_TRUTH ==` 節が追記される。
無いリポジトリでは節ごと出ず、以降の分岐もすべて発火しない(従来動作)。

節の有無で次段の振る舞いが変わる:

| 節の内容 | 影響 |
| --- | --- |
| 節がある(仕様・テストケースのパス一覧) | 全レンズの prompt に**共通ガード**を追加する / `spec` レンズを既定に昇格する |
| 節にタスク境界ファイルの内容がある | 各指摘に**スコープ分類**(境界内 / 境界外)を付けさせる |
| 節が無い | すべて従来どおり(共通ガードなし・既定レンズは design / test・全指摘を境界内として扱う) |

manifest はメインセッションで **1 回だけ**実行し、出力を次段で各 agent の prompt にそのまま注入する(agent 側に再収集させない)。メインセッションで精読・分析はしない。

## 2. レンズ決定と並列起動

### レンズ registry

- **既定**(無指定時に適用): `design`(設計・可読性)/ `test`(テスト設計・網羅性)
- **条件付き既定**: `spec`(仕様適合・あるべき変更の欠落)— manifest に GROUND_TRUTH 節があるときのみ既定に昇格する。節が無ければオプション扱い(明示指定時のみ)
- **オプション**(指定時のみ適用): `security`(セキュリティ / OWASP Top 10)/ `docs`(ドキュメント整合)/ `performance`(計算量・N+1・データサイズ)/ `compat`(互換性・移行安全)/ `ops`(可観測性・運用)/ `concurrency`(並行性)
- キーワード対応: 「設計」「可読性」→ `design`、「テスト」→ `test`、「仕様」「要求」「REQ」→ `spec`、「セキュリティ」「security」→ `security`、「ドキュメント」「docs」→ `docs`、「パフォーマンス」「性能」→ `performance`、「互換」「マイグレーション」「移行」→ `compat`、「運用」「ログ」「可観測性」→ `ops`、「並行」「排他」「race」→ `concurrency`

適用ルール:

- **追加指定**(例: 「〇〇観点も見て」): 既定レンズに**加えて**指定レンズを適用する
- **絞り込み指定**(例: 「〇〇だけ」「〇〇のみで」): 指定レンズだけを適用する。この場合 `spec` の昇格も行わない(ユーザーの明示指定が優先)
- registry に無い観点を指定されたら、その観点名で agent を 1 体起動し一般知識でレビューさせる

### 並列起動

適用レンズ 1 つにつき diff-reviewer agent を 1 体、**1 メッセージ内で同時に起動**する(直列にしない)。各 agent の prompt には必ず以下を含める:

```
レンズ: 
基準ファイル: /references/.md(レビュー開始前に Read すること)
ユーザーの依頼: 

以下は収集済みの差分 manifest。manifest の再実行はしない。全文 diff が必要な単位のみ
/scripts/collect-diff.sh の commit / worktree / cumulative で取得する:

```

manifest を全 agent に同一内容で渡すことで、レビュー範囲のスナップショットを固定する。

### GROUND_TRUTH 節があるときの追記(全レンズ共通)

manifest に `== GROUND_TRUTH ==` 節があるときに限り、**全レンズ**の prompt に次のブロックを追記する
(節が無いときは一切追記しない):

```
共通ガード(グラウンドトゥルース検出時):
- 仕様・テストケースに根拠のある実装を「過剰・不要」と指摘しない
- 削除・簡略化を提案する場合は、manifest の GROUND_TRUTH 節に挙がった spec.md / basic-design.md /
  test-case.md を確認し、REQ-# / CASE-# に抵触しないことを確かめてから指摘する
- 確認できない場合は指摘を出さないか [PLAUSIBLE] を付けて残す
```

節にタスク境界ファイル(`.claude/task-boundary.json`)の内容が含まれているときは、さらに次を追記する:

```
スコープ分類(タスク境界ファイル検出時):
各指摘に「タスク境界内」「境界外」の分類を付ける。判定は境界ファイルの allow glob と
指摘対象のファイルパスの照合による。allow に一致すれば境界内、一致しなければ境界外
(別タスク・別 PR で対応すべき指摘)。境界外の指摘は消さずに分類だけ付けて報告する。
```

境界ファイルが無ければこの追記はせず、全指摘を境界内として扱う(従来動作)。

## 3. 統合報告

全 agent の完了後、報告を 1 つに統合し、diff-reviewer の報告形式(must / want+ / want / nit の severity 順)で出力する:

- 冒頭に「対象:  / レンズ: 」を明記する
- 同一 `ファイルパス:行番号` に複数レンズの指摘が重なったら 1 件に統合する。severity は最も重いものを採用し、レンズタグを併記する(例: `[design][security]`)
- `[PLAUSIBLE]` マークは統合後も維持する
- 全レンズで指摘ゼロなら「指摘なし」と明言する。褒め言葉・社交辞令は書かない

タスク境界ファイルが manifest にあった場合、統合報告を**スコープで二分**する:

- 「タスク境界内」節に境界内の指摘を severity 順で並べる(この節が主たる修正対象)
- 「境界外(別タスク・別 PR で対応)」節に境界外の指摘を並べ、各件に境界外と判定した理由
  (どの allow glob にも一致しないパスであること)を 1 文で添える
- 分類が agent 間で割れた指摘は境界内側に寄せる(見落としを避ける)

境界ファイルが無ければ二分せず、従来どおり severity 順の 1 本の並びで報告する。

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [yasunori0418](https://github.com/yasunori0418)
- **Source:** [yasunori0418/skills](https://github.com/yasunori0418/skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-yasunori0418-skills-diff-review
- Seller: https://agentstack.voostack.com/s/yasunori0418
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
