Sistec · adozione IA · principi & ciclo di lavoro
Proposta operativa per adottare Claude e Claude Code in Sistec appoggiandosi a due canali di condivisione già noti e collaudati: il marketplace di plugin per le skill e la wiki-LLM per la conoscenza — più graphify per mappare e indicizzare ogni singolo progetto di codice.
Questo documento operativo segue e presuppone due documenti già prodotti. Leggili prima, in ordine:
CLAUDE.md, condivisione. Il perché e il
quanto stanno nei due documenti sopra; qui c'è lo strumento.Video: «Come io uso Claude Code» (Marco Manfrin).
Claude e Claude Code sono già progettati per essere usati e condivisi in un modo preciso: le skill si condividono
tramite il marketplace di plugin, la conoscenza tramite la wiki-LLM — il pattern di
Karpathy, di cui esiste già una demo funzionante in sistec-llm-wiki. A questi due canali si aggiunge un
terzo strumento, graphify — una skill che mappa e indicizza un repository in un
knowledge graph persistente in graphify-out/: la mappa del singolo progetto di codice.
Le autorità di riferimento sono la documentazione ufficiale di Claude Code per la parte strumento, il
pattern LLM-wiki di Karpathy per la condivisione della conoscenza e graphify per
l'indicizzazione del codice.
Rispetto alla proposta shared-ai (il modello collector / lease Graph-ETag / Orchestrator), questa
proposta non introduce un'infrastruttura nuova: si appoggia a due canali già esistenti e collaudati, più graphify come
mappa per-progetto del codice.
Claude Code non è una chat. È un agente che gira un ciclo. Dato un PROMPT,
Claude (1) raccoglie il contesto che gli serve, (2) agisce — modifica un file,
esegue un comando — e (3) verifica i risultati: controlla se ciò che ha fatto soddisfa il prompt.
Se non è completo, ripete il ciclo; quando lo è, termina. In qualsiasi momento puoi interromperlo, correggerlo o
aggiungere contesto. Tutto il resto di questo documento discende da qui.
PROMPT → [ raccogli contesto → agisci → verifica ] → DONE.Il ciclo si chiude solo quando i risultati sono verificabili. Da qui tutto il resto: se dai a Claude un modo di verificare (test, build, criteri di successo espliciti), lavora da agente e chiude il ciclo da solo. Se non glielo dai, resta una chat travestita che ti restituisce codice plausibile ma non provato. Dare a Claude come verificare è la singola scelta che rende utile tutto il resto.
Claude Code dà il meglio dentro il repository dell'app. È pensato per quello. Nel repo ha il contesto — il codice, la struttura, le dipendenze, le convenzioni — e soprattutto ha gli strumenti per chiudere il passo di verifica del ciclo: può fare build, eseguire i test, lanciare i comandi e leggerne l'output. Fuori dal repo diventa una chat che indovina; dentro il repo diventa un agente che prova.
Si lavora in git: un branch per feature, commit piccoli e verificabili, review prima del merge. Git non è un dettaglio di processo — è la rete di sicurezza che rende accettabile lasciare agire l'agente: ogni sua azione è un diff su un branch, ispezionabile e reversibile, mai una scrittura cieca e definitiva.
Le modalità meno prudenti (auto-accept dei file) diventano ragionevoli perché si lavora in git: se
qualcosa va storto è un git diff e un git restore, non un danno. Nessun repo, nessuna
rete di sicurezza — ed è lì che nascono le paure che portano a inventare infrastruttura al posto di usare lo
strumento.
Il contesto è la memoria di lavoro dell'agente: il tuo prompt, i file che legge, l'output dei comandi che esegue — tutto occupa spazio nella finestra di contesto, che è finita — ampia (circa 200.000 token, ~500 pagine di testo; fino a 1M su alcuni piani e modelli) ma non infinita. Quando si riempie, Claude Code compatta (riassume e scarta il superfluo per liberare spazio) — e la compattazione può perdere dettagli.
Il context rot è la conseguenza da conoscere: man mano che il contesto si riempie di roba irrilevante — lunghe esplorazioni, output verbosi, pezzi di feature diverse — la qualità delle risposte degrada. Non perché il modello peggiori, ma perché il segnale annega nel rumore. È il fallimento più comune, e non si cura con un prompt più elaborato: si cura tenendo il contesto pulito.
| Leva | Quando | Effetto sul contesto |
|---|---|---|
| /clear | inizio di una nuova feature | azzera tutto — niente bias dalla sessione precedente |
| /compact | stessa feature, contesto quasi pieno, devi continuare | riassume mantenendo la memoria del lavoro in corso |
| /context | vuoi ispezionare | mostra cosa sta occupando spazio |
| essere specifici | sempre, nel prompt | un prompt vago costa più contesto: costringe Claude a esplorare |
| subagent (§8) | esplorazioni, ricerche, review | il lavoro sporco avviene in un contesto separato; torna solo il risultato |
| spegnere gli MCP non pertinenti | server non usati nel progetto | gli MCP caricano tutti i loro tool nel contesto anche se inutilizzati |
La causa numero uno di risposte scadenti non è il modello che sbaglia: è la sessione lasciata correre troppo a lungo su troppi argomenti. Un /clear all'inizio di ogni feature vale più di qualsiasi prompt elaborato. Tratta il contesto come una risorsa scarsa da spendere bene, non da riempire.
Un buon prompt ha tre parti. (1) Preparare il terreno: dai il contesto e lo scopo — dove siamo, cosa c'è già. (2) Descrivere il compito: cosa fare, concretamente. (3) Fornire le regole: i vincoli e il criterio di qualità con cui misurare il risultato. Le tre parti insieme fanno la differenza tra un agente che centra il bersaglio e uno che va corretto tre volte.
«My app needs a dark mode implemented across the entire app. Can you create a toggle switch on the header that allows a user to toggle between light mode and dark mode? I need you to find a good contrast color that works based on my existing light theme.»
| Parte | Nel prompt d'esempio | Cosa fa |
|---|---|---|
| 1 · Prepara il terreno | «My app needs a dark mode implemented across the entire app» | fissa scopo e ambito: contesto prima del compito |
| 2 · Descrivi il compito | «create a toggle switch on the header that allows a user to toggle…» | azione concreta e localizzata, non un desiderio vago |
| 3 · Fornisci le regole | «find a good contrast color that works based on my existing light theme» | vincolo + criterio di qualità: come dev'essere fatto bene |
È il flusso di lavoro da cui parte tutto. Chi salta a «scrivimi il codice» paga dopo in correzioni. La sequenza corretta di una modifica è quattro passi:
Il posto più economico per cambiare direzione è il piano, prima della scrittura. Un minuto di revisione del piano risparmia mezz'ora di codice da rifare. Plan mode esiste apposta.
.claude, i comandi (deprecati) e le skillLa configurazione di Claude Code vive nella directory .claude del progetto: settings, skill,
subagent, hook. I comandi (gli slash-command scriptati) sono deprecati a favore
delle skill; al più si conserva una skill con l'invocazione automatica disattivata
(model-invocation=false) per i pochi casi che devono restare a scatenamento esplicito.
.claude: cosa vive nel progetto
(condiviso, committato) e cosa vive in ~/.claude (personale, mai committato). Clicca un file o
una cartella per i dettagli. Struttura secondo la documentazione ufficiale di Claude Code.Una skill non è un comando da terminale — non è git merge. È un
comportamento atteso. La sua description dichiara quando va usata, e Claude la
richiama da solo quando la situazione combacia. Esempio: Claude sta per scrivere nuovo codice →
scatta la skill «come scrivere i commenti del codice». Non la invochi tu a mano: la descrivi bene e lei si
attiva al momento giusto.
---
name: commenti-codice
description: Come scrivere i commenti del codice in questo progetto.
Usare QUANDO Claude sta per scrivere o modificare codice sorgente. // <- il "quando" è la parte che conta
---
... corpo della skill: le istruzioni vere e proprie ...
Se pensi a una skill come a un comando — «quando invoco /deploy esegue il deploy» — c'è
un problema alla base. Una skill non incapsula comandi deterministici. Se una procedura è
sempre uguale — build, copia, incolla — scrivi uno script bash o Python, o ancora meglio una GitHub
Action. Non serve una skill: è un'azione meccanica che si risolve con uno script, non un comportamento che
Claude deve interpretare.
Allo stesso modo, una skill che «analizza tutto il repo, cerca i metodi definiti e vede se sono chiamati da qualche parte» non ha senso. Non serve una skill per questo: scrivi mezza riga di prompt — «builda ed elimina tutti i warning di codice morto» — e se vuoi rigore, usa un linter, che esiste da quarant'anni. La skill non è un contenitore per rimediare alla mancanza di tooling: è un comportamento atteso per situazioni che richiedono giudizio, non automazione lineare.
Se la procedura che stai descrivendo si può scrivere in 30 righe di bash, non è una skill: è
uno script. Mettilo in scripts/ o in una GitHub Action. La skill serve quando c'è una decisione
da prendere, non un'istruzione da eseguire.
Conseguenza diretta: una skill non si invoca per nome. Non esiste un comando /analyze-log da
ricordare. Se la skill è scritta bene — con una description che descrive quando scatta —
basta scrivere «analizza i log e cerca il problema X» e il modello sceglie da solo la
skill giusta. L'interfaccia con l'utente è il linguaggio naturale, non un vocabolario di comandi da imparare. Non
serve sapere il nome esatto della skill né i suoi parametri: è il modello che decide se attivarla, in base alla
descrizione e al contesto.
Tradotto: se qualcuno chiede «come si chiama la skill per analizzare i log?» la domanda è già sbagliata. La risposta giusta è «descrivi cosa vuoi fare e la skill scatterà da sola».
141414, la skill nasce lì. La condivisione è un passo successivo ed esplicito (§9), non automatica.skill-creator. Esempio di skill
fatta bene: karpathy-guidelines.ponytail,
caveman (sito · github),
openspec (sito · github),
graphify (sito · github).
Non reinventare ciò che esiste già.CLAUDE.md è la memoria di progetto — e cosa viene caricato nel contesto«Le memorie di Claude» come le si immagina non esistono. Ciò che esiste è CLAUDE.md: la
memoria del progetto. Viene letto e appeso al prompt a ogni sessione. Deve chiamarsi
esattamente CLAUDE.md — è quel file a essere caricato nel contesto, non un AGENTS.md o un
QUALSIASI.md. Il suo contenuto descrive il progetto: «questo è la commessa X di ACME S.p.A., fa Y; stack;
comandi di build e test».
Qui sta la distinzione che governa tutto — cosa viene caricato nel contesto e quando:
CLAUDE.md → caricato per intero, sempre. Ogni sua riga è contesto pagato a ogni sessione. Quindi va tenuto compatto: solo ciò che serve sempre.description. Il corpo entra nel contesto solo quando la skill scatta (progressive disclosure). Puoi averne cento senza appesantire il contesto.paths nel frontmatter una rule entra nel contesto solo quando editi un file che combacia col glob; senza paths si carica all'avvio come CLAUDE.md (§7.3).CLAUDE.md per intero e sempre; delle skill solo la description (corpo on-demand); le rules solo sui file che combaciano col glob paths.description sempre, corpo on-demand
rules — solo sui file che combaciano (paths)
CLAUDE.mdRegola forte: le direttive — «fai così, non cosà» — non vanno in
CLAUDE.md, né in AGENTS.md, né in un qualunque *.md. Vanno in una
skill/<nome-skill>/SKILL.md. CLAUDE.md descrive il progetto; le skill
portano i comportamenti, e si caricano solo quando servono.
# Progetto Commessa 141414 — sistema HMI per ACME S.p.A. Stack: .NET / WPF. # Comandi build: msbuild ... · test: dotnet test // le regole di stile / "fai così" → NON qui, ma in skill/<nome>/SKILL.md
Lavorando a progetti di sviluppo si possono tenere specifiche redatte da Claude in file
.md — «perché ho creato questa classe», «come funziona questo modulo» — committate nel repo:
tutti gli sviluppatori le vedono. Ma attenzione: non sono una memoria di Claude. Se lavoro alla
feature A, a Claude non serve la feature B — precaricarla sarebbe solo inquinamento del contesto (il context rot del
§3). Le spec stanno nel repo per gli umani e vengono lette da Claude on-demand, quando servono, non appese al
contesto di ogni sessione.
CLAUDE.md non è una discaricaOgni riga in CLAUDE.md è contesto pagato a ogni sessione, per ogni feature. Direttive → skill.
Documentazione di una feature → .md nel repo, letto quando serve. Se CLAUDE.md cresce,
stai riempiendo il contesto di tutti con roba che serve a pochi.
Esiste una terza modalità di caricamento, tra CLAUDE.md (sempre, per intero) e le skill (solo la
description): le rules. Vivono in .claude/rules/ — un file .md
per regola — e portano le convenzioni di scrittura del codice: «i nomi delle classi in PascalCase»,
«commento XML su ogni membro pubblico». Sono l'eccezione mirata alla regola del §7.1: direttive in un
.md sì, ma solo perché caricate chirurgicamente, non a ogni sessione.
La chiave è il campo paths nel frontmatter: un pattern glob sui file — una «regex»
sullo scopo interessato — che decide quando la regola entra nel contesto.
paths. La regola si carica solo quando Claude tocca un file che
combacia col pattern. Le convenzioni del backend .NET pesano sul contesto solo mentre si edita un
*.cs — non quando si tocca un CSS.paths. La regola si carica all'avvio, per tutti i file — come una riga di
CLAUDE.md. Da usare con parsimonia, per lo stesso motivo del §7.2.// .claude/rules/dotnet-convenzioni.md --- paths: - "**/*.cs" // <- il glob: attiva la regola SOLO sui file .cs - "src/backend/**" --- # Convenzioni C# - Nomi delle classi in PascalCase. - Commento XML su ogni membro pubblico. ... le regole vere e proprie ...
Rispetto alla skill del §6.1 — che scatta sul comportamento («sto per scrivere codice») — la rule scatta
sul path («sto toccando questi file»). Sono complementari: la skill per il comportamento, la rule per
la convenzione legata a un tipo di file. Attenzione alla sintassi: è un glob (**/*.cs),
non una regex PCRE — stesso spirito, notazione diversa.
.cursor/rules di CursorIl nome coincide, il meccanismo no. In Claude Code le rules stanno in .claude/rules/ con frontmatter
paths. Lo stesso campo paths è accettato anche dalle skill (§6): identico formato glob,
identica attivazione mirata.
Esempi di rules reali (C#/.NET), distillate dalla codebase della commessa 5309 FAEL: github.com/marc04AM/AiFormation/tree/main/examples/rules.
Caso reale: «Andrea vuole sapere perché Marco ha fatto questa modifica.» La risposta deve stare nel repo — non nella testa di Marco, né in una chat perduta. Due approcci: uno legacy, uno da adottare.
Oggi (legacy) — l'archivio post-hoc. Un hook PostToolUse (dopo ogni Edit/Write)
inietta un prompt che costringe Claude a scrivere un file di razionale in
<repo>/.claude/claude-archive/: «perché ho fatto questa modifica». È committato nel repo e
non viene mai letto da Claude, se non su richiesta esplicita — documentazione per gli umani,
on-demand (l'applicazione concreta del §7.2). Funziona, ma ha due limiti: dipende da un hook custom,
e cattura il perché dopo — archeologia a valle, sulla singola edit, non sul disegno del cambiamento.
Da qui in avanti — spec-driven con openspec.
openspec
(github) ribalta la direzione:
la spec e la proposta si scrivono prima di toccare il codice — «allineare umani e AI sui requisiti
prima che inizi la scrittura». Il «perché» non si recupera più a valle: è la proposta, rivista prima, che
resta nel repo come documentazione viva in markdown.
.claude/claude-archive/ (legacy) | openspec (da adottare) | |
|---|---|---|
| Direzione | razionale dopo l'edit | spec/proposta prima del codice |
| Innesco | hook PostToolUse custom | flusso esplicito (/opsx:propose → apply → archive) |
| Granularità | la singola modifica | il cambiamento come unità: proposta + design + task |
| Dove vive | .claude/claude-archive/*.md | openspec/changes/<nome>/ → poi changes/archive/ |
| Lettura | solo su richiesta esplicita | è l'input su cui Claude implementa |
// struttura di openspec nel repo openspec/ ├── specs/ // fonte di verità: come il sistema si comporta ORA │ └── <dominio>/spec.md ├── changes/ // una cartella per cambiamento proposto │ └── <nome-cambiamento>/ │ ├── proposal.md // <- il "perché", scritto e rivisto PRIMA del codice │ ├── design.md // approccio tecnico │ ├── tasks.md // checklist di implementazione │ └── specs/<dominio>/spec.md // delta: solo ciò che cambia └── changes/archive/ // i cambiamenti completati finiscono qui
Ciclo: /opsx:propose (crea proposta, design, task, delta-spec) → revisione → /opsx:apply
(Claude implementa contro la checklist) → /opsx:sync (fonde i delta nelle spec) → /opsx:archive.
Si installa con npm i -g @fission-ai/openspec e openspec init, che genera le skill e i
comandi sotto .claude/ — coerente col §6: i comportamenti stanno nel .claude, non nel
CLAUDE.md.
L'archivio claude-archive è legacy: teneva il «perché», ma a valle e via hook
custom. Il pattern nuovo è spec-first: con openspec il «perché» si decide prima, si
rivede prima, e resta nel repo come spec viva. «Perché Marco ha fatto X?» → sta nella proposta, non in un'autopsia.
Un subagent gira in una finestra di contesto separata e restituisce al thread principale solo il risultato. È perfetto per il lavoro che sporca il contesto: le esplorazioni («dove sono gli endpoint di autenticazione?»), le ricerche, e la review a occhi freschi prima del commit — senza il bias accumulato dalla sessione. Si creano con /agents.
Gli agent team portano l'idea oltre: più agenti coordinati che affrontano sotto-compiti in parallelo, ciascuno nel proprio contesto. La regola resta una: delega ciò che sporca il contesto, tieni nel thread principale solo la conclusione. È la stessa disciplina del §3, applicata su scala.
Una skill nasce nel progetto (§6). Per condividerla si passa dal marketplace di plugin. Il
marketplace espone solo main; main ha una regola di protezione e non
accetta commit diretti. Per aggiungere una skill si apre una pull request al maintainer. È l'unico
modo sicuro di condividere skill: niente copie a mano che divergono, una sola versione canonica e revisionata.
Questo § è una panoramica. Il documento Il marketplace di plugin: dalle
esigenze alle skill condivise esplora il canale in profondità: cos'è una skill, come nasce da
un'esigenza, come si crea e valida con skill-creator (eval, benchmark, variance), come capire se
esiste già un tool o una skill, i criteri del marketplace ed esempi reali — per lo sviluppo software e non.
Per il cowork in ufficio valgono le stesse regole, ma su un marketplace diverso (interno). Stesso meccanismo, ambito diverso.
L'analisi completa delle skill già presenti nel marketplace Sistec — 6 integrate, 14 scartate, criteri, pattern e tabella di tracciabilità — è nel documento complementare Skill marketplace — audit e criteri di integrazione.
main protetto significa una sola versione canonica, sempre passata da una revisione. Niente drift,
niente «quale copia è quella buona?». La condivisione diventa un atto tracciabile — esattamente come un merge in git.
Regola utile di Anthropic: «i progetti conservano la conoscenza, le skill eseguono i compiti». Le skill portano il come — la procedura ripetibile (questo §); la conoscenza — il cosa, i fatti e i documenti — vive altrove, nella wiki-LLM (§10, approfondimento dedicato). Due nature, due canali.
Per la conoscenza inter-ufficio non serve inventare nulla: né un collector, né un lease
Graph-ETag, né un Orchestrator con un unico scrittore. Esiste un framework universalmente noto — la
wiki-LLM, il pattern di Karpathy (gist ufficiale) — e una demo funzionante è già in sistec-llm-wiki.
Questo § è una panoramica. Il documento sistec-llm-wiki: specifica, architettura e proposta di sviluppo esplora il pattern in profondità: architettura (sync, ingest, retrieval), le operazioni di ingest e query nel CLAUDE.md, roadmap in tre fasi da demo a produzione e casi d'uso concreti.
Il pattern è semplice: una cartella su OneDrive o NAS che tutti sincronizzano; tutti aggiungono i
documenti grezzi in raw/; l'AI fa ingest e retrieval. La
sincronizzazione la fa già OneDrive/il NAS. La canonicalizzazione la fa il retrieval dell'AI al momento della
domanda — non un maintainer con un mutex distribuito da progettare, costruire e verificare.
Marketplace e wiki condividono attraverso i progetti: le skill come comportamenti, la conoscenza come
fatti. Ma dentro ogni repository serve anche una mappa del codice — cosa c'è, come si collega,
chi chiama chi. Graphify la produce con un comando: /graphify (o
graphify install una tantum) estrae il repository — codice, docs, dipendenze — e scrive un
knowledge graph persistente in graphify-out/: graph.json,
GRAPH_REPORT.md, graph.html. Da lì l'agente interroga la mappa
(graphify query "…", path, explain) invece di rincorrere file, e la
rigenera quando il codice cambia (graphify update .). È la terza gamba del modello: il canale
marketplace dà le skill, la wiki dà la conoscenza, graphify dà l'indice del singolo progetto —
per-progetto, versionato in git, mai un servizio da mantenere.
sistec-llm-wiki in funzione: la struttura della cartella e la vista a grafo della conoscenza ingerita.Vista a grafo — entità e collegamenti estratti dai documenti: progetti
(progetto-atlas), persone (marco-manfrin, davide-conti…),
organizzazioni (sistec, acme-spa), concetti (strangler-fig-pattern)
e le fonti che li citano. Il retrieval naviga questi collegamenti.
Struttura — raw/ i documenti grezzi; wiki/ la conoscenza
canonicalizzata per tipo (concetti, decisioni, fonti, organizzazioni, persone, progetti);
index e log generati dall'ingest.
Il modello collector / lease Graph-ETag risolve, con un protocollo distribuito custom da costruire e verificare, un problema che OneDrive (sync) + il pattern wiki-LLM (ingest/retrieval) risolvono già. Meno pezzi da mantenere, nessun lease da dimostrare corretto, nessun singolo punto di orchestrazione. Tre nature, tre canali distinti: le skill (comportamenti) passano dal marketplace; la conoscenza (fatti, decisioni, appunti) passa dalla wiki-LLM; la mappa del codice (struttura, relazioni, dipendenze di ogni repository) la genera graphify per-progetto, versionata in git. Nessuno dei tre richiede infrastruttura nuova.
Nella wiki finisce l'output dell'analisi — dati, conclusioni, decisioni — non il racconto di come si è arrivati lì. Se l'operatore fa analizzare un log, la pagina deve contenere i risultati dell'analisi (cosa dicono i dati), non «ho analizzato il log X» né un riassunto compresso del lavoro fatto.
L'adozione non deve aspettare che tutti abbiano una licenza. Chi non ha ancora Claude può partire con opencode e modelli più semplici — meno contesto, ma gratuiti — per prendere confidenza con il ciclo agentico (§1) e con il lavoro in git (§2). Il modello mentale è lo stesso; si scala la potenza quando arriva la licenza. Nessuno resta fermo ad aspettare.
La stessa Claude si usa in tre modi. Chat è la conversazione che già conosci: domande, brainstorming, bozze. Code è ciò di cui parla tutto questo documento: costruire software nel repository. Cowork è la modalità agentica per il lavoro d'ufficio non di codice: gli dai un obiettivo, lo colleghi a cartelle e strumenti, e lavora da solo — ricerche, analisi cross-fonte, documenti finiti.
Il punto che conta per Sistec: Cowork e Code girano sullo stesso motore — sotto è Claude Code. Stessa natura agentica, stessi subagent (§8), stessa capacità di sostenere compiti lunghi. Cambia la superficie, non il motore. Chi in ufficio non scrive codice non parte da zero: usa lo stesso modello mentale del ciclo agentico (§1), su cartelle e documenti invece che su un repository.
Cowork legge una cartella del computer, capisce cosa è rilevante e ci risalva il lavoro finito. È esattamente il caso d'uso della wiki-LLM (§10): una cartella su OneDrive/NAS, i documenti grezzi, l'AI che fa ingest e retrieval. Nessuno strumento nuovo da inventare — la modalità c'è già.
Il ciclo agentico (§1) si chiude solo quando i risultati sono verificabili. Senza un criterio di verifica, Claude non sa se ha finito: indovina, produce codice plausibile ma non provato, e il ciclo si chiude per esaurimento del contesto, non per successo. Il modo più efficace per migliorare la qualità dell'output è dare a Claude un modo eseguibile di verificare sé stesso.
Tre caratteristiche, in ordine di potenza:
npm test,
dotnet build, ruff check. La build che passa è la forma più forte di verifica.{name}?». Si verifica con un grep o un
read, non con un test.| Prompt | Criterio di verifica | Giudizio |
|---|---|---|
| «Implementa login con JWT» | nessuno | ❌ Claude produce codice, non sa se funziona |
| «Implementa login con JWT» | i test auth.test.ts passano | ✅ ciclo chiuso: npm test dice se è fatto |
| «Aggiungi validazione email» | nessuno | ❌ plausibile ma non provato |
| «Aggiungi validazione email» | rg "email.*valid" src/routes/ trova il nuovo pattern | ✅ osservabile con grep |
| «Rendi il footer responsive» | «sembra giusto» | ❌ Claude non può verificare l'estetica |
| «Rendi il footer responsive» | la build non dà errori CSS + screenshoot con Puppeteer a 3 viewport | ✅ verificabile con tool |
Il modo più efficace per usare Claude Code è dargli un test che fallisce e dirgli di farlo passare. Il test è il criterio di verifica — e il ciclo agentico si chiude da solo quando il test passa. È la stessa dinamica del TDD, ma eseguita dall'agente invece che da te.
Il criterio di verifica va stabilito prima di scrivere codice, nel piano (§5). Se aspetti che Claude abbia finito per controllare, scoprirai errori quando costa di più correggerli. In fase di piano chiedi: «come facciamo a sapere che è fatto bene?». La risposta è il criterio di verifica — e va scritto nel prompt, non tenuto in testa.
«Aggiungi un campo "data di nascita" al form di registrazione. Criterio di verifica: (1) il test
form.test.ts passa senza modifiche al test esistente; (2) una validazione client-side rifiuta
date future; (3) la build non produce warning TypeScript.»
Non tutto va delegato a un agente. Claude Code è potente, ma ci sono cose che si fanno meglio e più veloce senza. Saperle riconoscere è parte dell'adozione matura — non è un fallimento dello strumento, è saperlo usare al posto giusto.
sed o
rg --replace in shell. Con Claude devi descrivere il pattern e verificare ogni file. Linea
di comando: 1 secondo. Agente: 5 minuti.jq è più veloce che descrivere il problema a Claude,
aspettare che scriva lo script, eseguirlo e verificare il risultato.Regola pratica: se puoi fare la cosa in meno di un minuto a mano, falla a mano. Se ti serve più di un minuto di descrizione, probabilmente Claude è la scelta giusta. Il punto di pareggio è intorno ai 30 secondi di digitazione vs 30 secondi di prompt — ma il prompt richiede verifica, la digitazione no.
«Ciò che può essere fatto senza un agente, può essere fatto meglio senza un agente.» Non perché Claude sia scarso — ma perché il giro prompt→attesa→verifica ha un costo che non sempre vale la spesa. Usalo per i problemi, non per le digitazioni.
Da stampare o tenere aperto in una scheda. Il minimo indispensabile per lavorare con Claude Code.
| Comando | Quando | Cosa fa |
|---|---|---|
| /clear | inizio nuova feature | azzera contesto — niente bias dalla sessione precedente |
| /compact | contesto quasi pieno, stessa feature | riassume mantenendo la memoria del lavoro in corso |
| /context | vuoi ispezionare | mostra cosa occupa spazio nella finestra |
| ! comando | eseguire in shell | lancio un comando e l'output entra nel contesto |
| Workflow — Explore → Plan → Code → Commit | |
|---|---|
| 1. Explore | In plan mode (sola lettura): Claude legge i file e capisce dove intervenire. Nessuna modifica. |
| 2. Plan | Claude produce un piano d'azione. Correggi qui — prima che una riga sia scritta. Definisci i criteri di successo. |
| 3. Code | Approvato il piano, Claude lavora la lista. Dagli un test come fonte di verità — così verifica da solo. |
| 4. Commit | Prima del commit, lancia un subagent reviewer. Poi genera il commit e fai push. Ripeti. |
| Template prompt in 3 parti | |
|---|---|
| 1 · Prepara il terreno | Contesto e scopo: dove siamo, cosa c'è già. «L'app ha un form di login in Vue, usa Pinia per lo stato» |
| 2 · Descrivi il compito | Azione concreta, non desiderio vago. «Aggiungi validazione email sul campo username» |
| 3 · Fornisci le regole | Vincoli + criterio di verifica. «Usa regex RFC 5322; i test esistenti devono ancora passare; la build non deve produrre warning» |
Se dai a Claude un modo di verificare il risultato (test, build, criterio esplicito), chiude il ciclo da solo. Se non glielo dai, è una chat travestita — codice plausibile, niente garanzie.
Prima di Claude Code viene Claude. Il corso ufficiale AI fluency — undici lezioni su claude.ai, dai fondamenti all'uso per ruolo — copre chat, progetti, artifact, skill, connettori e la modalità Research. È la base per chi non è sviluppatore, e il ponte verso Claude Code (§12). Disponibile come dispensa a parte: l'elenco delle lezioni a sinistra, il testo completo di ogni lezione a destra.
Dispensa · pagina a parte
11 lezioni con i testi completi · elenco a sinistra · Chat · Progetti · Artifact · Skill · Connettori · Research.
Il corso Claude Code — dodici lezioni, dai fondamenti agli hook — è disponibile come dispensa a parte: l'elenco delle pagine sulla sinistra, il testo completo di ogni lezione a destra, una pagina per markdown. Si apre in una pagina dedicata, fuori dal flusso di questo documento.
Dispensa · pagina a parte
12 lezioni con i testi completi · elenco a sinistra · una pagina per markdown.
| Versione | Data | Revisionato da | Modifiche introdotte |
|---|---|---|---|
| 1.1 | 2026-08-05 | Marco Manfrin @Sistec | Graphify come terza gamba del modello di condivisione. Aggiunto graphify per mappare e indicizzare
ogni singolo progetto di codice (graphify-out/, knowledge graph persistente, interrogabile con
graphify query). Aggiornati lede, §10 (paragrafo intro, Fig 3 con terza corsia «CODICE —
mappa del progetto», callout «Non reinventare l'infrastruttura»). |
| 1.0 | 2026-07-07 | Marco Manfrin @Sistec | Emissione iniziale. Proposta operativa alternativa a shared-ai: il ciclo agentico come
fondamento, Claude Code nel repository e in git, contesto e context rot (con grafico qualità/riempimento
finestra e widget interattivo «Esplora la finestra di contesto»), prompting in tre parti, il ciclo
Explore→Plan→Code→Commit, la directory .claude con comandi deprecati e skill (self-contained,
nate nel progetto, con §6.2 «Skills sbagliate — cosa NON sono» e §6.3 «Come si invoca una
skill», riferimenti reali a caveman, openspec e graphify),
CLAUDE.md come memoria di progetto e cosa viene caricato nel contesto, il ciclo di caricamento
a tre modalità in §7 (§7.3 «le rules» — convenzioni di codice attivate per paths/glob,
con esempi reali distillati dalla commessa 5309 FAEL — e §7.4 «il perché di una modifica», dall'archivio
post-hoc via hook al pattern spec-first openspec), subagent e agent team, il marketplace di
plugin per le skill, la wiki-LLM per la conoscenza (pattern Karpathy, no infrastruttura custom, con link al
gist ufficiale e Fig 4 screenshot demo sistec-llm-wiki), §12 «Chat, Cowork, Code — un
solo motore», §13 «Criteri di verifica — chiudere il ciclo», §14 «Quando NON usare Claude
Code», ⚡ Cheat sheet e l'accesso graduale via opencode. Quattro figure SVG (ciclo agentico,
caricamento del contesto a tre corsie, due canali di condivisione), un grafico, un widget interattivo e un
cheat sheet. Pagine a parte: corsi «Claude 101» e «Claude Code 101». In testa, riferimenti ai
due documenti a monte: la proposta (ai-adoption-propose.html, già accolta dalla Direzione) e
il piano ad alto livello (ai-adoption-plan.html). |