# How to Review Current Diffs for Over-Engineering with Ponytail

> Review git diffs for over-engineering using Ponytail's built-in ponytail-review skill. Identify deletable code, stdlib replacements, and unnecessary abstractions with specific tags.

- Repository: [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
- Tags: how-to-guide
- Published: 2026-09-04

---

**Ponytail provides a built-in `ponytail-review` skill that analyzes git diffs to identify deletable code, standard library replacements, and unnecessary abstractions using specific tags like `delete:`, `stdlib:`, and `yagni:`.**

The `ponytail-review` skill in the DietrichGebert/ponytail repository enables developers to review current diffs for over-engineering with Ponytail by auditing their changes for unnecessary complexity before committing. By parsing diff output line-by-line, this tool flags over-engineered patterns and suggests leaner alternatives, helping teams maintain minimal, maintainable codebases.

## What is the Ponytail Over-Engineering Review?

The over-engineering review is implemented as a dedicated skill defined in [`skills/ponytail-review/SKILL.md`](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail-review/SKILL.md). This skill examines diff output—whether from `git diff` or manual input—and identifies code that can be deleted, simplified, or replaced by native or standard-library features. According to the source code, the skill is "purely advisory" and never modifies files; it only lists the deletions.

## Core Components of the Review System

Three files orchestrate the review flow to intercept commands, load prompts, and analyze code.

### Skill Definition ([`SKILL.md`](https://github.com/DietrichGebert/ponytail/blob/main/SKILL.md))

The [`skills/ponytail-review/SKILL.md`](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail-review/SKILL.md) file contains the human-readable contract that defines what constitutes a "find." It specifies the review format, scoring logic, and the five classification tags used to categorize issues. This file also establishes the requirement for a "minimum" self-check—a single assert-style test that verifies the generated output follows the correct format.

### Command Registration ([`ponytail-help.toml`](https://github.com/DietrichGebert/ponytail/blob/main/ponytail-help.toml))

Commands are registered in [`commands/ponytail-help.toml`](https://github.com/DietrichGebert/ponytail/blob/main/commands/ponytail-help.toml), where `ponytail-review` is listed alongside other Ponytail commands. When the command is invoked, the system loads the skill's prompt from this configuration, making the review capability reachable as a slash-command.

### Mode Activation ([`ponytail-mode-tracker.js`](https://github.com/DietrichGebert/ponytail/blob/main/ponytail-mode-tracker.js))

The [`hooks/ponytail-mode-tracker.js`](https://github.com/DietrichGebert/ponytail/blob/main/hooks/ponytail-mode-tracker.js) file intercepts incoming messages, watching for `/ponytail-review` or the internal alias `/ponytail:ponytail-review`. When detected, it injects the skill prompt and records the mode so the LLM knows it is performing an over-engineering review rather than general chat.

## Running the Over-Engineering Review

You can invoke the review via CLI or programmatically from plugins. The skill accepts diff text as input and returns a formatted analysis.

### CLI Usage

View the command reference and run the review on your current git changes:

```bash

# Show the quick-reference card (includes /ponytail-review)

ponytail help

# Run an over-engineering review on the current git diff

ponytail-review

```

Pass an explicit diff from a specific commit range:

```bash

# Capture a diff into a variable (or pipe from git)

DIFF=$(git diff HEAD~1..HEAD)

# Invoke the skill with the diff text

ponytail-review "$DIFF"

```

### Programmatic Integration

From a plugin or extension (such as Qoder, Pi, or OpenCode), call the skill via the commands API as shown in [`pi-extension/index.js`](https://github.com/DietrichGebert/ponytail/blob/main/pi-extension/index.js):

```javascript
// In a Qoder hook or Pi extension
await commands.get("ponytail-review").handler(diffText, ctx);

```

## Understanding Review Tags and Output Format

When processing a diff, Ponytail evaluates each line against five specific tags to classify over-engineering patterns:

- **`delete:`** – Dead code or unused flexibility that serves no purpose
- **`stdlib:`** – Hand-rolled implementations that the language's standard library already provides
- **`native:`** – Dependencies that duplicate a platform feature
- **`yagni:`** – Abstractions with only a single implementation or configuration that is never used (You Aren't Gonna Need It)
- **`shrink:`** – Longer versions that can be collapsed to shorter ones

The review emits one-line suggestions in the format:

```

L<line>: <tag> <what>. <replacement>.

```

For multi-file diffs, the format includes the filename:

```

file: L<line>: <tag> <what>. <replacement>.

```

The review concludes with a net line-count impact (`net: -<N>`) and a final verdict. When nothing can be cut, it returns `Lean already. Ship.`

### Sample Output

```

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.
net: -42 lines possible.

```

## Summary

- The `ponytail-review` skill is defined in [`skills/ponytail-review/SKILL.md`](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail-review/SKILL.md) and activated via [`hooks/ponytail-mode-tracker.js`](https://github.com/DietrichGebert/ponytail/blob/main/hooks/ponytail-mode-tracker.js)
- It analyzes diffs using five specific tags: `delete:`, `stdlib:`, `native:`, `yagni:`, and `shrink:`
- Output follows the format `L<line>: <tag> <description>. <replacement>.` with a net line count summary
- The tool is purely advisory and never modifies files directly
- Integration is available through CLI commands or programmatic calls via [`pi-extension/index.js`](https://github.com/DietrichGebert/ponytail/blob/main/pi-extension/index.js)

## Frequently Asked Questions

### Is the Ponytail over-engineering review safe to run on production code?

Yes. According to the source code in [`skills/ponytail-review/SKILL.md`](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail-review/SKILL.md), the review is purely advisory and never modifies files. It only lists suggested deletions and replacements, leaving all editing decisions to the developer.

### Can I use Ponytail to review diffs from specific Git commits?

Yes. You can pipe any diff output to the review command. For example, capture a specific range with `DIFF=$(git diff HEAD~1..HEAD)` and pass it to `ponytail-review "$DIFF"` to analyze changes between commits.

### How does Ponytail detect when to activate the over-engineering review mode?

The [`hooks/ponytail-mode-tracker.js`](https://github.com/DietrichGebert/ponytail/blob/main/hooks/ponytail-mode-tracker.js) hook monitors incoming messages for the `/ponytail-review` command or its internal alias `/ponytail:ponytail-review`. When matched, it injects the skill prompt and sets the mode so the LLM understands it is performing an over-engineering review rather than a general chat.

### What does the `yagni:` tag mean in Ponytail reviews?

The `yagni:` tag (You Aren't Gonna Need It) flags abstractions with only a single implementation or configuration options that are never used. As noted in the skill documentation, this indicates code that should be inlined until a second use case actually exists.