Discipline as Code: Why Coding Agents Need Anti-Rationalization
Coding agents skip the hard parts and talk themselves into it. The fix shipping now: discipline as code.
Coding agents have a failure mode that has nothing to do with ability: they skip steps, then construct a good reason why the skip was fine.
The Problem Nobody Named
Every developer using a coding agent has seen it. The agent produces working code but skips the tests, writes tests but ignores edge cases, handles the happy path and rationalizes away the error states, and when you call it out, it offers a perfectly logical explanation for why skipping that step was acceptable. The gap is discipline, not capability - the agent can write tests, it just talked itself out of it.
The Repo
Addy Osmani's agent-skills repo crossed 37k stars this week by attacking this exact failure mode. It is a collection of 22 structured skill files that map the entire development lifecycle - DEFINE, PLAN, BUILD, VERIFY, REVIEW, SHIP - into explicit workflows coding agents must execute.
The piece I like most is the anti-rationalization tables. Every skill includes a table of the excuses agents use to skip steps:
- "I'll add tests later" - counter: tests validate the implementation you just wrote, not some future version
- "This change is too small to review" - counter: small changes compound into architectural drift
- "The happy path is sufficient" - counter: production traffic is never exclusively happy path
The mechanism is pre-commitment, like laying out gym clothes the night before. You cannot rationalize your way out of a process that is already in motion.
What Is a Skill File, Exactly?
Structured markdown with frontmatter, triggering conditions, step-by-step workflows, and non-negotiable verification requirements. That makes it a different animal from a prompt or a system instruction pasted into a chat window: the agent does not read a skill file passively, it executes it as process. The design works across every major coding agent - Claude Code, Cursor, Gemini CLI, Copilot, Windsurf, Kiro - so one discipline layer covers all of them.
It also says something about where agent engineering is heading. We spent 2024-2025 making agents more capable, and the frontier now is making them more disciplined, because capability without discipline produces impressive demos and unreliable production code.
The Discipline Layer
If you work with coding agents daily - and I do - you need a discipline layer between the agent's capability and your codebase, one that enforces process rather than merely blocking actions the way rails do. I have been running explicit verification gates in my own agent workflows for months, requiring evidence before a task can be marked complete. The agent-skills repo validates that pattern at scale and gives it a name.
First-Class Dependencies
Three weeks ago I said skill stores would multiply next quarter. A 37k-star library of skill files is that, ahead of schedule, though these are written by humans for agents to execute rather than by the agent for itself, and there is no gate in front of a mutation because nothing mutates. Half a hit.
Skill files are becoming a first-class dependency in agent-powered codebases, the kind you version and review like the lockfile. And when someone eventually ranks coding agents on production reliability, my bet is that discipline explains more of the variance than raw capability.