| id | self-contradiction |
| name | Self-Contradiction Detector 自己矛盾検出 |
| description | 同一ファイル/隣接ファイル内で「規則Xを守れ」と宣言した直後にXを破っている、宣言と実装の乖離を検出する |
| version | 0.1.0 |
| category | midstream |
| phase | midstream |
| applyTo | ["**/*.md","**/*.{ts,tsx,js,jsx,mjs}","**/SKILL.md","**/AGENTS.md"] |
| tags | ["adversarial","self-contradiction","claim-vs-actual","consistency","midstream","cognitive-bias"] |
| severity | major |
| inputContext | ["diff","fullFile"] |
| outputKind | ["findings","actions"] |
| modelHint | high-accuracy |
| dependencies | ["code_search"] |
Pattern declaration
Primary pattern: Reviewer
Secondary patterns: Inversion
Why: 宣言(declarative phrase)と実装の突合はチェックリスト型だが、宣言が差分に存在しない変更では実行を止めるゲートが必要
Goal / 目的
- ファイル/スキル/ドキュメントが「規則 X を守れ」と宣言した直後・同じファイル内で 規則 X を破っている パターンを検出する。
- Pre-mortem(失敗シナリオ)や Logic Torturing(論理の穴)では捉えにくい、「宣言」と「実装」の乖離 に特化する。
Non-goals / 扱わないこと
- 個別の論理的整合性の検証(
logic-torturing の役割)。
- 攻撃経路の分析(
war-game の役割)。
- 規則そのものの妥当性判断(規則が正しいか否かではなく、宣言と実装が一致するかを見る)。
Pre-execution Gate / 実行前ゲート
このスキルは以下の条件がすべて満たされない限り NO_REVIEW を返す。
ゲート不成立時の出力: NO_REVIEW: self-contradiction — 宣言的フレーズが検出されない
False-positive guards / 抑制条件
- 宣言が「例外を明示している」場合(「ただし X の場合を除く」)で、実装がその例外条件に該当するなら抑制。
- 宣言がコメントアウトされた旧仕様や、引用ブロック(「悪い例」として提示されたコード)の場合は抑制。
- 宣言と実装が別の対象を指している(同名だがスコープが異なる)場合は抑制。
Rule / ルール
検出ロジック
- 宣言の抽出: 差分・対象ファイルから declarative phrase を抽出する。
- 禁止形: 「〜しない」「〜してはいけない」「禁止」「避ける」「don't」「never」「avoid」「MUST NOT」
- 義務形: 「必ず〜する」「〜すること」「MUST」「always」「required」
- 対象の特定: 各宣言が何を規律しているか(参照形式・命名・依存方向・出力形式等)を1文で言語化する。
- 実装との突合: 同一ファイル、次いで隣接/関連ファイルの本文・コードを走査し、宣言に違反する箇所を探す。
- 乖離の報告: 宣言の位置と違反の位置を両方
<file>:<line> で示す。
制約
- 検出は最大 5 件。乖離が明白で影響の大きいものを優先。
- 各指摘には「宣言」「宣言位置」「違反位置」「乖離の説明」を必ず含める。
- 宣言が差分外にあっても、違反が差分内にあれば指摘可能(逆も可)。ただし両方とも差分外の場合は対象外。
Evidence / 根拠の取り方
- 宣言と違反は必ず両方の
<file>:<line> を示し、推測ではなく実際の行に紐づける。
- 「規則 X」を引用し、違反箇所がどう X に反するかを具体的に説明する。
Output / 出力フォーマット
すべて日本語。
(self-contradiction):1: [要約] 最も重大な宣言と実装の乖離は〈1文〉
<file>:<line>: [自己矛盾1] <タイトル>
宣言: 「<規則 X の引用>」(<file>:<宣言の行>)
違反: <宣言に反する実装の説明>(<file>:<違反の行>)
乖離: <なぜ宣言と矛盾するか>
Fix: <宣言に合わせるか宣言を改めるか、最小限の修正>
<file>:<line>: [自己矛盾2] ...
Good / Bad Examples
Good