Build exactly what the current problem requires.
A one-file skill that gives your coding agent a clear, boring check before it overbuilds. What's needed gets built. Nothing more.
GitHub · SKILL.md · Benchmark · One file, ~100 tokens at idle
Install - 10 seconds, no dependencies
No hooks, no Node, no build step. Just copy one file.
curl -O https://raw.githubusercontent.com/alvindemesadev/boring-engineering/main/SKILL.md mkdir -p .claude/skills/boring-engineering && cp SKILL.md .claude/skills/boring-engineering/
Same path for .cursor/skills, .opencode/skills, .codex/skills - see all 40+
A quick example - same result, less to maintain
You say "send an email on signup." Without boring, the agent anticipates a future with many providers. With boring, it checks: is that futures real? No. So it stays direct.
How it works
Four checks. Stops at the first no. ~100 tokens when idle, full check only on task.
Final check: Can this be simpler? Did I add anything not asked for? If yes, revise.
Benchmark - v1.1 · August 2026
90 single-shot runs (6 coding tasks × 3 arms × 5 tries) on one model. Same prompts every time - the only difference is which ruleset the agent carried. "Works" = generated code executed against per-task tests and passed. v1.1 adds an active built-in check, compact formatting, and modern idioms — validated on the same harness.
| Arm | Works | Median lines |
|---|---|---|
| boring-engineering v1.1 | 100% | 4 |
| ponytail (3rd party) | 80% | 4.5 |
| no skill | 53% | 10.5 |
Read it in plain words: both skills make the agent write less code. Ponytail writes the tiniest code but broke 1 in 5 times. boring-engineering v1.1 wrote even less (4 median lines vs 4.5) and never broke (30/30). No skill at all overbuilt and got it wrong half the time. The gap closed because v1.1 learned to reach for built-ins.
| Task | boring v1.1 | ponytail | no skill |
|---|---|---|---|
| Slug function (control) | 3 ln · 100% | 3 ln · 100% | 13 ln · 100% |
| Query parser (native-platform trap) | 21 ln · 100% | 13 ln · 80% | 37 ln · 40% |
| Retry helper (config trap) | 13 ln · 100% | 7 ln · 100% | 14 ln · 20% |
| Welcome email (factory trap) | 3 ln · 100% | 3 ln · 60% | 9 ln · 0% |
| Reuse existing helper | 4 ln · 100% | 5 ln · 100% | 6 ln · 100% |
| JPY formatter (abstraction trap) | 4 ln · 100% | 4 ln · 40% | 3 ln · 60% |
Honest fine print: single-shot generations, not full agent sessions · n=5 per cell, one model family · task suite authored by boring-engineering's author, so treat ponytail's side as an independent snapshot rather than a verdict · raw data and harness are in the repo (/benchmarks).