nihil-revelio
Skill9 starsChanged 3 months agoMITView on GitHub
Audit whether every check in the repo can tell "passed" apart from "never ran" — empty input reported as clean, filters that narrow the verdict as well as the output, exit codes read where the artifact is the evidence, skipped steps reported as passed, and reports with no denominator. Use for "the lint says clean but the bug shipped", "did that check actually run", "the test filter matched nothing", "green build, broken tree", "why did nothing get flagged", or as part of /opus-pocus. Read-only; prescribes distinct degraded verdicts per finding. NOT for whether an artifact is wired at all (→ priori-incantato). NOT for guards that block too much (→ alohomora).
In this repository20 other files it gives its agents.
- accio-rulebookSkill
- alohomoraSkill
- avada-verbosaSkill
- clarificus-maximaSkill
- configureSkill
- contradicto-revelioSkill
- descriptio-reducioSkill
- finite-recursumSkill
- legilimens-anthropicaSkill
- muffliato-hookusSkill
- obliviate-fossiliumSkill
- opus-pocusSkill
- priori-incantatoSkill
- protegoSkill
- quietus-capslockiusSkill
- sorting-hatSkill
- tempus-mutaturSkill
- the-pensieveSkill
- the-remembrallSkill
- the-room-of-requirementSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Every lint, gate, verifier and test-runner wrapper the repo carries
- Distinctive: line 20
Every caller that reads one of those verdicts — a caller reading an exit code where the artifact is the evidence is half the defect
- Distinctive: line 23
Test suites for the checks themselves: is each verdict state exercised by a case?
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
🐉 Nihil Revelio
"It scanned nothing. It said 'clean.' Those are different words."
An unexercised check is blind, not clean. A check that cannot distinguish "I looked and found nothing" from "I never looked" reports the same success for both, and the second one is the state that ships defects. This is the most expensive class of automation defect because it inverts the tool's purpose: the green verdict is not merely uninformative, it is actively misleading, and it is trusted precisely when it should not be.
What to scan
- Every lint, gate, verifier and test-runner wrapper the repo carries
- Their verdict logic: what they print, what they exit with, and how the two relate
- Every caller that reads one of those verdicts — a caller reading an exit code where the artifact is the evidence is half the defect
- Filter and selector arguments, and what a non-matching filter produces
- Test suites for the checks themselves: is each verdict state exercised by a case?
Vendor tools are out of scope; their invocation is in scope. You cannot add a verdict state to
eslint, pytest, tsc or go test — what you own is the line that calls them and the step that
reads the result, so audit that. On a repo whose checks are all vendor tools, the instances of this
class look like:
- a CI step whose file glob matched nothing and exited 0 (
eslint $CHANGEDwith$CHANGEDempty) - a test run that collected zero tests and reported success — a typo'd
pytest -kexpression,go test ./internal/...on a package that moved, a JesttestPathPatternmatching nothing - a
continue-on-error: truestep whose failure the rollup then reports as green - a coverage gate reading an artifact that was never written
Prescribe the guard on the caller: assert a non-empty input set before invoking, assert a
non-zero collected-test count after (pytest --co -q | tail -1, jest --listTests | wc -l), and
assert the results file exists and is newer than its inputs. If the repo's only checks are vendor
tools invoked with no such assertion, that is one finding, not seven.
Anti-patterns to find
- Empty input treated as success. A check handed no files reports clean, because "no findings" and "nothing examined" share a code path. The degenerate case is the common case in CI, where a bad path expression silently yields an empty set.
- A filter that narrows the verdict, not just the output. Passing a filter restricts what is examined and what is judged, so a non-matching filter prints clean and exits zero with real failures sitting in the log.
- Exit-code reading where the artifact is the evidence. A green exit with a results file that is missing, empty, stale, truncated or unparseable is not a pass. The process succeeding and the work being verified are different claims.
- A skipped step reported as a passed step. Skips are legitimate — a skip counted as a pass is not. The rollup absorbs it and the coverage number lies.
- Fallback-on-no-input. A check handed an empty list silently widens to scan everything, or the current directory, or a default set. That is a different measurement wearing the same verdict, and it is indistinguishable downstream.
- No denominator. A report with no "N scanned" leaves the reader unable to separate coverage from vacuum. Every verdict needs the size of what produced it.
- Success indistinguishable from failure. A probe returning the same value for healthy and unreachable; a query whose "no results" and "could not connect" render identically. The consumer cannot behave correctly on an ambiguous signal, however carefully it is written.
Fix prescriptions
| Finding class | Fix |
| Empty input as success | Make "could not tell" a distinct, loud third state — never folded into pass. SCANNED NOTHING / DEGRADED / CANNOT VERIFY as first-class verdicts with their own exit codes |
| Verdict-narrowing filter | Forbid filters on verification runs, or make a non-matching filter an error rather than an empty pass. Document that the filter narrows output only |
| Exit-code reading | Assert the artifact, not the call: the results file exists, parses, is newer than its inputs, and contains the expected case count |
| Skip counted as pass | Report skips in their own column and name each one with its reason. A rollup that hides skips is a rollup that lies |
| Fallback-on-no-input | Refuse and report, rather than widening. A widened scan is a different measurement and must not inherit the narrow one's verdict |
| No denominator | Always print what was examined alongside what was found — "0 findings across 0 files" is a wholly different sentence from "0 findings across 412 files" |
| Ambiguous states | Give every distinguishable outcome its own verdict string and exit code; add a failing-first test per state so each one is exercised, because an untested verdict path is itself an unexercised check |
Bounds
- Scope: the repo's own lints, gates, verifiers and test-runner wrappers, and the callers that read their verdicts — including the CI steps and scripts that invoke vendor tools. Not the vendor tools' own internals, not the application's test suite, and not another plugin's checks.
- Cap: 15 findings, ranked by whether a false clean is reachable today with a plausible input.
- Done when each check's verdict states have been enumerated once.
- Quote once, at read time; mark anything you cannot re-confirm
UNVERIFIEDrather than re-reading to check yourself. - See
skills/opus-pocus/references/casting-safety.mdfor the full rules.
Report format
Per check: path · verdict states it can emit · states it cannot distinguish · the concrete
input that produces a false clean (an empty file list, a non-matching filter, a missing results
file) · prescription. Lead with the count of checks that can produce a false clean today, against
the total examined. SCANNED NOTHING if no checks were found — and note that this pass reporting
"clean" without a denominator would be its own first finding.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

