Verifiche periodiche
-
I nomi delle API citate nelle regole esistono ancora nelle versioni in uso (in particolare
AddOperationResult()eCreateResponse(result)diOperationResultsdi Marco Minerva; namespace e firme vanno verificati a ogni uso). -
Licenze da verificare al primo uso (mai controllate in sessione): Coravel, Serilog e i suoi sink, MailKit, Scrutor, coverlet, ReportGenerator, NetArchTest o ArchUnitNET, axe,
RabbitMQ.Client. Redis e RabbitMQ come servizi esterni: se la licenza non ti va più bene, l'alternativa BSD a Redis è Valkey. -
Licenza di Mailpit (SMTP di prova per test e sviluppo, servizio esterno già presente nell'infrastruttura, vedi
core.md§3 ebackend-email.md): da verificare al primo uso sul repository ufficiale. -
Le soglie di partenza sono ancora adatte: copertura 80%, p95 sotto 300 ms per le letture e sotto 1 s per le scritture, ultime 2 versioni dei browser.
-
Il
CLAUDE.mddel template rispecchia i campi che compili davvero ogni volta.
Risoluzione dei problemi
| Sintomo | Cosa controllare |
|---|---|
| Claude ignora una regola | Il modulo è in .claude/rules/ ed è caricato? Verifica con /context (i moduli con paths: si caricano solo quando si tocca un file corrispondente). La regola è scritta con "sempre/mai" o con "preferisci"? Se la sessione è lunga, ripeti la regola o apri una sessione nuova. |
| Claude usa una libreria vietata (MediatR, AutoMapper, Hangfire, Quartz.NET) | Ricordagli il divieto; controlla che core.md e backend.md siano in .claude/rules/. |
| Conflitto tra un modulo e il progetto | Vale il CLAUDE.md di progetto. Se il conflitto non è chiaro, Claude deve chiedere. |
| Un modulo non si carica | Verifica che sia in .claude/rules/ (non in rules-optional/) e, per frontend, backend e docker, che si sia letto o modificato un file corrispondente a paths:. |
| Le risposte non sono in italiano | La regola di lingua è in core.md §6 (codice in inglese, spiegazioni in italiano): controlla che core.md sia caricato. |
| Un hook blocca una scrittura che ritieni corretta | Se il pattern è legittimo, dichiaralo con una deroga kit-allow: <id> — <motivo> sulla stessa riga o su quella sopra (vedi Plugin). Per sospendere tutto il plugin: claude plugin disable kit@claude-config. |
Punti aperti
- Automazioni non configurate: i divieti di
git push --forcee--no-verify, e il blocco di push, PR, tag e rilasci senza approvazione del progetto, sono tecnici solo con il pluginkitinstallato; senza, valgono come regole scritte (git.md). Restano fuori dal plugin: lint automatico dopo ogni modifica edocker compose configquando cambiano i file Docker. I segreti nei commit sono bloccati dal plugin (guard-commandseguard-secrets), ma non da uno scanner comegitleaks. - Moduli mancanti: non esistono regole per un frontend Blazor né per il mobile (MAUI, Ionic + Capacitor, Flutter, React Native; la PWA è solo un'opzione nel
CLAUDE.md; per il mobile c'è solo la sezione minima «Mobile» disecurity.md, con rimando a OWASP MASVS), né una sezione dedicata a Dapper (solo la regola di scelta inbackend.md§1). Si creano come moduli ad hoc solo quando un progetto li richiede.
Aggiornare il template
Le regole si modificano nel template (.claude/rules/, .claude/rules-optional/, CLAUDE.md), non nelle copie dei progetti: vale per i progetti nuovi. I progetti già avviati hanno la loro copia e si riallineano su richiesta ("Riallinea le regole") o con copia-regole.bat (voce 2).
- Ogni revisione di
core.mdaggiorna versione e data nell'intestazione e aggiunge una sottosezione aCHANGELOG.md, sotto il titolo del giorno (un titolo## AAAA-MM-GGper giorno, con una sottosezione per intervento). - Il template ha un repository su GitHub (
AngeloDotNet/claude-config) con il flusso git flow: ogni modifica nasce da un branchfeature/obugfix/partito dadevelop, va in PR versodevelopcon squash, edevelopva inmaincon una PR che usa un merge commit. Il pluginkitsi aggiorna sulle macchine solo quando sale la sua versione (vedi Plugin). - Una regola che vale solo per un progetto va nel suo
CLAUDE.md, non nei moduli. - Quando una libreria cambia (Angular, PrimeNG,
OperationResults, FusionCache), rivedi le regole che la citano: Claude verifica la versione installata, ma le regole vanno tenute aggiornate. - Una modifica agli script o a
hooks/hooks.jsondel pluginkitraggiunge chi lo ha installato solo quando saleversioninplugins/kit/.claude-plugin/plugin.json: alla versione si aggiunge la voce di rilascio inCHANGELOG.md, poi si esegueclaude plugin marketplace update claude-configeclaude plugin update kit@claude-config(vedi plugin.md). Prima del rilascio:claude plugin validate. Se cambia il comportamento dei hook, si aggiorna anche la pagina Plugin, in italiano e in inglese: il sito non la genera dal codice. - Evita di far crescere i file: più sono lunghi, più alcune regole vengono trascurate. Se un modulo supera circa 200 righe, valuta di dividerlo.