ponytail-review
SkillDev toolsThis skill reviews your code for over-engineering and shows you exactly what to delete. It points out code that reinvents the standard library, unneeded dependencies, speculative abstractions, and flexibility nothing uses. Each finding comes as a single line with the location, what to cut, and what replaces it.
Available today. Use it from your connected AI after setup.
No other account needed.
After adding it, ask your AI to review a code change for over-engineering — saying 'review for over-engineering' is enough to trigger it.
Then ask your AI: use the ponytail-review skill
What your AI can do with it
- Review code changes and flag over-engineering you can delete
- Spot code that reinvents what the standard library already provides
- Identify dependencies your project does not need
- Call out speculative abstractions and dead flexibility
- Report each finding as one line: location, what to cut, and what replaces it
What this skill tells your AI
The instructions your AI receives, as published by dietrichgebert/ponytail in skills/ponytail-review/SKILL.md and read by ahel’s review.
Review diffs for unnecessary complexity. One line per finding: location, what to cut, what replaces it. The diff's best outcome is getting shorter.
Format
L<line>: <tag> <what>. <replacement>., or <file>:L<line>: ... for
multi-file diffs.
Tags:
delete:dead code, unused flexibility, speculative feature. Replacement: nothing.stdlib:hand-rolled thing the standard library ships. Name the function.native:dependency or code doing what the platform already does. Name the feature.yagni:abstraction with one implementation, config nobody sets, layer with one caller.shrink:same logic, fewer lines. Show the shorter form.
Examples
❌ "This EmailValidator class might be more complex than necessary, have you considered whether all these validation rules are needed at this stage?"
✅ L12-38: stdlib: 27-line validator class. "@" in email, 1 line, real validation is the confirmation mail.
✅ L4: native: moment.js imported for one format call. Intl.DateTimeFormat, 0 deps.
✅ repo.py:L88: yagni: AbstractRepository with one implementation. Inline it until a second one exists.
✅ L52-71: delete: retry wrapper around an idempotent local call. Nothing replaces it.
✅ L30-44: shrink: manual loop builds dict. dict(zip(keys, values)), 1 line.
Scoring
End with the only metric that matters: net: -<N> lines possible.
If there is nothing to cut, say Lean already. Ship. and stop.
Boundaries
Scope: over-engineering and complexity only. Correctness bugs, security holes,
and performance are explicitly out of scope. Route them to a normal review
pass, not this one. A single smoke test or assert-based
self-check is the ponytail minimum, not bloat, never flag it for deletion.
Does not apply the fixes, only lists them.
"stop ponytail-review" or "normal mode": revert to verbose review style.
Signals
- GitHub stars
- 135k
- Forks
- 7k
- Last commit
- Sep 2026
Others that do the same job
Advanced
- Catalog kind
- skill
- Gateway key
ponytail-review- Source
- github.com/dietrichgebert/ponytail