Il playbook per l'SDLC nativo IA

Come trasformare il ciclo di vita dello sviluppo software con l'IA, fase dopo fase.

‍

  • CategoriaBest practice
  • ProdottoClaude Enterprise, Claude Code e Claude Tag
  • AuthorLouis Claxton
  • Data21 agosto 2026
  • Tempo di lettura51 min
  • Condividi
Prefer a PDF?
This playbook is also available for download — the same six stages, plays, and worked examples, laid out for reading offline or sharing with your team.
Download the PDF ↓

Il codice non è più il collo di bottiglia

Le organizzazioni hanno iniziato a utilizzare l'IA per scrivere codice a una velocità impensabile solo un anno fa, eppure i processi legati al codice non si sono evoluti allo stesso ritmo.

Molti team di sviluppo applicano ancora gli stessi gate di approvazione, le stesse revisioni, gli stessi passaggi di consegne e le stesse policy, che frenano gli incrementi di produttività ottenuti con soluzioni di programmazione agentica come Claude Code.

L'SDLC (Software Development Lifecycle, ciclo di vita dello sviluppo software) è il processo che porta il software dall'idea alla produzione. La maggior parte delle organizzazioni adotta una variante delle stesse sei fasi: pianificazione, progettazione, sviluppo, test, distribuzione e manutenzione del software. Tradizionalmente, ogni fase è un passaggio distinto, affidato a un ruolo diverso. Il team di product management scrive i requisiti, quello responsabile dell'architettura tecnica li traduce in progetti, il team di ingegneria li realizza, i team di QA delle aziende regolamentate verificano il software, i team di rilascio lo distribuiscono e quelli operativi monitorano i sistemi in esecuzione. Il lavoro passa da una fase all'altra attraverso documenti, ticket e approvazioni formali.

Il tradizionale ciclo di vita dello sviluppo software (SDLC) è fortemente incentrato sui processi per garantire responsabilità e controllo a ogni passaggio. Tuttavia, è stato concepito per massimizzare l'efficienza in un'epoca in cui la fase più costosa e dispendiosa in termini di tempo era scrivere e implementare il codice, cosa che oggi non è più vera. PRD, procedure di stima e revisioni della sicurezza del prodotto servivano tutti a imporre l'allineamento durante settimane, mesi o trimestri di lavoro di sviluppo.

L'SDLC tradizionale prevede inoltre controlli che presuppongono che ogni passaggio sia svolto da persone. Le organizzazioni che generano maggior valore hanno ripensato il proprio processo sulla base di ciò che l'IA agentica è oggi in grado di fare, garantendo al contempo la supervisione umana. In questa guida, traendo ispirazione dalla collaborazione con i nostri clienti, esaminiamo diverse best practice del nostro team di IA applicata per integrare Claude internamente in ogni fase dell'SDLC, così da accelerare lo sviluppo e rendere i processi più rapidi.

Quando il codice non è più il collo di bottiglia e la fase di sviluppo procede più velocemente di quanto l'SDLC tradizionale consenta, si verificano tre condizioni:

  • Il collo di bottiglia si sposta sui passaggi che precedono e seguono questa fase. Si tratta principalmente di pianificazione, revisione/test e distribuzione, che continuano a procedere a velocità umana.
  • I controlli non rispecchiano più la realtà e diventano ingestibili. Rivedere manualmente ogni riga aveva senso quando era una persona a scrivere il codice, ma non è più sostenibile quando gli agenti scrivono la maggior parte del diff.
  • I costi di governance aumentano perché le eccezioni continuano a essere gestite tramite riunioni e comitati con cadenza settimanale o mensile.
Il vincolo non è più la build; lo sono i passaggi a velocità umana a essa correlati. Questi ultimi mantengono la loro durata mentre la build si riduce a poche ore.

Prendiamo come esempio un collo di bottiglia legato alla sicurezza. I team di sicurezza sono dimensionati sulla produzione umana, quindi quando gli agenti moltiplicano il codice prodotto, o si allunga la coda di revisione oppure il codice viene rilasciato senza revisioni adeguate. Un'organizzazione soggetta a regolamentazione non può accettare nessuno dei due esiti, pertanto i controlli di sicurezza e sulle policy devono tenere il passo con gli agenti.

Per sfruttare appieno gli incrementi di produttività dell'IA agentica e garantirne la sicurezza, l'SDLC tradizionale richiede lo stesso livello di trasformazione affrontato dalla fase di implementazione.

Cos'è un SDLC nativo IA?

L'SDLC nativo IA è un processo ripensato che combina i consueti obiettivi di controllo con nuove modalità di applicazione. Anziché seguire un flusso lineare, il processo diventa un ciclo in cui l'IA è integrata in ogni punto. Il ciclo di vita dello sviluppo software nativo IA favorisce il trasferimento e l'attivazione automatizzati di sequenze operative successive, contribuendo a superare la natura manuale e macchinosa dei passaggi di consegne tra le fasi di un SDLC tradizionale.

Questo cambiamento viene anche definito SDLC agentico, SDLC IA o semplicemente sviluppo software agentico: le denominazioni variano, ma descrivono lo stesso concetto.

I cambiamenti nelle sei fasi di un SDLC nativo IA

La tabella seguente evidenzia gli estremi dello spettro tra l'SDLC tradizionale e l'SDLC nativo IA, supportato da Claude. La maggior parte delle organizzazioni si colloca in un punto intermedio tra le due colonne.

StageTraditional SDLCAI-native SDLC
PlanRequirements gathered by committee, distilled through workshops and sign-offs, written up by handClaude synthesizes pain points straight from the sources and captures them within intent.md which is human readable and machine actionable
DesignSpec written by analysts, parsed by designersRequirements and design compressed into one working session with an agent, guided by standards encoded as skills, versioned in git
BuildTests and code are handwritten and documentation is written after the main development happensTests and code are generated by AI and institutional knowledge is maintained as versioned machine-readable CLAUDE.md files and skills
TestQA gates at stage boundariesContinuous evals woven through implementation
DeployHumans review every line of code and governance occurs in review cycles, often inconsistentlyLayers of agentic review with human review reserved for regulated and critical code. Governance is enforced as the AI acts, with hooks as approval gates
MaintainHumans watch production for bugsAgents monitor live deployments. Any breached control band is diagnosed and written back into the loop as a new intent.md

Il filo conduttore della colonna di destra è l'artefatto sottoposto a commit. Ogni fase termina scrivendone uno nel sistema di controllo di versione (tra cui intent.md, spec.md, plan.md, il diff con i relativi test, la PR con i risultati della revisione e il registro degli incidenti) e la fase successiva inizia leggendolo. Nelle fasi iniziali, i file .md sono l'artefatto prevalente poiché un product owner e un agente possono entrambi leggere e intervenire sullo stesso file. A partire dalla fase di build, l'artefatto è costituito dal codice e dai relativi record. La catena di commit funge anche da traccia di audit: chi ha chiesto cosa, che cosa ha prodotto l'agente e chi lo ha approvato.

Gli esseri umani mantengono la responsabilità di ogni decisione che richiede capacità di giudizio. Nel mondo dell'SDLC agentico, l'attenzione umana si sposta insieme agli artefatti da revisionare.

Every stage commits an artifact the next stage can read. Together, the intent, the spec, the plan, the diff and the review findings are the audit trail.

I play

I play sono il fulcro del playbook e sono raggruppati in sei fasi non lineari (Pianificazione, Progettazione, Sviluppo, Test, Distribuzione, Manutenzione), che insieme coprono l'intero ciclo di vita.

Ogni play comprende:

  • cosa cambia;
  • come iniziare;
  • i passaggi concreti per l'implementazione;
  • le considerazioni sulla governance e
  • come misurare i risultati ottenuti.

I passaggi sono modulari e le organizzazioni possono scegliere di dare priorità alla trasformazione di fasi differenti in momenti diversi in base alle proprie esigenze specifiche. Ogni play indica le proprie dipendenze nella sezione "Prerequisiti", ulteriormente illustrata dal grafo delle dipendenze.

Una fase si conclude con il commit di un artefatto, e questo commit avvia la fase successiva. L'accettazione di intent.md attiva il passaggio di definizione dei requisiti e di progettazione, l'approvazione di spec.md attiva la modalità di pianificazione, il merge di una PR avvia la pipeline e il superamento di una banda di controllo in produzione genera il successivo intent.md, facendo così proseguire il ciclo.

Inizialmente, ogni passaggio viene eseguito manualmente tramite prompt con l'obiettivo finale di creare un ciclo in cui ogni artefatto accettato attiva il gate successivo. L'attenzione umana si concentra sui punti di controllo per rivedere ciò che l'agente ha segnalato, anziché ricominciare ogni fase da zero.

I play sono elencati per fase; le frecce indicano l'ordine in cui adottarli. I due aspetti non coincidono. Inizia da qualsiasi play color ocra, verso cui non punta nessuna freccia e che quindi non richiede prerequisiti. Per qualsiasi altro play, le frecce in entrata indicano i play da adottare prima.
01

Plan

Ideas stop waiting for someone to write them up. Intent is captured once, in the originator's own words, as a version-controlled artifact the next stage can act on.

Acquisizione come intent.md

Il file intent.md, che dà avvio al processo di sviluppo software, può essere generato attraverso percorsi diversi. Una persona ha un'idea, viene aperto un ticket oppure viene segnalato un incidente tramite un alert, come descritto nella Fase 6: Manutenzione.

Quando una persona ha un'idea, inizia un brainstorming con Claude e produce una bozza di specifica in markdown. Nell'SDLC tradizionale, la stessa persona deve poi convincere un membro del team di prodotto a mettere per iscritto l'idea insieme o per suo conto.

La bozza di specifica generata da Claude è leggibile dagli esseri umani, sottoposta a controllo di versione e immediatamente utilizzabile dalla fase successiva. La bozza viene salvata come intent.md.

Indipendentemente dal fatto che l'intento derivi da un evento scatenante o da un agente, i passaggi sono gli stessi: il product owner rivede e corregge l'intent.md scritto dall'agente prima che ne venga eseguito il commit.

TraditionalAn idea passes through backlog entries, user stories, story points, and refinement meetings before anyone can act on it. Ownership transfers at each handoff, so what reaches engineering is several steps removed from what the originator meant.
AI-nativeThe originator brainstorms with Claude and writes the result down as intent.md, a proto-spec in the originator's own terms. The artifact contains what is wanted, why, and under which constraints. Repeat processes are encoded via skills.
Getting started
Prerequisites
None.
Infrastructure
Claude access for people who are not engineers (claude.ai or Cowork); an agreed intent.md template; a shared, version-controlled home for intent that the product owner watches. For a single product the simplest home is an intent/ folder in the product repo. This setup keeps the artifact chain next to the code derived from it. A dedicated intent repo is only worth the overhead when intent spans many repositories, and in a monorepo it is a directory. The Stage 3: Build sidebar covers how this home relates to a Jira or requirements tool that already holds the record.

La configurazione è un'attività da svolgere una tantum per il team di piattaforma o di ingegneria. Un membro del team tecnico deve configurare la intent home e stabilire chi è autorizzato a scrivervi, poiché i contributi proverranno da tutta l'organizzazione.

Una volta creato il repository, quanti contribuiscono senza esperienza con git non hanno bisogno di utilizzarlo direttamente. Al contrario, un connettore al sistema di controllo di versione, ad esempio GitHub, consente a Claude di eseguire il commit dei file markdown per conto di queste persone da claude.ai o Cowork.

Come si procede con l'esecuzione

  1. Chi propone l'idea descrive il problema a Claude con parole proprie. Può spiegare cosa non è possibile fare attualmente, chi sarà interessato dall'idea, quale sarebbe una soluzione ideale oppure cosa esula dall'ambito. Non è necessario alcun linguaggio formale.
  2. Prosegui il brainstorming finché l'idea non diventa concreta. Claude pone le domande che farebbe un analista: ambito, utenti, vincoli e criteri di successo.
  3. Chiedi a Claude di scrivere il risultato come intent.md utilizzando il modello dell'organizzazione, che può essere codificato come Skill, configurata da un membro del team tecnico e validata da un responsabile. Il file può includere il problema, il risultato proposto, gli utenti e i sistemi interessati, i vincoli e le questioni irrisolte.
  4. Chi ha proposto l'idea corregge eventuali fraintendimenti di Claude.
  5. Esegui il commit di intent.md nell'archivio condiviso. Autore e timestamp vengono aggiunti al record e da quel momento il product owner prende in carico l'idea.
# Intent: claims status self-service
Author: J. Ortiz (claims operations). Status: draft.

## Problem
Customers phone the contact center to ask where their claim is.
Handlers spend roughly a third of call time on status-only queries.

## Proposed outcome
Customers see claim status, next step and expected date in the portal.

## Affected users and systems
Claims handlers, portal team, claims-core API.

## Constraints
No new PII in the portal session. Existing authentication only.

## Open questions
Do third-party loss adjusters need access too?

Considerazioni sulla governance

La prova è costituita dall'intent.md sottoposto a commit, che riporta l'autore, il timestamp e la cronologia completa delle revisioni. Viene registrato nella cronologia git della intent home. Il product owner approva e la decisione di accettare o rifiutare, che invia l'intento alla Fase 2: Progettazione, viene registrata come merge o come chiusura della revisione.

How to measure it
Leading indicator
Time from first conversation to a committed intent.md, read from git history on the intent home, which records author and time stamp. The expectation is to fall from a multi-week elicitation and refinement cycle to hours.
Lagging indicator
The survival rate, or the share of intent.md files that the product owner accepts into Stage 2: Design rather than closes. The accept or reject decision is recorded as the merge of the artifact or the closed review. Additionally, the number of changes made to the intent.md that are made after the first spec.md commit for the same change.
02

Design

Requirements and design collapse into one session. Policy is applied while the spec is written, not discovered in a review weeks later.

Requisiti e progettazione

Dopo l'approvazione del product owner, Claude prende l'intent.md accettato e produce una specifica di requisiti e progettazione. Questa procedura è guidata dalle Skills dell'organizzazione relative a brand, sicurezza, conformità e UX.

Il product owner rivede la specifica, ma non la scrive. L'obiettivo di questo processo è creare una specifica su cui il team di ingegneria possa basare la pianificazione, con le aree critiche già segnalate.

Il lavoro sul front-end ne è l'esempio più lampante. Dopo l'accettazione di intent.md, il product owner realizza il mockup del design in Claude Design (in versione beta) a partire da intent.md, lo perfeziona attraverso iterazioni e poi lo esporta in Claude Code per lo sviluppo.

TraditionalRequirements and design are separate phases run by separate teams. Analysts formalize the idea into requirements and designers then parse those back into a design. The separation exists for accountability, but it is slow and lossy.
AI-nativeBoth phases happen in a single prompted session. Claude takes intent.md and produces a requirements and design spec, constrained by the organization's skills, with areas of concern flagged.
Getting started
Prerequisites
Write an intent.md file, with brand, security, compliance, and UX policies written as skills.
Infrastructure
A product owner with Claude access. No engineering skill is required.

Come si procede con l'esecuzione

  1. Il product owner apre una sessione con le Skills dell'organizzazione disponibili e allega il file intent.md.
  2. Il prompt del product owner fa riferimento al file intent.md, indica i vincoli ed evidenzia le criticità. Inizialmente l'operazione viene eseguita manualmente, per poi essere codificata come comando slash a livello di organizzazione. A quel punto, l'accettazione dell'intent.md nell'intent home diventa il trigger: un processo non interattivo si avvia al momento del merge, l'esecuzione avviene caricando le Skills dell'organizzazione e il file spec.md viene inserito tramite commit come pull request (l'infrastruttura necessaria è trattata nel play CI/CD della Fase 5: Distribuzione). Da quel momento in poi, il primo intervento del product owner è la revisione.
  3. Lo stesso product owner rivede la specifica rispetto all'idea iniziale. La specifica risolve il problema dichiarato? Le questioni irrisolte del file intent.md hanno ricevuto risposta o sono state riportate nei passaggi successivi?
  4. Si affrontano prioritariamente le criticità segnalate, poiché corrispondono ai punti che un analista avrebbe inoltrato ai livelli superiori. Il product owner risolve ogni questione con il relativo policy owner prima che il team di ingegneria esamini la specifica.
  5. Si esegue il commit di spec.md insieme a intent.md. La coppia di file documenta cosa è stato richiesto e cosa è stato deciso.
  6. Il product owner decide se la specifica e l'intento possono procedere alla fase di sviluppo, consultando un responsabile tecnico per qualsiasi elemento classificato dall'organizzazione come a rischio più elevato. Questa decisione spetta sempre a una persona del team e l'accettazione della specifica avvia il play della modalità di pianificazione nella Fase 3: Sviluppo.

Come si presenta (il prompt)

Read the attached intent.md and produce a requirements and design spec for integrating it into our existing codebase. Apply the skills available to you so the plan conforms to our brand guidelines, security policies and UX standards. Document the spec fully as spec.md, ready to hand to the engineering team. Describe clearly any areas of concern, especially where you cannot satisfy contradicting policies.

Considerazioni sulla governance

Anziché emergere in una revisione svolta settimane dopo, la policy attiva viene letta e applicata contestualmente alla stesura della specifica. Le Skills dell'organizzazione fungono da vincoli sulla specifica. La specifica, il prompt che l'ha prodotta e le versioni della Skill attive vengono tutti registrati nel controllo di versione. Il product owner approva la specifica e inoltra le criticità segnalate ai responsabili delle policy indicati.

How to measure it
Leading indicator
Elapsed time between the intent.md commit and the spec.md commit for the same change (two git timestamps), compared with the old requirements-plus-design cycle.
Lagging indicator
Requirements rework after build starts. Count spec.md commits dated after the first plan.md commit for the same change. Git log will give this directly.
03

Build

Nothing is implemented without an accepted plan. Institutional knowledge becomes files the agent reads, and the guardrails run as code rather than as habits.

Claude Code in modalità di pianificazione come punto di partenza predefinito

Il team di sviluppo avvia le sessioni di Claude Code in modalità di pianificazione, fornisce a Claude il file spec.md approvato proveniente dalla Fase 2: Progettazione e lascia che il modello ponga delle domande, perfezionando il piano tramite iterazioni finché il membro del team non ne è soddisfatto.

TraditionalAn engineer reads the design and starts writing code. How the change will be made, down to which files and which tests, stays in the engineer's head or at best a ticket comment. Nobody else can review it. The first thing a reviewer sees is the finished diff, and by then rework is slow.
AI-nativeWork starts with a written plan that Claude produces in plan mode, where it can read the codebase without changing anything. The engineer corrects the plan before code is written, and the approved version is committed as plan.md for later stages to check against.
Getting started
Prerequisites
The intent artifact (intent.md or spec.md) if one exists, and the CLAUDE.md file helps.
Infrastructure
Claude Code with access to the repository.

Come si procede con l'esecuzione

  1. Chi si occupa di sviluppo avvia la sessione con Claude in modalità di pianificazione.
  2. Fornisce a Claude i file intent.md e spec.md e richiede un piano di implementazione che specifichi i file da modificare, l'ordine di esecuzione delle attività e i test che ne dimostrano la correttezza.
  3. Metti alla prova il piano chiedendo quali elementi la modifica potrebbe compromettere, quale passaggio è il più rischioso e quali altre opzioni Claude ha scartato.
  4. Itera finché un membro del team di sviluppo che non ha mai visto la conversazione non è in grado di implementare la modifica basandosi unicamente sul piano.
  5. Esegui il commit del piano approvato come plan.md. Il piano entra a far parte della traccia di audit e il play di revisione delle PR (Fase 5: Distribuzione) verifica il diff finale rispetto al piano stesso.
  6. Accetta il piano e lascia che Claude proceda con l'implementazione. Con un piano solido, l'implementazione richiede spesso un unico passaggio.
  7. Quando l'implementazione si discosta dal piano, aggiorna plan.md nello stesso commit. Valuta l'utilizzo di un hook per imporre la sincronizzazione tra i due elementi.

Come si presenta (plan.md)

# Plan: claims status self-service (from intent.md 2026-06-02)

## Files that change
portal/src/claims/StatusPanel.tsx (new), claims-api/routes/status.py,
claims-api/tests/test_status.py

## Order of work
1. Add the status endpoint behind existing auth.
2. Panel against the endpoint.
3. Wire into the portal nav.

## Risks
The claims-core API rate-limits at 50 rps; the panel must cache.

## Proof
test_status.py covers the four claim states; screenshot matches the
approved mock.

Considerazioni sulla governance

La revisione della progettazione avviene prima della generazione di qualsiasi codice, quando un cambio di rotta consiste ancora nella modifica di un documento. La modalità di pianificazione lo impone di per sé, poiché Claude non può modificare i file finché chi sviluppa non accetta il piano. Il piano e le relative revisioni vengono registrati insieme a chi li ha accettati. Le modifiche di routine vengono approvate dal membro del team di sviluppo, mentre tutti gli aspetti che l'organizzazione classifica come a rischio più elevato vengono affidati a un responsabile tecnico o a un architetto.

How to measure it
Leading indicator
Share of changes that merge from the first implementation pass, and time from plan approval to merged PR with the required data within the PR metadata.
Lagging indicator
Rework cycles per change, again from the PR metadata, and how often the merged diff still matches the committed plan.md.

Claude Code in modalità automatica

Claude Code può essere eseguito anche in modalità automatica: chi sviluppa approva il piano e, una volta soddisfatto e dopo le iterazioni necessarie, Claude applica ogni modifica senza richiedere conferma per ciascun intervento. Man mano che si sviluppano meccanismi di protezione previsti dai play successivi, ovvero un file CLAUDE.md ottimizzato, Skills che codificano le policy, hook che bloccano le azioni non sicure e una suite di test eseguibile da Claude, l'accettazione automatica diventa l'impostazione predefinita per le attività di routine: un file spec.md ben definito, un raggio d'azione limitato e codice già coperto dai test.

Il baricentro si sposta dall'utente che osserva l'agente effettuare le modifiche e ne rivede le azioni, alla revisione degli artefatti al termine di sessioni autonome più lunghe. La modalità di accettazione automatica favorisce ulteriormente il lavoro in parallelo tra persone e team, se utilizzata con i worktree, risultando fondamentale per eseguire l'SDLC in autonomia e chiudere il ciclo, come descritto nella Fase 6: Manutenzione.

Sidebar

Legacy systems and the source of truth

Applies to every artifact the process produces.
Existing SDLC processes likely already track artifacts, just not in markdown files. Work items may be in Jira, requirements in a tool with regulatory traceability built in, designs in Figma, and change approvals with a change board. Those systems are hard to displace because auditors and regulators already accept them and other teams depend on them, so the AI-native SDLC has to fit around what exists.
When transitioning to the AI-native SDLC, for every artifact the process produces, name one system as the source of truth, with everything else holding a copy or a link to the original. The configurations below can be set up to have one source of truth, with the choice differing per artifact:
The repo as the source of truth. The markdown artifacts are the authoritative record and the legacy system references files within commits. This can be one of the cleanest configurations for engineering-led organizations, as all records live in one tool with one timestamp authority.
The legacy system as the source of truth. Jira, ServiceNow, or the requirements tool holds the authoritative record and the markdown artifacts are working copies. Claude reads the record at the start of the session and writes the outcome back through an MCP connector in the same session that produced the spec or the plan.
Linkage as the minimum bar. All artifacts note the record ID and all legacy records contain the commit SHA of the markdown file. Linkage is a good place to start when transitioning to the AI-native SDLC, accepting that there are two sources of truth.
Both the legacy system and the markdown-first system can coexist, so long as there is a link between the two or one is declared the source of truth.

Il file CLAUDE.md

Il file CLAUDE.md fornisce a Claude il contesto di cui un nuovo membro del team avrebbe bisogno: convenzioni, comandi, architettura e gli errori riscontrati più frequentemente. Le conoscenze in precedenza custodite nella memoria delle persone e su wiki diventano un file letto dall'agente all'inizio di ogni sessione, mantenuto dall'intero team e perfezionato ogni volta che si verifica un errore.

Getting started
Prerequisites
None.
Infrastructure
A repo, Claude Code installed, and one engineer who knows the codebase well.

Come si procede con l'esecuzione

  1. Esegui /init nel repository. Claude genera un file CLAUDE.md iniziale in base a ciò che trova.
  2. Riduci il file generato inserendo solo le informazioni essenziali per il primo giorno di un nuovo membro del team. Mantieni i comandi di build, test e lint, le convenzioni importanti e i punti su cui Claude continua a sbagliare.
  3. Aggiungi CLAUDE.md a git nella radice del repository, in modo che l'intero team ne condivida un'unica versione e le modifiche vengano riviste come codice.
  4. In questo caso è utile una regola pratica. Quando Claude commette lo stesso errore due volte, la correzione viene inserita in CLAUDE.md.
  5. Mantieni il file entro una pagina, perché Claude lo legge per intero all'inizio della sessione e qualsiasi contenuto obsoleto occupa contesto senza offrire alcun vantaggio.

Come si presenta (CLAUDE.md)

# Payments service

## Commands
- Build: make build
- Test: make test (unit), make itest (integration, needs docker)
- Lint: make lint (runs in CI; fix before pushing)

## Conventions
- Java 21, Spring Boot 3. No new Lombok.
- Money is always BigDecimal, never double.
- Every endpoint needs an integration test in src/itest.

## Architecture
- api/ holds REST controllers, core/ holds domain logic,
  adapters/ talks to external systems.
- Kafka events are defined in schemas/; never edit generated classes.

## Things Claude gets wrong
- Do not bump dependency versions; the platform team owns them.
- The legacy v1/ package is frozen; changes go in v2/.

Considerazioni sulla governance

CLAUDE.md è sottoposto a controllo di versione, pertanto le istruzioni seguite dall'agente sono revisionabili e verificabili. Le convenzioni del team vengono applicate tramite questo file, le relative modifiche sono registrate nella cronologia di git e i code owner le approvano durante la revisione delle PR.

How to measure it
Leading indicator
How often Claude repeats a mistake CLAUDE.md should have caught. The corrections or changes to the CLAUDE.md should be tracked within the git history.
Lagging indicator
Time to first merged PR for a new member of the team from PR history.

Le Skills come conoscenza istituzionale

Le Skills rappresentano lo strumento con cui un'organizzazione rende operativa la propria conoscenza istituzionale. Le istruzioni sono esplicite, sottoposte a controllo di versione, applicate in modo esteso e aggiornate centralmente in caso di modifiche alla policy. Una regola generale: scrivi una Skill per la conoscenza istituzionale che deve essere applicata in modo coerente; non scriverne una per elementi che appartengono a CLAUDE.md o a un prompt.

Getting started
Prerequisites
None required. Having a CLAUDE.md helps, because it keeps the agent's working knowledge in the repo, but a skill does not depend on it.
Infrastructure
One policy with a named owner and a written source of truth.

Come si procede con l'esecuzione

  1. Scegli un elemento di conoscenza che attualmente viene applicato in modo incoerente. Potrebbe trattarsi di uno standard di sicurezza, una convenzione di progettazione delle API o una regola di brand.
  2. Scrivilo come una Skill, ovvero una cartella contenente un file SKILL.md il cui frontmatter definisce le condizioni di attivazione e il cui corpo specifica le azioni da compiere. Un membro del team di sviluppo la scrive partendo dalla fonte di verità del responsabile della policy, con l'aiuto di Claude.
  3. Inserisci la Skill nel repository in .claude/skills/<name>/ in modo che venga distribuita insieme al codice, oppure distribuiscila a livello di organizzazione tramite un plugin.
  4. Verifica l'attivazione della Skill. Chiedi a Claude di eseguire l'attività pertinente in modi diversi e controlla che la Skill venga caricata ogni volta.
  5. In caso di cambiamenti della policy, aggiorna la Skill e fai approvare la modifica dal responsabile della policy.
  6. Il team di sviluppo riceverà automaticamente la nuova versione nella sessione successiva.

Come si presenta (.claude/skills/secure-api-review/SKILL.md)

---
name: secure-api-review
description: Apply the API security standard. Use whenever creating or
  modifying an external-facing endpoint, reviewing API code, or
  generating an OpenAPI spec.
---
# Secure API review

When you create or change an API endpoint:
1. Authentication: every endpoint requires the gateway JWT;
   no anonymous routes outside /health.
2. Input validation: validate request bodies against the OpenAPI
   schema and reject unknown fields.
3. Audit: every state-changing endpoint emits an audit event with
   actor, action, entity and timestamp.
4. Data classification: fields tagged pii in the schema must never
   appear in logs or error messages.

Run scripts/check-endpoints.sh and include its output in your summary.

Considerazioni sulla governance

Una Skill è un controllo, seppur di tipo consultivo. Rende probabile che Claude applichi la policy durante la scrittura del codice, ma nulla obbliga una sessione a conformarvisi. Una policy che deve essere sempre rispettata richiede un meccanismo deterministico a supporto della Skill, come un hook che blocca l'azione o un passaggio di revisione che ricontrolla la policy al momento della PR. La Skill rende le violazioni rare mentre l'hook le rende quasi impossibili. Le invocazioni della Skill vengono registrate nelle tracce di sessione e il responsabile della policy rivede le modifiche alla Skill come codice.

How to measure it
Leading indicator
Time from the policy owner approving a policy change to the updated skill merging, taken from the PR on the skill folder.
Lagging indicator
PR reviews findings that cite the policy, which should fall towards zero once the skill is applying the policy while the code is written. Where the findings don't fall towards zero, either the skill isn't triggering or its text has drifted from the official policy.

Gli hook come barriere di protezione in fase di build

Una Skill rappresenta un controllo consultivo, mentre un hook costituisce il livello deterministico sottostante. La maggior parte delle azioni di Claude durante l'implementazione consiste in modifiche ai file e comandi di shell, quindi la fase di build è quella in cui gli hook tendono ad attivarsi più frequentemente.

Gli hook della fase di build possono:

  • bloccare le modifiche a percorsi protetti, come classi generate o un pacchetto congelato;
  • eseguire il formatter e il linter dopo le modifiche ai file per evitare l'accumulo di incoerenze;
  • impedire l'inclusione di credenziali nel diff.

Affianca un hook a qualsiasi Skill la cui policy debba essere rispettata senza eccezioni. Un hook viene eseguito per ogni azione corrispondente, quindi gli hook della fase di build devono essere rapidi e limitati al file modificato. I controlli più complessi, come l'intera suite di test, vanno collocati al momento del commit o della PR.

Un hook che richiede l'approvazione umana deve essere associato ai gate della Fase 5: Distribuzione, perché un prompt di approvazione durante la build reinserisce una persona nel percorso critico di tutte le sessioni in esecuzione in parallelo.

Sessioni parallele e subagenti

Un solo membro del team di sviluppo può gestire più flussi di lavoro contemporaneamente.

Una sessione parallela è un'altra istanza completa di Claude Code, che elabora un'attività distinta nel proprio git worktree. Ogni sessione indipendente ignora l'esistenza delle altre e l'unico elemento condiviso è la persona del team di sviluppo che le coordina.

Un subagente viene eseguito all'interno di una singola sessione come assistente con un ambito definito e dotato di una propria finestra di contesto e limiti sugli strumenti, ed è adatto a compiti ricorrenti in più attività, come la verifica del corretto funzionamento dell'app.

Le sessioni parallele aumentano il numero di attività che un membro del team di sviluppo può avere in corso, mentre i subagenti mantengono ogni sessione concentrata sulla propria attività. Il compito di chi sviluppa consiste nel coordinarle e revisionarle tutte.

TraditionalOne engineer works one task at a time and spends a significant portion of their day or week on builds, tests and reviewers. Switching between tasks while waiting is possible, but the context switch is tiring enough that few people choose to.
AI-nativeOne engineer runs several Claude sessions at once, each in its own worktree on its own task. Repeated jobs become subagents with their own context and tool limits. The engineer's job shifts to orchestrating, and eventually, to building and monitoring loops.
Getting started
Prerequisites
The CLAUDE.md, since all sessions read the file. The feedback loop (Stage 4: Test) also helps here, because less supervision from the engineer is needed when a session can verify its own work.
Infrastructure
A git repository, since isolation comes from worktrees and permission settings tuned so sessions are not waiting on approval prompts for commands the organization considers safe.

Come si procede con l'esecuzione

  1. Chi sviluppa suddivide il lavoro in attività che riguardano file diversi, utilizzando il piano definito nel play relativo alla modalità di pianificazione (Fase 3: Sviluppo) per individuare le aree di indipendenza operativa. Le attività che prevedono la condivisione di file vengono eseguite in un'unica sessione, una dopo l'altra.
  2. Ogni attività parallela ha il proprio worktree, ad esempio claude --worktree feature-auth in un terminale e claude --worktree fix-rate-limit in un altro. Un worktree è una copia locale separata basata su un proprio branch, che impedisce alle sessioni di entrare in conflitto sui file.
  3. Due o tre sessioni sono un punto di partenza ragionevole. Il limite pratico è determinato dal numero di flussi che una persona riesce a rivedere adeguatamente, quindi conviene aggiungere sessioni solo fintanto che la capacità di revisione tiene il passo.
  4. Trasforma i compiti ripetitivi in subagenti, definiti all'interno di file markdown in .claude/agents/, ciascuno dotato di un nome, di una descrizione del contesto d'uso e degli strumenti ai quali può accedere. Gli esempi includono un code simplifier che rimuove complessità superflue dopo il completamento del lavoro dell'agente principale, un verifier che esegue l'app e ne controlla il comportamento, un researcher che esplora la codebase e restituisce i risultati senza sovraccaricare il contesto principale. Le definizioni devono essere inserite in git in modo che l'intero team le condivida.

Come si presenta (.claude/agents/verifier.md)

---
name: verifier
description: Runs the app and checks the change works before the session
  reports done
tools: Bash, Read
---
Start the app with make run. Exercise the changed behavior and the two
nearest neighboring flows. Report what you ran, what you saw, and any
behavior that does not match plan.md. Do not fix anything; report only.

Considerazioni sulla governance

Un numero maggiore di sessioni genera più output, quindi i controlli devono derivare dalla configurazione nel repository. Gli hook e le impostazioni di autorizzazione lì definiti si applicano a tutte le sessioni e le azioni di una sessione vengono registrate e attribuite al membro del team di sviluppo che l'ha avviata.

How to measure it
Leading indicator
Concurrent sessions per engineer while review quality holds, counted from the OpenTelemetry export, and the share of the day spent steering rather than waiting.
Lagging indicator
Changes merged per engineer per week read alongside the rework rate as determined per the PR history.
04

Test

Every session checks its own work before a human sees it, and the configuration that steers the agent gets regression-tested like the code it writes.

Fornire a Claude un ciclo di feedback

Fornisci sempre a Claude un modo per verificare il proprio lavoro, che si tratti di test, di una build o di un confronto tra screenshot. Una sessione verifica il proprio operato e corregge gli errori prima che se ne accorga un membro del team di sviluppo.

Il ciclo di feedback non deve essere confuso con un subagente verificatore (Fase 3: Sviluppo). Il ciclo di feedback viene eseguito sull'intera attività tante volte quante ne richiede il lavoro. Il subagente verificatore, d'altro canto, rappresenta un modo per racchiudere il controllo finale avviando una nuova finestra di contesto quando la sessione ritiene concluso il lavoro. In questo modo, il giudizio non è influenzato dalle ipotesi che hanno generato il codice.

TraditionalThe signal that code works arrives late. CI minutes later, a tester days later, production weeks later. With an agent producing the code, a late signal means a person has to check all of its output, and that person becomes the bottleneck.
AI-nativeThe session is given a way to check its own work before a person sees it. Run the tests, run the build, take the screenshot. Claude iterates until the check passes, so what reaches the engineer has already passed it. Setting the loop up falls to the engineer running the session, and the steps below are written for them.
Getting started
Prerequisites
None.
Infrastructure
A test suite and a build that run locally with one command each. For the UI work, a way for Claude to see the result is crucial, either a browser tool or a screenshot utility wired in via MCP.

Come si procede con l'esecuzione

  1. Se la verifica del lavoro richiede attualmente una sequenza di comandi e una certa conoscenza dell'ambiente, racchiudila in un unico target, ad esempio "make test" o "npm test", che restituisca un codice di uscita diverso da zero in caso di errore.
  2. Nella sezione Commands del file CLAUDE.md, elenca ogni comando accompagnato da un esempio di output corretto.
  3. Definisci un obiettivo e rendilo quantificabile in modo che Claude possa verificare il lavoro senza doverti porre domande, ad esempio: "Tutti i test in test_status.py hanno un esito positivo", "lo screenshot corrisponde al mockup allegato" o "l'endpoint restituisce 200 con il nuovo campo".
  4. Per la correzione dei bug, scrivi prima il test che fallisce. Chiedi a Claude di riprodurre il bug sotto forma di test, eseguirlo e confermare che fallisca per il motivo previsto. Esegui il commit di quel test. Solo a quel punto chiedi a Claude di farlo passare senza modificare il test, lasciando che sia l'hook sul file di test del passaggio finale a far rispettare questa restrizione. Un test esistente prima della correzione e che l'agente non ha potuto riscrivere rappresenta la prova che il bug è stato eliminato.
  5. Per il lavoro sull'interfaccia utente, completa il ciclo con una verifica visiva. Fornisci a Claude un browser o uno strumento per gli screenshot, insieme al mockup, e lascia che proceda per iterazioni. Implementa, acquisisci uno screenshot, confronta e regola. Due o tre cicli rappresentano la norma e il risultato dovrebbe migliorare a ogni passaggio.
  6. Rendi la verifica parte della definizione di "completato". Le istruzioni risiedono in CLAUDE.md. Esegui i test prima di dichiarare completata un'attività e mostrarne l'output.
  7. Infine, il ciclo stesso deve essere protetto, perché un agente che corregge il codice non deve avere la possibilità di indebolire il controllo su quel codice. Un hook che blocca le modifiche ai file di test durante un'attività di correzione ottiene questo risultato. In alternativa, è possibile verificare il diff in fase di revisione e rifiutare qualsiasi modifica che riguardi un test.

Come si presenta (il blocco di verifica in CLAUDE.md)

## Verifying your work

- Build: make build (must finish with "Build succeeded")
- Test: make test (all green; never skip or delete a failing test)
- Lint: make lint (zero warnings)

Run all three before reporting any task complete, and paste the output.
If a test fails, fix the code, not the test.
Governance considerations
What is enforced
Verification before a task is reported done, and the block on the agent editing test files during a fix, both implemented as hooks where the organization wants them guaranteed.
What the evidence is
The literal output of "make test," the build log, or the screenshot diff that Claude ran and pasted, so the evidence comes from the toolchain.
Where it is logged
In the session transcript, which the OpenTelemetry export forwards to the organization's observability stack, and in the PR's check run, where the reviewer and any later auditor can both see it.
Who approves
The code owner reviewing the PR, who can concentrate on intent and risk because the mechanical evidence is already attached.
How to measure it
Leading indicator
First-pass CI success rate for agent-written changes, which the CI system already supports.
Lagging indicator
Review time per PR (from the PR metadata), which should fall once the tests catch what reviewers used to catch, and the change failure rate from an incident tracker.

Eval continue nella CI

Le eval sono l'equivalente nativo IA del controllo qualità stage-gate. In pratica, si tratta di una suite che viene eseguita ogni volta che cambia la configurazione dell'agente. Quando viene introdotto un nuovo modello o riscritto un prompt, la suite di valutazione indica se l'agente continua a svolgere il lavoro con lo stesso livello qualitativo.

Le eval dovrebbero essere considerate come una suite dinamica. Con il miglioramento dei modelli, i casi che un tempo discriminavano smettono di farlo e occorre aggiungerne di nuovi, derivanti dal monitoraggio continuo.

A seconda del caso d'uso, alcuni team potrebbero preferire l'esecuzione offline di queste eval secondo una cadenza prestabilita, anziché a ogni modifica. I passaggi seguenti riguardano le valutazioni continue.

Getting started
Prerequisites
The CLAUDE.md and feedback loop (Stage 4: Test).
Infrastructure
CI that can run Claude Code non-interactively, and an API key with budget for eval runs.

Come si procede con l'esecuzione

  1. Il membro del team di ingegneria della piattaforma raccoglie dalle 20 alle 50 attività reali tratte dal lavoro recente, ciascuna con il relativo risultato atteso o accettato.
  2. Scrivi ogni attività come un'eval, ovvero il prompt associato ai controlli che definiscono ciò che è accettabile (superamento dei test, nessun errore di linting, comportamento inalterato, rispetto delle policy).
  3. La suite viene eseguita in modalità non interattiva nella CI con cadenza programmata e a ogni modifica a CLAUDE.md, alle Skills o agli hook, poiché questa configurazione guida l'agente e merita lo stesso test di regressione riservato al codice.
  4. Vincola le modifiche della configurazione ai risultati. La modifica a una Skill che comporta una riduzione della percentuale di superamento viene rivista prima del merge.
  5. Ogni incidente di produzione prevede un'eval, redatta dal team responsabile dell'incidente, e rimane nella suite come test di regressione.

Come si presenta (.github/workflows/agent-evals.yml)

name: Agent evals
on:
  pull_request:
    paths: ['CLAUDE.md', '.claude/**']
  schedule:
    - cron: '0 2 * * *'
jobs:
  evals:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm install -g @anthropic-ai/claude-code
      - name: Run eval suite
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          for eval in evals/*.json; do
            claude -p "$(jq -r '.prompt' $eval)" \
              --allowedTools "Read,Edit,Bash(make test)" \
              --output-format json > result.json
            ./evals/check.sh "$eval" result.json
          done

Considerazioni sulla governance

Le eval offrono al QA un gate che sta al passo con l'output dell'agente. La soglia di superamento viene imposta come controllo di merge, le esecuzioni vengono registrate per consentire il confronto dei risultati nel tempo e il team responsabile della modifica alla configurazione l'approva.

How to measure it
Leading indicator
The eval pass rate over time, reported by the suite on every run, and how long a production incident takes to become a permanent eval.
Lagging indicator
Regressions caught in CI compared with regressions found in production derived from the incident tracker.
05

Deploy

Review runs in both directions, and governance is enforced as the agent acts. The agent does everything up to the production gate and nothing past it.

L'IA nel ciclo di revisione delle PR

Claude fornisce e riceve revisioni. Esamina le PR in arrivo verificandone la conformità alle policy dell'organizzazione e gestisce i commenti di revisione sulle proprie PR. In questo modo, il team di sviluppo può concentrarsi sul comportamento durante la revisione delle PR, riducendo l'attività alla valutazione dell'intento e del rischio.

TraditionalReview capacity was planned around human output. A PR waits for a reviewer to read all of it, review quality varies with the reviewer's load, and the author chases while the backlog grows.
AI-nativeAll PRs get an identical set of review passes, with findings ranked by severity. Human attention moves up a level, to whether the change does what the plan intended and whether the risk is acceptable.
Getting started
Prerequisites
An updated CLAUDE.md file from Stage 3: Build; skills if the review passes enforce written policies, defined subagents.
Infrastructure
A repo with the Claude integration installed, either the managed Code Review (research preview) service enabled by an admin or the claude-code-action running in your own CI, with model calls through AWS Bedrock, Google Vertex or Microsoft Foundry where needed (the CI/CD play covers the deployment options). Branch protection policies that require a code owner's approval are also worthwhile.

Come si procede con l'esecuzione

  1. Il servizio gestito di Code Review è il modo più rapido per iniziare. Un amministratore lo abilita e seleziona i repository. Esegui la revisione nella CI interna tramite claude-code-action quando hai bisogno di controllare la pipeline o vuoi instradare le chiamate API attraverso il tuo contratto cloud (il play CI/CD descrive questa infrastruttura).
  2. Il responsabile tecnico redige la policy di revisione sotto forma di file REVIEW.md nella radice del repository, suddivisa nei passaggi di interesse per l'organizzazione: bug ed errori logici, sicurezza e vulnerabilità, conformità rispetto alle specifiche (spec.md del play dei requisiti), al piano di implementazione (plan.md del play relativo alla modalità di pianificazione) e ai principi di progettazione. Il file REVIEW.md definisce inoltre ciò che rientra tra gli aspetti importanti rispetto alle osservazioni minori e gli elementi da ignorare.
  3. Il responsabile tecnico stabilisce la soglia di intervento umano. I risultati non approvano né bloccano autonomamente una PR e la protezione dei branch richiede comunque l'approvazione di un code owner. Un membro del team di ingegneria della piattaforma che desideri vincolare i merge ai risultati può leggere i conteggi di gravità pubblicati dall'esecuzione del controllo sotto forma di riepilogo leggibile da una macchina.
  4. Quando il revisore o l'autore tagga @claude in un commento di revisione, Claude prende in carico il commento ed esegue il push della correzione. Il thread della PR registra sia la richiesta che la modifica. Questo ciclo di correzione viene eseguito utilizzando claude-code-action. Nel servizio gestito, l'inserimento di un commento con @claude review richiede invece una nuova revisione. Per le PR aperte da Claude, è possibile spingersi oltre e lasciare che Claude se ne occupi fino al merge. I team racchiudono il ciclo in un comando slash personalizzato che passa in rassegna i commenti di revisione non risolti e i controlli falliti sulla PR, li gestisce e invia le correzioni, finché la PR non risulta verde e in attesa della sola approvazione del code owner.
  5. I risultati delle revisioni alimentano il file CLAUDE.md. Quando una revisione segnala un errore per la seconda volta, la correzione viene inserita in CLAUDE.md nell'ambito di quella stessa revisione e, poiché la revisione legge CLAUDE.md, l'errore viene rilevato a partire dalla PR successiva. La revisione segnala inoltre quando una modifica ha reso obsoleto CLAUDE.md.
  6. Una volta al mese, il responsabile tecnico ottimizza la configurazione valutando i risultati, in modo che il revisore migliori, e limitando la quantità delle osservazioni minori nel file REVIEW.md. I percorsi generati e tutto ciò che viene già verificato dalla CI sono esclusi.

Come si presenta (REVIEW.md)

# Review instructions

## Passes
Run three passes and tag each finding with its pass:
- Bugs: logic errors, broken edge cases, subtle regressions
- Security: injection risks, authentication gaps, PII in logs
- Compliance: the change matches spec.md, plan.md and our design principles

## What Important means here
Reserve Important for findings that would break behavior, leak data
or breach a policy. Style and naming are nits.

## Cap the nits
Report at most five nits per review; summarize the rest as a count.

## Do not report
Generated files under src/gen/ and anything CI already enforces.

Considerazioni sulla governance

La separazione dei compiti è mantenuta, poiché l'agente che ha scritto il codice non ha modo di approvarlo. La policy di revisione definita in REVIEW.md si applica a tutte le PR, e risultati, correzioni, valutazioni e approvazioni vengono registrati nella cronologia della PR, che funge così da registro di audit. L'approvazione è prerogativa di un essere umano attraverso la protezione dei branch, sulla base dei risultati emersi.

Per scoprire come questi controlli si combinano su scala di produzione, consulta come mettere in sicurezza un SDLC nativo IA in Anthropic.

How to measure it
Leading indicator
Time to first review, which should fall to minutes, and the share of review comments resolved without a human touching the branch with data stored directly on Git.
Lagging indicator
Defects and vulnerabilities caught before merge set against those escaping to production, from the PR history and the incident tracker.

Gli hook come gate di approvazione

La fase di build ha utilizzato gli hook come barriere di protezione per consentire o bloccare le azioni senza intervento umano (Fase 3: Sviluppo). Un hook può anche formulare una richiesta, sospendendo l'azione finché una persona specifica non fornisce l'approvazione, meccanismo necessario per la gestione dei rilasci.

Questo play si colloca nella Fase 5: Distribuzione perché il punto di controllo dei rilasci ne è l'esempio più evidente, ma gli hook non sono specifici della distribuzione: operano ovunque Claude interviene. Ad esempio, possono bloccare le modifiche alle migrazioni e all'infrastruttura in assenza di un ticket di modifica durante la Fase 3: Sviluppo e impedire all'agente di modificare i file di test durante un'attività di correzione nella Fase 4: Test.

Getting started
Prerequisites
None.
Infrastructure
A written list of the approvals the change process requires.

Come si procede con l'esecuzione

  1. La direzione tecnica, insieme ai team di gestione del cambiamento e conformità, definisce i punti di approvazione umana che devono essere mantenuti, come la validazione della gestione del cambiamento, l'autorizzazione al rilascio e le modifiche ai percorsi protetti.
  2. Il membro del team di ingegneria della piattaforma esprime ogni gate sotto forma di hook, ossia uno script eseguito prima che Claude intervenga, in grado di consentire, richiedere o bloccare l'operazione.
  3. Gli hook di team vengono inseriti in .claude/settings.json all'interno di git, mentre quelli non negoziabili risiedono nelle impostazioni gestite, di competenza dell'amministratore di piattaforma o IT, dove i singoli membri del team di sviluppo non possono disattivarli.
  4. Un blocco dovrebbe essere autoesplicativo, quindi quando un hook interrompe un'azione, il motivo e la procedura per ottenere l'approvazione compaiono nell'output di Claude.

Come si presenta (.claude/settings.json)

{
    "hooks": {
      "PreToolUse": [
        {
          "matcher": "Bash",
          "hooks": [
            { "type": "command",
              "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/production-gate.sh" }
          ]
        }
      ]
    }
}

E il gate vero e proprio (.claude/hooks/production-gate.sh)

#!/bin/bash
# Production deploys require a named release authorization
cmd=$(jq -r '.tool_input.command' < /dev/stdin)
if [[ "$cmd" == *"deploy"* && "$cmd" == *"production"* ]]; then
   if [ -z "$RELEASE_APPROVAL" ]; then
     echo "Production deploys need a release authorization." >&2
     exit 2 # exit 2 blocks the action; the message goes to Claude
   fi
fi
exit 0

Considerazioni sulla governance

Gli hook fungono da gate di approvazione. La condizione di controllo viene applicata ogni volta, per chiunque. Le decisioni di autorizzazione e blocco vengono registrate con un timestamp. Il gate definisce inoltre cosa costituisce approvazione, che si tratti della convalida di un ticket di modifica o dell'autorizzazione di chi gestisce i rilasci.

Worked example

Managed settings for a regulated enterprise

Deployed by the platform team via MDM or the admin console; engineers cannot edit or override any of it.
{ "permissions": { "deny": [ "Read(.env*)", "Read(./secrets/**)", "WebFetch", "Bash(curl *)", "Bash(wget *)" ], "allow": [ "Bash(git *)", "Bash(make build)", "Bash(make test)", "Bash(make lint)" ], "disableBypassPermissionsMode": "disable" }, "allowManagedPermissionRulesOnly": true, "sandbox": { "enabled": true, "failIfUnavailable": true, "allowUnsandboxedCommands": false, "network": { "allowedDomains": ["git.internal.example.com", "registry.npmjs.org"] }, "credentials": { "files": [ { "path": "~/.ssh", "mode": "deny" }, { "path": "~/.aws/credentials", "mode": "deny" } ], "envVars": [ { "name": "GITHUB_TOKEN", "mode": "deny" } ] } }, "allowManagedHooksOnly": true, "disableSideloadFlags": true, "allowManagedMcpServersOnly": true, "strictKnownMarketplaces": [ { "source": "github", "repo": "example-corp/approved-plugins" } ], "requiredMinimumVersion": "2.1.193" }
What each line buys, in control terms
permissions.deny keeps secrets out of the agent's context and blocks arbitrary network egress through tools; permissions.allow pre-approves the safe inner loop so the deny list doesn't turn into prompt fatigue.
disableBypassPermissionsMode plus allowManagedPermissionRulesOnly means no engineer, project file or command-line flag can widen the rules.
sandbox closes the gap permissions cannot. A tool-level deny on WebFetch doesn't stop a shell command reaching the network; the OS-level domain allowlist blocks egress outright.
failIfUnavailable and allowUnsandboxedCommands make the sandbox a gate: Claude Code refuses to start when the sandbox cannot initialize, and a command that fails inside the sandbox cannot be retried outside it.
credentials closes the gap the deny rules leave open. permissions.deny governs Claude's file tools, but a sandboxed shell command could still read ~/.ssh or ~/.aws/credentials by default; this block denies those reads and strips the named secrets from the environment of every sandboxed command.
allowManagedHooksOnly means the approval gates from this play are the only hooks that run; nothing local can add to or replace them.
disableSideloadFlags and strictKnownMarketplaces mean every skill, agent, hook and MCP server on an engineer's machine arrived through the organization's approved plugin marketplace, never from a home directory.
allowManagedMcpServersOnly makes the agent's tool surface an allowlist owned by the platform team.
requiredMinimumVersion refuses to start on a version below the approved floor, so the controls are enforced by a build the organization has actually assessed.
Consider the above a starting point to tailor, rather than a recommendation to copy. Every deny trades against capability, and the right balance depends on the data classification of the repo. The settings reference documents every key, including the managed-only ones: code.claude.com/docs/en/settings
How to measure it (for the hooks themselves)
Leading indicator
Time spent waiting on each approval gate. Every hook decision is written to the OpenTelemetry export with a timestamp and an allow or block verdict, so the wait is visible per gate.
Lagging indicator
Gate violations reaching production before and after hooks from the incident tracker.

Integrazione CI/CD e distribuzione

Esegui Claude Code in modalità non interattiva all'interno della pipeline CI/CD, isola l'esecuzione in una sandbox per garantire la sicurezza degli agenti di lunga durata, esponi la distribuzione tramite integrazioni MCP e collauda i percorsi di rollback prima ancora che l'agente ne abbia necessità.

TraditionalPipelines run deterministic scripts, and anything that needs judgment waits for a human. For example, triaging the flaky test, writing the changelog, or working out why the build broke. Deployment and rollback are runbooks a human follows under pressure.
AI-nativeClaude runs non-interactively inside the pipeline for the judgment steps, in a sandbox with scoped credentials. Deployment tooling is exposed to the agent through MCP, so the workflow that wrote and tested the change can also ship it and roll it back, inside gates the organization defines per environment.
Getting started
Prerequisites
Claude in the PR review loop and hooks as approval gates, because the gates must exist before automation accelerates anything through them.
Infrastructure
A CI platform with the claude-code-action installed, or any runner that can call claude -p; model access through the API, or Bedrock, Foundry, or Vertex where traffic must stay on the organization's cloud agreement; MCP servers for the deployment targets; a sandbox profile for agent jobs with no standing production credentials.

Come si procede con l'esecuzione

  1. Il membro del team di ingegneria della piattaforma inizia con passaggi di valutazione in sola lettura. Utilizza claude -p in un job della pipeline per effettuare il triage di una build non riuscita, riassumere un test instabile o redigere il registro delle modifiche.
  2. Aggiungi operazioni di scrittura a valle dei gate esistenti per attività come la risoluzione dei problemi di linting, l'aggiornamento della documentazione generata o la gestione dei commenti di revisione tramite le menzioni @claude. Qualsiasi contenuto scritto dall'agente arriva sotto forma di PR attraverso la protezione dei branch e l'agente non ha un percorso diretto per effettuare il push su main.
  3. L'esecuzione viene isolata in una sandbox. I job dell'agente vengono eseguiti in container soggetti a una policy di rete, con token di breve durata e ambito limitato e per impostazione predefinita non dispongono di credenziali di produzione.
  4. Esponi la distribuzione tramite MCP. Le operazioni di distribuzione, verifica dello stato e rollback diventano degli strumenti, circoscritti per singolo ambiente, in modo che le capacità di distribuzione dell'agente si basino su un elenco consentito anziché su uno script di shell dotato di credenziali.
  5. L'autonomia viene suddivisa in livelli in base all'ambiente. In fase di sviluppo, l'agente viene distribuito liberamente. In fase di produzione, l'agente prepara il rilascio e chi è responsabile dei rilasci lo autorizza, mentre un hook impone il rispetto del gate di produzione. Lo staging si colloca in una posizione intermedia.
  6. Il rollback dovrebbe rappresentare il percorso più collaudato della pipeline: un singolo comando eseguibile dall'agente e testato regolarmente nell'ambiente di staging. Il play di chiusura del ciclo (Fase 6: Manutenzione) richiama questa procedura di rollback in caso di violazione di una banda di controllo, pertanto deve essere dimostrata in anticipo.

Come si presenta (passaggio della pipeline)

- name: Triage failed build
  if: failure()
  run: >
    claude -p "Read the build log at out/build.log. Identify the most
    likely cause, say whether the failure looks flaky or real, and write a
    three-line summary for the PR thread." >> triage.md

Considerazioni sulla governance

Il principio guida prevede che l'agente possa operare fino al gate di produzione senza poterlo superare. I controlli descritti di seguito applicano questo principio.

  • La protezione dei branch trasforma qualsiasi contenuto scritto dall'agente in una PR, escludendo percorsi diretti verso main.
  • L'hook di distribuzione in produzione blocca il rilascio fino all'autorizzazione esplicita da parte di chi ha la responsabilità dei rilasci. Ogni esecuzione non interattiva opera sotto l'identità specifica dell'agente, consentendo al log della pipeline di distinguere le azioni compiute dall'agente da quelle eseguite dal membro del team di sviluppo che l'ha attivato.
  • I livelli di autorizzazione per ambiente definiscono le azioni consentite all'agente lungo il percorso verso il gate.
How to measure it
Leading indicator
The share of pipeline failures triaged without paging a human taken from the CI/CD pipeline logs.
Lagging indicator
DevOps Research and Assessment (DORA) measures, which the CI system and deployment tooling already emit.
06

Maintain

The loop closes. A trigger invokes Claude with no person in the invocation path, and what it finds re-enters the pipeline as intent.md.

Manutenzione e chiusura del ciclo

Finora abbiamo esaminato come integrare Claude in ogni passaggio del processo SDLC, in cui ogni fase richiede l'intervento umano per l'avvio dei passaggi iniziali. Questa fase, invece, sposta l'attenzione sull'esecuzione autonoma di Claude per chiudere il ciclo.

Ad esempio, un agente di monitoraggio in esecuzione continua potrebbe, in seguito all'apertura di un ticket di bug, generare un file intent.md e attraversare le fasi dei requisiti, pianificazione, sviluppo, test e revisione. La Fase 6: Manutenzione viene eseguita in modalità headless, avvalendosi di un gate di affidabilità indipendente tra una fase e l'altra, un controllo deterministico o un agente di revisione avversario, per stabilire se l'output della fase precedente debba proseguire o venire inoltrato a un essere umano.

TraditionalMaintenance is a reactive phase. All tickets or incidents wait on a person to act on it and restart the process. An alert fires at 3 a.m. and can be missed, a ticket can sit in the backlog until someone picks it up, and post-mortem actions may not reach the codebase at all if another fire starts first.
AI-nativeA trigger such as a control-band breach, a ticket, a channel message or a schedule invokes Claude without a person in the path. Claude diagnoses, acts only through gated routes, and writes what it finds as intent.md, which then goes through the stages described above. People triage and review that work, and no longer have to start it.

Completamento del ciclo

Uno script deterministico monitora la produzione e richiama Claude quando viene violata una banda di controllo. Il monitoraggio di una violazione è un utile esempio del modello di funzionamento autonomo del ciclo, mentre la sezione dedicata a Claude Tag, in versione beta pubblica, al termine della fase descrive la gestione del lavoro proveniente da canali diversi.

Getting started
Prerequisites
Intent.md which gives the loop a structured output to restart. Claude accelerated PR reviews, hooks as an action boundary, and a rollback path for CI/CD (which the highest autonomy tier invokes).
Infrastructure
A metrics store the detection script can query (Prometheus, the CI system's API, or equivalents), read access to the repository, a way to run Claude Code non-interactively in CI, or the Agent SDK for a service that receives webhooks.

Come si procede con l'esecuzione

  1. Il proprietario del servizio o il membro del team di ingegneria della piattaforma sceglie una metrica con una baseline stabile basata su una finestra temporale mobile, come la percentuale di insuccesso dei test di CI, il tasso di errori 5xx post-distribuzione o il tempo di ciclo delle PR.
  2. Viene scritto lo script di rilevamento, basato in genere su media e deviazione standard su una finestra mobile con regole specifiche, come il metodo Western Electric o analoghi, affinché le bande intercettino sia le derive progressive che i picchi. Lo script è sottoposto a controllo di versione e a unit test; il rilevamento rimane completamente deterministico, senza il coinvolgimento di alcun modello.
  3. I livelli di risposta sono definiti in una configurazione soggetta a controllo di versione (il file bands.yaml di seguito). In corrispondenza di 1σ, lo script si limita a registrare l'evento, a 2σ richiama Claude in sola lettura per effettuare una diagnosi e a 3σ Claude è autorizzato ad agire, sebbene esclusivamente aprendo una PR nel gate di revisione o attivando un runbook preapprovato.
  4. Il livello di trigger può consistere in un flusso di lavoro pianificato in GitHub o GitLab, in un webhook proveniente dallo stack di monitoraggio esistente o in un Cron Job interno alla rete. Claude viene eseguito in modalità stateless, come passaggio non interattivo su un runner di CI o come servizio Agent SDK all'interno di un container in sandbox. Il play CI/CD descrive le opzioni di distribuzione e di accesso ai modelli. Dato che l'esecuzione è stateless e non interattiva, un ciclo può iniziare e concludersi senza che nessuno lo avvii.
  5. L'agente redige la propria diagnosi come file intent.md nel formato della Fase 1: Pianificazione, descrivendo l'anomalia e le relative evidenze, un esito proposto, i sistemi interessati ed eventuali questioni aperte. Da quel momento, il risultato attraversa la pipeline come qualsiasi altro elemento.
  6. Il proprietario del servizio o il membro del team di sviluppo di turno effettua il triage della coda, inoltrando al product owner le conclusioni relative al prodotto. Correggi immediatamente, pianifica o ignora. Le azioni di scarto calibrano le bande e contribuiscono a ridurre il rumore.
  7. Quando viene rilasciata una correzione, aggiungi un'eval per l'incidente (il play delle valutazioni continue) per prevenire adeguatamente problematiche simili in futuro.

Come si presenta (ad esempio, un file bands.yaml per il monitoraggio della percentuale di insuccesso dei test di CI)

metric: ci_test_failure_rate
baseline: rolling_30d
rules: western_electric
tiers:
  1sigma: { action: log }
  2sigma: { action: diagnose,
            tools: "Read,Grep,Bash(gh run view *)" }
  3sigma: { action: propose,
            routes: [pull_request, runbook:rollback-deploy] }

Considerazioni sulla governance

I limiti dei livelli sono imposti da una configurazione soggetta a controllo di versione, in cui le autorizzazioni e le impostazioni gestite inibiscono l'accesso alla produzione. Invocazioni, risultati e decisioni di triage vengono registrati con un timestamp. Il proprietario del servizio effettua il triage e approva i risultati, le modifiche che ne derivano passano attraverso il normale gate di revisione delle PR e i runbook attivabili dall'agente sono stati preventivamente approvati.

How to measure it
Leading indicator
Time from band breach to an intent.md in the triage queue, against the old time from incident to post-mortem action. The detection script's log has the breach timestamp and tier of incident.
Lagging indicator
The share of findings that become merged fixes (triage queue against actual PR history), and repeat incidents of the same class, which should fall as the fixes add cases to the eval suite.

Esempi

  • Quando la percentuale di insuccesso dei test di CI supera la soglia di 3σ, l'agente mette in quarantena il test instabile o apre una PR di ripristino e il gate di revisione decide.
  • Quando il tasso di errori 5xx post-distribuzione supera 3σ con una distribuzione nella finestra temporale, l'agente attiva la pipeline di rollback esistente.
  • Quando il tempo di ciclo delle PR fa scattare una regola di deriva, l'agente redige un report per la direzione tecnica, dimostrando l'efficacia dell'harness sia per le metriche di processo che per quelle di produzione.
Detection stays deterministic. Claude is invoked once a band is breached, and the tier sets what it may do.

Scansioni periodiche della codebase

Una scansione di sicurezza è un'istantanea valida in un determinato momento su una codebase analizzata da un modello specifico, soggetta a obsolescenza per una duplice ragione: il codice cambia ogni settimana e ogni generazione di modelli individua vulnerabilità sfuggite a quella precedente. La risposta nativa IA consiste nell'eseguire la scansione secondo una pianificazione prestabilita, senza alcun intervento umano nel percorso di invocazione, incanalando i risultati attraverso gli stessi gate previsti per qualsiasi altra modifica alla codebase.

Claude Security è la versione in hosting della scansione pianificata. Collegando un repository GitHub, le scansioni vengono eseguite su Claude Mythos 5 nell'infrastruttura di Anthropic; ciascun risultato viene convalidato prima di essere notificato e viene associato a una valutazione di affidabilità. Le patch suggerite vengono riviste e applicate in Claude Code sul web. L'organizzazione ottiene i risultati senza dover accedere al modello.

TraditionalSecurity scanning is an event with a scan launched before a release or an audit. The report goes to a tracker, and the backlog is worked down by hand until the next event. Code written in between is covered by whatever the PR review caught.
AI-nativeScans run on a schedule against every connected repository, on the most capable model available, with findings validated before anyone reads them. Each finding is handled the way a breached control band is: a fix that fits in one PR goes through the review gate, and anything larger becomes an intent.md. Coverage is dated from the last run, not from the first
Getting started
Prerequisites
The PR review gate and hooks as approval gates (Stage 5: Deploy), so that findings go through review like any other change. The intent.md format from Stage 1: Plan for findings too large for a single PR.
Infrastructure
Claude Security is available to Claude Enterprise organizations in public beta. It needs the Anthropic GitHub App installed on the target repositories (cloud-hosted github.com), Claude Code on the Web enabled, Extra Usage turned on with a spend limit set, premium seats for the people who run scans, and the feature switched on by an admin at claude.ai/admin-settings/claude-code. Scans are billed on consumption at Mythos 5 rates, so the spend limit should match the size and number of repositories.

Come si procede con l'esecuzione

  1. Chi è responsabile della sicurezza collega i repository organizzandoli in progetti suddivisi per repository, servizio o team, in modo che la titolarità dei risultati risulti chiara fin dall'inizio.
  2. Esegui una prima scansione completa dei repository più critici, compresi quelli già analizzati in precedenza da altri strumenti o modelli antecedenti. Considera la prima scansione come base di riferimento. Probabilmente farà emergere criticità in porzioni di codice prima ritenute pulite.
  3. Definisci una pianificazione per progetto. Una cadenza settimanale è un'impostazione predefinita ragionevole per i servizi in fase di sviluppo attivo; per repository di grandi dimensioni o eterogenei, circoscrivi le scansioni a una specifica directory o a un branch.
  4. Effettua il triage dei risultati avvalendoti della valutazione di affidabilità. Scarta indicando un motivo, in modo che l'esclusione venga registrata e lo stesso risultato non venga riproposto come nuovo alla scansione successiva.
  5. Per le criticità circoscritte, apri la patch suggerita in Claude Code sul web, revisionala e inviala attraverso il gate di revisione delle PR al pari di qualsiasi altra modifica. L'agente che ha proposto la correzione non dispone di alcun percorso per approvarla.
  6. Per problematiche di portata superiore a una singola patch, come una vulnerabilità architetturale o un pattern ripetuto tra diversi servizi, scrivile in un file intent.md nel formato della Fase 1 per avviarne la gestione dalla Pianificazione.
  7. Quando una correzione viene rilasciata in produzione, aggiungi alla suite del play delle valutazioni continue un'eval relativa a quella classe di vulnerabilità, in modo che da quel momento in poi la configurazione che guida l'agente venga testata rispetto a quella classe.
  8. Esporta i risultati in formato CSV o Markdown oppure utilizza i webhook, per mantenere i sistemi di tracciamento e audit esistenti dell'organizzazione come sistema di riferimento nel punto in cui gli auditor si aspettano già di trovarli.

Considerazioni sulla governance

La scansione viene eseguita secondo i controlli amministrativi dell'organizzazione, il che significa che il collegamento dei repository, l'assegnazione delle postazioni di scansione e il limite di spesa sono tutti definiti a livello centrale. Ogni riscontro ha un risultato di convalida e una valutazione di affidabilità e ogni elemento ignorato ha una motivazione, quindi la cronologia delle scansioni costituisce una traccia di audit di ciò che è stato rilevato, corretto e consapevolmente accettato.

Le correzioni raggiungono la produzione attraverso il gate di revisione delle PR e la protezione dei branch, anziché direttamente dalla scansione stessa. Claude Security potenzia le analisi statiche esistenti e la scansione delle dipendenze. I controlli deterministici rimangono attivi nella CI, mentre la scansione guidata dal modello gestisce le vulnerabilità dipendenti dal contesto che questi controlli non sono progettati per individuare.

How to measure it
Leading indicator
Share of connected repositories on a schedule, and time from a finding being reported to its patch entering the PR review gate, read from the scan history and the PR metadata.
Lagging indicator
Vulnerabilities found by the scheduled scan set against those found in production or by external report, from the incident tracker; and the trend in findings per scan on repositories that have been through several runs, which should fall as fixes and evals accumulate.

Claude disponibile con Claude Tag

Gli incidenti possono presentarsi anche attraverso canali differenti, come le app di comunicazione aziendale, ad esempio Slack o Teams. Un incidente può manifestarsi sotto forma di messaggio su Slack inviato alle 22:00 per richiedere una correzione urgente in un canale dedicato, rendendo ora possibile un intervento immediato. Claude Tag (in versione beta pubblica attualmente disponibile in Slack) integra Claude come membro di quei canali sotto la propria identità; in tal modo, ogni nuovo incidente dispone di un addetto alla prima risposta e la risposta stessa diventa parte del ciclo e della memoria per futuri incidenti.

La conversazione e la conoscenza istituzionale rimangono all'interno del canale, consentendo a chiunque vi partecipi di guidare la risposta e metterla in atto. Qualsiasi membro del team può verificare ipotesi, esplorare nuove opzioni e svolgere indagini in tempo reale, beneficiando della cronologia del canale a supporto della verificabilità. Tramite l'accesso a MCP, Claude verifica il ripristino della metrica al valore di riferimento confermandolo nel thread, quindi redige il post-mortem in un file di lezioni apprese sottoposto a controllo di versione, consultabile in occasione di future indagini.

Gli incidenti non sono l'unico ambito di intervento di Claude Tag. Se viene taggato su un ticket tramite MCP o se viene interpellato nel canale, Claude esegue il triage del lavoro con le medesime modalità. Una correzione di dimensioni ridotte e ben circoscritta giunge come PR attraverso il gate di revisione, mentre le attività di portata superiore vengono formalizzate in un file intent.md per la Fase 1: Pianificazione, momento in cui il ciclo inizia ad autoalimentarsi. Consulta: come Claude Tag gestisce l'on-call per la CI/CD presso Anthropic.

Il canale rappresenta la traccia di audit: richiesta, diagnosi, autorizzazione umana e correzione rimangono tutte dove l'incidente è stato gestito.

Considerazioni finali

Modelli e harness si sono evoluti, consentendo alle organizzazioni di trasformare non soltanto le modalità di produzione del codice, ma l'intero ciclo di vita dello sviluppo software.

Questa trasformazione mantiene il giudizio umano al centro del processo e tiene conto dei requisiti di governance e di conformità normativa delle grandi organizzazioni aziendali.

Questa guida ha raccolto molte delle best practice reali che il nostro team di IA applicata mette in atto ogni giorno per i nostri clienti; ci auguriamo di averti fornito una risorsa pratica e immediatamente utilizzabile.

The loop keeps running. Human judgement stays above it.

Risorse e ringraziamenti

La documentazione seguente fornisce al team di piattaforma le informazioni necessarie per configurare questi controlli, indicativamente secondo l'ordine di implementazione ottimale.

Un ringraziamento a Jim Blackhurst, Will Steuk e Jamal Arif per aver contribuito a questa guida, ispirata e basata su gran parte del loro lavoro precedente.

Trasforma il modo in cui opera la tua organizzazione con Claude

Iscriviti alla newsletter per sviluppatori

Aggiornamenti sui prodotti, guide pratiche, storie dalla community e molto altro. Recapitati ogni mese nella tua casella di posta.

Inserisci il tuo indirizzo email se desideri ricevere la nostra newsletter mensile per sviluppatori. Puoi annullare l'iscrizione in qualsiasi momento.