L'hai mostrato una volta. Perché lo stai ancora facendo?
Skill Recorder è un'estensione Chrome che ti guarda eseguire un compito nel browser una volta — poi scrive un SKILL.md, una specifica in markdown puro che Claude Code (o qualsiasi agente sulla CLI browse) riproduce senza selettori, glue code o supervisione.
↑ un flusso di ordine d'acquisto di cinque minuti, registrato una volta e riprodotto per sempre.
Anatomia
Tre fasi, a un clic di distanza.
Quello che spediamo è una piccola estensione Chrome MV3 e una pipeline di distillazione da 4 KB. Il registratore aggancia chrome.debugger per fedeltà a livello DOM; la distillazione gira interamente nel service worker; la riproduzione legge il SKILL.md risultante tramite la CLI browse. Nessun server. Nessun glue code.
i.
Cattura
Pannello laterale
Skill RecorderREC
00:01click nav.Orders
00:02click btn.New
00:04focus #sku
00:05type "SKU-1029"
00:06blur #sku
00:08type "50" → #qty
00:09click btn.Submit
Una porta per frame nel content script inoltra ogni evento DOM al service worker. Shadow DOM e iframe della stessa origine vengono attraversati in modo trasparente.
Risolutore di selettori a 6 livelli (testid → id → aria → text → css → xpath)
tabPorts: Map<tabId, Map<frameId, Port>>
Buffer di input consapevole dell'IME · paste · drag
23 eventi →
ii.
Distilla
Service worker · 30 s
✓dedupe consecutive clicks23 → 16
✓fold keystrokes into type()16 → 11
✓detect inputs as {{params}}conf 0.94
✓mark auth boundary+1 precondition
✓parameterize URL segments2 swapped
✓flag dynamic-list clicks1 ⚠ note
Sei piccole passate trasformano un log rumoroso di eventi in una specifica deterministica. L'auto-parametrizzazione si attiva solo sopra 0,7 di confidenza; sotto, il registratore chiede invece di indovinare.
paramConfidence(step) — scala euristica
rilevamento auth-boundary — token opaco + cookie
UUID · ID numerico · email · data ISO · valuta
SKILL.md →
iii.
Riproduci
browse CLI
~/work $ claude
> create POs for these 50 rows
Reading ~/.claude/skills/create-purchase-order/SKILL.md
Loaded 4 steps · 2 params · 1 precondition
▸ resolving precondition: signed in to supplier portal
✓ cookie present, expires 2026-08-04
▸ running batch [50 rows]
✓ 50/50 in 3m 11s
✓ 0 retries, 0 manual rescues
La CLI browse legge SKILL.md come markdown puro — nessuno schema, nessun runtime, nessuna scappatoia. Ogni passo è verificabile.
ri-esecuzioni idempotenti · pausa + ripresa auth
log strutturati ↦ cronologia JSONL
funziona con Claude Code, Cline, shell semplice
Specifica
Cosa sopravvive a una registrazione? Tredici casi duri, end-to-end.
Il browser è pieno di trappole per i registratori — classi hashate, modali pigre, Shadow DOM, flussi multi-tab, composizione IME, drag-and-drop. Ogni riga sotto è una fixture reale nel playground; clicca su una qualunque per registrare tu stesso.
Tredici su sedici. Più quattro fixture composite — Notion, Linear, Jira, Salesforce — che concatenano da dodici a quindici di queste tecniche in un singolo flusso coerente. Vedi il playground →
Esempio elaborato
Un rituale browser di cinque minuti, distillato in trenta secondi.
Taccuino sul campoRegistrato 2026-02-19, 16:42 UTCRiprodotto 50× senza intervento
Ogni lunedì mattina un'ingegnera operativa di un piccolo fornitore apre lo stesso portale, clicca Nuovo ordine d'acquisto, incolla un SKU da un CSV, digita una quantità e clicca Invia. Poi rifà tutto. E di nuovo. Duecento righe a settimana, ogni settimana, da quattordici mesi. È un rituale di cinque minuti ripetuto finché il foglio non finisce.
È esattamente il tipo di compito a cui viene proposto un registratore — e esattamente il tipo su cui la maggior parte dei registratori inciampa. Il portale ruota gli hash delle classi Tailwind a ogni deploy. Il pulsante Invia vive dentro una riga di tabella dinamica che si rirende dopo ogni salvataggio. Il cookie di auth scade a mezzogiorno. Gli script Selenium contro questa pagina sopravvivono in media due settimane, poi iniziano silenziosamente a rompersi.
La registrazione
L'ingegnera fissa l'estensione alla barra degli strumenti, apre il portale, clicca Avvia registrazione e svolge il compito esattamente una volta. Otto clic, due valori digitati, un invio. Il pannello laterale mostra un feed in diretta degli eventi — rumore incluso: scroll, focus, blur, mousemove accidentali sull'icona di aiuto. Ventitré eventi catturati in 4,6 secondi.
Il log grezzo conserva tutto; la distillazione decide cosa conta.
La distillazione
main.example.p4
before / after23 eventi → 4 passi
— BEFORE (raw)
type"S" → #sku
type"K" → #sku
type"U" → #sku
type"-" → #sku
type"1" → #sku
type"0" → #sku
type"2" → #sku
type"9" → #sku
+ AFTER (distilled)
fill"#sku" with {{sku}}
+ AUTO-DETECTED
// 8 chars · alphanumeric · prefix SKU-
// confidence 0.94
Otto tasti diventano un fill parametrizzato — stessa forma ad ogni riproduzione.
Il passaggio di consegne
L'ingegnera mette il markdown risultante in ~/.claude/skills/create-purchase-order/SKILL.md e scrive una sola frase a Claude Code. L'agente trova lo skill per nome, risolve la precondizione (il cookie salvato è valido fino a mezzogiorno), itera sulle cinquanta righe del CSV e fa rapporto. Tre minuti e undici secondi dopo, il lavoro è fatto. Nessuno l'ha guardato girare.
claude code · stdout3 m 11 s · 0 tentativi
> create purchase orders for the rows in ~/Desktop/feb-orders.csv▸ Reading ~/.claude/skills/create-purchase-order/SKILL.md
✓ 4 steps · 2 params · 1 precondition
▸ Resolving precondition: signed in to supplier portal
✓ cookie present (expires 2026-02-19 12:00 UTC)
▸ Running batch (50 rows)
✓ 50/50 submitted
✓ 0 retries · 0 manual rescues
✓ median 3.8s per row · longest 5.1s
Una frase entra, cinquanta ordini escono. L'agente non ha fatto nemmeno una domanda.
Poscritto
Il costo di un rituale di cinque minuti, ammortizzato su un anno di lavoro.
Gratis durante la beta aperta. Nessun account, nessun upload, nessuna telemetria. L'intero bundle è 4,5 MB; le registrazioni vivono sulla tua macchina finché non scegli di esportarle.