@polymorphism-tech/morph-spec 4.8.18 → 4.9.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.
- package/CLAUDE.md +98 -0
- package/README.md +2 -2
- package/bin/morph-spec.js +15 -56
- package/bin/task-manager.js +115 -14
- package/bin/validate.js +67 -33
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +201 -203
- package/docs/QUICKSTART.md +2 -2
- package/framework/CLAUDE.md +21 -0
- package/framework/agents.json +758 -164
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +1 -1
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +2 -2
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +155 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +1 -1
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +71 -2
- package/framework/hooks/claude-code/statusline.py +76 -30
- package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +14 -6
- package/framework/hooks/shared/activity-logger.js +0 -24
- package/framework/hooks/shared/phase-utils.js +3 -0
- package/framework/hooks/shared/skill-reminder-helpers.js +79 -0
- package/framework/hooks/shared/stale-task-reset.js +57 -0
- package/framework/hooks/shared/state-reader.js +2 -2
- package/framework/hooks/shared/worktree-helpers.js +53 -0
- package/framework/phases.json +40 -8
- package/framework/skills/level-0-meta/brainstorming/SKILL.md +1 -1
- package/framework/skills/level-0-meta/code-review/SKILL.md +1 -1
- package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +163 -163
- package/framework/skills/level-0-meta/frontend-review/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-init/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +1 -1
- package/framework/skills/level-0-meta/post-implementation/SKILL.md +59 -12
- package/framework/skills/level-0-meta/simulation-checklist/SKILL.md +1 -1
- package/framework/skills/level-0-meta/terminal-title/SKILL.md +1 -1
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +1 -1
- package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +6 -5
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +215 -189
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +251 -251
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +382 -365
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +492 -450
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +194 -190
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +270 -270
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +285 -285
- package/framework/standards/STANDARDS.json +640 -88
- package/framework/standards/infrastructure/vercel/vercel-database.md +106 -0
- package/framework/templates/REGISTRY.json +1825 -1909
- package/framework/templates/context/CONTEXT-FEATURE.md +276 -276
- package/framework/templates/docs/onboarding.md +1 -5
- package/framework/workflows/configs/nodejs-cli.json +40 -0
- package/package.json +2 -6
- package/src/commands/agents/dispatch-agents.js +55 -4
- package/src/commands/project/doctor.js +16 -47
- package/src/commands/project/init.js +1 -1
- package/src/commands/project/status.js +2 -2
- package/src/commands/project/update.js +381 -365
- package/src/commands/project/worktree.js +154 -0
- package/src/commands/state/advance-phase.js +120 -30
- package/src/commands/state/approve.js +2 -2
- package/src/commands/state/index.js +7 -8
- package/src/commands/state/phase-runner.js +1 -1
- package/src/commands/state/state.js +61 -6
- package/src/commands/tasks/task.js +78 -99
- package/src/commands/templates/template-render.js +93 -173
- package/src/commands/trust/trust.js +26 -21
- package/src/core/paths/output-schema.js +15 -0
- package/src/core/state/state-manager.js +28 -54
- package/src/core/workflows/workflow-detector.js +9 -87
- package/src/lib/phase-chain/phase-validator.js +330 -0
- package/src/lib/stack/stack-profile.js +88 -0
- package/src/lib/tasks/task-classifier.js +16 -0
- package/src/lib/tasks/test-runner.js +77 -0
- package/src/lib/trust/trust-manager.js +32 -144
- package/src/lib/validators/spec-validator.js +58 -4
- package/src/lib/validators/validation-runner.js +23 -11
- package/src/scripts/setup-infra.js +240 -224
- package/src/utils/agents-installer.js +2 -2
- package/src/utils/banner.js +1 -1
- package/src/utils/claude-settings-manager.js +1 -1
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +258 -8
- package/framework/hooks/dev/check-sync-health.js +0 -117
- package/framework/hooks/dev/guard-version-numbers.js +0 -57
- package/framework/hooks/dev/sync-standards-registry.js +0 -60
- package/framework/hooks/dev/sync-template-registry.js +0 -60
- package/framework/hooks/dev/validate-skill-format.js +0 -70
- package/framework/hooks/dev/validate-standard-format.js +0 -73
- package/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
- package/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
- package/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
- package/framework/workflows/configs/design-impl.json +0 -49
- package/framework/workflows/configs/express.json +0 -45
- package/framework/workflows/configs/fast-track.json +0 -42
- package/framework/workflows/configs/full-morph.json +0 -79
- package/framework/workflows/configs/fusion.json +0 -39
- package/framework/workflows/configs/long-running.json +0 -33
- package/framework/workflows/configs/spec-only.json +0 -43
- package/framework/workflows/configs/ui-refresh.json +0 -49
- package/framework/workflows/configs/zero-touch.json +0 -82
- package/src/commands/project/monitor.js +0 -295
- package/src/commands/project/tutorial.js +0 -115
- package/src/commands/state/validate-phase.js +0 -238
- package/src/commands/templates/generate-contracts.js +0 -445
- package/src/core/orchestrator.js +0 -171
- package/src/core/registry/command-registry.js +0 -28
- package/src/core/registry/index.js +0 -8
- package/src/core/registry/validator-registry.js +0 -204
- package/src/core/templates/template-validator.js +0 -296
- package/src/generator/config-generator.js +0 -206
- package/src/generator/templates/config.json.template +0 -40
- package/src/generator/templates/project.md.template +0 -67
- package/src/lib/agents/micro-agent-factory.js +0 -161
- package/src/lib/analysis/complexity-analyzer.js +0 -441
- package/src/lib/analysis/index.js +0 -7
- package/src/lib/analytics/analytics-engine.js +0 -345
- package/src/lib/checkpoints/checkpoint-hooks.js +0 -298
- package/src/lib/checkpoints/index.js +0 -7
- package/src/lib/context/context-bundler.js +0 -241
- package/src/lib/context/context-optimizer.js +0 -212
- package/src/lib/context/context-tracker.js +0 -273
- package/src/lib/context/core-four-tracker.js +0 -201
- package/src/lib/context/mcp-optimizer.js +0 -200
- package/src/lib/execution/fusion-executor.js +0 -304
- package/src/lib/execution/parallel-executor.js +0 -270
- package/src/lib/hooks/stop-hook-executor.js +0 -286
- package/src/lib/hops/hop-composer.js +0 -221
- package/src/lib/phase-chain/eligibility-checker.js +0 -243
- package/src/lib/threads/thread-coordinator.js +0 -238
- package/src/lib/threads/thread-manager.js +0 -317
- package/src/lib/tracking/artifact-trail.js +0 -202
- package/src/scanner/project-scanner.js +0 -242
- package/src/ui/diff-display.js +0 -91
- package/src/ui/interactive-wizard.js +0 -96
- package/src/ui/user-review.js +0 -211
- package/src/ui/wizard-questions.js +0 -188
- package/src/utils/color-utils.js +0 -70
- package/src/utils/process-handler.js +0 -97
|
@@ -1,450 +1,492 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: phase-implement
|
|
3
|
-
description: MORPH-SPEC Phase 5 (Implement). Executes feature tasks using TDD with checkpoint validation every 3 tasks, smoke tests via Playwright, and generates code + recap.md. Use after task list approval when starting feature implementation.
|
|
4
|
-
argument-hint: "[feature-name]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
context: fork
|
|
7
|
-
agent: general-purpose
|
|
8
|
-
user-invocable: false
|
|
9
|
-
cliVersion: "4.
|
|
10
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# MORPH Implement - FASE 5
|
|
14
|
-
|
|
15
|
-
> INTERNAL: Workflow skill used by /morph-apply during automated phase orchestration. Not a user command.
|
|
16
|
-
|
|
17
|
-
Implemente as tasks definidas na FASE 4, com checkpoints a cada 3 tasks e recap final.
|
|
18
|
-
|
|
19
|
-
## Pré-requisitos
|
|
20
|
-
|
|
21
|
-
- [ ] FASE 4 (Tasks) concluída
|
|
22
|
-
- [ ] `tasks.md` ou `tasks.json` aprovado pelo usuário
|
|
23
|
-
- [ ] Tasks gate (`morph-spec approve $ARGUMENTS tasks`) aprovado
|
|
24
|
-
- [ ] Todos os outputs de design existem (spec.md, contracts.cs, decisions.md)
|
|
25
|
-
|
|
26
|
-
##
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
#
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
-
|
|
236
|
-
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
1.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
1.
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
/
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
-
|
|
430
|
-
-
|
|
431
|
-
-
|
|
432
|
-
-
|
|
433
|
-
-
|
|
434
|
-
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
1
|
+
---
|
|
2
|
+
name: morph:phase-implement
|
|
3
|
+
description: MORPH-SPEC Phase 5 (Implement). Executes feature tasks using TDD with checkpoint validation every 3 tasks, smoke tests via Playwright, and generates code + recap.md. Use after task list approval when starting feature implementation.
|
|
4
|
+
argument-hint: "[feature-name]"
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
context: fork
|
|
7
|
+
agent: general-purpose
|
|
8
|
+
user-invocable: false
|
|
9
|
+
cliVersion: "4.9.0"
|
|
10
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# MORPH Implement - FASE 5
|
|
14
|
+
|
|
15
|
+
> INTERNAL: Workflow skill used by /morph-apply during automated phase orchestration. Not a user command.
|
|
16
|
+
|
|
17
|
+
Implemente as tasks definidas na FASE 4, com checkpoints a cada 3 tasks e recap final.
|
|
18
|
+
|
|
19
|
+
## Pré-requisitos
|
|
20
|
+
|
|
21
|
+
- [ ] FASE 4 (Tasks) concluída
|
|
22
|
+
- [ ] `tasks.md` ou `tasks.json` aprovado pelo usuário
|
|
23
|
+
- [ ] Tasks gate (`morph-spec approve $ARGUMENTS tasks`) aprovado
|
|
24
|
+
- [ ] Todos os outputs de design existem (spec.md, contracts.cs, decisions.md)
|
|
25
|
+
|
|
26
|
+
## Pre-flight — Validação Mecânica (OBRIGATÓRIO)
|
|
27
|
+
|
|
28
|
+
Antes de qualquer task, valide que as fases anteriores estão realmente completas. O `state.json` pode ter sido setado manualmente — estes comandos verificam os artefatos reais no filesystem.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 1. Verifica outputs obrigatórios de todas as fases anteriores
|
|
32
|
+
npx morph-spec validate-feature $ARGUMENTS
|
|
33
|
+
|
|
34
|
+
# 2. Confirma que todos os approval gates foram aprovados
|
|
35
|
+
npx morph-spec approval-status $ARGUMENTS
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Se qualquer check falhar → **STOP**. Não inicie nenhuma task. Reporte ao usuário o que está faltando e quais comandos rodar para resolver:
|
|
39
|
+
|
|
40
|
+
| Problema | Comando de resolução |
|
|
41
|
+
|----------|---------------------|
|
|
42
|
+
| Output faltando (spec.md, contracts, etc.) | Volte à fase correspondente e gere o output |
|
|
43
|
+
| Gate não aprovado (design, tasks) | `npx morph-spec approve $ARGUMENTS <gate>` |
|
|
44
|
+
| Phase inválida | `npx morph-spec phase advance $ARGUMENTS` |
|
|
45
|
+
|
|
46
|
+
**Esta etapa não é opcional.** Só prossiga quando ambos os comandos retornarem sem erros.
|
|
47
|
+
|
|
48
|
+
## Ferramentas Recomendadas
|
|
49
|
+
|
|
50
|
+
> **Ref:** `framework/skills/level-0-meta/tool-usage-guide/SKILL.md` para guia completo.
|
|
51
|
+
> **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
|
|
52
|
+
> **Example:** `references/recap-example.md` — filled-in recap.md showing expected output quality.
|
|
53
|
+
|
|
54
|
+
| Ação | Ferramenta | Alternativa |
|
|
55
|
+
|------|------------|-------------|
|
|
56
|
+
| Verificar modo de execução (single/subagents/agent-teams) | **Bash** `npx morph-spec dispatch-agents $ARGUMENTS implement` | Grupos de tasks + prompts de subagents |
|
|
57
|
+
| **Dispatch implementadores por domínio** (subagents) | **Agent** `subagent_type=<taskGroups[grupo].agentId>` + `prompt=taskPrompt` do dispatch config | Backend + frontend + infra em paralelo |
|
|
58
|
+
| **Criar Agent Team** (features críticas multi-domínio) | Linguagem natural — veja Passo 0.5b | — |
|
|
59
|
+
| Ler task details | **Read** tasks.json, spec.md, contracts.cs | — |
|
|
60
|
+
| Criar novos arquivos | **Write** source files | — |
|
|
61
|
+
| Modificar arquivos existentes | **Edit** source files | — |
|
|
62
|
+
| Consultar API de biblioteca | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
|
|
63
|
+
| Executar migrations | **Supabase MCP** `query()` | **Bash** `npx supabase migration ...` |
|
|
64
|
+
| Build do projeto | **Bash** `dotnet build` ou `npm run build` | — |
|
|
65
|
+
| Rodar testes | **Bash** `dotnet test` ou `npm test` | — |
|
|
66
|
+
| Checkpoint validation | **Bash** `npx morph-spec validate-feature ...` | — |
|
|
67
|
+
| Marcar task concluída | **Bash** `npx morph-spec task done $ARGUMENTS T001` | — |
|
|
68
|
+
| Smoke test no browser | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | Manual |
|
|
69
|
+
| Verificar erros de console | **Playwright MCP** `browser_console_messages()` | — |
|
|
70
|
+
| Screenshot para recap | **Playwright MCP** `browser_take_screenshot()` | — |
|
|
71
|
+
| Criar PR | **Bash** `gh pr create ...` | **GitHub MCP** `create_pull_request()` |
|
|
72
|
+
| Atualizar state | **Bash** `npx morph-spec state set ...` | — |
|
|
73
|
+
|
|
74
|
+
**MCPs desta fase:** Supabase (migrations, RLS), Context7 (API lookup), Playwright (smoke test), GitHub (PRs).
|
|
75
|
+
|
|
76
|
+
**Anti-padrões:**
|
|
77
|
+
- ❌ Task agent para editar um único arquivo (use Edit direto)
|
|
78
|
+
- ✅ Task agent para implementar service layer em 5+ arquivos (multi-file legítimo)
|
|
79
|
+
- ✅ Task agents paralelos quando `tasks.total ≥ 6` e feature tem 2+ domínios ativos
|
|
80
|
+
- ✅ Agent Teams quando backend e frontend precisam coordenar contratos de API
|
|
81
|
+
- ❌ Agent Teams para features single-domain (subagents são suficientes)
|
|
82
|
+
- ❌ Agent Teams sem plan approval (cria risco de implementações divergentes)
|
|
83
|
+
- ❌ Bash `cat` para criar arquivos (use Write tool)
|
|
84
|
+
- ❌ Bash `sed` para modificar código (use Edit tool)
|
|
85
|
+
- ❌ Implementar sem ler contracts.cs primeiro (contracts são a fonte de verdade!)
|
|
86
|
+
- ❌ Implementar tasks de backend e frontend sequencialmente quando são independentes
|
|
87
|
+
- ❌ **(VSA)** Criar Application Service layer — handler acessa IRepository diretamente
|
|
88
|
+
- ❌ **(VSA)** Registrar handlers/endpoints manualmente no Program.cs — auto-discovery via reflection
|
|
89
|
+
- ❌ **(VSA)** Colocar Request/Response em arquivos separados do Handler
|
|
90
|
+
- ❌ **(VSA)** Usar `Guid.NewGuid()` — use `Guid.CreateVersion7()`
|
|
91
|
+
- ❌ **Tentar corrigir um bug sem invocar `systematic-debugging` primeiro** — "a mudança é pequena" não é justificativa
|
|
92
|
+
- ✅ Ao encontrar bug: `Skill(superpowers:systematic-debugging)` → causa raiz → fix mínimo → verificar
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## ✅ PRÉ-VOO OBRIGATÓRIO (antes de iniciar implementação)
|
|
97
|
+
|
|
98
|
+
### 1. Ler contexto completo em PARALELO
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
# Uma única chamada, não sequencial:
|
|
102
|
+
Read: .morph/features/{feature}/3-tasks/tasks.md
|
|
103
|
+
+ Read: .morph/features/{feature}/1-design/spec.md
|
|
104
|
+
+ Read: .morph/features/{feature}/1-design/contracts.cs
|
|
105
|
+
+ Read: .morph/config/config.json (→ architecture.style)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 2. Criar native tasks individuais por T001-T00N
|
|
109
|
+
|
|
110
|
+
Após ler `tasks.md` no passo 1, crie **uma native task por task encontrada**:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
# Para cada task em tasks.md (T001, T002, ..., T00N):
|
|
114
|
+
TaskCreate: "{T001}: {título da task}" → description: descrição completa → activeForm: "Implementando T001"
|
|
115
|
+
TaskCreate: "{T002}: {título da task}" → description: descrição completa → activeForm: "Implementando T002"
|
|
116
|
+
... (uma TaskCreate por task)
|
|
117
|
+
|
|
118
|
+
# Tarefas orquestrais sempre ao final:
|
|
119
|
+
TaskCreate: "Checkpoints e validação" → activeForm: "Validando checkpoint"
|
|
120
|
+
TaskCreate: "Gerar recap.md" → activeForm: "Gerando recap"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Após criar todas as tasks, configure dependências espelhando `tasks.md`:**
|
|
124
|
+
```
|
|
125
|
+
# Para cada task com `dependencies: [T00X, T00Y]` em tasks.md:
|
|
126
|
+
TaskUpdate(taskId="<id de T003>", addBlockedBy=["<id de T001>", "<id de T002>"])
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
> Guarde o mapeamento `{T001 → taskId}` internamente para usar nos TaskUpdates do loop.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Workflow
|
|
134
|
+
|
|
135
|
+
### Passo 0.5: Planejar Modo de Execução
|
|
136
|
+
|
|
137
|
+
**Execute antes de qualquer implementação:**
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npx morph-spec dispatch-agents $ARGUMENTS implement
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**O output inclui um campo `mode` que determina o caminho de execução:**
|
|
144
|
+
|
|
145
|
+
| `mode` | Ação |
|
|
146
|
+
|--------|------|
|
|
147
|
+
| `"single"` | → Continue para o workflow sequencial normal (Passo 1) |
|
|
148
|
+
| `"subagents"` | → Dispatch Task subagents em paralelo (abaixo) |
|
|
149
|
+
| `"agent-teams"` | → Crie Agent Team com plan approval (Passo 0.5b) |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
#### Modo `"subagents"` (se `mode: "subagents"` no output):
|
|
154
|
+
|
|
155
|
+
1. Leia os `taskGroups` retornados (ex: `backend`, `frontend`, `infra`)
|
|
156
|
+
2. Para cada grupo com ≥ 3 tasks e sem dependências cruzadas, use o **Agent tool** com o `subagent_type=<agentId>` do grupo e o `taskPrompt` do dispatch config:
|
|
157
|
+
|
|
158
|
+
> **Mapeamento:** `taskGroups[grupo].agentId` do dispatch config = `subagent_type` no Agent tool.
|
|
159
|
+
> Exemplo: `agentId: "dotnet-senior"` → `Agent(subagent_type=dotnet-senior, prompt=taskPrompt)`.
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
[Task tool — grupo backend, por exemplo]
|
|
163
|
+
Prompt do dispatch config enriquecido:
|
|
164
|
+
|
|
165
|
+
Você é o implementador do grupo BACKEND da feature '$ARGUMENTS'.
|
|
166
|
+
|
|
167
|
+
Contexto completo:
|
|
168
|
+
- Spec: [conteúdo de .morph/features/$ARGUMENTS/1-design/spec.md]
|
|
169
|
+
- Contracts: [conteúdo de .morph/features/$ARGUMENTS/1-design/contracts.cs]
|
|
170
|
+
- Tasks do grupo: [lista de TXXX do grupo backend]
|
|
171
|
+
|
|
172
|
+
# No início deste subagent (grupo BACKEND):
|
|
173
|
+
# 1. Criar native task por task do grupo:
|
|
174
|
+
# TaskCreate: "{T00X}: {título}" → activeForm: "Implementando T00X"
|
|
175
|
+
# 2. Configurar dependências do grupo via TaskUpdate:
|
|
176
|
+
# TaskUpdate(taskId="<id de T003>", addBlockedBy=["<id de T001>", "<id de T002>"])
|
|
177
|
+
# Guarde o mapeamento {T00X → taskId} para usar no loop abaixo.
|
|
178
|
+
|
|
179
|
+
Para cada task do grupo, em ordem:
|
|
180
|
+
1. TaskUpdate(taskId="<native id de T00X>", status="in_progress")
|
|
181
|
+
2. Execute: npx morph-spec task start $ARGUMENTS TXXX
|
|
182
|
+
3. Leia a descrição completa da task
|
|
183
|
+
4. Implemente os arquivos — use Write (novo) ou Edit (existente)
|
|
184
|
+
5. Verifique build: [dotnet build / npm run build]
|
|
185
|
+
5b. Invoke Skill(verification-before-completion) — só prossiga para o passo 6 se passar
|
|
186
|
+
6. Execute: npx morph-spec task done $ARGUMENTS TXXX
|
|
187
|
+
7. Se task done retornar sem erro: TaskUpdate(taskId="<native id de T00X>", status="completed")
|
|
188
|
+
|
|
189
|
+
A cada 3 tasks:
|
|
190
|
+
- Execute: npx morph-spec checkpoint-save $ARGUMENTS
|
|
191
|
+
- Execute: npx morph-spec validate-feature $ARGUMENTS --phase implement
|
|
192
|
+
- Reporte qualquer falha de validação antes de continuar
|
|
193
|
+
|
|
194
|
+
Restrições OBRIGATÓRIAS:
|
|
195
|
+
- Modifique APENAS os arquivos listados nas tasks do grupo BACKEND
|
|
196
|
+
- NÃO toque em arquivos de frontend, UI ou infra
|
|
197
|
+
- Se encontrar dependência em outro grupo, pause e reporte
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
3. Dispare os Task subagents dos grupos em **paralelo** (quando sem dependências entre si)
|
|
201
|
+
4. Após todos completarem, valide integração: `npx morph-spec validate-feature $ARGUMENTS --phase implement`
|
|
202
|
+
|
|
203
|
+
**Se `mode: "single"`** (feature pequena ou single-domain):
|
|
204
|
+
→ Continue para o workflow sequencial normal abaixo.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
### Passo 0.5b: Agent Teams (features críticas multi-domínio)
|
|
209
|
+
|
|
210
|
+
**Quando usar:** `mode: "agent-teams"` no output de `dispatch-agents`
|
|
211
|
+
**Requisito:** `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` no `.claude/settings.local.json` (instalado pelo morph-spec)
|
|
212
|
+
|
|
213
|
+
**Por que Agent Teams em vez de subagents:**
|
|
214
|
+
Agent Teams têm TaskList compartilhada, mensagens diretas entre teammates e hooks `TeammateIdle`. Subagents são fire-and-forget. Para features onde backend e frontend precisam coordenar contratos de API, Agent Teams garantem que o frontend não implemente chamadas antes do backend estabilizar os DTOs.
|
|
215
|
+
|
|
216
|
+
**1. Crie o Agent Team com linguagem natural:**
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
Crie um agent team para implementar a feature '$ARGUMENTS' com teammates:
|
|
220
|
+
- Backend teammate (dotnet-senior): Implemente as tasks do grupo backend.
|
|
221
|
+
Contexto: .morph/features/$ARGUMENTS/1-design/spec.md, contracts.cs, standards/coding.md
|
|
222
|
+
Restrição: Modifique APENAS arquivos de backend/domain/application.
|
|
223
|
+
Antes de implementar interfaces compartilhadas, envie mensagem ao frontend teammate.
|
|
224
|
+
- Frontend teammate (blazor-builder OU nextjs-expert): Implemente as tasks do grupo frontend.
|
|
225
|
+
Contexto: .morph/features/$ARGUMENTS/1-design/spec.md, design-system.md, standards/frontend/
|
|
226
|
+
Restrição: Modifique APENAS arquivos de UI/components/pages.
|
|
227
|
+
Aguarde confirmação do backend teammate antes de implementar chamadas de API.
|
|
228
|
+
- Quality teammate (standards-architect): Revise o output de cada teammate e execute validate-feature.
|
|
229
|
+
Exija plan approval antes de cada implementação.
|
|
230
|
+
Só aprove planos que correspondam ao contracts.cs e spec.md.
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**2. Protocolo de coordenação entre teammates:**
|
|
234
|
+
|
|
235
|
+
- Backend deve completar definição de DTOs/interfaces ANTES do frontend implementar chamadas de API
|
|
236
|
+
- Para qualquer interface compartilhada: backend envia mensagem ao frontend confirmando contratos estáveis
|
|
237
|
+
- Se frontend precisar de um endpoint que não existe → instrua a enviar mensagem ao backend teammate
|
|
238
|
+
- Conflitos de contratos → escalone ao quality teammate para resolver
|
|
239
|
+
|
|
240
|
+
**3. Configurações obrigatórias ao criar o team:**
|
|
241
|
+
|
|
242
|
+
- Habilite **plan approval**: "Require plan approval before each teammate implements"
|
|
243
|
+
- Gate de qualidade: "Only approve plans that match contracts.cs and spec.md"
|
|
244
|
+
- Restrição de domínio por teammate: cada um modifica APENAS arquivos do seu domínio
|
|
245
|
+
|
|
246
|
+
**4. Após todos os teammates completarem:**
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
npx morph-spec validate-feature $ARGUMENTS --phase implement
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Sintetize os resultados de todos os teammates no recap.md (Passo 6).
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### CHECKPOINT DE ENTRADA: Verificar Pré-requisitos
|
|
257
|
+
|
|
258
|
+
**⏸️ Antes de iniciar implementação:**
|
|
259
|
+
|
|
260
|
+
- [ ] `tasks.md` ou `tasks.json` existe e foi aprovado?
|
|
261
|
+
- [ ] Tasks gate aprovado (`morph-spec approve $ARGUMENTS tasks`)?
|
|
262
|
+
- [ ] `spec.md` atualizado com clarificações?
|
|
263
|
+
- [ ] `contracts.cs` corresponde ao schema real?
|
|
264
|
+
- [ ] Build base do projeto compila sem erros?
|
|
265
|
+
- [ ] `activeAgents` estão populados? (`morph-spec state get $ARGUMENTS` → campo `activeAgents` não vazio)
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
npx morph-spec state get $ARGUMENTS
|
|
269
|
+
npx morph-spec approval-status $ARGUMENTS
|
|
270
|
+
# Se activeAgents estiver vazio → pare aqui e execute /phase-setup $ARGUMENTS primeiro
|
|
271
|
+
npx morph-spec state get $ARGUMENTS | grep -A5 activeAgents
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**❌ Se alguma checkbox NÃO estiver marcada:**
|
|
275
|
+
→ Voltar para a fase correspondente
|
|
276
|
+
|
|
277
|
+
**❌ Se `activeAgents` estiver vazio:**
|
|
278
|
+
→ Execute o skill `phase-setup` primeiro: `/phase-setup $ARGUMENTS`
|
|
279
|
+
→ Agentes não detectados = standards não carregados = implementação sem contexto correto
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
### Passo 1: Carregar Contexto Completo
|
|
284
|
+
|
|
285
|
+
Leia todos os outputs antes de implementar:
|
|
286
|
+
|
|
287
|
+
1. `.morph/features/$ARGUMENTS/3-tasks/tasks.md` — Lista de tasks
|
|
288
|
+
2. `.morph/features/$ARGUMENTS/1-design/spec.md` — Especificação completa
|
|
289
|
+
3. `.morph/features/$ARGUMENTS/1-design/contracts.cs` — Interfaces e DTOs
|
|
290
|
+
4. `.morph/features/$ARGUMENTS/1-design/decisions.md` — ADRs
|
|
291
|
+
5. `.morph/features/$ARGUMENTS/1-design/schema-analysis.md` — Schema real (se existir)
|
|
292
|
+
6. `.morph/features/$ARGUMENTS/2-ui/design-system.md` — Design tokens (se existir)
|
|
293
|
+
|
|
294
|
+
**Detectar estilo de arquitetura:**
|
|
295
|
+
```bash
|
|
296
|
+
# Leia config para saber se é VSA ou DDD:
|
|
297
|
+
cat .morph/config/config.json | grep architecture
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Se `config.architecture.style === "vertical-slice"` → siga o **Passo 1.5** antes de implementar.
|
|
301
|
+
Caso contrário → vá direto para o Passo 2.
|
|
302
|
+
|
|
303
|
+
### Passo 1.5: Guia de Implementação VSA (somente se `style: "vertical-slice"`)
|
|
304
|
+
|
|
305
|
+
> Para a estrutura completa de slices e regras VSA, veja `references/vsa-implementation-guide.md`
|
|
306
|
+
|
|
307
|
+
Estrutura: `Features/{Entity}Feature/{Op}/` com Handler (+ Request/Response records) + Validator + Endpoint por slice. Tudo `sealed`. `Guid.CreateVersion7()`. `result.Match()` nos endpoints. Sem Application Service layer — handler acessa IRepository diretamente. Auto-discovery via reflection: não registrar manualmente no Program.cs.
|
|
308
|
+
|
|
309
|
+
Após cada slice completo, verificar build:
|
|
310
|
+
```bash
|
|
311
|
+
dotnet build
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Passo 2: Iniciar Primeira Task
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
npx morph-spec task next $ARGUMENTS
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Para cada task (T001 → T00N):
|
|
321
|
+
|
|
322
|
+
1. **Marcar como em progresso (native task):**
|
|
323
|
+
```
|
|
324
|
+
TaskUpdate(taskId="<native id de T001>", status="in_progress")
|
|
325
|
+
```
|
|
326
|
+
2. **Iniciar via CLI:**
|
|
327
|
+
```bash
|
|
328
|
+
npx morph-spec task start $ARGUMENTS T001
|
|
329
|
+
```
|
|
330
|
+
3. **Ler a task description** completa
|
|
331
|
+
4. **Ler contracts.cs** para DTOs/interfaces relevantes
|
|
332
|
+
5. **Implementar** usando Write (novo) ou Edit (existente)
|
|
333
|
+
6. **Verificar** — build, lint, testes
|
|
334
|
+
6b. **⚠️ OBRIGATÓRIO — Verificação antes de `task done`:**
|
|
335
|
+
Invoke `Skill(verification-before-completion)` ou execute manualmente:
|
|
336
|
+
```bash
|
|
337
|
+
npx morph-spec validate-feature $ARGUMENTS --phase implement
|
|
338
|
+
```
|
|
339
|
+
Só prossiga para o passo 7 se a verificação passar. Se falhar → corrija antes de marcar `task done`.
|
|
340
|
+
7. **Marcar como done via CLI:**
|
|
341
|
+
```bash
|
|
342
|
+
npx morph-spec task done $ARGUMENTS T001
|
|
343
|
+
```
|
|
344
|
+
8. **Se `task done` retornar sem erro, marcar native task como concluída:**
|
|
345
|
+
```
|
|
346
|
+
TaskUpdate(taskId="<native id de T001>", status="completed")
|
|
347
|
+
```
|
|
348
|
+
> **Nota:** `TaskUpdate(completed)` só ocorre se `task done` retornar sem erro (validação passou).
|
|
349
|
+
|
|
350
|
+
### Passo 3: Checkpoint a Cada 3 Tasks
|
|
351
|
+
|
|
352
|
+
**A cada 3 tasks completadas:**
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# Save checkpoint
|
|
356
|
+
npx morph-spec checkpoint-save $ARGUMENTS
|
|
357
|
+
|
|
358
|
+
# Run validation
|
|
359
|
+
npx morph-spec validate-feature $ARGUMENTS --phase implement
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Se validação falhar:**
|
|
363
|
+
1. NÃO avançar para próxima task
|
|
364
|
+
2. Corrigir issues reportados
|
|
365
|
+
3. Re-rodar validação
|
|
366
|
+
4. Só então prosseguir
|
|
367
|
+
|
|
368
|
+
### Passo 4: Test-Driven Development (Recomendado)
|
|
369
|
+
|
|
370
|
+
Para cada task de implementação:
|
|
371
|
+
|
|
372
|
+
1. **Escrever teste primeiro** (unit test para service/domain)
|
|
373
|
+
2. **Rodar teste** — deve falhar (RED)
|
|
374
|
+
3. **Implementar** o mínimo para passar
|
|
375
|
+
4. **Rodar teste** — deve passar (GREEN)
|
|
376
|
+
5. **Refatorar** se necessário (REFACTOR)
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# .NET
|
|
380
|
+
dotnet test --filter "FullyQualifiedName~{TestClass}"
|
|
381
|
+
|
|
382
|
+
# Node.js
|
|
383
|
+
npm test -- test/path/to/test.js
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Passo 5: Smoke Test com Playwright (se UI)
|
|
387
|
+
|
|
388
|
+
Após implementar componentes visuais:
|
|
389
|
+
|
|
390
|
+
```javascript
|
|
391
|
+
// Navegar para a página
|
|
392
|
+
await mcp__playwright__browser_navigate({ url: 'http://localhost:5000/feature-page' });
|
|
393
|
+
|
|
394
|
+
// Capturar estado da página
|
|
395
|
+
await mcp__playwright__browser_snapshot();
|
|
396
|
+
|
|
397
|
+
// Verificar erros de console
|
|
398
|
+
await mcp__playwright__browser_console_messages({ level: 'error' });
|
|
399
|
+
|
|
400
|
+
// Screenshot para recap
|
|
401
|
+
await mcp__playwright__browser_take_screenshot({ type: 'png' });
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Passo 6: Gerar `recap.md`
|
|
405
|
+
|
|
406
|
+
Após TODAS as tasks completadas:
|
|
407
|
+
|
|
408
|
+
```bash
|
|
409
|
+
npx morph-spec generate recap $ARGUMENTS
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
> Para o formato completo do recap, veja `references/recap-example.md`
|
|
413
|
+
|
|
414
|
+
### Passo 7: Atualizar State
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
npx morph-spec state set $ARGUMENTS status done
|
|
418
|
+
npx morph-spec state mark-output $ARGUMENTS recap
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Passo 8: Revisão Pós-Implementação (obrigatório antes do PR)
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
/post-implementation $ARGUMENTS
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Execute o skill `post-implementation` antes de criar o PR. Ele orquestra:
|
|
428
|
+
- Scans automáticos (CRITICAL findings bloqueiam PR)
|
|
429
|
+
- Test suite completo
|
|
430
|
+
- `validate-feature` final
|
|
431
|
+
- Smoke test via Playwright (obrigatório se dev server ativo)
|
|
432
|
+
- Checklist de code review (CRITICAL + HIGH)
|
|
433
|
+
- **`morph-checklist`** — compliance (segurança, SEO, performance, acessibilidade, LGPD)
|
|
434
|
+
- Checkpoint + recap final
|
|
435
|
+
|
|
436
|
+
### Passo 9: Frontend Review (NEXTJS/FULLSTACK)
|
|
437
|
+
|
|
438
|
+
Se stack for NEXTJS ou FULLSTACK:
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
/frontend-review $ARGUMENTS
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
Complementa o `post-implementation` com: scan de acessibilidade (static + axe-core runtime),
|
|
445
|
+
screenshots responsivos (mobile/tablet/desktop), e verificação de SEO metadata.
|
|
446
|
+
|
|
447
|
+
---
|
|
448
|
+
|
|
449
|
+
## Integração com Superpowers
|
|
450
|
+
|
|
451
|
+
> Disponível quando o plugin `superpowers` está instalado.
|
|
452
|
+
|
|
453
|
+
| Skill | Quando Usar | Invocação |
|
|
454
|
+
|-------|-------------|-----------|
|
|
455
|
+
| `test-driven-development` | Para cada task de implementação | `Skill(superpowers:test-driven-development)` |
|
|
456
|
+
| `systematic-debugging` | **OBRIGATÓRIO** quando testes falham ou comportamento inesperado — invoke ANTES de tentar qualquer fix | `Skill(superpowers:systematic-debugging)` |
|
|
457
|
+
| `requesting-code-review` | Após implementação completa | `Skill(superpowers:requesting-code-review)` |
|
|
458
|
+
| `verification-before-completion` | Antes de marcar feature como done | Use `verification-before-completion` (morph-spec version) |
|
|
459
|
+
| `post-implementation` | Antes de criar o PR (scans + smoke test + review) | `/post-implementation {feature}` |
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
## Outputs Gerados
|
|
464
|
+
|
|
465
|
+
- Código fonte implementado (vários arquivos)
|
|
466
|
+
- Testes unitários e de integração
|
|
467
|
+
- `.morph/features/$ARGUMENTS/4-implement/recap.md` — Resumo da implementação
|
|
468
|
+
|
|
469
|
+
## Critérios de Conclusão
|
|
470
|
+
|
|
471
|
+
- [x] Todas as tasks completadas
|
|
472
|
+
- [x] Build compila sem erros
|
|
473
|
+
- [x] Testes passando
|
|
474
|
+
- [x] Validation pipeline passa
|
|
475
|
+
- [x] `recap.md` gerado
|
|
476
|
+
- [x] State atualizado para `status: done`
|
|
477
|
+
- [x] Checkpoints salvos a cada 3 tasks
|
|
478
|
+
- [x] `/post-implementation` executado sem BLOCKs (smoke test, scans, code review, `morph-checklist`)
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## Outputs desta Fase
|
|
483
|
+
|
|
484
|
+
<!-- morph:outputs:implement -->
|
|
485
|
+
| Output | Caminho |
|
|
486
|
+
|--------|---------|
|
|
487
|
+
| `recap` | `.morph/features/{feature}/4-implement/recap.md` |
|
|
488
|
+
<!-- /morph:outputs -->
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
Feature completa! Considere criar um PR e rodar `morph-spec generate recap $ARGUMENTS`.
|