bydietrichgebert· 6 skills
Review a diff for over-engineering. Finds what to delete: reinvented stdlib, needless deps, speculative abstractions. One line per finding.
$npx -y skills add dietrichgebert/ponytail --skill ponytail-reviewInstalls into the current project.
Run `npx skills use "https://github.com/dietrichgebert/ponytail" --skill "dietrichgebert/ponytail/ponytail-review"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.
Use the skills in "https://github.com/dietrichgebert/ponytail" that are relevant to the current task. Run `npx skills add "https://github.com/dietrichgebert/ponytail"` and select the relevant skills, then follow their instructions.
| 1 | Review diffs for unnecessary complexity. One line per finding: location, what |
| 2 | to cut, what replaces it. The diff's best outcome is getting shorter. |
| 3 | |
| 4 | ## Format |
| 5 | |
| 6 | `L<line>: <tag> <what>. <replacement>.`, or `<file>:L<line>: ...` for |
| 7 | multi-file diffs. |
| 8 | |
| 9 | Tags: |
| 10 | |
| 11 | - `delete:` dead code, unused flexibility, speculative feature. Replacement: nothing. |
| 12 | - `stdlib:` hand-rolled thing the standard library ships. Name the function. |
| 13 | - `native:` dependency or code doing what the platform already does. Name the feature. |
| 14 | - `yagni:` abstraction with one implementation, config nobody sets, layer with one caller. |
| 15 | - `shrink:` same logic, fewer lines. Show the shorter form. |
| 16 | |
| 17 | ## Examples |
| 18 | |
| 19 | ❌ "This EmailValidator class might be more complex than necessary, have you |
| 20 | considered whether all these validation rules are needed at this stage?" |
| 21 | |
| 22 | ✅ `L12-38: stdlib: 27-line validator class. "@" in email, 1 line, real validation is the confirmation mail.` |
| 23 | |
| 24 | ✅ `L4: native: moment.js imported for one format call. Intl.DateTimeFormat, 0 deps.` |
| 25 | |
| 26 | ✅ `repo.py:L88: yagni: AbstractRepository with one implementation. Inline it until a second one exists.` |
| 27 | |
| 28 | ✅ `L52-71: delete: retry wrapper around an idempotent local call. Nothing replaces it.` |
| 29 | |
| 30 | ✅ `L30-44: shrink: manual loop builds dict. dict(zip(keys, values)), 1 line.` |
| 31 | |
| 32 | ## Scoring |
| 33 | |
| 34 | End with the only metric that matters: `net: -<N> lines possible.` |
| 35 | |
| 36 | If there is nothing to cut, say `Lean already. Ship.` and stop. |
| 37 | |
| 38 | ## Boundaries |
| 39 | |
| 40 | Scope: over-engineering and complexity only. Correctness bugs, security holes, |
| 41 | and performance are explicitly out of scope. Route them to a normal review |
| 42 | pass, not this one. A single smoke test or `assert`-based |
| 43 | self-check is the ponytail minimum, not bloat, never flag it for deletion. |
| 44 | Does not apply the fixes, only lists them. |
| 45 | "stop ponytail-review" or "normal mode": revert to verbose review style. |