name: purge-private-vocab description: Detects local-plan coinages, abbreviations, and number labels in reader-facing text and rewrites them so readers without the source plan can follow. Use after generating PR description, Jira ticket, design doc, RFC, or other reader-facing text from a local plan/spec file, when readers don't share the source plan, or when the user says "造語チェックして" / "plan 用語を消して" / "PR 説明の語彙を点検して".
Purge Private Vocabulary
ローカルプランの造語・略号・番号ラベル (Single Switch, Provider 内吸収型, Critical-A, α 層, AC-12, §設計詳細 等) が plan 由来の対外文書に持ち込まれる症状を検出し、読者が plan を持たない前提で書き換える。
核心原則: 「読者が source plan を持っていない前提で読み下せるか」。書き手 (AI 自身) が plan を読んだ状態で書くと無意識に plan 内造語を持ち込む。
Task complexity tier
| Tier | 判定 | アクション |
|---|---|---|
| lite (skip) | target = plan そのもの / 読者全員が plan 共有済のチーム内資料 / API ref (codebase 直 map) | skip |
| lite | target ≤300 字 or plan-only 語ヒット ≤2 | 1-pass 直接修正 (dry-run レポート省略、Step 4 飛ばして Step 5 のみ) |
| standard (default) | 中規模 doc (PR description / Jira description 等、300-2000 字) | Step 1-5 全実行、dry-run レポート提示 → 承認後 Edit |
| deep | design doc / RFC / 公開資料 / 2000+ 字 | dry-run + 適用後の再読検証必須 + heuristics-and-pitfalls.md 全件チェック + 下記 deep 必須前置を Step 1 で実施 |
deep 必須前置 (Step 1 の入力収集を拡張):
- target の文構造を直読み:
**用語**: 説明のような Label vs Body 構造かを目視確認し、Label vs Body 分離ルートの適用可否を Step 3 までに確定する - AC- / Critical- / RFC-* 等の ID 紐付け**: target に登場する全 ID (
AC-7,Critical-A等) を source plan / analysis ファイルから 1:1 で索引し、各 ID の元内容を「展開」または「文ごと削除」のどちらにするか Step 4 提案レポートに明記する - layer label (α/β/γ 層 等) の対応コンポーネント名解決: source plan から各 layer の実コンポーネント名 (Web / Service / Persistence 等) を引き、推測補完にせず実値で言い換える候補を Step 3 までに用意する。実コンポーネント名を解決できない場合 (source plan 不在等) の扱いは Q4 の層ラベル規則を SSOT とする (関係性ベースの一般表現への言い換え・捏造禁止はそちらに集約)
Core Pattern: 3 分類
| 分類 | 例 | アクション |
|---|---|---|
| 持ち込み可 | Flipper flag (fy26q3_ebis_client)、class/file 名、Jira ID (XPROJ-663)、Issue 番号 (#34074) |
維持 |
| 要 in-line 定義 | 2+ 回登場する有用な短縮形 (Single Switch, Provider 内吸収型) |
初出箇所で 用語 (= 短い説明) を補う |
| 要言い換えまたは削除 | 1 回しか出ない造語、番号 (Critical-A, α 層, AC-12)、section anchor (§設計詳細) |
平易な日本語に書き換え、または文ごと削除 |
Workflow
1. 入力収集
- target: 検査対象 (PR body、Jira description、design doc 等)。ファイルパス or インラインテキスト
- source plan: target の生成元 (
~/.claude/plans/<topic>/plan.md等)
両方を Read。
2. 候補抽出
target 全文から下記の検出パターンにマッチする語を全件列挙する。heuristic ヒット ≠ 要対応で、分類は Step 3 で決める (false positive を含む候補リスト):
# カタカナ造語 (型/主義/原則/論/系)
grep -oE '[ァ-ヴー一-龥a-zA-Z]+(型|主義|原則|論|系)' <target>
# section anchor
grep -oE '§[^ ,。、)]+' <target>
# アルファベット + 番号ラベル (Critical-A, AC-12 等。suffix は大文字も拾う)
grep -oE '[A-Z][A-Za-z]*-[0-9A-Za-z]+' <target>
加えて目視で拾う: 強調フレーズ (**...** / 「...」)、ギリシャ文字+層 (α/β/γ 層)、フェーズ用語 (rollout enabler 等)、数字+象限/層 (各要素が文中未説明のもの)。
パターン別の typical false positive とより広い grep 例は references/heuristics-and-pitfalls.md 参照。
3. 分類 — 決定木
各候補語を上から順に当てはめる。最初にヒットした分岐で確定:
Q1. codebase identifier / 公開規格名 / 公知の Jira/Issue ID か?
YES → 【持ち込み可】 (例: Freee::Client, fy26q3_ebis_client, JWT, RFC 7519, XPROJ-663)
NO → Q2
Q2. target 自身の中で**直近に定義/展開**されているか?
(見出し直後の本文で挙動を平易に説明、bullet で全要素列挙、等)
YES → 【持ち込み可 (target self-contained)】
NO → Q3
Q3. source plan にしか定義がなく、target の読者は外部リソースで辿れないか?
YES → Q4 (要対応)
NO → 【持ち込み可】 (公知用語)
Q4. 番号/層ラベルか? (`Critical-A`, `α/β/γ 層`, `AC-12`, PR チェーン番号 等)
YES → 【要言い換えまたは削除】 出現回数に関わらず実値へ言い換え (in-line 定義ルートには載せない。Core Pattern 3 分類表と整合)。**層ラベルで source plan が無く実コンポーネント名を解決できない場合**は target 文脈から導ける関係性ベースの一般表現 (例: 「後段の処理層」) に言い換え、具体名を捏造しない (tier 非依存で適用)
NO → 出現回数で分岐:
2+ 回 → 【要 in-line 定義】 (初出箇所で `用語 (= 短い説明)` を補う)。**ただし初出が見出し / title の場合**は in-line 定義が不自然なため、Label vs Body の label 書換 (平易化) ルートに倒す
1 回 → 【要言い換えまたは削除】 (平易な日本語に書き換え、または文ごと削除)
Q1 判定: codebase identifier = git grep <語> が 1+ ヒット、公開規格 = RFC/W3C/ISO/IETF 等、公知 Issue/Jira = 公開 tracker でアクセス可。非 repo / 未マージ flag で git grep 不能時は、backtick 付き snake_case で文中に Flipper flag / class / file path と明示されている、または source plan にファイルパス/flag 記述がある語を codebase identifier とみなす。加えて Provider / Adapter / Gateway のような一般的なソフトウェア構成概念は、平易な言い換えがかえって曖昧化する場合、持ち込み可に倒してよい (読者が文脈で解せる一般語のため)。
Q2 判定: 見出し+直後本文に平易な説明があれば self-contained。ただし説明に plan 内造語がさらに混入していれば NO。迷ったら「plan 未読の同僚が target だけ読み下せるか」を音読で確認。
Label vs Body 分離 (Q2 の partial 抜けに使う既定ルート): 構造が **plan-only ラベル**: 平易な説明文… の場合、ラベルは Q4 で「要言い換えまたは削除」、本文は維持。例: **Single Switch**: Flipper の参照を 1 箇所に集約 → ラベルを **Flipper 参照の 1 箇所集約** に置換、本文は維持。
§anchor が同一 doc 内の番号のみ見出しを指す場合の中間ルート (例: §詳細6 / §4 で見出しが ## 6. サーバ通信 のように番号だけ): section は実在するので Q2 で素通しになりがちだが、番号だけでは参照先が即座に分からない。削除でも素通しでもなく、見出しの節名を併記して self-contained 化する (例: §詳細6 → 「サーバ通信 (§6)」)。参照先が target に存在しない dangling anchor のみ Q4 で文ごと削除する。
4. 提案レポート (Dry-run、書き換え前)
書き換え前に提案レポートを提示し承認を取る。Q1–Q4 のどの分岐で分類されたかを併記:
## 語彙チェック提案レポート
### 持ち込み可 (維持) — Q1 / Q2 該当
- (Q1) `fy26q3_ebis_client` (Flipper flag 名、codebase 検索可)
- (Q1) `XPROJ-663` (Jira ID)
- (Q2) `PR4-a/b/c/d` (target L12-L20 で全 PR が展開済)
### 要 in-line 定義 (2+ 回出現) — Q4 該当
1. **Single Switch** (3 箇所: L14, L42, L58)
- 提案: 初出 L14 を `Single Switch (= Flipper 参照を 1 箇所に閉じ込める設計)` に変更
### 要言い換えまたは削除 (1 回出現または番号ラベル) — Q4 該当
1. `rollout enabler` (L18) → 「Flipper による本番経路切替を可能にする土台」に言い換え
2. `§設計詳細` (L33) → target に該当セクションなし、文ごと削除
「持ち込み可」セクションは reviewer 誤検出疑念回避のため、heuristic ヒットして Q1/Q2 で抜けた語と、heuristic 未ヒットだが疑われそうな公開語 (JWT, RFC, Express 等) を明示する。
standard / deep tier ではこの提案レポートを完全提示してから適用に進む (省略・即時 self-approve 禁止)。対話承認者がいれば承認を待ち、いない自動実行フロー (chain 実行や Stop hook 駆動) ではレポート提示自体を監査痕跡として self-approve してよい — ただし提示は飛ばさない。chain 実行 (/dry-ssot-text → 本 skill → /polish-before-commit) の「流れを止めない」圧力でレポート提示ごと省略するのが観測された失点なので、提示は必ず行う。自己承認できるのは提示の後であり、提示自体を省けるのは lite のみ。
5. 適用
承認後 (lite は Step 4 の dry-run を省略するため承認不要 — 直接適用してよい)、Edit で target に修正を適用。検証: 初出箇所のみ定義があるか / 削除した語の周辺文が文として成立しているか (主述破綻していないか) / 言い換え箇所が plan 未読でも読み下せるか 再読。
Quick Reference
| 操作 | コマンド |
|---|---|
| 候補語の出現回数 | grep -c '<語>' <target> |
| codebase 検索 (Q1 判定) | git grep '<語>' |
| in-line 定義形式 | <用語> (= <短い説明>) を初出箇所のみに |
Advanced
- references/heuristics-and-pitfalls.md — 検出パターン全表 + grep 例 + Common pitfalls (codebase identifier の誤書換、in-line 定義の冗長化、anchor の機械削除で文破綻、source plan 未収集、dry-run 飛ばし)
併用推奨 skill
本 skill は以下が ローカル plan を source とする対外文書を生成した直後に組み合わせると効果が高い:
/create-pr— plan から PR description を生成 → 本 skill で語彙点検/create-jira-issues— plan からチケット生成 → 本 skill で description を点検/finalize-plan— 計画完成後、対外公開する design doc に派生させる際/dry-ssot-text— 同一文書内の重複集約 (本 skill とは独立した別目的)