Quando un agente AI modifica una UI, il problema non è solo scrivere codice valido. Il problema è fargli rispettare contesto, registro, design system, accessibilità, comportamento responsive e casi limite.
Senza istruzioni precise, un modello tende a riempire i vuoti con pattern ricorrenti: card tutte uguali, abuso di gradienti, testi poco leggibili, hero section da SaaS generico. Il risultato può anche sembrare corretto a prima vista, ma resta difficile da mantenere quando il progetto cresce.
Impeccable, creato da Paul Bakaus, nasce per risolvere proprio questo pezzo del problema: portare dentro gli agenti AI una disciplina di design più esplicita, più verificabile e meno dipendente dal “gusto implicito” del modello.
Non è una libreria di componenti. Non è un framework CSS. Non è un template.
Impeccable è una skill per agenti AI che aggiunge un linguaggio operativo per progettare, valutare, rifinire e correggere interfacce front-end. La documentazione ufficiale la sintetizza così: una skill, 23 comandi, iterazione visuale nel browser e un rilevatore con regole deterministiche per riconoscere pattern tipici del front-end generato male.
A chi serve?
- A me, per esempio, per correggere alcuni dettagli dell’aspetto delle pagine di questo journal/blog. Sì, avevo fatto gran parte del lavoro manualmente. No, non sono contrario all’AI
- A sviluppatori senior che stanno già usando Codex, Claude Code, Cursor o strumenti simili e vogliono evitare che in onore alla produttività vengano consegnate UI mediocri
- A team front-end che hanno un design system e vogliono che gli agenti lo rispettino (@Encodia, questo articolo parla di noi!)
- Ad agenzie e consulenti che lavorano su landing, siti corporate, dashboard e prodotti SaaS senza voler delegare le scelte visuali a istruzioni generiche
- A responsabili tecnici che vogliono introdurre AI nel flusso di lavoro, ma con revisioni, contesto e regole condivise
Che cosa fa Impeccable
Impeccable aggiunge tre cose che, in un flusso con agenti AI, mancano spesso.
La prima è il contesto persistente. Con /impeccable init il progetto produce file come PRODUCT.md e DESIGN.md, cioè documenti che spiegano audience, obiettivi, registro visivo, voce, anti-riferimenti, colori, tipografia, componenti e regole. Non sono note decorative. Sono materiale che l’agente rilegge prima di intervenire.
La seconda è un vocabolario di comandi. Invece di scrivere ogni volta “rendi questa pagina più bella, professionale, ma non troppo”, usi comandi mirati:
/impeccable critiqueper una revisione di UX e visual design/impeccable auditper controlli tecnici su accessibilità, responsive, performance e implementazione/impeccable polishper il passaggio finale prima di consegnare/impeccable hardenper edge case, overflow, i18n, stati vuoti ed errori/impeccable typeset,layout,colorize,animate,distill,bolder,quieterper interventi più specifici
La terza è il rilevatore. Impeccable include una CLI di rilevazione che scansiona file o URL e segnala anti-pattern deterministici: non richiede un LLM, non richiede una chiave API e può essere usata anche fuori dal flusso conversazionale.
npx impeccable detect src/npx impeccable detect index.htmlnpx impeccable detect https://example.comnpx impeccable detect --json .Questo è importante perché un agente può giustificare una modifica anche quando sta introducendo difetti di UI. Un rilevatore non sostituisce la revisione, ma riduce alcune classi di regressione: font scelti per riflesso, padding troppo stretti, aree cliccabili troppo piccole, gerarchie saltate, pattern visivi consumati, scelte cromatiche fragili.
Prima di installare
I prerequisiti pratici:
- un progetto front-end reale, con repository Git e una struttura riconoscibile;
- Node.js, npm e
npxdisponibili nello stesso ambiente in cui userai l’agente; - un agente AI supportato, per esempio Codex CLI, Claude Code, Cursor, Gemini CLI, GitHub Copilot o OpenCode;
- area di lavoro Git pulita o comunque con modifiche già comprese e separate dalla configurazione di Impeccable.
Verifica versioni e stato Git:
node --versionnpm --versionnpx --versiongit status --shortDa qui in poi, quando non indicato diversamente, i comandi sono identici su macOS, Linux e Windows PowerShell.
Nota su Windows
Da molti anni non uso Windows come ambiente principale. Ho controllato i comandi PowerShell riportati in questo articolo, anche con il supporto di strumenti AI, ma se lavori stabilmente su Windows ti consiglio di verificarli nel tuo ambiente prima di inserirli in procedure condivise.
Esegui i comandi dal root del progetto. Per spostarti nella cartella del repository, su macOS e Linux:
cd /percorso/del/progettoSu Windows PowerShell:
Set-Location "C:\percorso\del\progetto"Se lavori in WSL, installa ed esegui Node, l’agente e Impeccable dentro WSL. Evita configurazioni miste in cui il repository sta nel file system Linux ma lo strumento AI o Node girano da Windows: percorsi e hook diventano più difficili da diagnosticare.
Un’area di lavoro Git pulita non è un requisito tecnico assoluto, ma è una buona pratica. L’installer può aggiungere cartelle di skill, manifest degli hook e file di configurazione. Se il progetto ha già modifiche in corso, diventa più difficile capire cosa sia cambiato.
Installazione consigliata
Dal root del progetto:
npx impeccable installSe PowerShell non risolve npx, usa l’eseguibile esplicito:
npx.cmd impeccable installLa stessa regola vale per gli altri comandi: sostituisci npx con npx.cmd solo se PowerShell non trova npx.
L’installer rileva gli strumenti disponibili, per esempio cartelle come ~/.claude, ~/.codex o .cursor, e chiede dove installare la skill: nel progetto oppure a livello globale.
In un team, io tendo a preferire l’installazione nel progetto quando la skill deve essere parte del flusso di lavoro di quel repository: la configurazione resta nel codice e può essere rivista come qualsiasi altra modifica.
Per script o configurazioni ripetibili puoi saltare le domande interattive:
npx impeccable install --providers=codex,cursor,claude --scope=projectAggiornamento:
npx impeccable updateQuesto è il percorso normale. Il repository documenta anche alternative come submodule Git, archivio ZIP o copia manuale dall’output dist/, ma le considererei opzioni di ripiego o scelte da team che vogliono includere esplicitamente il codice di Impeccable nel repository.
Installazione con submodule Git
Se vuoi tenere il codice di Impeccable dentro il repository, puoi usare un submodule Git:
git submodule add https://github.com/pbakaus/impeccable .impeccablenpx impeccable link --source=.impeccable --providers=codex,cursorSu PowerShell resta valido lo stesso comando; se necessario, sostituisci solo npx con npx.cmd nella seconda riga.
È una scelta più esplicita, ma anche più pesante: devi aggiornare il submodule e rieseguire impeccable link quando vuoi cambiare versione.
Nota specifica per Codex
Con Codex ci sono due dettagli da sapere.
Il primo: Impeccable installa skill, non “prompt” nel senso generico del termine. Nel README ufficiale viene chiarito che gli utenti Codex possono aprire /skills oppure invocare la skill con $impeccable, a seconda dell’interfaccia usata. Nei documenti ufficiali molti esempi sono scritti nella forma slash:
/impeccable audit/impeccable polish the header/impeccable liveIn Codex, se il comando slash non viene risolto come skill, usa la forma:
$impeccable audit src/pages/index.astro$impeccable polish the contact sectionIl secondo dettaglio riguarda gli hook. Per Codex, l’installer può creare .codex/hooks.json, ma l’approvazione resta esplicita. Dopo l’installazione o l’aggiornamento apri:
/hookse approva il design hook del progetto. Codex traccia la fiducia in base alla definizione dell’hook, quindi dopo un aggiornamento potrebbe chiederti di approvarlo di nuovo.
Inizializzare il contesto
Installare la skill non basta. Il passaggio decisivo è:
/impeccable initoppure, in Codex:
$impeccable initinit fa domande sul progetto e scrive contesto persistente. La distinzione più importante è fra brand e product.
Un sito marketing, una landing, un portfolio o un long-form editoriale sono superfici in cui il design è parte del prodotto percepito. Una dashboard, un back office o uno strumento operativo sono superfici in cui il design deve servire velocità, chiarezza, controllo e ripetizione d’uso.
Questa distinzione sembra banale, ma evita molte risposte sbagliate. Una pagina di vendita non deve essere trattata come una tabella amministrativa. Una console operativa non deve sembrare una campagna di brand. Senza contesto, il modello tende a mescolare registri.
Nei progetti già avviati può avere senso aggiungere anche:
/impeccable documentQuesto comando analizza il codice esistente e aiuta a generare un DESIGN.md coerente con quello che il progetto sta già facendo: token, colori, tipografia, componenti, ritmo, pattern ricorrenti. È particolarmente utile quando la UI esiste già e non vuoi che l’agente reinventi tutto.
Un flusso di lavoro realistico
Il modo peggiore di usare Impeccable è chiamarlo solo alla fine, dopo aver accettato trecento righe di front-end generico.
Un flusso più sano è questo:
/impeccable init/impeccable audit src/pages/index.astro/impeccable critique homepage/impeccable polish homepageSu un nuovo blocco di interfaccia:
/impeccable shape technical consulting hero/impeccable craft technical consulting hero/impeccable polish heroSu un’interfaccia già funzionante ma ancora grezza:
/impeccable layout customer dashboard/impeccable typeset customer dashboard/impeccable harden customer dashboardLa logica è semplice:
- Shape quando devi ragionare prima di costruire.
- Craft quando vuoi far seguire implementazione alla direzione definita.
- Critique quando vuoi una revisione, anche severa.
- Audit quando ti interessano i controlli tecnici.
- Polish quando il pezzo funziona, ma deve arrivare a livello consegnabile.
- Harden quando il problema non è più estetico, ma di robustezza in produzione.
Questi comandi servono a limitare il perimetro del lavoro. L’agente non sta “migliorando la pagina” in modo generico: sta facendo un audit, una critique, un polish o un hardening con criteri diversi.
Audit, critique e polish non sono sinonimi
Vale la pena separarli, perché nel lavoro quotidiano si finisce spesso a usarli come se fossero tre varianti di “controlla questa cosa”.
audit ha un taglio tecnico. Si usa quando vuoi trovare problemi verificabili: accessibilità, responsive, performance, interazioni, implementazione, stati mancanti.
/impeccable audit blog post pagecritique è più vicino a una revisione di UX e direzione visiva. Serve a capire se la pagina comunica bene, se la gerarchia tiene, se l’impressione è coerente con il pubblico e se il registro è quello giusto.
/impeccable critique landing pagepolish è il passaggio da “funziona” a “si può consegnare”. Non dovrebbe inventare un’altra direzione. Dovrebbe eliminare frizioni, incoerenze, piccoli problemi di ritmo, spaziatura, overflow, stati hover/focus e scelte non allineate al design system.
/impeccable polish pricing sectionPer un team, questa distinzione aiuta anche nella revisione umana. Un audit può produrre ticket tecnici. Una critique può produrre decisioni di direzione. Un polish dovrebbe produrre una diff piccola e intenzionale.
Usare i design hook
Gli hook sono uno dei pezzi più interessanti, perché spostano il controllo vicino al momento in cui il problema nasce.
Secondo la documentazione sugli hook, Impeccable può installare hook specifici per Claude Code, GitHub Copilot, Codex e Cursor. Il comportamento cambia leggermente in base allo strumento: alcuni eseguono il controllo dopo la modifica, Cursor può intervenire prima che una proposta venga applicata.
Per controllare lo stato:
/impeccable hooks statusPer abilitarli o disabilitarli:
/impeccable hooks on/impeccable hooks offQuando un finding è intenzionale, non bisogna silenziarlo a caso. Meglio registrare eccezioni strette, con una ragione:
/impeccable hooks ignore-value overused-font Inter --shared --reason "Brand font"/impeccable hooks ignore-file "src/legacy/Card.tsx"/impeccable hooks ignore-rule side-tabUn rilevatore utile produce anche falsi positivi. Il punto non è obbedire sempre, ma mantenere traccia delle eccezioni.
Live Mode
/impeccable live è la parte più sperimentale e, al tempo stesso, una delle più interessanti.
L’idea è lavorare nel browser su un dev server reale. Prima avvii il progetto:
npm run devPoi lanci:
/impeccable livepoi selezioni un elemento nella pagina: hero, scheda, modulo, blocco prezzi. Puoi descrivere cosa vuoi ottenere, scegliere azioni come bolder, quieter, distill, polish, typeset, colorize, layout, animate, delight, oppure lasciare commenti e segni sull’elemento. Impeccable genera varianti, le mostra nella pagina tramite HMR e, quando ne accetti una, scrive le modifiche nella sorgente.
La documentazione lo dichiara ancora in stato alpha. Va quindi usato con lo stesso criterio con cui si usa qualsiasi strumento potente ma giovane: branch Git dedicato, diff controllata, revisione attenta.
Non lo userei per “rifare tutta la pagina”. Lo userei per esplorare alternative su un elemento circoscritto, quando la UI è già leggibile e il contenuto è già reale.
La CLI di rilevazione fuori dall’agente
Il rilevatore non serve solo dentro la conversazione con l’agente. Puoi usarlo anche da terminale:
npx impeccable detect src/npx impeccable detect --json src/Puoi scansionare anche un file o un URL:
npx impeccable detect index.htmlnpx impeccable detect https://example.comIn PowerShell puoi usare anche la forma .\index.html per un file nella cartella corrente. Se npx non viene risolto, applica la stessa regola già vista: npx.cmd impeccable detect .\index.html.
La scansione URL usa un browser tramite Puppeteer. In CI o su macchine minimali può richiedere dipendenze di sistema aggiuntive; per partire, la scansione di src/ è più prevedibile.
In pratica, questo apre tre possibilità:
- controllo manuale prima della revisione;
- integrazione in CI con output JSON;
- configurazione di eccezioni condivise per pattern intenzionali del design system.
Le eccezioni possono vivere nella configurazione Impeccable o anche come commenti inline, per esempio quando una regola va disattivata in un file specifico per ragioni documentate.
Non bisogna confondere rilevatore e qualità complessiva. Un rilevatore vede alcune cose. Non vede la strategia, non conosce il posizionamento, non capisce da solo se una scelta forte è giusta per quel brand. Va usato come rete di controllo, non come criterio unico.
Come parlarci bene
Con una skill così, la qualità dell’input resta fondamentale.
Un comando povero:
/impeccable make this betterUn comando più utile:
/impeccable polish src/pages/index.astro focusing on mobile spacing, CTA hierarchy and text overflowAncora meglio, se il progetto ha contesto:
/impeccable critique the homepage against PRODUCT.md and DESIGN.md. Focus on whether the first viewport communicates senior technical consulting, not generic agency positioning.Esempi pratici:
/impeccable audit src/components/ContactForm.astro/impeccable harden the onboarding flow for empty states, long labels and error messages/impeccable typeset the article page so code blocks, h2 and long Italian headings feel balanced/impeccable quieter the pricing section without losing conversion intent/impeccable distill the customer panel header to the controls operators actually need every dayLa regola è: dai un bersaglio, un criterio e un limite.
Il bersaglio è il file, la route o la sezione. Il criterio è cosa deve migliorare. Il limite è cosa non deve cambiare.
Dove Impeccable non basta
Impeccable non risolve problemi che non riguardano l’esecuzione front-end.
Se il posizionamento è debole, la skill non lo inventa al posto tuo. Se i testi non dicono nulla, può ripulirli, ma non può sapere quale promessa commerciale sia vera. Se il design system è incoerente, può documentare quello che trova, ma servirà comunque una decisione umana su cosa tenere e cosa buttare.
Non sostituisce:
- una direzione creativa;
- una ricerca utente;
- un design system governato;
- una revisione di accessibilità completa;
- una persona responsabile della qualità finale.
Il valore è un altro: rende l’agente meno generico, più consapevole del contesto e più controllabile.
Come lo introdurrei in un team
Non partirei da Live Mode. Non partirei nemmeno dagli hook.
Partirei così:
- installazione nel progetto su un branch Git dedicato;
/impeccable initcon un tecnico e una persona di prodotto/design presenti;- revisione manuale di
PRODUCT.mdeDESIGN.md; - primo
/impeccable auditsu una pagina reale; - primo
/impeccable polishsu una sezione circoscritta; - confronto della diff in revisione del codice;
- solo dopo, attivazione degli hook.
Questo evita l’errore classico: installare uno strumento, lasciargli scrivere regole e poi subire le sue correzioni.
Impeccable va trattato come un collaboratore tecnico con una lista di controllo forte, non come un arbitro assoluto.
Una nota sul gusto
La parte più interessante di Impeccable non è che “sa fare design”. È che prova a trasformare parte del gusto in criteri leggibili dall’agente.
Questa è una differenza sostanziale.
Dire “non voglio una UI da template SaaS” è meglio di dire “fammi una cosa più curata”. Dire “questo brand usa un solo accento, niente gradient text, niente card annidate, niente hero metric” è ancora meglio. Dire “il pubblico è composto da decisori tecnici che stanno valutando un consulente, non da utenti che comprano un prodotto self-service” cambia il tipo di interfaccia che l’agente dovrebbe produrre.
Un senior questo lo fa già mentalmente.
Impeccable serve a renderlo esplicito, versionabile e riusabile.
Conclusione
Gli agenti AI accelerano il lavoro, ma peggiorano il front-end se non hanno vincoli buoni. Questo si vede presto, perché la UI è il punto in cui scelte tecniche, percezione, accessibilità, contenuto e brand si incontrano.
Impeccable è interessante perché non promette solo di “migliorare il design”. Porta un metodo: contesto, comandi, rilevazione, hook e iterazione nel browser.
Installarlo è semplice:
npx impeccable installUsarlo bene richiede più disciplina:
/impeccable init/impeccable audit/impeccable critique/impeccable polishLa differenza sta lì. Non nello strumento in sé, ma nel modo in cui lo inserisci nel processo.
Se lo usi solo alla fine, come rifinitura estetica, lo stai usando male. Se lo inserisci nel processo, può aiutarti a far produrre agli agenti AI interfacce più coerenti, più robuste e meno riconoscibili come output generico.
Domande su Impeccable
Impeccable sostituisce un designer?
No. Impeccable rende più disciplinato il lavoro degli agenti AI sul front-end: porta contesto, criteri, comandi e controlli automatici. Non sostituisce una direzione creativa matura, una ricerca utente o una revisione di prodotto fatta da persone competenti.
Serve solo con Codex?
No. Impeccable supporta diversi strumenti, tra cui Codex CLI, Claude Code, Cursor, Gemini CLI, GitHub Copilot, OpenCode e altri. Codex ha però alcune note specifiche: le skill possono essere locali o globali e il design hook va approvato dal comando /hooks.
Devo usarlo anche su progetti già avviati?
Sì, soprattutto se il progetto ha già un design system o una direzione visiva. In quel caso ha senso partire da /impeccable document o da /impeccable init, poi usare audit, critique e polish su superfici precise.
Il rilevatore basta per garantire qualità visiva?
No. Il rilevatore intercetta anti-pattern e problemi deterministici, ma la qualità visiva non si riduce a una lista di controllo. Va usato come rete di controllo, non come giudice unico.