review-to-lintlisted
Install: claude install-skill shimo4228/claude-harness
# Review → Lint 吸収
reviewer のチェックリストには、LLM が数えるより script が数える方が正確で安い項目が混ざる。
この skill はその境界を引き、機械側を script へ降ろし、reviewer の注意を意味的チェックに
集中させる。先行実例: `readme_evidence.py`(readme-writer)、`adr_lint.py`(adr-writer、
ADR-0051)。分業原理は「存在 = code、内容 = LLM」(ADR-0021 が導入、ADR-0044 が ADR へ適用)と
feedback: deterministic_semantic_layering(script 計測 + LLM 解釈)。
## 0. 入口 — チェックリスト起点と履歴起点
対象 reviewer が決まっているならそのまま §1 へ。「どの reviewer / どの規約を lint 化すべきか」
から決めるなら reviewer の履歴を掘る。チェックリスト起点の棚卸しは reviewer が**明文で持つ
項目**しか出さないので、実際に反復している指摘を取りこぼす(2026-08-29 の実測: RFC-0005 の
12 候補は document / skill-asset 層のみで、`hooks/*.sh` を対象とする 3 クラスを見落としていた
= 同 RFC の #13〜#15)。
**機構は作らない** — 抽出 script も回収 hook も新設しない(ADR-0055 Decision 5「回収機構は
作らない」)。1 回の手調査で足りる。2 回目を要求されたら、そのとき ADR-0055 の supersede
込みで script を提案する。
corpus と抽出の非自明点:
- reviewer 報告は `~/.claude/projects/<project>/<session-id>/subagents/agent-*.jsonl`。
**親 transcript の隣ではない**
- reviewer 種別は subagent 冒頭の user message で判別する。`agentType` フィールドは無く、
親 transcript とは id で繋がらない(突合は最終 assistant text と親の tool_result の一致)
- 組込 `/code-review` の署名は `` `medium effort → 3+5 angles × 6 candidates …` ``
- 取るのは最終 assistant **メッセージ**。`jq | tail -1` は最終**行**しか取らない
(1 ファイル 100〜450KB あるので全文は読めない)
- `ReportFindings` の構造化 tool_use は保存されない。抽出は自然言語パースになる
**閾値を掘る前に固定する。** クラスの粒度は自由変数で、細かく切れば「台帳に無いクラス」は
必ず作れる。既定: 同一クラスが **3 回以上 かつ 2 セッション以上**、**採用実績 1 件以上**、
**退役 reviewer 由来のみのクラスは数えない**(その reviewer はもう走らないので需要が無い)。
行き先は 2 つ。**採用が反復 → lint 候補**(§1 へ)、**却下が反復 → 退役候補**(形骸規約・
review