| id | existing-pattern-conformance |
| name | Existing-Pattern Conformance 既存パターン準拠の確認 |
| description | 新実装が、同種の先行実装(同レイヤ・同責務・同概念)に在る防御 / バリデーション / エラー処理 / 規約 / 共通化ロジック / 概念定義を、欠落・重複・食い違いなく継承しているかを grep で先行特定して確認する |
| version | 0.1.0 |
| category | midstream |
| phase | midstream |
| applyTo | ["**/*.{ts,tsx,js,jsx,mjs,cjs,py,rb,go,php,java}","**/migrations/**/*"] |
| tags | ["conformance","prior-art","consistency","maintainability","midstream"] |
| severity | major |
| inputContext | ["diff"] |
| outputKind | ["findings","questions"] |
| modelHint | high-accuracy |
| dependencies | ["code_search"] |
Pattern declaration
Primary pattern: Reviewer
Secondary patterns: Inversion
Why: 先行実装との突合は grep による決定論的特定が主だが、同種の先行実装が存在しない新規領域では実行を止めるゲートが必要。
Goal / 目的
- 新しい追加 / 変更が、同種の先行実装をまず grep で特定し、そこに在る防御・バリデーション・エラー処理・定数 / 規約・共通化ロジック・概念定義を欠落・重複・食い違いなく継承しているかを確認する。
- 「既存に同じことをする実装があるのに、それを参照せず独自に書いて防御やバリデーションが抜けた / 重複した / 規約から外れた」パターンを検出する。
外部実証: 「CodeGraph(AI向け効率化ツール)は「間接呼び出しの見落とし」を防ぐ。でも、自分たちのレビューが長引いた原因はそれじゃなかった」(TheGateBreaker, 2026-07-30)は、重複ロジック 4 箇所に対するコールグラフツールの適用結果を報告します。検出できたのは中心関数を直接呼び出していた 2 箇所のみでした。残る 2 箇所は同じ判定条件をそれぞれの場所で独立に再実装しており、呼び出し関係が無いためコールグラフ上では中心関数とつながっていませんでした。著者は間接呼び出しの見落としと独立した重複を別の障害モードと位置づけ、重複が疑われる場合はまず grep で確認する従来手順を維持しています。この実測は、先行実装を grep で特定してから突合するという本スキルの検出ロジックを裏付ける一次データとして参照できます。
Non-goals / 扱わないこと
- 設計の良し悪しそのもの(既存が間違っていれば従う必要はない。意図的差分は根拠の明文で許容)。
- リファクタ後の caller 残骸(
cross-file-leakage の領域)。
- 宣言と実装の自己矛盾(
self-contradiction の領域)。
Pre-execution Gate / 実行前ゲート
このスキルは以下の条件がすべて満たされない限り NO_REVIEW を返す。
ゲート不成立時の出力: NO_REVIEW: existing-pattern-conformance — 先行実装と突合すべき変更が検出されない
False-positive guards / 抑制条件
- grep で同種の先行実装が見つからない(真に新規領域)の場合は指摘しない。
- grep ヒットが同名でも、別スコープ・別責務・別概念であれば「先行実装」ではない。同名の関数 / 定数 / 型でも、別レイヤ・別ドメイン・別用途なら突合対象から除外する。同レイヤ・同責務・同概念であることを確認できた先行実装のみを参照とする(同名・文字列一致だけを根拠に「先行はこうしている」と断定してはならない)。
- 既存パターンから外れることが差分内で根拠とともに明記されている場合は抑制(意図的な逸脱)。
- 既存実装側が deprecated / 移行中で、新実装が新方針に従っている場合は抑制。
- 整形 SSoT(フォーマッタ)管理下の空白・列整列・末尾スペースは指摘しない(#1451)。表の列幅ズレ・末尾スペース調整・インデント整列など
prettier / フォーマッタが決める体裁は、npx prettier --check <file> が通る限り正典であり、手動整形の提案はかえって整形結果を壊す。整形の指摘前に prettier --check の結果を確認する(整形は lint の領域で、本スキルはロジック・規約の継承に集中する)。
- 型検査対象外の
scripts/ 配下で、JSDoc の unknown を any へ緩める提案はしない(#1476)。scripts/ 配下は の ( 以下のみ)に含まれず tsc の型検査対象外であり、JSDoc の型注釈はエディタ表示補助のための文書目的に留まる。 は呼び出し側にプロパティアクセス前の絞り込みを強制する意図的で保守的な選択である。同レイヤの先行実装( の / の 等)も同じ規約に従っている。「 にすれば静的解析エラーを避けられ DX が上がる」という理由での変更提案は、型安全性を後退させたうえ既存パターンからも逸脱するため指摘しない。