Aggiungi la scheda di ponytail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
bd5fb0725b
commit
83fb4dfbfb
2 files changed
+152
No files matched your search
@@ -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. |
|
||||
@@ -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>` | 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)
|
||||
Reference in new issue
Block a user