ponytail-review

SkillDev tools

This 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.

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