KI-News · Werkzeuge
Ponytail oder /simplify:
Vorbeugen oder Aufräumen.
Beide Werkzeuge werben mit schlankerem Code. Nur greifen sie an verschiedenen Stellen im
Arbeitsablauf ein. Ponytail ist ein Skill, der schon beim Schreiben fragt, ob der Code
überhaupt nötig ist. /simplify ist ein Claude-Code-Befehl, der erst danach kommt
und den fertigen Diff aufräumt. Ich habe dieselbe Aufgabe dreimal an PlantWiz gebaut, um zu
sehen, was das in der Praxis unterscheidet.
Die Verwechslung liegt nahe, weil beide Werkzeuge dasselbe Wort im Mund führen:
„vereinfachen“. Ponytail ist eine kurze Prüfleiter, die ein Agent vor dem Schreiben
durchläuft: Gibt es das schon? Reicht eine Standardfunktion? Braucht es das überhaupt?
/simplify dagegen ist ein Review-Befehl, der nach dem Schreiben auf den
entstandenen Diff schaut und nach Wiederverwendung, Redundanz und unnötiger Komplexität sucht.
Eine Frage steht vor dem Bauen, eine danach, und beide führen trotz desselben Ziels zu sehr
unterschiedlichen Ergebnissen.
/simplify nachbearbeitet. Die Werte sind ein Fallbeispiel,
keine allgemeingültige Benchmark.
Gleiche Aufgabe, sehr unterschiedliche Wirkung auf die Zeilenzahl
Basis: 173 neue/geänderte Zeilen ohne Zusatzwerkzeug. Die Balken zeigen die Reduktion gegenüber dieser Basis.
Diese Zahl allein ist irreführend. /simplify hat in meiner Messung ordentlich
gearbeitet, nur an einer anderen Stelle als Ponytail, wie sich weiter unten zeigt.
Die Testaufgabe
Ticket, so knapp wie im Alltag üblich: „Sortierfunktion für die Pflanzenliste: Nutzer
sollen die Pflanzen in ihrem Garten nach Name, Pflanzdatum oder Standort sortieren
können.“ Bewusst eine offene Aufgabe ohne technische Vorgabe, damit beide Werkzeuge
etwas zu tun haben. In PlantWiz gab es dafür noch keinen Code, aber ein bereits bestehendes
Sortiermuster in derselben Datei (Sidebar.vue, die die Pflanzen eines Gartens
nach Beet gruppiert auflistet) und einen bestehenden Test dafür.
| Variante | Dateien | Zeilen | Zeichen (neuer Code) |
|---|---|---|---|
| Ohne Werkzeug (Basis) | 4 | 173 | 6.072 |
| Mit Ponytail | 3 | 42 | 1.501 |
| Basis, danach /simplify | 4 | 170 | 5.980 |
Ponytail: die Frage kommt vor dem Code
Der „faule Senior-Entwickler“ als Skill
Ponytail auf GitHub · Skill für Claude Code, Codex, Cursor, Gemini CLI u. a.
Ponytail ist ausführlich im letzten Beitrag getestet. Kurz zusammengefasst: eine Skill-Datei mit einer Prüfreihenfolge, die ein Agent vor dem Schreiben durchläuft: existiert die Funktion schon, reicht eine Standardfunktion, wird sie überhaupt gebraucht. Die Leiter greift in den Entwurf ein, bevor eine einzige Zeile Code entsteht.
An der Sortieraufgabe landete Ponytail auf Sprosse 4 („native
Plattformfunktion reicht“) kombiniert mit Sprosse 2 („existiert das schon im Repository“):
Ein natives <select> statt einer Dropdown-Bibliothek, und die
Vergleichsfunktion des Sortierens wurde am bestehenden Array.sort-Muster der
Datei ausgerichtet, statt neu zu erfinden. Ergebnis: 42 statt 173 Zeilen, kein neuer Store,
keine neue Komponente, keine neue Abhängigkeit.
Die Basisvariante ohne Leiter hatte dagegen zusätzlich eine komplette zweite, parallele Darstellung gebaut: eine flache Liste über alle Pflanzen des Gartens für die neuen Sortiermodi, mit eigenem Markup, eigenen CSS-Klassen und einem eigenen Test. Fachlich richtig, nur eben mehr, als das Ticket verlangt hätte, und genau diesen Bau hat die Ponytail-Leiter verhindert, indem sie das bestehende Gruppierungs-Layout beibehielt und nur die Sortierreihenfolge innerhalb der Gruppen änderte.
Der entfallene Test für die parallele Darstellung ist dabei kein Vorteil an sich. Die Sortierfunktion hat drei neue, von außen sichtbare Fälle; sie brauchen weiterhin Tests. In diesem Fall würde ich den bestehenden Test um Name, Pflanzdatum und Standort erweitern, statt den Testaufwand pauschal zu reduzieren.
/simplify: die Frage kommt nach dem Code
Review-Befehl für den bestehenden Diff
Eingebauter Claude-Code-Skill · /simplify
/simplify nimmt den geänderten Code, so wie er im Arbeitsverzeichnis liegt,
und prüft ihn entlang vier Achsen: Wiederverwendung, Vereinfachung, Effizienz und
„Flughöhe“ (ob die gewählte Struktur zur Aufgabe passt). Anders als Ponytail wird
/simplify nicht bei jeder Codeaufgabe automatisch mitgeladen, sondern gezielt
aufgerufen, meist auf einen fertigen Diff oder eine Pull-Request.
Wichtig für das Verständnis: /simplify sucht nach Bugs nicht, dafür gibt es
/code-review. Es geht ausschließlich um Qualität innerhalb dessen, was bereits
gebaut wurde.
Nachgemessen: derselbe Diff, ein Durchlauf danach
Um die beiden Werkzeuge fair zu vergleichen, habe ich nicht zwei unabhängige Implementierungen
genommen, sondern denselben Ausgangsdiff: die 173-Zeilen-Basisvariante ohne Ponytail, in einem
zweiten Worktree angewendet und dort mit /simplify bearbeitet.
/simplify fand vier reale Punkte:
- Doppelte Sortierlogik: zwei fast identische
.sort()-Zweige mit demselben Fallback ließen sich zu einem Comparator zusammenfassen. - Lineare Suche pro Zeile: die Zuordnung von Beet zu Namen lief pro
gerenderter Pflanze über
Array.findstatt über eine vorbereitete Map. - Doppeltes CSS: eine neue Zeilen-Klasse übernahm fast unverändert Regeln einer bereits vorhandenen Klasse.
- Der größte Befund, aber nicht angewendet: Die neue Liste war ein kompletter zweiter Render-Pfad mit dupliziertem Markup statt einer gemeinsamen Komponente mit optionalen Spalten. Der Skill hat das benannt, aber bewusst nicht umgesetzt, mit der Begründung, das sei ein strukturvoller Umbau außerhalb einer reinen Simplify-Korrektur.
| Ergebnis | Vor /simplify | Nach /simplify | Differenz |
|---|---|---|---|
| Codezeilen | 173 | 170 | −1,7 % |
| Zeichen (neuer Code) | 6.072 | 5.980 | −1,5 % |
| Betroffene Dateien | 4 | 1 (nur Sidebar.vue) | – |
Drei Fixes wurden angewendet, die Zeilenzahl sank kaum. Das liegt an der Funktionsweise von
/simplify: Es macht bestehenden Code besser gelöst, ohne zu fragen, ob dieser
Code überhaupt hätte gebaut werden müssen. Genau diese Frage stellt es beim übersprungenen
Altitude-Befund erkennbar nicht. Ein Review-Befehl, der eigenmächtig Funktionsumfang strich,
wäre bei einem echten Pull Request das größere Risiko, deshalb ist die Zurückhaltung dort
sinnvoll.
Der Preis: eine echte Review-Runde statt eines Textbausteins
Ponytails Kosten sind vorhersehbar: eine feste Zahl an Tokens, die bei jedem Aufruf anfällt.
/simplify kostet anders: Es stößt eine vollständige, mehrteilige Prüfung des
Diffs an, in meinem Lauf entlang vier getrennter Kategorien. Das ist kein fixer Textbaustein
im Kontext, sondern ein eigener Arbeitsschritt mit eigenem Tokenverbrauch, ungefähr in der
Größenordnung einer kompletten weiteren Bearbeitung derselben Aufgabe. Dafür fällt dieser
Aufwand nur an, wenn er bewusst ausgelöst wird, nicht bei jeder Codeaufgabe automatisch.
Direkter Vergleich
| Ponytail | /simplify | |
|---|---|---|
| Greift wann | Vor dem Schreiben | Nach dem Schreiben, auf den Diff |
| Stellt die Frage | Brauche ich das überhaupt? | Ist das, was ich gebaut habe, sauber? |
| Ändert Funktionsumfang | Ja, aktiv | Nein, absichtlich nicht |
| Kostenmodell | Fester Aufschlag pro Aufruf | Vollständiger Review-Durchlauf |
| Ausgelöst | Automatisch bei Codeaufgaben | Gezielt per Befehl |
| Risiko | Aufschlag ohne Nutzen bei präzisen Tickets | Findet Struktur-Probleme, löst sie aber nicht |
| In dieser Messung | −75,7 % Zeilen, netto negativ | −1,7 % Zeilen, drei reale Fixes |
Wann welches Werkzeug
Neues Feature, offen formuliertes Ticket
Ponytail zuerst testen. Der Effekt ist am größten, wenn die naive Lösung sonst mehr baut als verlangt.
Präzise umrissenes Ticket
Ponytail eher weglassen oder bewusst testen, ob es hier hilft. Die Prüfleiter kann bei exakten Anforderungen reiner Aufschlag sein, wie die Messung oben zeigt.
Vor einem Merge, oder an Code, der ohne Ponytail entstand
/simplify auf den fertigen Diff anwenden. Es findet Redundanz und
Ineffizienz, unabhängig davon, wie der Code entstanden ist.
Die beiden Werkzeuge schließen sich nicht aus, sie beantworten unterschiedliche Fragen.
Ponytail spart am ehesten dort, wo ein Agent sonst zu viel baut. /simplify
verbessert, was bereits gebaut wurde, ändert aber nicht, ob es hätte gebaut werden sollen.
Ein Team, das beides einsetzt, bekommt weniger unnötigen Code und saubereren nötigen Code,
aber keines der beiden Werkzeuge ersetzt die Frage, die am Anfang eines Tickets stehen sollte:
was hier eigentlich gebraucht wird.
Welche Skills für Ihr Team?
Ich richte Claude Code in Entwicklerteams ein, inklusive Hooks, Skills und der Frage, welche Aufgaben überhaupt an einen Agenten gehören. 30 Minuten Erstgespräch, kostenlos.