# Shiiman Common:review

> ローカル変更（未コミット/ステージ済み）を Claude + Codex + security + simplify の 4 観点で並列レビューし統合結果を表示。「ローカルレビュー」「変更をレビュー」「コミット前レビュー」「手元の変更をチェック」「review」などで起動。GitHub の PR ではなく作業中の変更が対象。

- Skill: `shiiman/shiiman-common-review` (Agent Skill)
- Install (CLI): `npx skillmds@latest add shiiman/shiiman-common-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/shiiman/shiiman-common-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: shiiman (https://skillmd.com/u/shiiman)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/shiiman/shiiman-common-review

---


# Review

ローカル変更を Claude + Codex + セキュリティ + Simplify の 4 観点で並列レビューし、統合結果を表示します。

## Help

`$ARGUMENTS` に `--help` が含まれる場合、以下を表示して終了:

```text
/shiiman-common:review - 統合レビュー

概要:
  ローカル変更を 4 つの観点（コード品質・セキュリティ・Codex・Simplify）で
  並列レビューし、統合結果を表示します。

使用方法:
  /shiiman-common:review [オプション]

オプション:
  --help    このヘルプを表示

例:
  /shiiman-common:review              # ローカル変更をレビュー
```

## ワークフロー

### 1. 変更差分の取得

Bash ツールで以下を**並列実行**して変更差分を取得:

- `git diff` — ステージされていない変更
- `git diff --cached` — ステージ済み変更

両方とも空の場合は以下を表示して**終了**:

```
レビュー対象の変更がありません。
変更をステージするか、ファイルを編集してから再実行してください。
```

### 2. 4 エージェント並列レビュー

Task ツールで以下の 4 エージェントを**並列起動**する。
2-1 と 2-3 には取得した diff の全文をプロンプトに含める。
2-2 と 2-4 はビルトインスキルを実行するため、diff の受け渡しは不要。

#### 2-1. Claude 品質レビュー（subagent_type: general-purpose）

8 つの観点で並列レビューを実行し、結果を統合して返す。

プロンプト:

```
以下の diff を 8 つの観点で並列レビューしてください。

Task ツールで以下の 8 エージェントを**並列起動**してください。
各エージェントは subagent_type: general-purpose で起動してください。
各エージェントに diff 全文を渡してください。

diff:
{diff全文}

--- エージェント一覧 ---

【1. コード品質】
以下の diff をコード品質の観点でレビューしてください。
観点: 命名規則の一貫性、コード構造、重複コード（DRY違反）、不要なコード
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

【2. 設計】
以下の diff を設計の観点でレビューしてください。
観点: 責務分離（SRP）、凝集度、結合度、抽象化レベル、依存関係の方向
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

【3. テスト】
以下の diff をテストの観点でレビューしてください。
観点: テスト漏れ、エッジケースの未考慮、テストの信頼性（flaky）、カバレッジ不足
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

【4. 可読性】
以下の diff を可読性の観点でレビューしてください。
観点: コメントの適切さ、フォーマット、循環的複雑度、ネストの深さ、関数の長さ
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

【5. パフォーマンス】
以下の diff をパフォーマンスの観点でレビューしてください。
観点: N+1クエリ、メモリリーク、アルゴリズム計算量（O(n²)等）、不要な再描画・再計算、リソースの未解放
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

【6. エラーハンドリング】
以下の diff をエラーハンドリングの観点でレビューしてください。
観点: 例外処理の漏れ、エラー伝播の不備、リカバリー戦略、入力バリデーション不足、静かな失敗（silent failure）
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

【7. ベストプラクティス】
以下の diff をベストプラクティスの観点でレビューしてください。
観点: 言語固有のイディオム違反、アンチパターン、非推奨APIの使用、モダンな代替手段の提案
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

【8. 保守性】
以下の diff を保守性の観点でレビューしてください。
観点: 循環的複雑度、モジュール間の依存関係、将来の変更容易性、ドキュメントの十分性、技術的負債
結果はマークダウンで、指摘ごとに「ファイル:行番号」を含めてください。
指摘がない場合は「指摘なし」と出力してください。

--- 結果統合 ---

全エージェントの結果を以下のフォーマットで統合して返してください:

#### コード品質
{エージェント1の結果}

#### 設計
{エージェント2の結果}

#### テスト
{エージェント3の結果}

#### 可読性
{エージェント4の結果}

#### パフォーマンス
{エージェント5の結果}

#### エラーハンドリング
{エージェント6の結果}

#### ベストプラクティス
{エージェント7の結果}

#### 保守性
{エージェント8の結果}
```

#### 2-2. セキュリティレビュー（subagent_type: general-purpose）

ビルトイン `/security-review` スキルを利用する。

プロンプト:

```
ビルトイン `/security-review` スキルを実行してください。

手順:
1. ToolSearch ツールで Skill ツールをロード:
   query: "select:Skill"
2. Skill ツールを呼び出し、skillName に "security-review" を指定:
   引数は不要です（スキルが自動で git diff / git status を実行します）。

実行後、スキルの出力結果をそのまま返してください。
スキルが見つからない場合やエラーが発生した場合は、エラーメッセージをそのまま返してください。
```

#### 2-3. Codex レビュー（subagent_type: general-purpose）

`codex review` CLI を直接呼び出す（`CLAUDE_PLUGIN_ROOT` が未設定の環境でも動作するよう Skill 経由ではなく CLI を使用）。

プロンプト:

````
`codex review` CLI を使ってコードレビューを実行してください。

手順:
1. Bash ツールで現在のデフォルトブランチを取得する:
   ```bash
   gh repo view --json defaultBranchRef -q '.defaultBranchRef.name'
````

2. Bash ツールで codex review を実行する（--base にデフォルトブランチを指定）:
   ```bash
   codex review --base <デフォルトブランチ名>
   ```
   タイムアウトは 120000ms（2分）を設定すること。

実行後、コマンドの出力結果をそのまま返してください。
コマンドが見つからない場合やエラーが発生した場合は、エラーメッセージをそのまま返してください。

```

#### 2-4. Simplify レビュー（subagent_type: general-purpose）

ビルトイン `/simplify` スキルを利用する。

プロンプト:

```

ビルトイン `/simplify` スキルを実行してください。

手順:

1. ToolSearch ツールで Skill ツールをロード:
   query: "select:Skill"
2. Skill ツールを呼び出し、skillName に "simplify" を指定:
   引数は不要です（スキルが自動で変更コードを分析します）。

実行後、スキルの出力結果をそのまま返してください。
スキルが見つからない場合やエラーが発生した場合は、エラーメッセージをそのまま返してください。

````

### 3. 統合レポート出力

4 エージェントの結果を以下のフォーマットで統合して出力:

```markdown
## 統合レビュー結果

### 1. コード品質レビュー (Claude) — 8 観点並列

{コード品質 / 設計 / テスト / 可読性 / パフォーマンス / エラーハンドリング / ベストプラクティス / 保守性}

### 2. セキュリティレビュー

{/security-review の出力結果}

### 3. Codex レビュー

{codex review の出力}

### 4. Simplify レビュー

{/simplify の出力結果}

### サマリー

- 重要指摘: {count} 件
- 改善提案: {count} 件
- 総合判定: {OK / 要修正}
````

**カウントルール**:

- 重要指摘: セキュリティリスク「高」 + コード品質の重大な問題
- 改善提案: それ以外の指摘すべて
- 総合判定: 重要指摘が 0 件なら「OK」、1 件以上なら「要修正」

### 3.5. レビュー結果をファイルに保存

統合レポートをコンソール表示した後、`.claude/tmp/` にマークダウンファイルとして保存する。

#### 手順

1. Bash ツールでタイムスタンプとリポジトリ情報を取得:

```bash
TS="$(date +%Y%m%d-%H%M%S)"
DATE="$(date +%Y-%m-%d)"
REPO_NAME="$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")"
BRANCH="$(git branch --show-current 2>/dev/null || echo 'unknown')"
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
mkdir -p "${REPO_ROOT}/.claude/tmp"
echo "${TS}|${DATE}|${REPO_NAME}|${BRANCH}|${REPO_ROOT}"
```

2. Write ツールで `{REPO_ROOT}/.claude/tmp/{TS}-review.md` を作成。以下のテンプレートに沿って、4 エージェントの結果を統合して記述する:

```markdown
# 統合レビューレポート

**実施日**: {DATE}
**対象**: {REPO_NAME}
**ブランチ**: {BRANCH}
**調査カテゴリ**: コード品質 / セキュリティ / Codex / Simplify

---

## 概要

{REPO_NAME} に対し、4つの観点から並列レビューを実施した。
各観点で専門的な分析を行い、検出された問題点を統合して優先度付きのタスクリストとしてまとめた。

| カテゴリ                           | 評価     | 検出数 |
| ---------------------------------- | -------- | ------ |
| 📝 コード品質 (Claude / 8 観点)    | 🟢/🟡/🔴 | N      |
| 🔒 セキュリティ (/security-review) | 🟢/🟡/🔴 | N      |
| 🤖 Codex                           | 🟢/🟡/🔴 | N      |
| 🔧 Simplify (/simplify)            | 🟢/🟡/🔴 | N      |

---

## 結論

**総合評価**: 🟢/🟡/🔴 [1行で総評]

[2-3行で具体的な結論。最も重要な発見と推奨アクションを凝縮]

> [!IMPORTANT]
> {最重要の横断的課題（なければ省略）}

---

## 問題点

{全問題を優先度順（P1→P2→P3）にフラットに一覧。該当なしの場合は「指摘なし」。以下のチェックボックスリスト形式で記述}
```

各問題点は以下のチェックボックスリスト形式で記述（P1 → P2 → P3 の順序で並べる）:

```markdown
- [ ] `{ID}` | {優先度} | {カテゴリアイコン}{カテゴリ名} | {概要}
  <details>
  <summary>詳細</summary>

  **該当箇所**: `{ファイル:行}`

  **詳細**: {問題の詳細説明}

  **修正案**: {具体的な修正案}

  </details>
```

**ID 体系**: `QUAL-NNN`（コード品質 8 観点）/ `SEC-NNN`（セキュリティ）/ `CDX-NNN`（Codex）/ `SMP-NNN`（Simplify）

**優先度基準**:

- 🔴P1 = Critical/High のセキュリティ、データ損失リスク
- 🟠P2 = 中程度のセキュリティ、重要な品質問題
- 🟡P3 = コード品質改善、軽微な指摘

**セキュリティ重症度マッピング**（ビルトイン `/security-review` の出力形式に対応）:

- Critical / High → 🔴P1
- Medium → 🟠P2
- Low / Informational → 🟡P3

**評価の判定基準**:

- 🟢 検出数 0 件
- 🟡 軽微な指摘のみ（P3 のみ）
- 🔴 重要指摘あり（P1 または P2 が存在）

3. ファイル保存後にパスをユーザーに表示:

```
📄 レビュー結果を保存しました: {REPO_ROOT}/.claude/tmp/{TS}-review.md
```

### 4. ユーザー確認

AskUserQuestion ツールで次の選択肢を提示:

- **修正する** — すべての指摘を修正
- **一部修正** — 修正する指摘を選択
- **そのまま** — 修正せず終了

### 5. 修正適用

ユーザーが「修正する」または「一部修正」を選択した場合:

1. 対象ファイルを Read ツールで読み込み
2. Edit ツールで指摘箇所を修正
3. 修正結果をユーザーに報告

## 重要な注意事項

- ✅ 4 エージェントは必ず並列起動する（Task ツールの並列呼び出し）
- ✅ diff が空の場合は早期終了する
- ✅ codex:review スキルが未対応でもエラーにしない
- ✅ /simplify スキルが未対応でもエラーにしない
- ✅ 統合レポートは `.claude/tmp/{TS}-review.md` にも保存する
- ❌ diff なしでレビューを実行しない
- ❌ ユーザー確認なしに修正を適用しない

