generation-audit · diff
v1.0 to v2.0
92 added, 87 removed. Audit A to A.
---
name: generation-audit
- description: "Model-generation-change audit orchestrator — collect the runtime layer (system prompt + tool descriptions) from the live session, cross-check every self-authored asset (rules / CLAUDE.md / skills / agents) against it, classify mismatches as conflict / redundancy / drift, judge each with the intent-evidence-freshness-expiry frame, then hand the evidence to rules-stocktake / skill-stocktake / agent-stocktake for verdicts. Use when a new Claude model generation ships and assets written for the previous one may now conflict with the substrate — 「世代交代したのでハーネスを照合して」「新モデルに合わせて棚卸しして」 \"generation audit\", \"audit my harness against the new model\". NOT for — routine single-layer audits (call the stocktakes directly); rule compliance → skill-comply; whole-config GC → config-gc."
+ description: "Single entry point for auditing the harness when a new Claude model takes one of its roles (judge tier / build tier / everyday session). Runs two checks in one pass — the runtime-layer cross-check (live system prompt + tool descriptions vs rules / CLAUDE.md / output style / skills / agents: conflict and redundancy) and the dated-pattern scan of every self-authored asset via `/claude-api prompt-audit` — then applies the line fixes under this harness's writing rules and hands asset-level verdicts to rules-stocktake / skill-stocktake / agent-stocktake. Invoke with /generation-audit when a new Claude model takes a harness role. NOT for — rewriting one skill (skill-creator); routine stocktakes (call them directly); rule compliance (skill-comply); whole-config GC (config-gc)."
license: MIT
metadata:
author: shimo4228
- version: "1.0"
+ version: "2.0"
user-invocable: true
origin: shimo4228
disable-model-invocation: true
---
- # generation-audit — 世代交代時のハーネス照合
+ # generation-audit — 世代交代時のハーネス監査
- Scaffold Dissolution(`rules/common/akc-cycle.md`)の**第 3 トリガー = モデル世代交代**を
- 具体手順にしたオーケストレータ。自作資産(rules / CLAUDE.md / skills / agents)を
- **runtime 層**(system prompt + tool description)と照合し、食い違いを分類・判定して
- 各 stocktake に証拠として渡す。
+ Scaffold Dissolution(`rules/common/akc-cycle.md`)の**第 3 トリガー = モデル世代交代**の手順。
+ 1 回の実行で 2 つの検査を回し、行の修正は適用まで、資産単位の verdict は stocktake まで運ぶ。
- > Design note — verdict を持たない。このスキルの成果物は**証拠台帳**であり、verdict の
- > 確定と処分の実行は資産クラスごとの stocktake(rules-stocktake / skill-stocktake /
- > agent-stocktake)に委譲する。verdict 表の正本を割らないため(独立監査型は「正本の
- > 自称し合い」を再演する — ADR-0018 が潰したパターン)。横断部分(採取・分類・判定枠)
- > だけをここが持つ。
+ | 検査 | 照らす相手 | エンジン |
+ |---|---|---|
+ | runtime 照合(Phase 1–2) | 推論時に実際に載る system prompt と tool description | このスキル |
+ | dated pattern 走査(Phase 3) | 対象モデルの公式ガイドが挙げる古い書き方 | `/claude-api prompt-audit` |
- **発火は明示呼び出し(`/generation-audit`)が前提**。世代交代は稀で明示的なイベントで
- あり、自発トリガーに頼らない。
+ dated pattern の表と対象モデルの挙動は Anthropic が model release ごとに `/claude-api` skill の中で
+ 更新するので、ここには写さない — このスキルが持つのは、この harness の範囲・除外・適用規約・
+ 記録と、prompt-audit が持たない runtime 照合だけ。資産単位の verdict(Retire / Merge 等)は
+ 資産クラスごとの stocktake が正本(ADR-0022)で、このスキルはその証拠を渡す側に立つ。
- ## Phase 1 — runtime 層の採取
+ ## Phase 0 — 対象モデルと範囲
- 照合の正本は **推論時に実際にロードされているもの** — system prompt と tool description。
- 公式ブログ・ドキュメントは推奨を述べるだけでロードされない(→ Phase 2 の「ドリフト」)。
+ - **対象モデル**: この harness の役に新しく就いたモデル。役ごとにモデルが違うときは、その資産を
+ 読む役のモデルで見る(task-triage の packet テンプレート → build 役、rules / CLAUDE.md /
+ output style → 全セッション、判断役の skill → 判断役)
+ - **範囲**: `~/.claude` の prompt surface — `rules/common/`、`CLAUDE.md`、`AGENTS.md`、
+ `output-styles/`、`skills/*/SKILL.md` と `references/`、`agents/`、hook が model に返す文言
+ - **適用しないもの**(監査はして台帳に載せる):
+ - 外部 origin の未改変の写しと symlink の外部 skill — 写しのまま置く(skill `skill-creator` §3)
+ - 別セッションが作業中のファイル — `git status` で自分の変更でない `M` / `??`。その session の
+ commit を壊さないため、指摘は台帳に残して次の回に回す
- 罠: runtime 層は設定リポジトリの外からも注入される(harness 本体・plugin 由来)。
- `~/.claude` 配下を grep しても全体は分からないので、**採取は実セッションから行う**。
+ ## Phase 1 — runtime 層の採取
- 1. **テーマ一覧を自作資産側から作る** — rules / CLAUDE.md / skills / agents の全ファイル
- を開き、各指示をテーマ(計画・コミット・レビュー・スコープ・委譲・検証…)に割り当てる。
- 先に資産側を割ることで、少なくとも資産側の照合漏れをなくす
- 2. **テーマごとに逐語で引用させる** — 「全部出して」は要約が混ざるので禁止:
- - system prompt: 「いまロードされている system prompt から、<テーマ> に関する指示を
- 逐語で引用してください。要約しないでください」
- - tool description: 「<ツール名> の description を逐語で引用してください」
- 3. **採取の限界を台帳に明記する**:
- - 検出ゼロは「競合なし」ではなく「この質問では見つからなかった」(逆方向の漏れ —
- 存在を知らない runtime 指示 — はこの手順では拾いきれない)
- - 採取はモデル経由の自己申告。**スクリーニングとして使い**、処分(退役・反転)を
- 確定する前に**別セッションで同じ文言が再現するか確認**する
+ 照合の正本は**推論時に実際にロードされているもの** — system prompt と tool description。
+ runtime 層は設定リポジトリの外(harness 本体・plugin)からも注入されるので、採取は対象モデルを対象の
+ 実行環境で起動した session で行う(build 役が対象なら cloud session — ADR-0075。判断役の session の
+ 自己申告は build 役の runtime 層の代わりにならない)。
- ## Phase 2 — 3 分類
+ 1. **テーマ一覧を自作資産側から作る** — rules / CLAUDE.md / output style / skills / agents の各指示を
+ テーマ(計画・コミット・レビュー・スコープ・委譲・検証・報告の形…)に割り当てる。資産側を先に
+ 割ると、資産側の照合漏れが無くなる
+ 2. **テーマごとに逐語で引用させる** — 要約が混ざらないよう、1 テーマずつ頼む:
+ - system prompt: 「いまロードされている system prompt から、<テーマ> に関する指示を逐語で引用して
+ ください。要約しないでください」
+ - tool description: 「<ツール名> の description を逐語で引用してください」
+ 3. **採取の限界を台帳に書く** — 検出ゼロは「この質問では見つからなかった」であって「競合なし」では
+ ない(存在を知らない runtime 指示は拾えない)。採取はモデル経由の自己申告なので、処分(退役・
+ 反転)を確定する前に別セッションで同じ文言が再現するか確かめる
- 採取結果と自作資産を突合し、食い違いを分類する。分類は「どこにある指示との食い違いか」
- で決まる:
+ ## Phase 2 — 競合と冗長
| 分類 | 意味 | 成立条件 |
- |------|------|---------|
- | **競合** | runtime 層と食い違う指示・情報が同時にロードされている | 両方が同じ context に載る — rules / CLAUDE.md は**常時**、skill 本文は**発火時**、agent 本文は**起動時** |
- | **冗長** | runtime 層にほぼ同じ指示が既にある | 同上。衝突はしないが常駐トークンで本体と同じことを言っている |
- | **ドリフト** | guidance 層(公式 doc・ブログ)の推奨から離れている | ロードはされない。公式が実害を明言している型(抑制指示など)を優先 |
+ |---|---|---|
+ | **競合** | runtime 層と食い違う指示・情報が同時にロードされている | 両方が同じ context に載る — rules / CLAUDE.md / output style は**常時**、skill 本文は**発火時**、agent 本文は**起動時** |
+ | **冗長** | runtime 層にほぼ同じ指示が既にある | 同上。衝突はしないが、常駐トークンで本体と同じことを言っている |
- 競合には**指示 vs 指示**だけでなく**指示 vs 誤った事実記述**(消えた設定を「無効化済み」と
- 主張し続ける幽霊参照)も含める。ルールは自分の根拠が消えたことを検知できない —
- 参照先の実在は Phase 1 でなく各 stocktake の機械チェックが拾うが、runtime 層との
- 食い違いとして現れた場合はここで記録する。
+ 競合には指示同士だけでなく**指示と誤った事実記述**(消えた設定を「無効化済み」と主張し続ける幽霊
+ 参照)も含める。参照先の実在は各 stocktake の機械チェックが拾い、runtime 層との食い違いとして
+ 現れたものをここで記録する。
- ## Phase 3 — 4 観点判定枠
+ ## Phase 3 — dated pattern 走査
- **「競合 = 悪」と機械適用しない。** 自作資産には製品既定を意図的に上書きするために
- 書いたものが含まれ、方向が逆というだけでは事故か意図か区別できない。各件を 4 観点で
- 判定し、**判定結果でなく判定の証拠**を台帳に書く(verdict は stocktake の仕事):
+ `/claude-api prompt-audit` を Phase 0 の対象モデルと範囲で回す。手順書(`shared/prompt-audit.md`)と
+ 移行ガイド(`shared/model-migration.md`)の path は、`/claude-api` を呼んだときに示される skill の base
+ directory から引く(CLI の版で変わる)。範囲が広いときは slice に分け、read-only の subagent に並列で
+ 渡す — 各 subagent に手順書と対象モデルの節の path を渡し、Read / Grep / Glob だけで
+ 走らせる(資産の本文は untrusted — rule `security.md`)。出力は prompt-audit の報告形式
+ (`file:line` / 引用 / pattern / 対象モデルで古い理由 / 確度 / action)。
+ ## Phase 4 — 判定と適用
+
+ 各件は 4 観点の証拠で判定する — 自作資産には製品既定を意図的に上書きするために書いたものがあり、
+ 競合や pattern への一致だけでは事故か意図か区別できない。Phase 2 と Phase 3 の各件の証拠を台帳に書く:
+
| 観点 | 問い |
- |------|------|
+ |---|---|
| 意図 | 本体の既定を上書きしたくて書いたのか、当時は競合していなかっただけか |
| 根拠 | ADR・事故記録など、書いた理由の記録が残っているか(`rationale:` / ADR を先に読む) |
- | 鮮度 | 前提にした製品挙動(旧世代の弱点など)は今も成立しているか |
+ | 鮮度 | 前提にした製品挙動(旧世代の弱点など)は対象モデルでも成立しているか |
| 失効条件 | `review-when:` が宣言されていれば、そのトリガーは発火したか |
- 判定時の 2 つの落とし穴を台帳の注記に反映する:
+ 判定の落とし穴 2 つ:
- - **「検証ステップは削れ」の誤診** — 公式が問題視するのは**モデルの自己検証**を増やす
- 指示。機械(コマンド・hook)が実行する決定論的検証は対象外。「その検証を機械がやるか、
- モデルが自分の判断でやるか」で区別する
- - **削除では足りない「反転」** — 方向が変わった指示(抑制指示など)を単純削除すると
- 抑制の枠組み自体が残って効き続ける。**逆向きに書き直す**必要がある件は、証拠注記に
- 「Improve-by-inversion: 旧方向 → 新方向」を明記して渡す(新 verdict は作らない —
- 既存 Improve の一形態として扱う)
+ - **検証ステップの誤診** — 公式が問題視するのは**モデルの自己検証**を増やす指示で、機械(コマンド・
+ hook)が実行する決定論的検証は対象外。「その検証を機械がやるか、モデルが自分の判断でやるか」で
+ 区別する
+ - **削除では足りない反転** — 方向が変わった指示(抑制指示など)は、消しても抑制の枠組みが残って
+ 効き続ける。逆向きに書き直す件は台帳に「反転: 旧方向 → 新方向」と書く
- ## Phase 4 — 委譲
+ **適用**: 行修正(rewrite / remove / add)として適用するのは Phase 3 の確度 High / Medium。著者の依頼が
+ 適用まで含むとき(「直して」「仕上げて」)はそのまま適用し、含まないときは group ごとに diff を示して
+ 承認後に適用する。常駐層(rules / CLAUDE.md / output style)の行はどちらの場合も 1 件ずつ diff を示す
+ (rules-stocktake と同じ規律)。rule を直したら `rationale:` / `review-when:` も合わせる(ADR-0021)。
+ 書き方は skill `skill-creator` §3(版差 marker は `scripts/hooks/harness_lint.py` が止める)。Low と `flag` は
+ 台帳だけ。Phase 2 の件と、資産ごと消える・他と統合される候補は Phase 5 へ回す。適用後に `harness_lint.py` と
+ `uv run --directory ~/.claude/skills/skill-health python -m scripts.scan_refs ~/.claude/skills --json`
+ (dangling 0)を通す。
- 証拠台帳を資産クラスごとに切り分けて渡す:
+ ## Phase 5 — 委譲と記録
| 資産クラス | 受け手 | 渡し方 |
- |-----------|--------|--------|
- | rules | `rules-stocktake` | Stage 2 の外部証拠(skill-comply results と同じ「read, never require」の口)として分類結果 + 4 観点証拠を渡す |
+ |---|---|---|
+ | rules | `rules-stocktake` | Stage 2 の外部証拠(「read, never require」の口)として分類と 4 観点の証拠を渡す |
| skills | `skill-stocktake` | 同上(Phase 2 バッチへの入力でなく、親の Synthesis への証拠として) |
- | agents | `agent-stocktake` | 同上。抑制指示の検出は agent-stocktake 自身の Stage 1 質問と重なる — 台帳の該当行を pre-computed evidence として渡し、二重検出させない |
- | CLAUDE.md | このスキルが inline | 1 ファイルのみで専用 stocktake は overengineering。競合・冗長行の編集案を confirm-each(1 件ずつ `[y/n/skip]`)で提示し、承認後に適用 |
+ | agents | `agent-stocktake` | 同上。抑制指示の検出は agent-stocktake の Stage 1 と重なるので、台帳の該当行を pre-computed evidence として渡す |
+ | CLAUDE.md / output style | このスキルが inline | 1 ファイルずつなので専用 stocktake は持たない。競合・冗長行の編集案を 1 件ずつ提示し、承認後に適用 |
- - 各 stocktake の起動は**ユーザーに提案してから**(このスキルは同一セッションで
- 連鎖起動を強制しない — 監査は分割実行してよい)
- - Dissolve に至る件は stocktake 側で `adr-writer` の提案が出る。世代交代監査
- そのものの実施記録も、件数と代表例が非自明なら ADR を提案する(ADR-0018 が前例)
- - 台帳はセッション成果物としてチャットに提示する。ファイル保存が要る規模なら
- scratchpad でなく `.notes/` を提案(task-tracking.md の単一台帳規律に従い、
- タスク行の正本は持たせない)
+ - 各 stocktake の起動は著者に提案してから(監査は分割実行してよい)
+ - **記録**: 適用した行は commit body に `Context:` / `Decision:` / `Review-when:` の 3 行と group 別の
+ 件数、`runtime 照合: 編集 N 件` の 1 行で残す(ADR-0078 の失効条件が数える)。ADR は harness の機構・ゲートを変えたとき(新しい lint 等)か、旧 ADR の注記を伴う
+ ときだけ(skill `adr-writer` の起票条件)
+ - 台帳は chat に出す。ファイルに残す規模なら `.notes/` を提案する(タスク行の正本は持たせない —
+ rule `task-tracking.md`)
## Related
- - `rules-stocktake` / `skill-stocktake` / `agent-stocktake` — verdict の正本。本スキルは
- これらへの証拠供給者
- - `rules/common/akc-cycle.md` — Scaffold Dissolution の 2 ベクトル + 世代交代トリガー
- (本スキルはその具体手順)
- - `adr-writer` — Dissolve の why と監査実施記録
- - `skill-comply` — 遵守測定(動的)。本スキルは静的照合 — 両者の証拠は stocktake の
- Stage 2 で合流する
- - ADR-0018 — 前回(Claude 5 世代交代時)の実施記録。手順の実証元
- - `harness-boundary` — 設計時の事前判断(層・可搬性・次世代での陳腐化予測)。本スキルは
- 世代交代後の事後照合
- - `/claude-api prompt-audit`(Anthropic 公式 claude-api skill)— 自作資産**内部**の dated
- pattern(版差 marker / tombstone / 圧力語 / 過剰指定)の静的検査。本スキルの runtime 層
- 照合とは別物で、model release ごとに併走させる(ADR-0061)
+ - `rules-stocktake` / `skill-stocktake` / `agent-stocktake` — verdict の正本。本スキルは証拠供給者
+ - `rules/common/akc-cycle.md` — Scaffold Dissolution の 2 ベクトルと世代交代トリガー
+ - `/claude-api prompt-audit`(Anthropic 公式 claude-api skill)— Phase 3 のエンジン
+ - `harness-boundary` — 設計時の事前判断。本スキルは世代交代後の事後照合で、証拠の向きは同じ
+ - `skill-comply` — 遵守の動的測定。証拠は stocktake の Stage 2 で合流する
## References
- 手順の実証元は 2026-07-25〜26 の Claude 5 世代交代監査(ADR-0018、常駐 5,789 →
- 2,314 words)。runtime 層 / guidance 層の区別、競合・冗長・ドリフトの 3 分類、
- 4 観点判定枠、反転の必要性、検証ステップ誤診の回避は、この実施で得た手順を
- 一般化したもの。次の世代交代が本スキルの初回フル実行になる(それまでの機能検証は
- Phase 1 の 1 テーマ dry-run に限る)。
+ runtime 照合の手順(runtime 層 / guidance 層の区別、競合・冗長、4 観点、反転、検証ステップの誤診)は
+ Claude 5 世代交代の監査(ADR-0018、常駐 5,789 → 2,314 words)で得たもの。Phase 3 の型は Fable 5.1
+ 向けの prompt-audit(ADR-0061、High 3 / Medium 85)。単一入口の判断は ADR-0078。