From 83fb4dfbfb1b7270c73b8587d898c21797c7c219 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Wed, 23 Sep 2026 14:41:42 +0200 Subject: [PATCH] Aggiungi la scheda di ponytail Co-Authored-By: Claude Opus 5.5 --- README.md | 1 + skills/ponytail.md | 151 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 skills/ponytail.md diff --git a/README.md b/README.md index bff2fc1..2c84f3c 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,4 @@ Il mio dizionario delle skill per agenti AI (Claude Code, Codex, app di Claude e | Skill | Descrizione | |---|---| | [find-skills](skills/find-skills.md) | Permette all'agente di cercare e installare da solo altre skill con `npx skills`. | +| [ponytail](skills/ponytail.md) | Fa scrivere all'agente il codice più semplice e breve che funziona, evitando la sovraingegnerizzazione. | diff --git a/skills/ponytail.md b/skills/ponytail.md new file mode 100644 index 0000000..1bd9369 --- /dev/null +++ b/skills/ponytail.md @@ -0,0 +1,151 @@ +# ponytail + +- **Autore:** DietrichGebert +- **Repository:** [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail) (licenza MIT) +- **Sorgente:** [skills/ponytail/SKILL.md](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail/SKILL.md) +- **Pagina su skills.sh:** [dietrichgebert/ponytail/ponytail](https://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: + +1. Serve davvero? (YAGNI) +2. Esiste già nel codice del progetto? +3. Lo fa già la libreria standard? +4. Lo offre già la piattaforma (browser, sistema operativo, framework)? +5. Lo fa una dipendenza già installata? +6. Si può fare in una riga? +7. 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: + +```bash +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`: + +```bash +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 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: + +```bash +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. + +## Fonti + +- [README di DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail) +- [SKILL.md di ponytail](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail/SKILL.md) +- [SKILL.md di ponytail-help](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail-help/SKILL.md) +- [ponytail su skills.sh](https://skills.sh/dietrichgebert/ponytail/ponytail) +- [Ponytail Skill for Claude Code: Does It Really Cut Tokens – JetBrains](https://blog.jetbrains.com/ai/2026/07/ponytail-skill-claude-tested/) +- [Use skills in Claude – Claude Help Center](https://support.claude.com/en/articles/12512180-use-skills-in-claude) +- [Skills in ChatGPT – OpenAI Help Center](https://help.openai.com/en/articles/20001066-skills-in-chatgpt)