Fallacies
SkillMediaApply 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.
Use Fallacies in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Fallacies and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Fallacies skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
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
| Fallacy | The rule and its owner |
|---|---|
| Arguing against a decision the docs, a skill, a ledger or a beside-the-line comment already made | code-review (references/written-record.md) — 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 all | code-review ("Refute first") — 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 ends | apps/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 changes | apps/web/content/docs/architecture/monorepo-tooling.md — a cache whose hits land where nothing needed one; the .nuxt cache and its larger versions |
| Fewer steps bought with implicit behaviour | over-engineering ("The goal") — 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 finding | skill-authoring ("Waiting for the size ceiling before splitting") — 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 cap | review-queue ("Excluding files to bring a window under the cap") — what overflows the cap waits for a later window rather than leaving review, and a push is never a bare --force-with-lease |
| A schedule, a poll or a retry loop where a signal exists | apps/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 diff | pulumi-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-engineeringmaintains 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-engineeringis the next list it is read against.
Signals
- GitHub stars
- 23
- Forks
- 3
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
fallacies- Source
- github.com/esposter/esposter