review-before-commit · git:20260909.e884a56 · 2026-09-09 · sha256 6bf12f321c30aa4b

review-before-commit git:20260909.e884a56A

Immutable. This exact content is served forever at /api/v1/blob/6bf12f321c30aa4b.

---
name: review-before-commit
description: commit を提案する直前に回す検査。対話でのみ述べて記録に入れ忘れたものを洗い出し、文脈を持たない読み手が読めるかを参照・時点語・件数の3軸で検査する。staging 内容とコミットメッセージを提示する前に使用(push 前の検査は review-before-push)。
---

# commit 直前の検査

**読み手は「文脈を持たない次のセッションの AI」である。** 書いた本人には解決できてしまう参照が、ここで落ちる。

**この Skill は手順だけを持つ。** **なぜ検査するかの一般形は `01_ai-driven-dev-strategy.md`「外に出る直前に検査を挟む(非可逆な操作のゲート)」**にあり、**このリポジトリ固有の規約は `CLAUDE.md`** にある。⇒ **どちらも正本で、この Skill はその実装である。**

## 前提思想

- **検査は通過判定ではない。** 指摘は列挙して人間に渡す。致命的でなければ直さず記録する、という選択が常にある。
- **検査そのものが、部分適用で「通過」しうる。** 落ち方は2通りある——**検査項目の一部を飛ばす**(3軸のうち2軸だけ当てる)と、**検査対象の一部を飛ばす**(2ファイルのうち1ファイルだけ見る)。⇒ **どちらも明示的に宣言してから始める。**
- **対象は「自分が編集した範囲」ではない。** 今回触っていない箇所でも、次のセッションの開始に要るなら読む。

## モード

| モード | 発動 | 振る舞い |
|--------|------|---------|
| **検査(既定)** | commit を提案しようとした瞬間 | 下の手順を上から順に回し、検出物を一覧で出す |
| **再検査** | 前回の検査の後にさらに編集した場合 | **前回の検査後に書いた分を対象に、同じ手順を回す**(⚠️ 前回「通った」ことは今回の根拠にならない) |

## 確度ラベル

検出物には `[Fact]`(実測した)/`[Judgment]`(読んで判断した)/`[Assumption]`(確かめていない)を付ける。**「たぶん解決する」を `[Fact]` として報告しない。**

## 手順

### 1. 対話にのみ在るものを洗い出す

このセッションで**対話でのみ述べて、まだ `.md` に入っていない**ものを列挙し、1件ずつ「入っている/入っていない」を判定する。

- ⚠️ **特に見るもの: 「後で書きます」「レトロで扱います」「次のセッションで」と言ったもの。** ⇒ **そう言ったこと自体が、記録した気にさせる。**
- ⚠️ **裁定・訂正・数値・人の逐語**は落ちやすい。**提案しただけで採用されなかったものは、落ちてよい**(区別して報告する)。
- **判定は grep で行う**——記憶で「書いたはず」と答えない。

### 2. 検査対象を宣言する

- **今回の diff で触ったファイル**
- + **それらを指しているファイル/それらが指しているファイル**
- + **次のセッションの入口になるファイル**(制御plane・記録の開始点)

⇒ **この3つを列挙してから検査に入る。** 対象を宣言しないと、後から「そこは見ていなかった」が出る。

### 3. 3軸をすべて当てる

| 軸 | 見るもの | 落ちている例 |
|---|---|---|
| **参照** | リンク・見出し名・ID・「あのファイル」「上記」「下記」 | 実在しない見出しを指す/位置語で指した先が、自分の挿入で動いた |
| **時点語** | 「次」「現在」「まだ〜していない」「予定」 | 読まれる時点では既に済んでいる断定形/どのセッションを指すか決まらない |
| **件数・範囲** | 「N 件」「`A`〜`E`」「N 本」 | 正本から数え直せる値を別の行に書いた(**編集のたびに壊れ、壊れたことが読んでも分からない**) |

⚠️ **3軸のうち1つでも当てていないなら「通った」と報告しない。**

### 4. 出力する

検出物を一覧にして、**直すか・記録して残すか**を人間に裁定させる。⚠️ **勝手に直さない**——AI の指摘は提案であって、自動適用しない。

## Output Format

```
## 対話にのみ在るもの
| ID | 内容 | 判定 |

## 検査対象(宣言)
- 触ったファイル / それを指すファイル / 入口

## 3軸の結果
| 軸 | 結果 | 検出物 |

## 提案
- 直す: …
- 記録して残す: …
```

## この Skill の受入基準(AC — 機能したと言える観測可能な条件)

1. **対話にのみ在るものを、grep で判定して列挙した**(記憶で答えていない)
2. **検査対象を、検査を始める前に列挙した**
3. **3軸すべてを当てたことが出力から読み取れる**(部分適用でないこと)
4. **検出物を勝手に直していない**——直すかどうかは人間が決めた
5. **検出ゼロのときも、何を見てゼロだったかが読み取れる**

## 運用規律

- **規律の本体は `01`「外に出る直前に検査を挟む」と `CLAUDE.md`。** この Skill が持つのは手順だけで、同じことを二重に書かない。
- 🔴 **公開リポジトリへの commit には `review-before-public-commit` を使う**——**メッセージ・staging・履歴としての露出の検査が増える。** ⚠️ **どちらを使うかは「どのリポジトリか」で機械的に決まる。**
- **環境依存の値(パス・ホスト名・バージョン)をこの Skill に書かない。** 実行環境の記録側に置く。
- **この Skill は commit の可否を判定しない。** 判定するのは人間である。