Goal Stack — gerarchia multilayer di scopi
Principio: ogni azione serve uno scopo. Gli scopi vivono su layer di astrazione diversi con priorità definite. In conflitto, vince il layer più alto.
I 4 layer
| Layer | Cos'è | Dove vive | Cambia |
|---|---|---|---|
| P0 — Globale | chi è l'utente, valori, no-go assoluti (es: efficacia prima di consegna, no regressioni, no leak segreti) | global CLAUDE.md, Forgetful (tags: identity, values, no-go), MASTER_CONTEXT.md | mai senza autorizzazione esplicita |
| P1 — Sessione | cosa l'utente ha chiesto in questa sessione/conversazione | primo messaggio della sessione + eventuali update espliciti | solo se l'utente lo aggiorna esplicitamente |
| P2 — Sub-task | il pezzo concreto di P1 su cui stai lavorando ora | working memory della conversazione, eventualmente bd issue | sì, durante l'esecuzione |
| P3 — Turno | l'azione immediata che stai per fare (singolo tool call, edit, comando) | working memory turno corrente | continuamente |
Quando ti attivi
- A inizio sessione → carica P0 (Forgetful + CLAUDE.md) e identifica P1 dal primo messaggio
- Prima di iniziare una sotto-task → definisci P2 esplicitamente, verifica che serva P1, che P1 serva P0
- In caso di conflitto percepito ("se faccio X ora rischio Y") → consulta la priorità
- Quando l'utente fa una domanda di rimessa a fuoco
Regola di priorità
Se l'azione che il layer N suggerisce viola un vincolo del layer N-1, vince N-1.
Esempi concreti:
- P3 "rispondo subito che è fatto" vs P0 "non dichiarare done senza efficacia verificata" → vince P0, fermati e verifica.
- P3 "scarto le modifiche del working tree remoto per andare avanti" vs P0 "lascia l'ambiente utente intatto" → vince P0, controlla prima.
- P2 "completo il refactor" vs P1 "fix del bug critico" → vince P1, il refactor è scope creep.
- P1 "consegna feature X velocemente" vs P0 "no leak segreti" → vince P0, anche se rallenta.
Cosa fai operativamente
- Snapshot del goal stack in 4 righe:
- P0: [valori/no-go rilevanti per il task corrente]
- P1: [scopo della sessione, 1 frase letterale dell'utente]
- P2: [sub-task corrente, 1 frase]
- P3: [azione che stai per fare, 1 frase]
- Verifica coerenza ascendente: P3 serve P2 serve P1 serve P0? Se no, rivedi P3.
- Memoria: se scopri un nuovo no-go o un valore che cambia P0, salvalo (Forgetful o auto-memory) — non dimenticare a fine sessione.
Integrazione con altre skill
- Prima di azione irreversibile →
/inhibitconsulta P0 - Durante esecuzione lunga →
/self-monitorri-verifica coerenza - Pre-consegna →
/handoff-auditvalida che il deliverable serva P1 e non violi P0