7.8 KiB
ponytail
- Autore: DietrichGebert
- Repository: DietrichGebert/ponytail (licenza MIT)
- Sorgente: skills/ponytail/SKILL.md
- Pagina su skills.sh: dietrichgebert/ponytail/ponytail
- Diffusione (settembre 2026): circa 63.600 installazioni tramite
npx skills(su skills.sh dal 12 giugno 2026); il repository ha circa 144.800 stelle e 7.800 fork su GitHub - Controlli di sicurezza su skills.sh: Gen Agent Trust Hub, Socket e Snyk superati
A cosa serve
Fa scrivere all'agente il codice più semplice e breve che funziona, evitando soluzioni sovraingegnerizzate. L'idea è far ragionare l'agente come "lo sviluppatore senior più pigro della stanza": il codice migliore è quello che non scrivi.
Cosa fa
Quando si attiva
Quando scrivi "ponytail", "be lazy", "lazy mode", "simplest solution", "minimal solution", "yagni", "do less" o "shortest path", oppure quando ti lamenti di codice sovraingegnerizzato, gonfio, pieno di boilerplate o di dipendenze inutili.
Una volta attiva resta accesa in ogni risposta, finché non scrivi "stop ponytail", "normal mode" o /ponytail off.
Come lavora
Prima di scrivere codice, l'agente sale una "scala" di sette gradini e si ferma al primo che risolve il problema:
- Serve davvero? (YAGNI)
- Esiste già nel codice del progetto?
- Lo fa già la libreria standard?
- Lo offre già la piattaforma (browser, sistema operativo, framework)?
- Lo fa una dipendenza già installata?
- Si può fare in una riga?
- Solo allora scrive il minimo indispensabile.
Altre regole:
- niente astrazioni "per il futuro" né boilerplate;
- meglio cancellare che aggiungere, meglio noioso che ingegnoso;
- meno file possibile e modifica più corta possibile;
- correggere la causa, non il sintomo;
- le scorciatoie volute vanno segnate con un commento che dice il compromesso.
Cosa non semplifica mai: validazione degli input, gestione degli errori che evita perdite di dati, sicurezza, accessibilità e funzionalità chieste esplicitamente.
Formato delle risposte: prima il codice, poi al massimo tre righe brevi, nella forma "saltato X, da aggiungere quando Y". Per esempio, a "aggiungi una cache per le risposte API" risponde con @lru_cache(maxsize=1000) sulla funzione e "saltata una classe di cache dedicata, da aggiungere quando lru_cache non basta più".
Livelli di intensità
| Livello | Comportamento |
|---|---|
lite |
fa quello che chiedi, ma indica in una riga l'alternativa più semplice; scegli tu |
full |
applica la scala in modo rigido (predefinito) |
ultra |
estremista YAGNI: prima cancella, poi aggiunge; consegna la soluzione in una riga e mette in discussione il resto |
off |
disattiva |
Il livello predefinito si cambia con la variabile d'ambiente PONYTAIL_DEFAULT_MODE o nel file ~/.config/ponytail/config.json.
Comandi
Il plugin completo comprende sei skill, richiamabili con i comandi / in Claude Code e OpenCode, oppure con @ in Codex:
| Comando | Funzione |
|---|---|
/ponytail [lite|full|ultra|off] |
attiva la modalità o ne cambia il livello |
/ponytail-review |
cerca la sovraingegnerizzazione nelle modifiche correnti |
/ponytail-audit |
cerca codice superfluo in tutto il repository |
/ponytail-debt |
raccoglie le scorciatoie rimandate |
/ponytail-gain |
mostra i dati di impatto |
/ponytail-help |
guida ai comandi |
Risultati dichiarati e verificati
- Secondo l'autore, misurato su un repository FastAPI + React: circa il 54% di codice in meno (fino al 94% nei casi più sovraingegnerizzati), costo più basso del 20% circa, esecuzione più veloce del 27% circa, nessun taglio su sicurezza, validazione e accessibilità.
- Secondo un test indipendente di JetBrains (luglio 2026, 80 compiti con Claude Code e Sonnet 5): codice più corto del 15,4% (dato non statisticamente significativo), costo più basso del 10,3% (significativo), qualità invariata. Il guadagno è maggiore dove l'agente tende a costruire troppo e quasi nullo nei compiti già snelli. Il test riguardava compiti di analisi dati, non frontend, e non verificava sicurezza e accessibilità.
Da sapere
- Senza hook non si attiva da sola: il plugin funziona grazie a un hook che inietta le regole all'inizio di ogni sessione. Nel test di JetBrains, installata come semplice skill senza hook, non si è mai attivata in dieci sessioni. Per questo conviene installarla come plugin (vedi sotto); altrimenti va richiamata a mano ogni volta.
- Aspettative: su compiti normali conta su un risparmio intorno al 10%, non sul 54% dichiarato.
- Hook: il plugin esegue script all'avvio di ogni sessione in Claude Code, Codex e Cursor.
Installazione
Claude Code (plugin, consigliato)
Nella sessione di Claude Code:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
Installa le sei skill e l'hook di avvio. Poi:
/plugin marketplace update ponytail # aggiornamento
/plugin remove ponytail # rimozione (comando indicato nel README)
Codex (plugin, consigliato)
Da terminale:
codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail
Rimozione: codex plugin remove ponytail.
Per eliminare anche i file di stato che il plugin lascia sul sistema, il README indica di eseguire node scripts/uninstall.js dalla cartella del repository.
Claude Code e Codex (solo skill, senza hook)
In alternativa, con lo strumento skills:
npx skills add DietrichGebert/ponytail --skill ponytail -g -a claude-code -a codex
| Opzione | Significato |
|---|---|
--skill ponytail |
installa solo la skill principale; --skill '*' le installa tutte e sei |
-g |
installazione globale (~/.claude/skills/, ~/.codex/skills/); senza, solo nel progetto corrente |
-a <agente> |
agente di destinazione, ripetibile |
-y |
salta le domande di conferma |
Così non c'è l'hook: la skill va richiamata a mano (per esempio scrivendo "ponytail" o "lazy mode"). Gestione con npx skills list -g, npx skills update ponytail e npx skills remove ponytail.
App desktop di Claude e ChatGPT
Il README non documenta l'uso nelle app desktop. Il SKILL.md di ponytail contiene solo istruzioni, quindi in teoria si può caricare come qualsiasi skill:
git clone --depth 1 https://github.com/DietrichGebert/ponytail.git
cd ponytail/skills && zip -r ~/ponytail.zip ponytail
- Claude (desktop o web): attiva l'esecuzione del codice in Settings → Capabilities, poi Customize → Skills → + → Create skill → Upload a skill, scegli lo ZIP e attiva l'interruttore.
- ChatGPT (desktop o web): Skills nella barra laterale, poi Create → Upload from your computer; richiamala con
@. Le skill caricate su desktop e web non si sincronizzano.
Nelle app non ci sono hook, quindi la skill va richiamata esplicitamente in ogni conversazione. Questo uso non è stato verificato.