Fallacies

SkillMedia

Apply when a session is about to propose, widen, add or "fix" something nobody asked for, when a finding argues a design is not the simplest, when a CI, cache or trigger change is being weighed, and when a review's quality lane asks whether a concern is real before asking whether the fix is. Esposter catalogue of the arguments that talk a session into work the repository does not need, the reasoning-level sibling of over-engineering, owning two rules (a gap in a check nothing decides on is not a defect; a cost or risk asserted without its measurement is a guess) and indexing the recurring fallacies each at the skill or page that holds its rule.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Fallacies skill

What this skill tells your AI

The instructions your AI receives, as published by esposter/esposter in .agents/skills/fallacies/SKILL.md and read by ahel’s review.

The one list of the arguments that lead a session to chase a change the repository does not need. over-engineering catalogues the shapes such a change takes once it is made — the wrapper, the flag, the map; this page catalogues the reasoning that made it look necessary, one step earlier, where the cheaper correction is to stop. Each entry lives in the skill or page named beside it, stated there in full; this is the index a review walks before it argues a finding, and nothing is stated here that another owner holds; the two rules with no other owner carry owned here in their heading.

A gap in a check nothing decides on is not a defect — owned here

A check exists to be read. Before a trigger grows a path, a gate job, a second content hash or a graph query for a case it currently misses, name what waits on its verdict: a merge blocked by a required status, a deploy that ships on green, an up that runs on the plan. If nothing does, the check is a courtesy — its output is a comment someone may read — and a case it misses costs nothing, because the decision was never being made there. The gate that is load-bearing is somewhere else, and that is the one the missed case is checked against; if it covers the case, the courtesy stays exactly as narrow as it is. The tell is a proposal whose benefit is "it would have caught X" with no sentence saying who would have acted on the catch. A missed case in a required check is a defect; the same case missed by an advisory one is a trade already made, and it is written down where the check lives so that it is not re-derived.

A cost or a risk asserted without its measurement is a guess — owned here

"This forces a replacement", "this cache would hit", "moving the build here costs every job", "this is slow" — each is a claim with a measurement that would settle it, and the argument that sounds right from the diff is exactly the one the measurement contradicts most often. The claim is not made until the measurement is: the preview's plan line, the cache action's restore log, the list of jobs that download the artifact, the timing beside the job it is compared to. Where the measurement is expensive, the claim is stated as unmeasured and left out of the decision rather than argued from plausibility. The reverse holds too: a benefit is counted only where its reader is named, never from what a mechanism could in principle catch.

The catalogue

FallacyThe rule and its owner
Arguing against a decision the docs, a skill, a ledger or a beside-the-line comment already madecode-review — the written record wins, and only a contradiction between code and record reopens it
An argument that merely sounds right from the diff, the security-flavoured one most of allcode-review — refuted or confirmed against the code and the record before it is reported; plausibility is not a fact
Judging a CI change by when its slowest job endsapps/web/content/docs/architecture/monorepo-tooling.md — correctness first, then total consumption; wall-clock returns only as the no-job-becomes-the-wait constraint
A cache keyed on what the commit changesapps/web/content/docs/architecture/monorepo-tooling.md — a cache whose hits land where nothing needed one; the .nuxt cache and its two larger versions
Fewer steps bought with implicit behaviourover-engineering — the implicit default makes the reader carry an equivalence two explicit steps would have spelled out
A skill's size or prose volume raised as a findingskill-authoring — a to-do with one known fix, the split, run in the same change and reported as nothing
Excluding files, force-pushing or trimming a window to fit a review capreview-queue — the collector holds the overflow for the next window; coderabbit for the force-push that desynchronises the bot's checkpoint
A schedule, a poll or a retry loop where a signal existsapps/web/content/docs/architecture/no-polling.md — every state change but a rate limit lifting is a webhook or an awaited promise
A replacement asserted from a rename diffpulumi-infra (references/migrations.md) — the preview's plan line is the only evidence; an applied rename reads 0 to replace

Reading a finding against this list

  • A finding or a proposal that rests on an entry here cites the owning rule and stops, never re-argues it.
  • An argument that recurs without an owner is maintained the way over-engineering maintains a shape: the rule goes to its most specific owner first and the row here second, never the row alone.
  • When the argument survives — the check is required, the measurement was taken, the record says nothing — the change is real, and over-engineering is the next list it is read against.

Signals

GitHub stars
23
Forks
3
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
fallacies
Source
github.com/esposter/esposter