Ponytail 5 (regole, review, audit, installazione), graphify v0.9.91, catalogo di claude-plugins-official e numeri aggiornati delle altre schede. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
11 KiB
ponytail
- Autore: DietrichGebert
- Repository: DietrichGebert/ponytail (licenza MIT)
- Sorgente: skills/ponytail/SKILL.md
- Pagina su skills.sh: dietrichgebert/ponytail/ponytail
- Diffusione (ottobre 2026): circa 92.300 installazioni tramite
npx skills(su skills.sh dal 12 giugno 2026); il repository ha circa 164.600 stelle e 8.900 fork su GitHub. Ultima versione rilevata: 5.2.0 (13 ottobre 2026) - Controlli di sicurezza su skills.sh: Gen Agent Trust Hub, Socket e Snyk superati
A cosa serve
Fa scrivere all'agente la modifica più piccola che risolve davvero il compito, evitando soluzioni sovraingegnerizzate. L'idea è far ragionare l'agente come "lo sviluppatore senior più pigro della stanza": il codice migliore è quello che non scrivi. Pigro sulla soluzione, mai sulla modifica: deve comunque completare tutto ciò che il compito richiede.
Cosa fa
Quando si attiva
Su qualsiasi compito di programmazione (scrivere, correggere, rifattorizzare, rivedere, scegliere dipendenze) e quando scrivi "ponytail", "be lazy", "simplest solution", "yagni" o ti lamenti di codice sovraingegnerizzato o gonfio.
Una volta attiva resta accesa per tutta la sessione, finché non scrivi "stop ponytail" o "normal mode" (o /ponytail off).
Come lavora
- Capisce prima di scrivere. Legge il compito e il codice coinvolto, elenca tutto ciò che la modifica deve toccare (chiamanti, test, fixture, configurazione, esportazioni) e controlla che cosa potrebbe rompere per gli utenti. Questo è l'ambito; le funzionalità in più no.
- Sale una "scala" e si ferma al primo gradino che funziona del tutto:
- Serve davvero? Funzionalità, opzioni e flessibilità non richieste si saltano e si nominano in una riga. A una richiesta vaga ("costruiscimi X") risponde con la versione minima che fa il lavoro principale.
- Esiste già nel codice del progetto? Lo riusa come fa il codice circostante.
- Lo fanno la libreria standard o la piattaforma? Le usa, a meno che il progetto abbia un componente suo.
- Lo fa una dipendenza già installata? La usa; non ne aggiunge una per poche righe.
- Si può fare in una riga leggibile a colpo d'occhio?
- Altrimenti, il minimo codice che funziona.
- Lascia un controllo. La logica nuova non banale (un ramo, un ciclo, un parser, soldi o sicurezza, uno script nuovo) esce con un piccolo test o un controllo basato su
assert. Le modifiche banali non ne hanno bisogno. - Chiude con uno o due righe: che cosa ha saltato o non ha verificato, e ogni rischio da conoscere.
Altre regole: niente astrazioni, wrapper, opzioni o codice "per il futuro" non richiesti; meglio cancellare che aggiungere; un commento solo per il perché che il codice non mostra. Nella correzione di un bug cerca prima tutti i chiamanti della funzione e corregge la causa una volta sola nel codice condiviso. Il codice spostato o unito conserva validazione e gestione degli errori. Una scorciatoia con un limite noto riceve un commento nella forma shortcut: <il limite>, <quando passare a una soluzione migliore>.
Cosa non taglia mai: validazione ai confini di fiducia, gestione degli errori che evita perdite di dati, sicurezza, accessibilità, la calibrazione che richiede l'hardware reale e tutto ciò che hai chiesto esplicitamente.
Esempio dal README: per "aggiungi un selettore di data al frontend" senza la skill l'agente scrive 335 righe tra libreria e calendario fatto a mano; con ponytail riusa il componente Input del progetto con type="date" (il browser fornisce il calendario) in un file da 10 righe.
Livelli di intensità
| Livello | Comportamento |
|---|---|
lite |
fa quello che chiedi, ma indica in una riga l'alternativa più piccola; scegli tu |
full |
applica le regole sopra (predefinito) |
ultra |
mette in discussione anche la richiesta: prima di costruire contesta ciò che il bisogno non giustifica |
off |
disattiva |
Il livello predefinito si cambia con la variabile d'ambiente PONYTAIL_DEFAULT_MODE o con il campo defaultMode in ~/.config/ponytail/config.json.
Comandi
Il plugin completo comprende sei skill, richiamabili con i comandi / in Claude Code e negli altri agenti che le supportano (in Codex con $ponytail:<nome>, per esempio $ponytail:ponytail-review):
| Comando | Funzione |
|---|---|
/ponytail [lite|full|ultra|off] |
attiva la modalità o ne cambia il livello; senza argomento la accende se è spenta, altrimenti mostra il livello |
/ponytail-review |
rivede le modifiche correnti come lo sviluppatore senior che viene chiamato quando qualcosa si rompe: errori, sicurezza, carico reale, codice a rischio senza test, punti lenti e cosa tagliare. Ogni segnalazione dice che cosa fa il codice, cosa va storto, come correggerlo e cosa succede se non lo fai. Puoi indicare l'obiettivo: uncommitted, staged, branch o il link a una PR |
/ponytail-audit |
lo stesso controllo su tutto il repository: ne mappa il codice e ordina i problemi per priorità |
/ponytail-debt |
raccoglie in un registro i commenti shortcut: rimandati |
/ponytail-gain |
mostra i dati di impatto misurati nel benchmark |
/ponytail-help |
guida ai comandi |
Risultati dichiarati e verificati
- Secondo l'autore (Ponytail 5, benchmark in Claude Code con Opus 5.5: 39 compiti, compreso un repository reale FastAPI + React, 5 esecuzioni ciascuno, con e senza la skill): circa 53% di codice in meno, 41% di tempo in meno, 26% di costo in meno e 45% di token in meno. Il 98% della logica a rischio esce con un test, contro il 68% senza la skill. Sui sei compiti di sicurezza (SQL injection, path traversal, token falsificati, limitazione delle richieste, righe CSV malformate, cache) ha superato tutte le 30 esecuzioni.
- Secondo un test indipendente di JetBrains (luglio 2026, 80 compiti con Claude Code e Sonnet 5, su una versione precedente): 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
- Aspettative: i numeri dell'autore sono i suoi; su compiti normali, indipendentemente, conta su un risparmio intorno al 10%.
- Hook: il plugin per Claude Code e Codex (e gli hook per Cursor) esegue due piccoli script Node.js all'avvio e durante la sessione. Serve
nodenelPATH; senza, le skill funzionano ma ogni chiamata dell'hook mostra un errore innocuonode: command not found. In Codex vanno approvati da/hooks. - Senza hook niente attivazione automatica: nel test di JetBrains, installata come semplice skill senza hook, la versione allora corrente non si è mai attivata in dieci sessioni. Con il solo
npx skillsconviene aggiungere ancheAGENTS.mddel repository al progetto, oppure usare il plugin. - File lasciati fuori dal plugin: scrive un file di stato (
~/.claude/.ponytail-active),~/.config/ponytail/config.json, uno script per la barra di stato in~/.claude/e, se accetti il suggerimento, una vocestatusLinein~/.claude/settings.json. - Provenienza: il README avverte di installarlo solo da
DietrichGebert/ponytailsu GitHub o da@dietrichgebert/ponytailsu npm; il progetto non distribuisce mai file.exeo.dll.
Installazione
Claude Code (plugin, consigliato)
Nella sessione di Claude Code, come due messaggi separati (il README avverte che altrimenti l'installazione non funziona):
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
Installa le sei skill e gli hook. Poi:
/plugin marketplace update ponytail # aggiornamento
/plugin remove ponytail # rimozione
Codex (plugin, consigliato)
Da terminale:
codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail
Poi apri codex, vai su /hooks, controlla e approva i due hook, e avvia una nuova conversazione. Lo stesso comando vale per l'app desktop di Codex: riavviala dopo l'installazione. Rimozione: codex plugin remove ponytail.
Per eliminare anche i file di stato lasciati fuori dal plugin, esegui node scripts/uninstall.js dalla cartella del repository prima del comando di rimozione (lo script è un file del plugin, e rimuovendolo prima sparirebbe), oppure da un clone separato.
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
Per averle tutte e sei: --skill '*'.
| Opzione | Significato |
|---|---|
--skill ponytail |
installa solo la skill principale; --skill '*' le installa tutte e sei senza domande |
-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 ci sono gli hook né le regole sempre attive: per averle copia AGENTS.md del repository nel progetto, altrimenti richiama la skill a mano (per esempio scrivendo "ponytail"). Gestione con npx skills list -g, npx skills update ponytail e, per rimuovere tutte e sei, npx skills remove ponytail ponytail-audit ponytail-debt ponytail-gain ponytail-help ponytail-review (con gli stessi -a e -g dell'installazione).
Per gli altri agenti (Cursor, Copilot, Gemini, OpenCode, Windsurf e altri) il progetto ha una guida per ciascuno in INSTALL.md; in genere basta copiare AGENTS.md nel progetto.
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.