create-pwt 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +51 -0
  2. package/bin/create-pwt +7 -0
  3. package/bin/init.sh +136 -0
  4. package/bin/update.sh +112 -0
  5. package/package.json +22 -0
  6. package/template/.claude/agents/task-agent.md +142 -0
  7. package/template/.claude/settings.json +15 -0
  8. package/template/.claude/skills/analisi/SKILL.md +50 -0
  9. package/template/.claude/skills/architettura/SKILL.md +58 -0
  10. package/template/.claude/skills/blueprint/SKILL.md +85 -0
  11. package/template/.claude/skills/deploy/SKILL.md +63 -0
  12. package/template/.claude/skills/design/SKILL.md +51 -0
  13. package/template/.claude/skills/implementazione/SKILL.md +148 -0
  14. package/template/.claude/skills/implementazione/code-quality-reviewer-prompt.md +83 -0
  15. package/template/.claude/skills/implementazione/spec-reviewer-prompt.md +73 -0
  16. package/template/.claude/skills/legale/SKILL.md +57 -0
  17. package/template/.claude/skills/pianificazione/SKILL.md +88 -0
  18. package/template/.claude/skills/qa/SKILL.md +59 -0
  19. package/template/.claude/skills/ricerca/SKILL.md +50 -0
  20. package/template/.claude/skills/roadmap/SKILL.md +170 -0
  21. package/template/.claude/skills/setup/SKILL.md +128 -0
  22. package/template/.claude/skills/start/SKILL.md +23 -0
  23. package/template/.claude/skills/task/SKILL.md +360 -0
  24. package/template/CLAUDE.md +70 -0
  25. package/template/README.md +59 -0
  26. package/template/STATE.json +44 -0
  27. package/template/project.json +39 -0
  28. package/template/system/preferences.json +92 -0
  29. package/template/system/schemas/state.schema.json +293 -0
  30. package/template/system/schemas/workflow.schema.json +104 -0
  31. package/template/system/workflow-v5.json +1216 -0
@@ -0,0 +1,360 @@
1
+ ---
2
+ name: task
3
+ description: Orchestratore task workflow — gestisce interrogazione, esecuzione sub-agent e salvataggio output
4
+ ---
5
+
6
+ # Orchestratore task workflow
7
+
8
+ Stai eseguendo la task **$ARGUMENTS** del progetto.
9
+
10
+ ## Procedura
11
+
12
+ ### 0. Verifica preferenze (pre-flight)
13
+
14
+ Leggi `system/preferences.json`. Controlla che i campi richiesti per la fase corrente siano compilati (non `""`).
15
+
16
+ | Fase | Campi richiesti |
17
+ |---|---|
18
+ | 1 | `identity.name`, `identity.role` |
19
+ | 2 | — *(conventions hanno default validi)* |
20
+ | 3 | `accounts.figma` *(solo se skill design attivo)* |
21
+ | 4 | `stack.frontend.framework`, `stack.backend.approach`, `stack.database.primary` |
22
+ | 5 | `stack.*`, `deploy.frontend`, `deploy.database`, `accounts.github` |
23
+ | 6 | — *(sentry/posthog opzionali)* |
24
+ | 7 | `identity.piva`, `identity.email`, `deploy.frontend`, `deploy.database`, `deploy.github_org_or_user`, `legal.privacy_policy_template`, `legal.cookie_consent`, `accounts.vercel`, `accounts.supabase` |
25
+ | 8 | `accounts.posthog` |
26
+
27
+ Se uno o più campi richiesti sono vuoti:
28
+ 1. Elenca i campi mancanti
29
+ 2. Chiedi: "Prima di procedere ho bisogno di alcune informazioni. Le compilo ora?"
30
+ 3. **Se SÌ** → poni le domande una alla volta (vedi tabella domande in `.claude/skills/setup/SKILL.md`), aggiorna `system/preferences.json` dopo ogni risposta, poi procedi al punto 1
31
+ 4. **Se NO** → scrivi: "Ok. Riprendi con `/task $ARGUMENTS` quando sei pronto." e fermati
32
+
33
+ ---
34
+
35
+ ### 1. Carica contesto
36
+ - Leggi `STATE.json` — identifica il progetto corrente
37
+ - Leggi `system/workflow-v5.json` — carica SOLO la task con `id == "$ARGUMENTS"`
38
+ - Carica gli output elencati in `task.depends_on` (es. `docs/phases/0/0.1-output.md`)
39
+
40
+ **Se `STATE.json` ha `roadmap_generated == true`:**
41
+ - Leggi `docs/ROADMAP.json` e controlla lo status della task corrente:
42
+ - `"skipped"` → scrivi: "La task **$ARGUMENTS** è stata esclusa dalla roadmap: _[reason]_. Passo alla prossima task inclusa." Poi avanza `current_task` in STATE.json alla task successiva con status `included` o `simplified` e fermati.
43
+ - `"simplified"` → procedi normalmente ma aggiungi all'inizio del contesto: "⚡ Modalità semplificata: _[note]_"
44
+ - `"included"` → procedi normalmente
45
+
46
+ **Se `task.is_gate == true`:** salta i punti 2 e 3, vai direttamente al punto 2-GATE.
47
+
48
+ ### 2. Loop interrogazione (OBBLIGATORIO — solo se `is_gate: false`)
49
+ Poni tutte le domande in `task.questions`, **una alla volta**, nell'ordine dato.
50
+
51
+ Regole ferme durante l'interrogazione:
52
+ - Ogni risposta è valida, anche "non so" o "non ho controllato" — annota la lacuna e vai avanti
53
+ - Non cercare informazioni autonomamente
54
+ - Non scrivere file
55
+ - Non generare output o anteprime
56
+ - Non saltare domande anche se pensi di avere già la risposta
57
+
58
+ ### 2-GATE. Verifica gate (solo se `is_gate: true`)
59
+
60
+ 1. Leggi tutti gli output della fase (elencati in `task.depends_on`)
61
+ 2. Per ogni voce della `task.checklist`, determina: ✅ soddisfatta / ⚠️ parziale / ❌ mancante
62
+ 3. Presenta il risultato in questo formato:
63
+
64
+ ```
65
+ ## Gate X.Y — [Nome fase]
66
+
67
+ | # | Criterio | Stato | Note |
68
+ |---|---|---|---|
69
+ | 1 | [criterio] | ✅/⚠️/❌ | [eventuale nota] |
70
+ ...
71
+
72
+ **Problemi aperti:** [lista, oppure "nessuno"]
73
+ **Decisione suggerita:** PROCEDI / BLOCCA
74
+ ```
75
+
76
+ 4. Chiedi: "**Confermi la decisione?** Rispondi PROCEDI o BLOCCA (oppure dammi feedback su cosa rivedere)."
77
+ - **BLOCCA** → indica quale task riaprire, poi FERMATI
78
+ - **PROCEDI** → vai al punto 6-GATE
79
+
80
+ ### 3. Esecuzione tramite task-agent (solo se `is_gate: false`)
81
+
82
+ **Check ripresa:** se `STATE.json.checkpoint` non è null E `checkpoint.task_id == task corrente`:
83
+ - Se `checkpoint.stato == "done"` → vai direttamente al punto 4 (output già pronto)
84
+ - Se `checkpoint.stato == "partial"` → tratta il checkpoint come appena arrivato, vai al punto 3b (non rilancia da zero — lo stato è già salvato)
85
+
86
+ **Altrimenti (prima esecuzione o checkpoint di task diversa):**
87
+ Annuncia: "Eseguo task **[id]** — [titolo]..."
88
+
89
+ #### 3a. Costruisci il prompt e lancia il sub-agent `task-agent`
90
+
91
+ ```
92
+ TASK_ID: <task.id>
93
+ TASK_TITLE: <task.title>
94
+ SKILL: <task.skill oppure "null">
95
+ ITERAZIONE: 1
96
+ CONTESTO_AGGIUNTIVO: nessuno
97
+
98
+ OUTPUT_DIPENDENZE:
99
+ <Per ogni id in task.depends_on: contenuto completo di docs/phases/<X>/<id>-output.md. Se mancante: "[OUTPUT <id> NON TROVATO]">
100
+
101
+ RISPOSTE_INTERROGAZIONE:
102
+ <Per ogni domanda posta al punto 2: "- <domanda>: <risposta>">
103
+
104
+ OUTPUT_SCHEMA:
105
+ <sezioni da task.output_schema.sections, una per riga>
106
+ Formato: <task.output_schema.format>
107
+ Lunghezza: <task.output_schema.length>
108
+
109
+ DOD:
110
+ <task.dod>
111
+
112
+ CHECKPOINT_PRECEDENTE:
113
+ nessuno
114
+ ```
115
+
116
+ #### 3b. Gestisci la risposta del sub-agent
117
+
118
+ Leggi il JSON ricevuto. **Se `iterazione >= 5` E `stato == "partial"`:** mostra avviso:
119
+ > "⚠️ Il sub-agent è bloccato da 5 iterazioni su: [bloccato_su]. Vuoi procedere con l'output parziale disponibile, o annullare?"
120
+ > - **Procedi** → tratta `risultato_parziale` come `output_finale` e vai al punto 4
121
+ > - **Annulla** → imposta `STATE.json.checkpoint = null` e fermati
122
+
123
+ **Se il sub-agent non risponde con JSON valido:**
124
+ > "⚠️ Il sub-agent ha restituito un output non valido. Vuoi riprovare o procedere manualmente?"
125
+ > - **Riprova** → rilancia il sub-agent con lo stesso prompt (torna al punto 3a se iterazione 1, altrimenti 3c)
126
+ > - **Manuale** → imposta `STATE.json.checkpoint = null` e fermati
127
+
128
+ **Se `stato == "partial"`:**
129
+ 1. Salva il checkpoint in `STATE.json.checkpoint` (aggiorna il file)
130
+ 2. Mostra all'utente:
131
+ ```
132
+ ## Elaborazione in corso — iterazione <iterazione>
133
+ **Completato:** <lista checkpoint.completato in bullet>
134
+ **Informazione necessaria:** <checkpoint.bloccato_su>
135
+ ---
136
+ <checkpoint.contesto_necessario>
137
+ ```
138
+ 3. Aspetta risposta → vai al punto 3c
139
+
140
+ **Se `stato == "done"`:**
141
+ 1. Salva il checkpoint in `STATE.json.checkpoint`
142
+ 2. Vai al punto 4
143
+
144
+ #### 3c. Rilancio sub-agent con contesto aggiuntivo
145
+
146
+ ```
147
+ TASK_ID: <task.id>
148
+ TASK_TITLE: <task.title>
149
+ SKILL: <task.skill oppure "null">
150
+ ITERAZIONE: <checkpoint.iterazione + 1>
151
+ CONTESTO_AGGIUNTIVO: <risposta dell'utente>
152
+
153
+ OUTPUT_DIPENDENZE:
154
+ <stesso contenuto del lancio precedente>
155
+
156
+ RISPOSTE_INTERROGAZIONE:
157
+ <stesse risposte del lancio precedente>
158
+
159
+ OUTPUT_SCHEMA:
160
+ <stesso schema>
161
+
162
+ DOD:
163
+ <stesso dod>
164
+
165
+ CHECKPOINT_PRECEDENTE:
166
+ <JSON del checkpoint corrente, indentato>
167
+ ```
168
+
169
+ Lancia il sub-agent → torna al punto 3b.
170
+
171
+ ### 4. Validazione (dopo `stato == "done"`)
172
+
173
+ Recupera `output_finale` da `STATE.json.checkpoint`.
174
+
175
+ **Se `checkpoint.decisioni_da_approvare` non è vuoto**, mostra prima:
176
+ > "## Decisioni prese durante l'elaborazione
177
+ > <lista decisioni in bullet>
178
+ > Confermi queste scelte o vuoi modificare qualcosa?"
179
+
180
+ Aspetta conferma o feedback. Se l'utente chiede modifiche → vai al punto 3c con il feedback come `CONTESTO_AGGIUNTIVO`.
181
+
182
+ **Se confermato (o se `decisioni_da_approvare` è vuoto):**
183
+ > "**Output approvato?** Rispondi SÌ per salvare, oppure dammi feedback per raffinare."
184
+ - **SÌ** → vai al punto 5
185
+ - **Feedback** → vai al punto 3c con il feedback come `CONTESTO_AGGIUNTIVO`
186
+
187
+ ### 5. Salva e chiudi (solo dopo SÌ esplicito)
188
+
189
+ **Pre-validazione STATE.json** — prima di scrivere il file, verifica mentalmente che il JSON prodotto rispetti `system/schemas/state.schema.json`:
190
+ - `workflow.current_task` deve rispettare il pattern `N.N` (es. `"1.2"`) — non `"1"`, non `"fase1"`)
191
+ - `workflow.status` deve essere esattamente uno tra: `"not_started"`, `"in_progress"`, `"completed"`
192
+ - `workflow.current_phase` deve essere un intero tra 0 e 8
193
+ - `completed_tasks` deve essere un array di stringhe in formato `N.N`
194
+ - Tutti i campi `required` devono essere presenti (vedi schema per lista completa)
195
+ - Se un campo è ambiguo, usa il valore di default definito nello schema, non inventarne uno
196
+
197
+ 1. Salva output in `docs/phases/<phase_id>/<task_id>-output.md`
198
+ 1a. Imposta `STATE.json.checkpoint` a `null` (task completata, checkpoint non più necessario)
199
+ 2. Aggiorna `STATE.json`: avanza `current_task`, aggiorna `last_session`, aggiungi a `completed_tasks`
200
+ 3. Determina la task successiva (quella dopo la corrente in `workflow-v5.json`, o in `docs/ROADMAP.json` se `roadmap_generated == true`).
201
+ Leggi `task.session_hint` e scrivi il messaggio corrispondente:
202
+
203
+ **Se `session_hint == "continue"`:**
204
+ > "Task **[id] — [titolo]** completata ✓
205
+ > Continuo con **[next_id] — [next_titolo]**? (sì/no)"
206
+ - Se sì → esegui `/start` (rileggi STATE.json e avvia la task successiva)
207
+ - Se no → fermati
208
+
209
+ **Se `session_hint == "compact"`:**
210
+ > "Task **[id] — [titolo]** completata ✓
211
+ >
212
+ > Prossima: **[next_id] — [next_titolo]**
213
+ >
214
+ > Incolla questo comando per continuare:
215
+ > ```
216
+ > /compact task [id] completata. Prossima: [next_id] — [next_titolo].
217
+ > ```"
218
+
219
+ **Se `session_hint == "new_session"`:**
220
+ > "Task **[id] — [titolo]** completata ✓
221
+ >
222
+ > La prossima task (**[next_id] — [next_titolo]**) è impegnativa — consiglio una sessione fresca.
223
+ >
224
+ > Chiudi questa chat e apri una nuova sessione, poi scrivi: **`/start`**"
225
+
226
+ 4. **FERMATI.** Non procedere. Non chiedere altro.
227
+
228
+ ### 6-GATE. Salva gate e aggiorna context_snapshot (solo se `is_gate: true`)
229
+
230
+ **Pre-validazione STATE.json** — prima di scrivere il file, verifica mentalmente che il JSON prodotto rispetti `system/schemas/state.schema.json`:
231
+ - `workflow.current_task` deve rispettare il pattern `N.N` (es. `"1.2"`)
232
+ - `workflow.status` deve essere esattamente uno tra: `"not_started"`, `"in_progress"`, `"completed"`
233
+ - `context_snapshot.phase_N` deve essere compilato con il template typed della fase corrispondente (vedi tabella sotto) — non testo libero
234
+ - Tutti i campi `required` del template di fase devono essere presenti; usare `null` solo per il valore delle fasi non ancora raggiunte
235
+ - Se un campo è ambiguo, usa il valore di default definito nello schema, non inventarne uno
236
+
237
+ 1. Salva l'output del gate in `docs/phases/<phase_id>/<task_id>-gate.md`
238
+ 2. Aggiorna `STATE.json.context_snapshot.phase_N` con il template strutturato corrispondente alla fase (vedi tabella sotto). Compila ogni campo in modo conciso — il totale dello snapshot di fase deve stare in meno di 200 token.
239
+ 3. Aggiorna `STATE.json`: aggiorna `last_session`, aggiungi a `completed_tasks`
240
+
241
+ **Se questo è gate 0.4 (fine fase 0):**
242
+ NON avanzare ancora `current_task` a `1.1`. Invece, esegui subito la procedura di generazione roadmap descritta in `.claude/skills/roadmap/SKILL.md` (passi 1→7). Solo dopo che l'utente ha approvato la roadmap (SÌ esplicito), avanza `current_task` a `"1.1"` e fermati.
243
+
244
+ **Tutti gli altri gate:**
245
+ 4. Avanza `current_task` alla task successiva in `STATE.json`
246
+ 5. Determina la task successiva (quella dopo il gate corrente). Leggi il suo `session_hint` e scrivi il messaggio corrispondente:
247
+
248
+ **Se `session_hint == "continue"`:**
249
+ > "Gate **[id]** completato ✓
250
+ > Continuo con **[next_id] — [next_titolo]**? (sì/no)"
251
+ - Se sì → esegui `/start`
252
+ - Se no → fermati
253
+
254
+ **Se `session_hint == "compact"`:**
255
+ > "Gate **[id]** completato ✓
256
+ >
257
+ > Prossima: **[next_id] — [next_titolo]**
258
+ >
259
+ > Incolla questo comando per continuare:
260
+ > ```
261
+ > /compact gate [id] completato. Prossima: [next_id] — [next_titolo].
262
+ > ```"
263
+
264
+ **Se `session_hint == "new_session"`:**
265
+ > "Gate **[id]** completato ✓
266
+ >
267
+ > La prossima task (**[next_id] — [next_titolo]**) è impegnativa — consiglio una sessione fresca.
268
+ >
269
+ > Chiudi questa chat e apri una nuova sessione, poi scrivi: **`/start`**"
270
+
271
+ 6. **FERMATI.**
272
+
273
+ #### Template context_snapshot per fase
274
+
275
+ **Gate 0.4 → `context_snapshot.phase_0`**
276
+ ```json
277
+ {
278
+ "idea": "<elevator pitch in 1 frase>",
279
+ "target": "<utente primario>",
280
+ "differenziante": "<1 frase>",
281
+ "verdict": "GO",
282
+ "vincoli": ["<vincolo 1>", "<vincolo 2>"]
283
+ }
284
+ ```
285
+
286
+ **Gate 1.6 → `context_snapshot.phase_1`**
287
+ ```json
288
+ {
289
+ "scope_mvp": ["<feature 1>", "<feature 2>"],
290
+ "stack": "<frontend> + <backend> + <db>",
291
+ "costi_mensili_stimati": "<€ N>",
292
+ "rischi_principali": ["<rischio 1>", "<rischio 2>"],
293
+ "verdict": "GO"
294
+ }
295
+ ```
296
+
297
+ **Gate 2.3 → `context_snapshot.phase_2`**
298
+ ```json
299
+ {
300
+ "milestone": [
301
+ { "nome": "<nome>", "data": "<YYYY-MM-DD>", "output": "<deliverable>" }
302
+ ],
303
+ "dipendenze_critiche": ["<dipendenza 1>"]
304
+ }
305
+ ```
306
+
307
+ **Gate 3.3 → `context_snapshot.phase_3`**
308
+ ```json
309
+ {
310
+ "ui_approach": "<descrizione in 1 frase>",
311
+ "design_system": "<nome o 'custom'>",
312
+ "schermate_principali": ["<schermata 1>", "<schermata 2>"]
313
+ }
314
+ ```
315
+
316
+ **Gate 4.4 → `context_snapshot.phase_4`**
317
+ ```json
318
+ {
319
+ "db_entita_principali": ["<entità 1>", "<entità 2>"],
320
+ "api_count": "<N endpoint>",
321
+ "blueprint_versione": "<1.0>",
322
+ "pattern_architetturale": "<es. monolite modulare>"
323
+ }
324
+ ```
325
+
326
+ **Gate 5.4 → `context_snapshot.phase_5`**
327
+ ```json
328
+ {
329
+ "feature_completate": ["<feature 1>", "<feature 2>"],
330
+ "feature_mancanti": ["<feature 3>"],
331
+ "debito_tecnico": ["<item 1>"]
332
+ }
333
+ ```
334
+
335
+ **Gate 6.4 → `context_snapshot.phase_6`**
336
+ ```json
337
+ {
338
+ "test_coverage": "<N% oppure 'manuale'>",
339
+ "bug_critici_aperti": 0,
340
+ "pronto_per_deploy": true
341
+ }
342
+ ```
343
+
344
+ **Gate 7.5 → `context_snapshot.phase_7`**
345
+ ```json
346
+ {
347
+ "url_produzione": "<https://...>",
348
+ "data_lancio": "<YYYY-MM-DD>",
349
+ "canali_lancio": ["<canale 1>"]
350
+ }
351
+ ```
352
+
353
+ **Gate 8.4 → `context_snapshot.phase_8`**
354
+ ```json
355
+ {
356
+ "kpi_principali": { "<metrica>": "<valore>" },
357
+ "decisione_strategica": "crescita | pivot | sunset",
358
+ "lessons_learned": ["<insight 1>"]
359
+ }
360
+ ```
@@ -0,0 +1,70 @@
1
+ # Project Workflow System — Claude Context
2
+
3
+ ## Regola fondamentale: UNA TASK PER VOLTA
4
+
5
+ Completa e valida una task prima di passare alla successiva. Usa `/compact` tra una task e l'altra per liberare il context window — la sessione può contenere più task consecutive.
6
+
7
+ ## Mappa dei file — chi fa cosa
8
+
9
+ | File | Chi lo crea | Chi lo aggiorna | A cosa serve |
10
+ |---|---|---|---|
11
+ | `CLAUDE.md` | `npm run init` | Sviluppatore (raramente) | Istruzioni per Claude — auto-iniettato |
12
+ | `system/preferences.json` | `npm run init` | Claude (`/setup`) o utente | Preferenze progetto: stack, account, deploy — compilato progressivamente |
13
+ | `system/workflow-v5.json` | `npm run init` | Mai | Template 38 task con domande e criteri |
14
+ | `system/schemas/state.schema.json` | `npm run init` | Mai | JSON Schema per STATE.json — riferimento per validazione pre-salvataggio |
15
+ | `system/schemas/workflow.schema.json` | `npm run init` | Mai | JSON Schema per workflow-v5.json — enum modelli, skill validi, pattern ID |
16
+ | `project.json` | `npm run init` | Claude (raramente) | Anagrafica progetto |
17
+ | `STATE.json` | `npm run init` | Claude (dopo ogni task) | Stato corrente — file più importante |
18
+ | `docs/ROADMAP.json` | Claude (`/roadmap`) | Claude (`/roadmap --update`) | Task selezionate per questo progetto |
19
+ | `docs/ROADMAP.md` | Claude (`/roadmap`) | Claude (`/roadmap --update`) | Versione leggibile della roadmap custom |
20
+ | `docs/phases/<X>/<Y>-output.md` | Claude (ogni task) | Mai dopo validazione | Output validato = documentazione vivente |
21
+ | `.claude/skills/*/SKILL.md` | `npm run init` | Mai | Skill specializzati — 4 user-facing, 9 interni (invocati dall'orchestratore) |
22
+ | `.claude/agents/task-agent.md` | `npm run init` | Mai | Sub-agent esecutore isolato — invocato da `/task` per ogni task non-gate |
23
+ | `docs/BLUEPRINT.xml` | Claude (task 4.3) | Claude (fase 5+) | Sorgente di verità tecnica |
24
+
25
+ ## Come lavorare
26
+
27
+ Ogni sessione si avvia con:
28
+ ```
29
+ /start
30
+ ```
31
+
32
+ `/start` legge `STATE.json` e avvia automaticamente la task giusta — non devi ricordare quale. Al termine di ogni task, Claude fornisce un comando `/compact` precompilato da incollare: dopo la compattazione la sessione riprende automaticamente sulla task successiva.
33
+
34
+ Lo skill `/task` gestisce l'intero ciclo: caricamento contesto → interrogazione → lancio sub-agent `task-agent` → loop checkpoint → validazione → salvataggio.
35
+
36
+ Il sub-agent `task-agent` esegue il lavoro in isolamento (proprio context window): skill, web search, MCP. Restituisce un checkpoint JSON. Se blocca su informazioni mancanti (`stato: "partial"`), l'orchestratore chiede all'utente e rilancia. Il checkpoint è persistito in `STATE.json` — le task sono riprendibili cross-sessione.
37
+
38
+ ## Skill disponibili
39
+
40
+ | Skill | Quando viene usato |
41
+ |---|---|
42
+ | `/task` | Orchestratore — invocato dall'utente per ogni task |
43
+ | `/setup` | Compila `preferences.json` interattivamente (per sezione o tutto) |
44
+ | `/roadmap` | Genera la roadmap custom dopo gate 0.4 (usa `--update` per rigenerare) |
45
+ | `/ricerca` | Ricerca web strutturata (competitor, prezzi servizi) |
46
+ | `/analisi` | Analisi strutturata (GO/NO-GO, rischi, KPI, strategia) |
47
+ | `/legale` | Documenti legali (privacy policy, T&C, checklist GDPR) |
48
+ | `/design` | Flussi utente, wireframe, design system (+ Figma MCP) |
49
+ | `/architettura` | Schema DB, API, architettura (+ Postman MCP) |
50
+ | `/blueprint` | Genera/aggiorna BLUEPRINT.xml |
51
+ | `/qa` | Test plan, security checklist, bug triage |
52
+ | `/deploy` | Checklist deploy, env vars, smoke test, monitoraggio |
53
+ | `/pianificazione` | Milestone, dipendenze, backlog (+ ClickUp MCP) |
54
+
55
+ Gli skill specializzati vengono invocati automaticamente dall'orchestratore `/task` quando la task corrente ha un campo `skill` valorizzato. L'utente viene informato prima dell'esecuzione.
56
+
57
+ ## Comandi rapidi
58
+
59
+ - **`/start`** → avvia la sessione — rileva automaticamente la task corrente da `STATE.json`
60
+ - **`/task X.Y`** → avvia una task specifica (utile per rieseguire o saltare)
61
+ - **`/setup`** → compila preferenze progetto interattivamente (o `/setup stack`, `/setup identity`…)
62
+ - **`/setup --import <percorso>`** → importa preferenze da un altro progetto
63
+ - **`/roadmap`** → genera roadmap custom (dopo gate 0.4)
64
+ - **`/roadmap --update`** → rigenera la roadmap se il profilo progetto è cambiato
65
+ - **"Mostra stato"** → leggi e mostra `STATE.json`
66
+ - **"Gate N"** → esegui il gate di chiusura fase N
67
+
68
+ ## Informazioni personali
69
+
70
+ Vedi `system/preferences.json` per: stack tecnologico, P.IVA, account e ambienti di deploy. Usale come default; il progetto può sovrascriverle in `project.json` → `overrides`.
@@ -0,0 +1,59 @@
1
+ # [Nome Progetto]
2
+
3
+ Progetto gestito con [Project Workflow System](https://github.com/fturci/project-workflow-template).
4
+
5
+ ---
6
+
7
+ ## Avvio rapido
8
+
9
+ Apri questa cartella in Claude Code, poi scrivi:
10
+
11
+ ```
12
+ /start ← avvia o riprendi dalla task corrente (unico comando da ricordare)
13
+ /task X.Y ← avvia una task specifica (per rieseguire o saltare)
14
+ /setup ← compila preferences.json interattivamente
15
+ /roadmap ← genera roadmap custom (dopo gate 0.4)
16
+ ```
17
+
18
+ Ogni sessione = una task. Claude interroga, genera, chiede approvazione, salva e si ferma.
19
+ Tra una task e l'altra Claude fornisce il comando da incollare (`/compact` o `/start`).
20
+
21
+ ---
22
+
23
+ ## Struttura
24
+
25
+ ```
26
+ <nome-progetto>/
27
+ ├── CLAUDE.md ← istruzioni per Claude (non modificare)
28
+ ├── README.md ← questo file
29
+ ├── project.json ← anagrafica: nome, link, override stack
30
+ ├── STATE.json ← stato corrente (punto di partenza di ogni sessione)
31
+ ├── system/
32
+ │ ├── preferences.json ← stack, account, deploy (non committare)
33
+ │ └── workflow-v5.json ← template 38 task — non modificare
34
+ └── docs/
35
+ ├── BLUEPRINT.xml ← sorgente tecnica (generato in fase 4)
36
+ ├── ROADMAP.json ← task selezionate (generato da /roadmap)
37
+ ├── ROADMAP.md ← versione leggibile della roadmap custom
38
+ └── phases/
39
+ └── <N>/
40
+ └── <task_id>-output.md ← output validato di ogni task
41
+ ```
42
+
43
+ ---
44
+
45
+ ## Le 9 fasi
46
+
47
+ | Fase | Nome | Output principale |
48
+ |---|---|---|
49
+ | 0 | Ideazione e Validazione | Scheda idea + analisi competitor + GO/NO-GO |
50
+ | 1 | Definizione e Fattibilità | Scope MVP + stack + costi + rischi |
51
+ | 2 | Pianificazione | Milestone + dipendenze + piano lavoro |
52
+ | 3 | Design | Flussi utente + wireframe + mockup |
53
+ | 4 | Architettura | Schema DB + API + Blueprint XML |
54
+ | 5 | Implementazione MVP | Feature by feature |
55
+ | 6 | QA e Testing | Test + bug fix + beta |
56
+ | 7 | Release e Lancio | Deploy + landing + privacy + lancio |
57
+ | 8 | Operazioni e Crescita | KPI + feedback + backlog + strategia |
58
+
59
+ Ogni fase termina con un **gate** — checklist prima di procedere alla fase successiva.
@@ -0,0 +1,44 @@
1
+ {
2
+ "_comment": "Stato corrente del progetto. Aggiornato dopo ogni task validata. File principale per il context loading.",
3
+ "_version": "1.1",
4
+
5
+ "project_id": "",
6
+ "project_name": "",
7
+
8
+ "workflow": {
9
+ "current_phase": 0,
10
+ "current_task": "0.1",
11
+ "phase_name": "Ideazione e Validazione",
12
+ "task_title": "Documentare e strutturare l'idea",
13
+ "status": "not_started",
14
+ "last_updated": ""
15
+ },
16
+
17
+ "last_session": {
18
+ "date": "",
19
+ "task_worked": "",
20
+ "outcome": "",
21
+ "next_action": ""
22
+ },
23
+
24
+ "decisions": [],
25
+
26
+ "roadmap_generated": false,
27
+
28
+ "completed_tasks": [],
29
+
30
+ "checkpoint": null,
31
+
32
+ "context_snapshot": {
33
+ "_comment": "Riassunto ultra-compatto delle decisioni chiave. Max 300 token. Aggiornato ai gate di fase.",
34
+ "phase_0": null,
35
+ "phase_1": null,
36
+ "phase_2": null,
37
+ "phase_3": null,
38
+ "phase_4": null,
39
+ "phase_5": null,
40
+ "phase_6": null,
41
+ "phase_7": null,
42
+ "phase_8": null
43
+ }
44
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "_comment": "Template per ogni nuovo progetto. Copiare in projects/<nome-progetto>/project.json e compilare.",
3
+ "_version": "1.0",
4
+
5
+ "id": "",
6
+ "name": "",
7
+ "slug": "",
8
+ "created_at": "",
9
+ "status": "active",
10
+
11
+ "overview": {
12
+ "elevator_pitch": "",
13
+ "problem": "",
14
+ "solution": "",
15
+ "target_user": "",
16
+ "platform": "",
17
+ "business_model": ""
18
+ },
19
+
20
+ "links": {
21
+ "github_repo": "",
22
+ "figma": "",
23
+ "google_drive": "",
24
+ "notion_page": "",
25
+ "staging_url": "",
26
+ "production_url": "",
27
+ "landing_page": ""
28
+ },
29
+
30
+ "overrides": {
31
+ "_comment": "Sovrascrive system/preferences.json solo per questo progetto. Lasciare null per usare il default.",
32
+ "stack": null,
33
+ "deploy": null
34
+ },
35
+
36
+ "tools_enabled": [],
37
+
38
+ "notes": ""
39
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "_comment": "Preferenze del progetto. Compilato progressivamente con /setup. Non committare se contiene dati sensibili.",
3
+ "_version": "1.0",
4
+ "_setup_instructions": "Lascia vuoti i campi che non conosci ancora — Claude te li chiederà quando necessari.",
5
+
6
+ "identity": {
7
+ "name": "",
8
+ "role": "",
9
+ "piva": "",
10
+ "email": "",
11
+ "website": ""
12
+ },
13
+
14
+ "stack": {
15
+ "_comment": "Stack tecnologico del progetto. Sovrascrive system/preferences.json per questo progetto.",
16
+ "frontend": {
17
+ "framework": "",
18
+ "language": "",
19
+ "ui_library": "",
20
+ "state": "",
21
+ "forms": "",
22
+ "animations": ""
23
+ },
24
+ "backend": {
25
+ "approach": "",
26
+ "orm": "",
27
+ "validation": ""
28
+ },
29
+ "database": {
30
+ "primary": "",
31
+ "local_dev": "",
32
+ "auth": ""
33
+ },
34
+ "payments": "",
35
+ "email": "",
36
+ "analytics": "",
37
+ "error_tracking": "",
38
+ "storage": "",
39
+ "search": ""
40
+ },
41
+
42
+ "deploy": {
43
+ "frontend": "",
44
+ "database": "",
45
+ "domain_registrar": "",
46
+ "vercel_org": "",
47
+ "supabase_org": "",
48
+ "github_org_or_user": ""
49
+ },
50
+
51
+ "accounts": {
52
+ "_comment": "Riferimenti agli account usati. NON inserire password o token qui.",
53
+ "github": "",
54
+ "vercel": "",
55
+ "supabase": "",
56
+ "stripe": "",
57
+ "resend": "",
58
+ "posthog": "",
59
+ "sentry": "",
60
+ "figma": "",
61
+ "notion": "",
62
+ "clickup": ""
63
+ },
64
+
65
+ "conventions": {
66
+ "repo_naming": "kebab-case",
67
+ "branch_main": "main",
68
+ "commit_style": "conventional commits (feat/fix/chore/docs)",
69
+ "pr_strategy": "squash merge",
70
+ "env_files": ".env.local (dev), variabili Vercel (prod)",
71
+ "folder_structure": "src/app (routes), src/components, src/lib, src/hooks, src/types",
72
+ "component_naming": "PascalCase",
73
+ "file_naming": "kebab-case",
74
+ "function_naming": "camelCase"
75
+ },
76
+
77
+ "ai_preferences": {
78
+ "default_model_interrogation": "claude-haiku-4-5-20251001",
79
+ "default_model_output": "claude-sonnet-4-6",
80
+ "default_model_architecture": "claude-opus-4-6",
81
+ "language": "italiano",
82
+ "code_language": "inglese",
83
+ "max_context_tokens_per_session": 1500
84
+ },
85
+
86
+ "legal": {
87
+ "privacy_policy_template": "",
88
+ "cookie_consent": "",
89
+ "tos_needed_by_default": false,
90
+ "gdpr_applicable": true
91
+ }
92
+ }