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,293 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "state.schema.json",
4
+ "title": "STATE.json schema",
5
+ "description": "Valida la struttura di STATE.json — file di stato corrente del progetto.",
6
+ "type": "object",
7
+ "required": [
8
+ "project_id",
9
+ "project_name",
10
+ "workflow",
11
+ "last_session",
12
+ "decisions",
13
+ "roadmap_generated",
14
+ "completed_tasks",
15
+ "checkpoint",
16
+ "context_snapshot"
17
+ ],
18
+ "additionalProperties": true,
19
+ "properties": {
20
+ "project_id": {
21
+ "type": "string"
22
+ },
23
+ "project_name": {
24
+ "type": "string"
25
+ },
26
+ "workflow": {
27
+ "type": "object",
28
+ "required": [
29
+ "current_phase",
30
+ "current_task",
31
+ "phase_name",
32
+ "task_title",
33
+ "status",
34
+ "last_updated"
35
+ ],
36
+ "additionalProperties": false,
37
+ "properties": {
38
+ "current_phase": {
39
+ "type": "integer",
40
+ "minimum": 0,
41
+ "maximum": 8
42
+ },
43
+ "current_task": {
44
+ "type": "string",
45
+ "pattern": "^\\d+\\.\\d+$",
46
+ "description": "Formato N.N — es. '0.1', '3.2'"
47
+ },
48
+ "phase_name": {
49
+ "type": "string"
50
+ },
51
+ "task_title": {
52
+ "type": "string"
53
+ },
54
+ "status": {
55
+ "type": "string",
56
+ "enum": ["not_started", "in_progress", "completed"]
57
+ },
58
+ "last_updated": {
59
+ "type": "string"
60
+ }
61
+ }
62
+ },
63
+ "last_session": {
64
+ "type": "object",
65
+ "required": ["date", "task_worked", "outcome", "next_action"],
66
+ "additionalProperties": false,
67
+ "properties": {
68
+ "date": { "type": "string" },
69
+ "task_worked": { "type": "string" },
70
+ "outcome": { "type": "string" },
71
+ "next_action": { "type": "string" }
72
+ }
73
+ },
74
+ "decisions": {
75
+ "type": "array",
76
+ "items": { "type": "string" }
77
+ },
78
+ "roadmap_generated": {
79
+ "type": "boolean"
80
+ },
81
+ "completed_tasks": {
82
+ "type": "array",
83
+ "items": {
84
+ "type": "string",
85
+ "pattern": "^\\d+\\.\\d+$"
86
+ }
87
+ },
88
+ "checkpoint": {
89
+ "description": "Stato dell'esecuzione corrente del sub-agent. null se nessuna task in corso.",
90
+ "oneOf": [
91
+ { "type": "null" },
92
+ {
93
+ "type": "object",
94
+ "required": [
95
+ "stato", "task_id", "iterazione", "completato",
96
+ "risultato_parziale", "bloccato_su", "contesto_necessario",
97
+ "output_finale", "file_prodotti", "decisioni_da_approvare"
98
+ ],
99
+ "additionalProperties": false,
100
+ "properties": {
101
+ "stato": {
102
+ "type": "string",
103
+ "enum": ["partial", "done"]
104
+ },
105
+ "task_id": {
106
+ "type": "string",
107
+ "pattern": "^\\d+\\.\\d+$"
108
+ },
109
+ "iterazione": {
110
+ "type": "integer",
111
+ "minimum": 1
112
+ },
113
+ "completato": {
114
+ "type": "array",
115
+ "items": { "type": "string" }
116
+ },
117
+ "risultato_parziale": {
118
+ "oneOf": [{ "type": "null" }, { "type": "string" }]
119
+ },
120
+ "bloccato_su": {
121
+ "oneOf": [{ "type": "null" }, { "type": "string" }]
122
+ },
123
+ "contesto_necessario": {
124
+ "oneOf": [{ "type": "null" }, { "type": "string" }]
125
+ },
126
+ "output_finale": {
127
+ "oneOf": [{ "type": "null" }, { "type": "string" }]
128
+ },
129
+ "file_prodotti": {
130
+ "type": "array",
131
+ "items": { "type": "string" }
132
+ },
133
+ "decisioni_da_approvare": {
134
+ "type": "array",
135
+ "items": { "type": "string" }
136
+ }
137
+ }
138
+ }
139
+ ]
140
+ },
141
+ "context_snapshot": {
142
+ "type": "object",
143
+ "required": [
144
+ "phase_0", "phase_1", "phase_2", "phase_3", "phase_4",
145
+ "phase_5", "phase_6", "phase_7", "phase_8"
146
+ ],
147
+ "additionalProperties": true,
148
+ "properties": {
149
+ "phase_0": {
150
+ "oneOf": [
151
+ { "type": "null" },
152
+ {
153
+ "type": "object",
154
+ "required": ["idea", "target", "differenziante", "verdict", "vincoli"],
155
+ "properties": {
156
+ "idea": { "type": "string" },
157
+ "target": { "type": "string" },
158
+ "differenziante": { "type": "string" },
159
+ "verdict": { "type": "string", "enum": ["GO", "NO-GO"] },
160
+ "vincoli": { "type": "array", "items": { "type": "string" } }
161
+ }
162
+ }
163
+ ]
164
+ },
165
+ "phase_1": {
166
+ "oneOf": [
167
+ { "type": "null" },
168
+ {
169
+ "type": "object",
170
+ "required": ["scope_mvp", "stack", "costi_mensili_stimati", "rischi_principali", "verdict"],
171
+ "properties": {
172
+ "scope_mvp": { "type": "array", "items": { "type": "string" } },
173
+ "stack": { "type": "string" },
174
+ "costi_mensili_stimati": { "type": "string" },
175
+ "rischi_principali": { "type": "array", "items": { "type": "string" } },
176
+ "verdict": { "type": "string", "enum": ["GO", "NO-GO"] }
177
+ }
178
+ }
179
+ ]
180
+ },
181
+ "phase_2": {
182
+ "oneOf": [
183
+ { "type": "null" },
184
+ {
185
+ "type": "object",
186
+ "required": ["milestone", "dipendenze_critiche"],
187
+ "properties": {
188
+ "milestone": {
189
+ "type": "array",
190
+ "items": {
191
+ "type": "object",
192
+ "required": ["nome", "data", "output"],
193
+ "properties": {
194
+ "nome": { "type": "string" },
195
+ "data": { "type": "string" },
196
+ "output": { "type": "string" }
197
+ }
198
+ }
199
+ },
200
+ "dipendenze_critiche": { "type": "array", "items": { "type": "string" } }
201
+ }
202
+ }
203
+ ]
204
+ },
205
+ "phase_3": {
206
+ "oneOf": [
207
+ { "type": "null" },
208
+ {
209
+ "type": "object",
210
+ "required": ["ui_approach", "design_system", "schermate_principali"],
211
+ "properties": {
212
+ "ui_approach": { "type": "string" },
213
+ "design_system": { "type": "string" },
214
+ "schermate_principali": { "type": "array", "items": { "type": "string" } }
215
+ }
216
+ }
217
+ ]
218
+ },
219
+ "phase_4": {
220
+ "oneOf": [
221
+ { "type": "null" },
222
+ {
223
+ "type": "object",
224
+ "required": ["db_entita_principali", "api_count", "blueprint_versione", "pattern_architetturale"],
225
+ "properties": {
226
+ "db_entita_principali": { "type": "array", "items": { "type": "string" } },
227
+ "api_count": { "type": "string" },
228
+ "blueprint_versione": { "type": "string" },
229
+ "pattern_architetturale": { "type": "string" }
230
+ }
231
+ }
232
+ ]
233
+ },
234
+ "phase_5": {
235
+ "oneOf": [
236
+ { "type": "null" },
237
+ {
238
+ "type": "object",
239
+ "required": ["feature_completate", "feature_mancanti", "debito_tecnico"],
240
+ "properties": {
241
+ "feature_completate": { "type": "array", "items": { "type": "string" } },
242
+ "feature_mancanti": { "type": "array", "items": { "type": "string" } },
243
+ "debito_tecnico": { "type": "array", "items": { "type": "string" } }
244
+ }
245
+ }
246
+ ]
247
+ },
248
+ "phase_6": {
249
+ "oneOf": [
250
+ { "type": "null" },
251
+ {
252
+ "type": "object",
253
+ "required": ["test_coverage", "bug_critici_aperti", "pronto_per_deploy"],
254
+ "properties": {
255
+ "test_coverage": { "type": "string" },
256
+ "bug_critici_aperti": { "type": "integer", "minimum": 0 },
257
+ "pronto_per_deploy": { "type": "boolean" }
258
+ }
259
+ }
260
+ ]
261
+ },
262
+ "phase_7": {
263
+ "oneOf": [
264
+ { "type": "null" },
265
+ {
266
+ "type": "object",
267
+ "required": ["url_produzione", "data_lancio", "canali_lancio"],
268
+ "properties": {
269
+ "url_produzione": { "type": "string" },
270
+ "data_lancio": { "type": "string" },
271
+ "canali_lancio": { "type": "array", "items": { "type": "string" } }
272
+ }
273
+ }
274
+ ]
275
+ },
276
+ "phase_8": {
277
+ "oneOf": [
278
+ { "type": "null" },
279
+ {
280
+ "type": "object",
281
+ "required": ["kpi_principali", "decisione_strategica", "lessons_learned"],
282
+ "properties": {
283
+ "kpi_principali": { "type": "object" },
284
+ "decisione_strategica": { "type": "string", "enum": ["crescita", "pivot", "sunset"] },
285
+ "lessons_learned": { "type": "array", "items": { "type": "string" } }
286
+ }
287
+ }
288
+ ]
289
+ }
290
+ }
291
+ }
292
+ }
293
+ }
@@ -0,0 +1,104 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "workflow.schema.json",
4
+ "title": "workflow-v5.json schema",
5
+ "description": "Valida la struttura di workflow-v5.json — template master delle task.",
6
+ "type": "object",
7
+ "required": ["phases"],
8
+ "properties": {
9
+ "phases": {
10
+ "type": "array",
11
+ "items": {
12
+ "type": "object",
13
+ "required": ["id", "name", "goal", "tasks"],
14
+ "properties": {
15
+ "id": { "type": "integer", "minimum": 0 },
16
+ "name": { "type": "string" },
17
+ "goal": { "type": "string" },
18
+ "tasks": {
19
+ "type": "array",
20
+ "items": { "$ref": "#/definitions/task" }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ },
26
+ "definitions": {
27
+ "task": {
28
+ "type": "object",
29
+ "required": [
30
+ "id",
31
+ "title",
32
+ "is_gate",
33
+ "model",
34
+ "skill",
35
+ "session_hint",
36
+ "depends_on",
37
+ "questions",
38
+ "dod"
39
+ ],
40
+ "additionalProperties": true,
41
+ "properties": {
42
+ "id": {
43
+ "type": "string",
44
+ "pattern": "^\\d+\\.\\d+$",
45
+ "description": "Formato N.N — es. '0.1', '3.2'"
46
+ },
47
+ "title": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ },
51
+ "is_gate": {
52
+ "type": "boolean"
53
+ },
54
+ "model": {
55
+ "type": "string",
56
+ "enum": [
57
+ "claude-haiku-4-5-20251001",
58
+ "claude-sonnet-4-6",
59
+ "claude-opus-4-6"
60
+ ]
61
+ },
62
+ "skill": {
63
+ "oneOf": [
64
+ { "type": "null" },
65
+ {
66
+ "type": "string",
67
+ "enum": [
68
+ "ricerca",
69
+ "analisi",
70
+ "legale",
71
+ "design",
72
+ "architettura",
73
+ "blueprint",
74
+ "qa",
75
+ "deploy",
76
+ "pianificazione",
77
+ "implementazione"
78
+ ]
79
+ }
80
+ ]
81
+ },
82
+ "session_hint": {
83
+ "type": "string",
84
+ "enum": ["continue", "compact", "new_session"],
85
+ "description": "Suggerisce cosa fare a fine task: continuare nella stessa sessione, compattare il context, o aprire una nuova sessione."
86
+ },
87
+ "depends_on": {
88
+ "type": "array",
89
+ "items": {
90
+ "type": "string",
91
+ "pattern": "^\\d+\\.\\d+$"
92
+ }
93
+ },
94
+ "questions": {
95
+ "type": "array",
96
+ "items": { "type": "string" }
97
+ },
98
+ "dod": {
99
+ "type": "string"
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }