| name | direct-review |
| description | CODE REVIEW for over-engineering ONLY. Finds what to delete: reinvented stdlib, unneeded deps, speculative abstractions, dead flexibility. One line per finding: location, what to cut, replacement. Trigger: "review for over-engineering", "what can we delete", "is this over-engineered", "simplify review", "/ponytail-review". Complements correctness review. Does NOT apply fixes.
|
| version | 2.0.0 |
| last_updated | 2026-06-28T00:00:00.000Z |
| category | direct |
Ponytail Review: Over-Engineering Scanner
TAGS
| Tag | Meaning | Replacement |
|---|
delete: | Dead code, unused flexibility, speculative feature | Nothing |
stdlib: | Hand-rolled stdlib function | Name the function |
native: | Dep/code doing what platform already does | Name the feature |
yagni: | Abstraction with one impl, unused config, layer with one caller | Inline |
shrink: | Same logic, fewer lines | Show shorter form |
FORMAT
L<line>: <tag> <what>. <replacement>.
<file>:L<line>: ... (for multi-file diffs)
EXAMPLES
L12-38: stdlib: 27-line EmailValidator. "@" in email, 1 line, real validation is confirmation mail.
L4: native: moment.js for one format call. Intl.DateTimeFormat, 0 deps.
repo.py:L88: yagni: AbstractRepository with one implementation. Inline it.
L52-71: delete: retry wrapper around idempotent local call. Nothing replaces it.
L30-44: shrink: manual loop builds dict. dict(zip(keys, values)), 1 line.
SCORING
net: -<N> lines possible.
Nothing to cut: Lean already. Ship.
BOUNDARIES
Scope: over-engineering and complexity ONLY. Correctness bugs, security holes, performance out of scope. A single smoke test is minimum, not bloat, never flag. Does NOT apply fixes. One-shot.
"stop ponytail-review" or "normal mode" to revert.