Audit the repo's Claude instructions for contradictory rule pairs — rules where obeying one violates the other, or where a general rule and a specific rule collide with no stated precedence. The 5-family obeys widely, so it hits both rules of a contradiction and either freezes, alternates, or silently picks one. Use for "Claude is inconsistent about X", "it follows the rule sometimes", "these two docs disagree", or as part of /opus-pocus. Read-only; prescribes a carve-out, a kill, or a preced...
Installs into .claude/skills of the current project.
Are you the author of Contradicto Revelio?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/totes-mickgoats-contradicto-revelio)
---
name: contradicto-revelio
description: Audit the repo's Claude instructions for contradictory rule pairs — rules where obeying one violates the other, or where a general rule and a specific rule collide with no stated precedence. The 5-family obeys widely, so it hits both rules of a contradiction and either freezes, alternates, or silently picks one. Use for "Claude is inconsistent about X", "it follows the rule sometimes", "these two docs disagree", or as part of /opus-pocus. Read-only; prescribes a carve-out, a kill, or a precedence statement per pair. NOT for mere redundancy — that's Clarificus Maxima's duplicate class.
---
# 🛡 Contradicto Revelio
> *"Two rules enter. One rule leaves."*
Instruction layers accrete. A style plugin demands compression; a workflow demands outputs be
pasted verbatim. A global file says "always ask first"; a project file says "never ask, decide".
Each rule was right when written. Together they make every compliant action a violation — and a
model that obeys widely pays that cost on every turn.
## What to scan
All instruction sources *as the model sees them together*: user-global memory files, the
project's own memory files (root and nested, `CLAUDE.md` or `AGENTS.md`), rule files, output
styles, active plugins' skills, hook message text, and agent definitions. Contradictions live
*between* sources more often than within one.
## Anti-patterns to find
1. **Direct contradiction.** Rule A: "compress all output." Rule B: "paste command outputs
verbatim — a summary reads as missing." Obeying either violates the other.
2. **Precedence vacuum.** A general rule and a specific rule collide ("never edit generated
files" vs "this generated folder is hand-tuned; edits survive") with nothing saying which
wins where.
3. **Cross-source drift.** The same rule stated in two files at different strictness ("prefer
feature branches" vs "direct commits to main are blocked") — the model can't tell which is
current.
4. **Obligation vs prohibition.** One rule requires an action ("update the doc in the same
commit") that another forbids in context ("another team owns these docs — never edit them").
The obligation becomes undischargeable (→ also Finite Recursum class 4).
5. **Stale half of a superseded pair.** A decision inverted ("X is now adopted") while the old
prohibition ("never use X") survives elsewhere. The model finds both; recency isn't visible
in a file.
6. **Style-vs-substance collisions.** An output style (brevity, persona, formatting) that
conflicts with content contracts (verbatim verdicts, exact error strings, structured
reports).
## Fix prescriptions
| Finding class | Fix |
|---|---|
| Direct contradiction | Carve-out on the loser: name the exception inside BOTH rules so each acknowledges the other ("verbatim-verdict blocks are exempt from any compression style") |
| Precedence vacuum | One precedence statement at the point of collision — "the specific row wins over this table"; never leave winning to inference |
| Cross-source drift | Single-source it: the strictest current version in one place, a pointer everywhere else |
| Obligation vs prohibition | Give the obligation a discharge path that respects the prohibition ("report it; the owning team applies it") |
| Stale superseded half | Delete the stale half and grep all sources for its restatements — a superseded rule always has copies |
| Style-vs-substance | An explicit exemption list in the style itself; substance contracts win by default |
## Detection technique
Contradictions rarely share vocabulary, so grep alone misses them. Build the obligation table:
extract every MUST/NEVER/ALWAYS-class rule into (source, trigger, required-or-forbidden action),
then sort by action. Collisions cluster on the same action with opposite polarity. For large
layers, fan the extraction out per source and join the tables.
## Bounds
- Scope: all instruction sources as the model sees them together — user-global memory, project memory, rule files, output styles, hook text, agent definitions. Cross-source pairs are the point; other plugins' files are still out of scope.
- Cap: 15 pairs, ranked by how often both halves are live in the same turn.
- Done when the obligation table has been built once and sorted for collisions — not when no further pair can be imagined.
- Quote once, at read time; mark anything you cannot re-confirm `UNVERIFIED` rather than re-reading to check yourself.
- See `skills/opus-pocus/references/casting-safety.md` for the full rules.
## Report format
Per finding: the PAIR (`fileA:line` × `fileB:line`) · class (1–6) · both quoted rules · the
prescription with which rule wins and why. End with the pair count by class. `SCANNED NOTHING`
if fewer than two instruction sources were found, grading `N/A` — a single memory file cannot
contradict itself across sources.