@polymorphism-tech/morph-spec 2.2.0 → 2.4.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 +314 -1673
- package/LICENSE +72 -72
- package/README.md +515 -516
- package/bin/detect-agents.js +225 -225
- package/bin/morph-spec.js +358 -173
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/task-manager.js +429 -0
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- package/bin/validate.js +369 -0
- package/content/.azure/README.md +293 -293
- package/content/.azure/docs/azure-devops-setup.md +454 -454
- package/content/.azure/docs/branch-strategy.md +398 -398
- package/content/.azure/docs/local-development.md +515 -515
- package/content/.azure/pipelines/pipeline-variables.yml +34 -34
- package/content/.azure/pipelines/prod-pipeline.yml +319 -319
- package/content/.azure/pipelines/staging-pipeline.yml +234 -234
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
- package/content/.claude/commands/morph-apply.md +221 -158
- package/content/.claude/commands/morph-archive.md +79 -79
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -0
- package/content/.claude/commands/morph-proposal.md +122 -101
- package/content/.claude/commands/morph-status.md +86 -86
- package/content/.claude/commands/morph-troubleshoot.md +122 -0
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/checklists/code-review.md +226 -0
- package/content/.claude/skills/checklists/morph-checklist.md +117 -0
- package/content/.claude/skills/checklists/simulation-checklist.md +77 -0
- package/content/.claude/skills/infra/bicep-architect.md +126 -419
- package/content/.claude/skills/infra/container-specialist.md +131 -437
- package/content/.claude/skills/infra/devops-engineer.md +119 -405
- package/content/.claude/skills/integrations/asaas-financial.md +130 -333
- package/content/.claude/skills/integrations/azure-identity.md +142 -309
- package/content/.claude/skills/integrations/clerk-auth.md +108 -290
- package/content/.claude/skills/integrations/resend-email.md +119 -0
- package/content/.claude/skills/specialists/ai-system-architect.md +192 -604
- package/content/.claude/skills/specialists/azure-architect.md +142 -142
- package/content/.claude/skills/specialists/code-analyzer.md +235 -0
- package/content/.claude/skills/specialists/dotnet-senior.md +287 -0
- package/content/.claude/skills/specialists/ef-modeler.md +113 -200
- package/content/.claude/skills/specialists/hangfire-orchestrator.md +126 -245
- package/content/.claude/skills/specialists/ms-agent-expert.md +109 -263
- package/content/.claude/skills/specialists/po-pm-advisor.md +197 -197
- package/content/.claude/skills/specialists/standards-architect.md +156 -78
- package/content/.claude/skills/specialists/testing-specialist.md +126 -0
- package/content/.claude/skills/specialists/ui-ux-designer.md +191 -1060
- package/content/.claude/skills/stacks/dotnet-blazor.md +210 -588
- package/content/.claude/skills/stacks/dotnet-nextjs.md +154 -402
- package/content/.claude/skills/workflows/morph-replicate.md +213 -0
- package/content/.claude/{commands/morph-clarify.md → skills/workflows/phase-clarify.md} +5 -58
- package/content/.claude/{commands/morph-design.md → skills/workflows/phase-design.md} +16 -86
- package/content/.claude/{commands/morph-setup.md → skills/workflows/phase-setup.md} +9 -17
- package/content/.claude/skills/workflows/phase-tasks.md +164 -0
- package/content/.claude/{commands/morph-uiux.md → skills/workflows/phase-uiux.md} +15 -88
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +378 -242
- package/content/.morph/config/config.template.json +89 -108
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/docs/workflows/design-impl.md +37 -0
- package/content/.morph/docs/workflows/fast-track.md +29 -0
- package/content/.morph/docs/workflows/full-morph.md +76 -0
- package/content/.morph/docs/workflows/standard.md +44 -0
- package/content/.morph/docs/workflows/ui-refresh.md +39 -0
- package/content/.morph/examples/api-nextjs/README.md +241 -241
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
- package/content/.morph/examples/api-nextjs/spec.md +399 -399
- package/content/.morph/examples/api-nextjs/tasks.md +168 -168
- package/content/.morph/examples/micro-saas/README.md +125 -125
- package/content/.morph/examples/micro-saas/contracts.cs +358 -358
- package/content/.morph/examples/micro-saas/decisions.md +246 -246
- package/content/.morph/examples/micro-saas/spec.md +236 -236
- package/content/.morph/examples/micro-saas/tasks.md +150 -150
- package/content/.morph/examples/multi-agent/README.md +309 -309
- package/content/.morph/examples/multi-agent/contracts.cs +433 -433
- package/content/.morph/examples/multi-agent/spec.md +479 -479
- package/content/.morph/examples/multi-agent/tasks.md +185 -185
- package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
- package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
- package/content/.morph/examples/scheduled-reports/spec.md +267 -0
- package/content/.morph/examples/state-v3.json +188 -0
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/README.md +190 -239
- package/content/.morph/hooks/pre-commit-agents.sh +24 -24
- package/content/.morph/hooks/pre-commit-all.sh +48 -48
- package/content/.morph/hooks/pre-commit-specs.sh +49 -49
- package/content/.morph/hooks/pre-commit-tests.sh +60 -60
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/schemas/tasks.schema.json +220 -0
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
- package/content/.morph/standards/agent-framework-production.md +410 -0
- package/content/.morph/standards/agent-framework-setup.md +413 -453
- package/content/.morph/standards/agent-framework-workflows.md +349 -0
- package/content/.morph/standards/architecture.md +325 -325
- package/content/.morph/standards/azure.md +605 -379
- package/content/.morph/standards/coding.md +377 -377
- package/content/.morph/standards/dotnet10-migration.md +520 -494
- package/content/.morph/standards/fluent-ui-setup.md +590 -590
- package/content/.morph/standards/migration-guide.md +514 -514
- package/content/.morph/standards/passkeys-auth.md +423 -423
- package/content/.morph/standards/vector-search-rag.md +536 -536
- package/content/.morph/state.json +17 -17
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/agent.cs +163 -172
- package/content/.morph/templates/clarify-questions.md +159 -0
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts/Commands.cs +74 -0
- package/content/.morph/templates/contracts/Entities.cs +25 -0
- package/content/.morph/templates/contracts/Queries.cs +74 -0
- package/content/.morph/templates/contracts/README.md +74 -0
- package/content/.morph/templates/contracts.cs +217 -217
- package/content/.morph/templates/decisions.md +123 -106
- package/content/.morph/templates/design-system.css +226 -226
- package/content/.morph/templates/infra/.dockerignore.example +89 -89
- package/content/.morph/templates/infra/Dockerfile.example +82 -82
- package/content/.morph/templates/infra/README.md +286 -286
- package/content/.morph/templates/infra/app-insights.bicep +63 -63
- package/content/.morph/templates/infra/app-service.bicep +164 -164
- package/content/.morph/templates/infra/container-app-env.bicep +49 -49
- package/content/.morph/templates/infra/container-app.bicep +156 -156
- package/content/.morph/templates/infra/deploy-checklist.md +426 -0
- package/content/.morph/templates/infra/deploy.ps1 +229 -229
- package/content/.morph/templates/infra/deploy.sh +208 -208
- package/content/.morph/templates/infra/key-vault.bicep +91 -91
- package/content/.morph/templates/infra/main.bicep +189 -189
- package/content/.morph/templates/infra/parameters.dev.json +29 -29
- package/content/.morph/templates/infra/parameters.prod.json +29 -29
- package/content/.morph/templates/infra/parameters.staging.json +29 -29
- package/content/.morph/templates/infra/sql-database.bicep +103 -103
- package/content/.morph/templates/infra/storage.bicep +106 -106
- package/content/.morph/templates/integrations/asaas-client.cs +387 -387
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
- package/content/.morph/templates/integrations/clerk-config.cs +258 -258
- package/content/.morph/templates/job.cs +171 -171
- package/content/.morph/templates/migration.cs +83 -83
- package/content/.morph/templates/proposal.md +141 -155
- package/content/.morph/templates/recap.md +94 -105
- package/content/.morph/templates/repository.cs +141 -141
- package/content/.morph/templates/saas/subscription.cs +347 -347
- package/content/.morph/templates/saas/tenant.cs +338 -338
- package/content/.morph/templates/service.cs +139 -139
- package/content/.morph/templates/simulation.md +353 -0
- package/content/.morph/templates/spec.md +149 -148
- package/content/.morph/templates/sprint-status.yaml +68 -68
- package/content/.morph/templates/state.template.json +222 -222
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/tasks.md +257 -235
- package/content/.morph/templates/test.cs +239 -239
- package/content/.morph/templates/ui-components.md +362 -276
- package/content/.morph/templates/ui-design-system.md +286 -286
- package/content/.morph/templates/ui-flows.md +336 -336
- package/content/.morph/templates/ui-mockups.md +133 -133
- package/content/.morph/test-infra/example.bicep +59 -59
- package/content/CLAUDE.md +150 -442
- package/content/README.md +79 -79
- package/detectors/config-detector.js +223 -223
- package/detectors/conversation-analyzer.js +163 -163
- package/detectors/index.js +84 -84
- package/detectors/standards-generator.js +275 -275
- package/detectors/structure-detector.js +245 -250
- package/docs/README.md +144 -149
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/getting-started.md +301 -302
- package/docs/installation.md +361 -361
- package/docs/templates.md +418 -418
- package/docs/validation-checklist.md +265 -266
- package/package.json +80 -80
- package/scripts/postinstall.js +132 -132
- package/src/commands/advance-phase.js +183 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -0
- package/src/commands/create-story.js +351 -351
- package/src/commands/detect-agents.js +139 -0
- package/src/commands/detect.js +104 -104
- package/src/commands/doctor.js +356 -280
- package/src/commands/generate.js +149 -149
- package/src/commands/init.js +258 -245
- package/src/commands/lint-fluent.js +352 -0
- package/src/commands/rollback-phase.js +185 -0
- package/src/commands/session-summary.js +291 -0
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/state.js +333 -333
- package/src/commands/sync.js +167 -167
- package/src/commands/task.js +78 -0
- package/src/commands/troubleshoot.js +222 -0
- package/src/commands/update.js +192 -159
- package/src/commands/validate-blazor-state.js +210 -0
- package/src/commands/validate-blazor.js +156 -0
- package/src/commands/validate-css.js +84 -0
- package/src/commands/validate-phase.js +221 -0
- package/src/lib/blazor-concurrency-analyzer.js +288 -0
- package/src/lib/blazor-state-validator.js +291 -0
- package/src/lib/blazor-validator.js +374 -0
- package/src/lib/complexity-analyzer.js +441 -292
- package/src/lib/continuous-validator.js +421 -0
- package/src/lib/css-validator.js +352 -0
- package/src/lib/decision-constraint-loader.js +109 -0
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/learning-system.js +520 -0
- package/src/lib/mockup-generator.js +366 -0
- package/src/lib/recap-generator.js +205 -0
- package/src/lib/state-manager.js +397 -340
- package/src/lib/troubleshoot-grep.js +194 -0
- package/src/lib/troubleshoot-index.js +144 -0
- package/src/lib/ui-detector.js +350 -0
- package/src/lib/validation-runner.js +231 -0
- package/src/lib/validators/architecture-validator.js +387 -0
- package/src/lib/validators/contract-compliance-validator.js +273 -0
- package/src/lib/validators/package-validator.js +360 -0
- package/src/lib/validators/ui-contrast-validator.js +422 -0
- package/src/utils/file-copier.js +179 -139
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- package/content/.claude/commands/morph-costs.md +0 -206
- package/content/.claude/commands/morph-tasks.md +0 -319
- package/content/.claude/skills/specialists/cost-guardian.md +0 -110
- package/content/.claude/skills/stacks/shopify.md +0 -445
- package/content/.morph/config/azure-pricing.json +0 -70
- package/content/.morph/config/azure-pricing.schema.json +0 -50
- package/content/.morph/hooks/pre-commit-costs.sh +0 -91
- package/docs/api/cost-calculator.js.html +0 -513
- package/docs/api/design-system-generator.js.html +0 -382
- package/docs/api/global.html +0 -5263
- package/docs/api/index.html +0 -96
- package/docs/api/state-manager.js.html +0 -423
- package/src/commands/cost.js +0 -181
- package/src/commands/update-pricing.js +0 -206
- package/src/lib/cost-calculator.js +0 -429
package/CLAUDE.md
CHANGED
|
@@ -1,1673 +1,314 @@
|
|
|
1
|
-
# MORPH-SPEC - Instruções para Claude Code
|
|
2
|
-
|
|
3
|
-
**M**ethodical **O**rchestration for **R**eliable **P**roduction-ready **SPEC**-driven development
|
|
4
|
-
|
|
5
|
-
> by Polymorphism Tech
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## REGRAS CRÍTICAS
|
|
12
|
-
|
|
13
|
-
### NUNCA:
|
|
14
|
-
- Pular direto para código sem especificação
|
|
15
|
-
- Implementar sem aprovação do design
|
|
16
|
-
- Ignorar os padrões (framework/standards/ ou project/standards/)
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
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
|
-
5
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
-
|
|
278
|
-
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
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
|
-
Se Claude classificar errado, você pode forçar um workflow específico:
|
|
316
|
-
|
|
317
|
-
```bash
|
|
318
|
-
# Forçar fast-track (pula fases)
|
|
319
|
-
morph-spec state set my-feature workflow fast-track
|
|
320
|
-
|
|
321
|
-
# Forçar full-morph (todas as fases)
|
|
322
|
-
morph-spec state set my-feature workflow full-morph
|
|
323
|
-
|
|
324
|
-
# Ou no próprio pedido:
|
|
325
|
-
"[FAST-TRACK] Corrigir bug de validação"
|
|
326
|
-
"[FULL-MORPH] Adicionar filtro simples"
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
### Quadro Comparativo
|
|
330
|
-
|
|
331
|
-
| Aspecto | Fast Track | Standard | Full MORPH |
|
|
332
|
-
|---------|-----------|----------|------------|
|
|
333
|
-
| **Fases** | 2 (Quick + Implement) | 4 (Proposal, Design, Tasks, Implement) | 9 (Todas) |
|
|
334
|
-
| **Pausas** | 1 | 2-3 | 5-6 |
|
|
335
|
-
| **Outputs** | Nenhum | 3 arquivos | 9+ arquivos |
|
|
336
|
-
| **Tempo** | 5-15 min | 30-60 min | 2-4 horas |
|
|
337
|
-
| **Tokens** | ~500-1k | ~5-10k | ~30-50k |
|
|
338
|
-
| **Quando** | Bug fixes, ajustes | Features simples | Features complexas |
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
## AS 8 FASES OBRIGATÓRIAS (FULL MORPH)
|
|
343
|
-
|
|
344
|
-
### FASE 0.5: CONTEXT (automática, primeira interação)
|
|
345
|
-
```
|
|
346
|
-
Gatilho: Início de qualquer interação (primeira mensagem ou nova sessão)
|
|
347
|
-
|
|
348
|
-
Ações:
|
|
349
|
-
1. Detectar Framework MORPH
|
|
350
|
-
- Verificar se npm package @polymorphism-tech/morph-spec está instalado
|
|
351
|
-
- Localizar framework/standards/ e framework/templates/
|
|
352
|
-
- Se não encontrado: ativar modo "inferred" (funciona sem framework)
|
|
353
|
-
|
|
354
|
-
2. Detectar/Criar estrutura do projeto
|
|
355
|
-
- Verificar se existe .morph/project/
|
|
356
|
-
- Se NÃO: rodar detecção automática (estrutura + config + conversas)
|
|
357
|
-
- Se SIM: carregar context/, standards/, outputs/ existentes
|
|
358
|
-
|
|
359
|
-
3. Análise Automática do Projeto (se código existe)
|
|
360
|
-
- Detectar stack: glob patterns (*.razor = Blazor, *.tsx + next.config = Next.js, etc)
|
|
361
|
-
- Detectar arquitetura: pastas (Application/, Domain/ = Clean Architecture, etc)
|
|
362
|
-
- Ler configs: Program.cs, package.json, .csproj para tecnologias e versões
|
|
363
|
-
- Detectar UI library: FluentUI.Blazor, MudBlazor em .csproj
|
|
364
|
-
- Identificar patterns: Repository, Service Layer, CQRS, DI, etc
|
|
365
|
-
|
|
366
|
-
4. Analisar Histórico (se disponível)
|
|
367
|
-
- Ler .morph/project/outputs/*/decisions.md (decisões passadas)
|
|
368
|
-
- Ler .morph/project/context/decisions-history.md
|
|
369
|
-
- Extrair preferências do usuário (UI lib favorita, patterns preferidos)
|
|
370
|
-
|
|
371
|
-
5. Gerar/Atualizar Standards Inferidos
|
|
372
|
-
- Criar .morph/project/standards/inferred.md
|
|
373
|
-
- Consolidar: framework standards + detecção + histórico
|
|
374
|
-
- Identificar gaps e gerar recomendações
|
|
375
|
-
|
|
376
|
-
6. Ativar Agentes Relevantes
|
|
377
|
-
- Baseado em stack detectado (Blazor Builder, NextJS Expert, etc)
|
|
378
|
-
- Baseado em keywords da conversa/request
|
|
379
|
-
|
|
380
|
-
Outputs:
|
|
381
|
-
- .morph/project/context/README.md (se novo projeto)
|
|
382
|
-
- .morph/project/standards/inferred.md (sempre atualizado)
|
|
383
|
-
- .morph/project/context/detection-log.md (debug)
|
|
384
|
-
- .morph/config.json (link para framework + project config)
|
|
385
|
-
|
|
386
|
-
Modo Degradado (sem framework):
|
|
387
|
-
- Funciona apenas com detecção de código
|
|
388
|
-
- Standards inferidos baseados APENAS no código existente
|
|
389
|
-
- Sem templates sofisticados, mas ainda útil
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
### FASE 0: PROPOSAL
|
|
393
|
-
```
|
|
394
|
-
Gatilho: Nova feature request do usuário
|
|
395
|
-
Ações:
|
|
396
|
-
1. **Detectar agentes automaticamente:**
|
|
397
|
-
npx morph-spec detect "{user-request}"
|
|
398
|
-
|
|
399
|
-
2. Analisar a solicitação inicial
|
|
400
|
-
3. Identificar stack provável (Blazor, Next.js, Shopify)
|
|
401
|
-
4. Estimar complexidade (baixa, média, alta)
|
|
402
|
-
5. Gerar proposal.md com análise inicial
|
|
403
|
-
6. Registrar agentes no state.json:
|
|
404
|
-
morph-spec state add-agent {feature} {agent-id}
|
|
405
|
-
|
|
406
|
-
Output: .morph/project/outputs/{feature}/proposal.md
|
|
407
|
-
|
|
408
|
-
⛔ PAUSA OBRIGATÓRIA
|
|
409
|
-
Apresentar ao usuário:
|
|
410
|
-
- ✅ Ações sugeridas (2-3 opções de próximos passos)
|
|
411
|
-
- ❓ Perguntas contextualizadas (para clarificar escopo/prioridades)
|
|
412
|
-
- 💡 Sugestões estratégicas (alternativas, trade-offs, otimizações)
|
|
413
|
-
|
|
414
|
-
Formato: 3 itens no total, mix inteligente de ações + perguntas
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
### FASE 1: SETUP
|
|
418
|
-
```
|
|
419
|
-
Gatilho: Proposal aprovado
|
|
420
|
-
Ações:
|
|
421
|
-
1. Ler `.morph/config.json` para contexto
|
|
422
|
-
2. Confirmar stack identificado no proposal
|
|
423
|
-
3. Ativar agentes conforme proposal
|
|
424
|
-
4. Criar pasta `.morph/project/outputs/{feature}/`
|
|
425
|
-
5. Carregar padrões:
|
|
426
|
-
- framework/standards/ (padrões do MORPH)
|
|
427
|
-
- .morph/project/standards/ (padrões do projeto)
|
|
428
|
-
- Priorizar project/standards/ se houver conflito
|
|
429
|
-
|
|
430
|
-
Output: Confirmação de contexto carregado
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
### FASE 1.5: UI/UX DESIGN (se houver front-end)
|
|
434
|
-
```
|
|
435
|
-
Gatilho: Setup concluído + keywords de front-end detectadas
|
|
436
|
-
Ações:
|
|
437
|
-
1. **SEMPRE perguntar ao usuário PRIMEIRO**:
|
|
438
|
-
- "Você tem alguma ideia de layout em mente?"
|
|
439
|
-
- "Tem alguma referência visual? (sites, apps, screenshots)"
|
|
440
|
-
- "Como imagina o fluxo do usuário?"
|
|
441
|
-
- "Tem imagens de exemplo que eu possa analisar?"
|
|
442
|
-
|
|
443
|
-
2. Analisar imagens/referências fornecidas (se houver)
|
|
444
|
-
- Use Read tool para ler screenshots
|
|
445
|
-
- Extrair padrões: layout, componentes, cores
|
|
446
|
-
|
|
447
|
-
3. **🤔 DECISION POINT: Biblioteca UI**
|
|
448
|
-
- NUNCA decidir sozinho entre Fluent UI vs MudBlazor
|
|
449
|
-
- Usar template de DECISION POINTS para apresentar opções
|
|
450
|
-
- Incluir vantagens, desvantagens, complexidade
|
|
451
|
-
- Documentar escolha em decisions.md com ADR
|
|
452
|
-
|
|
453
|
-
4. Gerar deliverables:
|
|
454
|
-
- ui-mockups.md (wireframes ASCII + descrições)
|
|
455
|
-
- ui-components.md (specs de componentes)
|
|
456
|
-
- ui-flows.md (fluxos + diagramas + edge cases)
|
|
457
|
-
|
|
458
|
-
5. Validar acessibilidade (WCAG 2.1) e responsividade
|
|
459
|
-
|
|
460
|
-
Outputs:
|
|
461
|
-
- .morph/project/outputs/{feature}/ui-design-system.md
|
|
462
|
-
- .morph/project/outputs/{feature}/ui-mockups.md
|
|
463
|
-
- .morph/project/outputs/{feature}/ui-components.md
|
|
464
|
-
- .morph/project/outputs/{feature}/ui-flows.md
|
|
465
|
-
- Atualizar decisions.md com ADR sobre biblioteca UI
|
|
466
|
-
|
|
467
|
-
Nota: Na FASE 5: IMPLEMENT, gerar automaticamente:
|
|
468
|
-
- wwwroot/css/design-system.css (CSS variables)
|
|
469
|
-
- Themes/FluentDesignTheme.cs (se Fluent UI)
|
|
470
|
-
- Themes/MudTheme.cs (se MudBlazor)
|
|
471
|
-
|
|
472
|
-
⛔ PAUSA OBRIGATÓRIA
|
|
473
|
-
Apresentar ao usuário 3 ações sugeridas:
|
|
474
|
-
- ✅ "Aprovar UI/UX e prosseguir para design técnico"
|
|
475
|
-
- 🎨 "Ajustar wireframes/componentes de telas específicas"
|
|
476
|
-
- 🔄 "Revisar biblioteca UI escolhida (Fluent UI ↔ MudBlazor)"
|
|
477
|
-
- 📋 "Adicionar mais fluxos/edge cases"
|
|
478
|
-
|
|
479
|
-
Formato: 3 das opções acima, escolhidas inteligentemente
|
|
480
|
-
|
|
481
|
-
Nota: Esta fase SÓ executa se detectar keywords de front-end.
|
|
482
|
-
Se não detectar, pula direto para FASE 2: DESIGN.
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
### FASE 2: DESIGN
|
|
486
|
-
```
|
|
487
|
-
Gatilho: Contexto confirmado (ou UI/UX aprovado se FASE 1.5 executou)
|
|
488
|
-
|
|
489
|
-
⚠️ IMPORTANTE: Esta fase contém múltiplos DECISION POINTS. NUNCA tome decisões
|
|
490
|
-
técnicas sozinho. Sempre apresente opções usando o template de DECISION POINTS.
|
|
491
|
-
|
|
492
|
-
Ações:
|
|
493
|
-
1. Gerar `spec.md` com requisitos completos
|
|
494
|
-
|
|
495
|
-
2. **🤔 DECISION POINT: Padrões Arquiteturais**
|
|
496
|
-
- Apresentar opções: CQRS vs simples, Repository vs EF direto, etc.
|
|
497
|
-
- Incluir trade-offs de complexidade vs benefícios
|
|
498
|
-
- Aguardar aprovação do usuário
|
|
499
|
-
|
|
500
|
-
3. **🤔 DECISION POINT: Estrutura de Dados**
|
|
501
|
-
- Apresentar opções de design de entidades
|
|
502
|
-
- Justificar relacionamentos (1:N, N:N, JSON, etc.)
|
|
503
|
-
- Aguardar aprovação do usuário
|
|
504
|
-
|
|
505
|
-
4. Gerar `contracts.cs` com interfaces/DTOs aprovados
|
|
506
|
-
|
|
507
|
-
5. **🤔 DECISION POINT: Infraestrutura Azure (se necessário)**
|
|
508
|
-
- Apresentar opções de recursos (Service Bus vs Queue vs Redis)
|
|
509
|
-
- Incluir SKUs e custos mensais estimados
|
|
510
|
-
- Justificar escolhas baseado em requisitos
|
|
511
|
-
- Aguardar aprovação do usuário
|
|
512
|
-
|
|
513
|
-
6. Estimar custos totais e validar contra limites
|
|
514
|
-
|
|
515
|
-
7. **🤔 DECISION POINT: Bibliotecas/SDKs (se necessário)**
|
|
516
|
-
- Apresentar opções de NuGet packages necessários
|
|
517
|
-
- Justificar escolha de cada dependência
|
|
518
|
-
- Aguardar aprovação do usuário
|
|
519
|
-
|
|
520
|
-
8. Documentar TODAS as decisões em `decisions.md` com ADRs
|
|
521
|
-
|
|
522
|
-
Outputs:
|
|
523
|
-
- .morph/project/outputs/{feature}/spec.md
|
|
524
|
-
- .morph/project/outputs/{feature}/contracts.cs
|
|
525
|
-
- .morph/project/outputs/{feature}/decisions.md
|
|
526
|
-
|
|
527
|
-
⛔ PAUSA OBRIGATÓRIA
|
|
528
|
-
Apresentar ao usuário 3 ações sugeridas:
|
|
529
|
-
- ✅ "Aprovar e continuar para tasks" (se tudo ok)
|
|
530
|
-
- 🔄 "Ajustar escopo/complexidade" (reduzir/expandir)
|
|
531
|
-
- 💰 "Revisar custos estimados" (se houver recursos Azure)
|
|
532
|
-
- 📋 "Modificar contracts" (ajustar interfaces/DTOs)
|
|
533
|
-
- ❓ Pergunta contextualizada sobre prioridades/trade-offs
|
|
534
|
-
|
|
535
|
-
Formato: 3 das opções acima, escolhidas inteligentemente
|
|
536
|
-
```
|
|
537
|
-
|
|
538
|
-
### FASE 3: CLARIFY
|
|
539
|
-
```
|
|
540
|
-
Gatilho: Design aprovado
|
|
541
|
-
Ações:
|
|
542
|
-
1. Identificar ambiguidades
|
|
543
|
-
2. Fazer perguntas de clarificação
|
|
544
|
-
3. Documentar respostas no spec.md
|
|
545
|
-
4. Validar edge cases
|
|
546
|
-
|
|
547
|
-
Output: Spec atualizado com clarificações
|
|
548
|
-
```
|
|
549
|
-
|
|
550
|
-
### FASE 4: TASKS
|
|
551
|
-
```
|
|
552
|
-
Gatilho: Clarificações resolvidas
|
|
553
|
-
Ações:
|
|
554
|
-
1. Quebrar spec em tasks (T001-TXXX)
|
|
555
|
-
2. Definir ordem de execução
|
|
556
|
-
3. Estabelecer checkpoints
|
|
557
|
-
4. Mapear dependências
|
|
558
|
-
5. Incluir tasks de IaC se necessário
|
|
559
|
-
|
|
560
|
-
Output: .morph/project/outputs/{feature}/tasks.json
|
|
561
|
-
|
|
562
|
-
⛔ PAUSA OBRIGATÓRIA
|
|
563
|
-
Apresentar ao usuário 3 ações sugeridas:
|
|
564
|
-
- ✅ "Aprovar breakdown e iniciar implementação"
|
|
565
|
-
- 🔀 "Repriorizar tasks" (mudar ordem de execução)
|
|
566
|
-
- ➕ "Adicionar/remover tasks" (ajustar escopo)
|
|
567
|
-
|
|
568
|
-
Formato: Sempre as 3 ações acima (padrão para esta fase)
|
|
569
|
-
```
|
|
570
|
-
|
|
571
|
-
### FASE 5: IMPLEMENT
|
|
572
|
-
```
|
|
573
|
-
Gatilho: Tasks aprovadas
|
|
574
|
-
Ações:
|
|
575
|
-
1. Implementar task por task
|
|
576
|
-
2. Executar testes a cada task
|
|
577
|
-
3. Checkpoint a cada 3 tasks
|
|
578
|
-
4. Gerar recap ao final
|
|
579
|
-
|
|
580
|
-
Outputs:
|
|
581
|
-
- Código implementado
|
|
582
|
-
- Testes criados
|
|
583
|
-
- .morph/project/outputs/{feature}/recap.md
|
|
584
|
-
```
|
|
585
|
-
|
|
586
|
-
### FASE 6: SYNC (condicional)
|
|
587
|
-
```
|
|
588
|
-
Gatilho: Implementação concluída + complexidade média/alta
|
|
589
|
-
|
|
590
|
-
Ações:
|
|
591
|
-
1. Revisar decisions.md da feature
|
|
592
|
-
- Identificar ADRs (Architectural Decision Records)
|
|
593
|
-
- Identificar padrões técnicos adotados
|
|
594
|
-
- Identificar convenções e nomenclaturas
|
|
595
|
-
- Identificar configurações de integrações
|
|
596
|
-
|
|
597
|
-
2. Categorizar decisões
|
|
598
|
-
- coding: Padrões de código, nomenclatura, testes
|
|
599
|
-
- architecture: Patterns, camadas, dependências
|
|
600
|
-
- azure: Infrastructure, deployment, recursos
|
|
601
|
-
- integrations: APIs, webhooks, auth, serviços externos
|
|
602
|
-
- ui-ux: Componentes, temas, bibliotecas UI
|
|
603
|
-
|
|
604
|
-
3. Promover para Standards
|
|
605
|
-
- Atualizar .morph/project/standards/{category}.md
|
|
606
|
-
- Adicionar seção com data e feature origin
|
|
607
|
-
- Manter histórico de evolução dos standards
|
|
608
|
-
|
|
609
|
-
4. Gerar Commit Dedicado
|
|
610
|
-
```
|
|
611
|
-
sync: Update project standards from {feature-name}
|
|
612
|
-
|
|
613
|
-
Decisions promoted:
|
|
614
|
-
- coding: Primary constructors pattern
|
|
615
|
-
- architecture: CQRS for complex operations
|
|
616
|
-
- ui-ux: Fluent UI for AI components
|
|
617
|
-
|
|
618
|
-
Standards updated:
|
|
619
|
-
- .morph/project/standards/coding.md
|
|
620
|
-
- .morph/project/standards/architecture.md
|
|
621
|
-
|
|
622
|
-
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
623
|
-
```
|
|
624
|
-
|
|
625
|
-
Outputs:
|
|
626
|
-
- .morph/project/standards/*.md (atualizados)
|
|
627
|
-
- Commit dedicado de sync
|
|
628
|
-
|
|
629
|
-
Quando pular esta fase:
|
|
630
|
-
- Complexidade baixa (feature trivial)
|
|
631
|
-
- Sem decisões arquiteturais significativas
|
|
632
|
-
- Apenas bug fixes ou ajustes menores
|
|
633
|
-
|
|
634
|
-
⛔ PAUSA OBRIGATÓRIA (se fase executar)
|
|
635
|
-
Apresentar decisões candidatas ao usuário:
|
|
636
|
-
- Listar decisões por categoria
|
|
637
|
-
- Pedir aprovação para promover
|
|
638
|
-
- Opção de editar antes de promover
|
|
639
|
-
```
|
|
640
|
-
|
|
641
|
-
---
|
|
642
|
-
|
|
643
|
-
## FLUXO VISUAL DAS FASES
|
|
644
|
-
|
|
645
|
-
```
|
|
646
|
-
┌────────────────────────────────────────────────────────────────────────────┐
|
|
647
|
-
│ MORPH-SPEC WORKFLOW COMPLETO │
|
|
648
|
-
└────────────────────────────────────────────────────────────────────────────┘
|
|
649
|
-
|
|
650
|
-
[INÍCIO] Nova sessão ou feature request
|
|
651
|
-
│
|
|
652
|
-
▼
|
|
653
|
-
┌─────────────────────┐
|
|
654
|
-
│ FASE 0.5: CONTEXT │ ← Automática (primeira interação)
|
|
655
|
-
│ (Detecta framework, │
|
|
656
|
-
│ projeto, standards)│
|
|
657
|
-
└──────────┬──────────┘
|
|
658
|
-
│
|
|
659
|
-
▼
|
|
660
|
-
┌─────────────────────┐
|
|
661
|
-
│ FASE 0: PROPOSAL │ ← User request
|
|
662
|
-
│ (Análise inicial + │
|
|
663
|
-
│ agentes ativados) │
|
|
664
|
-
└──────────┬──────────┘
|
|
665
|
-
│
|
|
666
|
-
⛔ PAUSA → Aprovação do usuário
|
|
667
|
-
│
|
|
668
|
-
▼
|
|
669
|
-
┌─────────────────────┐
|
|
670
|
-
│ FASE 1: SETUP │
|
|
671
|
-
│ (Carregar context + │
|
|
672
|
-
│ standards) │
|
|
673
|
-
└──────────┬──────────┘
|
|
674
|
-
│
|
|
675
|
-
├────────── Keywords UI/UX detectadas?
|
|
676
|
-
│ │
|
|
677
|
-
│ SIM ──────┐
|
|
678
|
-
│ ▼
|
|
679
|
-
│ ┌─────────────────────┐
|
|
680
|
-
│ │ FASE 1.5: UI/UX │ ← Condicional
|
|
681
|
-
│ │ (Wireframes, specs, │
|
|
682
|
-
│ │ componentes) │
|
|
683
|
-
│ └──────────┬──────────┘
|
|
684
|
-
│ │
|
|
685
|
-
│ ⛔ PAUSA → Aprovação do usuário
|
|
686
|
-
│ │
|
|
687
|
-
NÃO ────────────────────────┘
|
|
688
|
-
│
|
|
689
|
-
▼
|
|
690
|
-
┌─────────────────────┐
|
|
691
|
-
│ FASE 2: DESIGN │
|
|
692
|
-
│ (Spec, contracts, │
|
|
693
|
-
│ decisions, custos) │
|
|
694
|
-
└──────────┬──────────┘
|
|
695
|
-
│
|
|
696
|
-
⛔ PAUSA → Aprovação do usuário
|
|
697
|
-
│
|
|
698
|
-
▼
|
|
699
|
-
┌─────────────────────┐
|
|
700
|
-
│ FASE 3: CLARIFY │
|
|
701
|
-
│ (Perguntas de │
|
|
702
|
-
│ clarificação) │
|
|
703
|
-
└──────────┬──────────┘
|
|
704
|
-
│
|
|
705
|
-
▼
|
|
706
|
-
┌─────────────────────┐
|
|
707
|
-
│ FASE 4: TASKS │
|
|
708
|
-
│ (Breakdown em │
|
|
709
|
-
│ T001-TXXX) │
|
|
710
|
-
└──────────┬──────────┘
|
|
711
|
-
│
|
|
712
|
-
⛔ PAUSA → Aprovação do usuário
|
|
713
|
-
│
|
|
714
|
-
▼
|
|
715
|
-
┌─────────────────────┐
|
|
716
|
-
│ FASE 5: IMPLEMENT │
|
|
717
|
-
│ (Task por task + │
|
|
718
|
-
│ checkpoints) │
|
|
719
|
-
└──────────┬──────────┘
|
|
720
|
-
│
|
|
721
|
-
├────────── Complexidade média/alta + ADRs significativos?
|
|
722
|
-
│ │
|
|
723
|
-
│ SIM ──────┐
|
|
724
|
-
│ ▼
|
|
725
|
-
│ ┌─────────────────────┐
|
|
726
|
-
│ │ FASE 6: SYNC │ ← Condicional
|
|
727
|
-
│ │ (Promover decisions │
|
|
728
|
-
│ │ para standards) │
|
|
729
|
-
│ └──────────┬──────────┘
|
|
730
|
-
│ │
|
|
731
|
-
│ ⛔ PAUSA → Aprovação do usuário
|
|
732
|
-
│ │
|
|
733
|
-
NÃO ────────────────────────┘
|
|
734
|
-
│
|
|
735
|
-
▼
|
|
736
|
-
[FIM] Feature concluída
|
|
737
|
-
|
|
738
|
-
┌────────────────────────────────────────────────────────────────────────────┐
|
|
739
|
-
│ LEGENDA │
|
|
740
|
-
├────────────────────────────────────────────────────────────────────────────┤
|
|
741
|
-
│ ⛔ PAUSA OBRIGATÓRIA - Aguarda interação do usuário │
|
|
742
|
-
│ ─── Fluxo principal (sempre executado) │
|
|
743
|
-
│ ├── Decisão condicional │
|
|
744
|
-
│ [FASE X.Y] Fase intermediária/condicional │
|
|
745
|
-
│ [FASE X] Fase principal obrigatória │
|
|
746
|
-
└────────────────────────────────────────────────────────────────────────────┘
|
|
747
|
-
```
|
|
748
|
-
|
|
749
|
-
**Fases Obrigatórias:** 0, 1, 2, 3, 4, 5 (6 fases principais)
|
|
750
|
-
**Fases Condicionais:** 0.5 (auto), 1.5 (se UI), 6 (se complexo)
|
|
751
|
-
**Total:** 9 fases possíveis, 6-9 executadas dependendo do contexto
|
|
752
|
-
|
|
753
|
-
---
|
|
754
|
-
|
|
755
|
-
## PAUSAS INTERATIVAS
|
|
756
|
-
|
|
757
|
-
### Princípio
|
|
758
|
-
Toda pausa obrigatória DEVE terminar com **exatamente 3 itens** que ajudem o usuário a tomar decisões.
|
|
759
|
-
|
|
760
|
-
### Tipos de Itens
|
|
761
|
-
|
|
762
|
-
| Emoji | Tipo | Quando Usar | Exemplo |
|
|
763
|
-
|-------|------|-------------|---------|
|
|
764
|
-
| ✅ | Ação de Aprovação | Quando está pronto para avançar | "Aprovar e continuar para próxima fase" |
|
|
765
|
-
| 🔄 | Ação de Ajuste | Quando há algo para modificar | "Ajustar escopo da feature" |
|
|
766
|
-
| 💰 | Ação de Custo | Quando há recursos Azure | "Revisar custos estimados" |
|
|
767
|
-
| 📋 | Ação de Revisão | Quando há artefatos para validar | "Modificar contracts gerados" |
|
|
768
|
-
| ❓ | Pergunta Aberta | Para clarificar intenções | "Qual a prioridade: performance ou custo?" |
|
|
769
|
-
| 💡 | Sugestão Estratégica | Para propor alternativas | "Considerar serverless em vez de Container App?" |
|
|
770
|
-
| ⚡ | Ação Rápida | Atalho para comum | "Usar padrão CQRS nesta feature?" |
|
|
771
|
-
| 🤔 | Decisão Técnica | Apresentar opções para decisões críticas | "Service Bus vs Storage Queue: qual usar?" (Ver DECISION POINTS) |
|
|
772
|
-
|
|
773
|
-
### Estratégia por Fase
|
|
774
|
-
|
|
775
|
-
| Fase | Mix Recomendado | Objetivo |
|
|
776
|
-
|------|----------------|----------|
|
|
777
|
-
| **FASE 0: PROPOSAL** | 1 ação + 1 pergunta + 1 sugestão | Entender intenção e escopo |
|
|
778
|
-
| **FASE 2: DESIGN** | 2 ações + 1 pergunta/sugestão | Validar solução proposta |
|
|
779
|
-
| **FASE 4: TASKS** | 3 ações (padrão fixo) | Confirmar plano de execução |
|
|
780
|
-
|
|
781
|
-
### Template de Pausa
|
|
782
|
-
|
|
783
|
-
```markdown
|
|
784
|
-
---
|
|
785
|
-
⛔ **PAUSA OBRIGATÓRIA**
|
|
786
|
-
|
|
787
|
-
{Breve contexto do que foi feito}
|
|
788
|
-
|
|
789
|
-
**Próximos passos sugeridos:**
|
|
790
|
-
|
|
791
|
-
1. {Emoji} **{Título da ação/pergunta}**
|
|
792
|
-
{Descrição breve do que acontece se escolher esta opção}
|
|
793
|
-
|
|
794
|
-
2. {Emoji} **{Título da ação/pergunta}**
|
|
795
|
-
{Descrição breve}
|
|
796
|
-
|
|
797
|
-
3. {Emoji} **{Título da ação/pergunta}**
|
|
798
|
-
{Descrição breve}
|
|
799
|
-
|
|
800
|
-
---
|
|
801
|
-
```
|
|
802
|
-
|
|
803
|
-
### Exemplo Real
|
|
804
|
-
|
|
805
|
-
```markdown
|
|
806
|
-
---
|
|
807
|
-
⛔ **PAUSA OBRIGATÓRIA**
|
|
808
|
-
|
|
809
|
-
Analisamos sua solicitação de "Sistema de pagamentos recorrentes com Asaas".
|
|
810
|
-
Complexidade estimada: **MÉDIA** | Stack: **.NET + Blazor** | Custo: **~$5/mês**
|
|
811
|
-
|
|
812
|
-
**Próximos passos sugeridos:**
|
|
813
|
-
|
|
814
|
-
1. ✅ **Aprovar e prosseguir para design detalhado**
|
|
815
|
-
Gerar spec.md, contracts e estimativa completa de custos
|
|
816
|
-
|
|
817
|
-
2. ❓ **Esclarecer modelo de negócio**
|
|
818
|
-
Você pretende cobrar por assinatura mensal, anual ou ambos? Isso afeta o design.
|
|
819
|
-
|
|
820
|
-
3. 💡 **Considerar MVP incremental**
|
|
821
|
-
Começar só com pagamentos únicos e adicionar recorrência depois?
|
|
822
|
-
|
|
823
|
-
---
|
|
824
|
-
```
|
|
825
|
-
|
|
826
|
-
---
|
|
827
|
-
|
|
828
|
-
## DECISION POINTS
|
|
829
|
-
|
|
830
|
-
### ⚠️ REGRA CRÍTICA: NUNCA DECIDA SOZINHO
|
|
831
|
-
|
|
832
|
-
Você DEVE pausar e consultar o usuário em tempo real quando encontrar decisões técnicas significativas.
|
|
833
|
-
|
|
834
|
-
**Decisões que SEMPRE requerem aprovação do usuário:**
|
|
835
|
-
|
|
836
|
-
#### 1. **Infraestrutura Azure**
|
|
837
|
-
- Escolha de recursos (Service Bus vs Storage Queue vs Redis vs Event Grid)
|
|
838
|
-
- SKUs e tiers (Basic vs Standard vs Premium)
|
|
839
|
-
- Regiões e replicação
|
|
840
|
-
- Recursos pagos vs free tier
|
|
841
|
-
|
|
842
|
-
**Exemplo de decisão automática (ERRADO):**
|
|
843
|
-
```
|
|
844
|
-
❌ "Vou usar Azure Service Bus Standard tier para mensageria."
|
|
845
|
-
```
|
|
846
|
-
|
|
847
|
-
**Exemplo correto:**
|
|
848
|
-
```
|
|
849
|
-
✅ "Para mensageria assíncrona, temos 3 opções:
|
|
850
|
-
1. Service Bus Standard ($10/mês): Suporta tópicos, sessões, até 1GB
|
|
851
|
-
2. Storage Queue ($0.05/mês): Apenas filas simples, até 500TB
|
|
852
|
-
3. Event Grid ($0.30/mi eventos): Pub/sub nativo, serverless
|
|
853
|
-
|
|
854
|
-
Recomendo Storage Queue se você precisa apenas de filas simples e baratas.
|
|
855
|
-
Qual prefere?"
|
|
856
|
-
```
|
|
857
|
-
|
|
858
|
-
#### 2. **Bibliotecas e Frameworks**
|
|
859
|
-
- NuGet packages (.NET libraries)
|
|
860
|
-
- UI libraries (Fluent UI vs MudBlazor vs Radzen)
|
|
861
|
-
- ORMs além do padrão
|
|
862
|
-
- Auth providers (Clerk vs Azure AD vs Auth0)
|
|
863
|
-
- SDKs de terceiros
|
|
864
|
-
|
|
865
|
-
**Exemplo de decisão automática (ERRADO):**
|
|
866
|
-
```
|
|
867
|
-
❌ "Vou usar MudBlazor para os componentes UI."
|
|
868
|
-
```
|
|
869
|
-
|
|
870
|
-
**Exemplo correto:**
|
|
871
|
-
```
|
|
872
|
-
✅ "Para componentes UI no Blazor, temos 2 opções principais:
|
|
873
|
-
1. Fluent UI Blazor: Design Microsoft 365, componentes AI-ready, mais moderno
|
|
874
|
-
2. MudBlazor: Material Design, mais componentes prontos, comunidade maior
|
|
875
|
-
|
|
876
|
-
Recomendo Fluent UI se você quer visual moderno e integração com IA.
|
|
877
|
-
Qual prefere?"
|
|
878
|
-
```
|
|
879
|
-
|
|
880
|
-
#### 3. **Padrões Arquiteturais**
|
|
881
|
-
- CQRS vs operações simples
|
|
882
|
-
- Repository Pattern vs EF direto no Service
|
|
883
|
-
- Mediator (MediatR) vs chamadas diretas
|
|
884
|
-
- Event Sourcing vs CRUD tradicional
|
|
885
|
-
- DDD patterns complexos
|
|
886
|
-
|
|
887
|
-
**Exemplo de decisão automática (ERRADO):**
|
|
888
|
-
```
|
|
889
|
-
❌ "Vou implementar CQRS para separar leitura e escrita."
|
|
890
|
-
```
|
|
891
|
-
|
|
892
|
-
**Exemplo correto:**
|
|
893
|
-
```
|
|
894
|
-
✅ "Para essa feature de relatórios, podemos usar:
|
|
895
|
-
1. CQRS: Separar comandos e queries, melhor performance em leitura
|
|
896
|
-
Complexidade: Média-Alta | Benefício: Escalabilidade
|
|
897
|
-
2. Repositórios simples: Um repositório por entidade
|
|
898
|
-
Complexidade: Baixa | Benefício: Mais rápido de implementar
|
|
899
|
-
|
|
900
|
-
Recomendo CQRS se você planeja escalar leituras independentemente.
|
|
901
|
-
Qual abordagem prefere?"
|
|
902
|
-
```
|
|
903
|
-
|
|
904
|
-
#### 4. **Estrutura de Dados**
|
|
905
|
-
- Design de entidades e relacionamentos
|
|
906
|
-
- Normalização vs denormalização
|
|
907
|
-
- Schemas de API (DTOs, contratos)
|
|
908
|
-
- Índices e otimizações de banco
|
|
909
|
-
|
|
910
|
-
**Exemplo de decisão automática (ERRADO):**
|
|
911
|
-
```
|
|
912
|
-
❌ "Vou criar uma entidade User com relacionamento N:N com Roles."
|
|
913
|
-
```
|
|
914
|
-
|
|
915
|
-
**Exemplo correto:**
|
|
916
|
-
```
|
|
917
|
-
✅ "Para relacionamento User-Roles, temos 2 opções:
|
|
918
|
-
1. N:N com tabela intermediária UserRoles
|
|
919
|
-
Pros: Flexível, pode adicionar metadados (data de atribuição)
|
|
920
|
-
Cons: Mais complexo, mais JOINs
|
|
921
|
-
2. JSON array em User.Roles
|
|
922
|
-
Pros: Mais simples, menos JOINs
|
|
923
|
-
Cons: Menos flexível, dificulta queries por role
|
|
924
|
-
|
|
925
|
-
Recomendo N:N se você precisa saber quando role foi atribuída.
|
|
926
|
-
Qual estrutura prefere?"
|
|
927
|
-
```
|
|
928
|
-
|
|
929
|
-
---
|
|
930
|
-
|
|
931
|
-
### Template de Decisão
|
|
932
|
-
|
|
933
|
-
Quando encontrar uma decisão técnica, SEMPRE use este formato:
|
|
934
|
-
|
|
935
|
-
```markdown
|
|
936
|
-
---
|
|
937
|
-
🤔 **DECISÃO TÉCNICA NECESSÁRIA**
|
|
938
|
-
|
|
939
|
-
**Contexto:** {Por que precisamos decidir isso agora}
|
|
940
|
-
|
|
941
|
-
**Opções disponíveis:**
|
|
942
|
-
|
|
943
|
-
**Opção 1: {Nome}**
|
|
944
|
-
- ✅ Vantagens: {lista concisa}
|
|
945
|
-
- ❌ Desvantagens: {lista concisa}
|
|
946
|
-
- 💰 Custo: {se Azure} ou N/A
|
|
947
|
-
- ⚡ Complexidade: {baixa/média/alta}
|
|
948
|
-
|
|
949
|
-
**Opção 2: {Nome}**
|
|
950
|
-
- ✅ Vantagens: {lista concisa}
|
|
951
|
-
- ❌ Desvantagens: {lista concisa}
|
|
952
|
-
- 💰 Custo: {se Azure} ou N/A
|
|
953
|
-
- ⚡ Complexidade: {baixa/média/alta}
|
|
954
|
-
|
|
955
|
-
**Opção 3: {Nome}** (se houver)
|
|
956
|
-
- ...
|
|
957
|
-
|
|
958
|
-
**💡 Minha recomendação:**
|
|
959
|
-
{Opção X} porque {justificativa técnica baseada no contexto do projeto}
|
|
960
|
-
|
|
961
|
-
**Trade-offs principais:**
|
|
962
|
-
- {Trade-off 1: ex: performance vs custo}
|
|
963
|
-
- {Trade-off 2: ex: simplicidade vs escalabilidade}
|
|
964
|
-
|
|
965
|
-
**Qual opção você prefere?** Ou quer ajustar alguma delas?
|
|
966
|
-
|
|
967
|
-
---
|
|
968
|
-
```
|
|
969
|
-
|
|
970
|
-
---
|
|
971
|
-
|
|
972
|
-
### Quando NÃO pausar (decisões triviais)
|
|
973
|
-
|
|
974
|
-
Decisões automáticas permitidas (não precisa consultar):
|
|
975
|
-
- ✅ Nomenclatura de variáveis/métodos (seguir standards)
|
|
976
|
-
- ✅ Estrutura de pastas (seguir Clean Architecture padrão do projeto)
|
|
977
|
-
- ✅ Imports e usings
|
|
978
|
-
- ✅ Formatação de código
|
|
979
|
-
- ✅ Tipos primitivos (string vs int, etc.)
|
|
980
|
-
- ✅ Validações básicas (Required, MaxLength, etc.)
|
|
981
|
-
- ✅ Padrões já definidos em project/standards/
|
|
982
|
-
|
|
983
|
-
**Regra de ouro:** Se a decisão afeta **custo**, **arquitetura**, **dependências externas** ou **estrutura de dados**, SEMPRE consultar.
|
|
984
|
-
|
|
985
|
-
---
|
|
986
|
-
|
|
987
|
-
### Exemplo Real Completo
|
|
988
|
-
|
|
989
|
-
**Situação:** Usuário pediu "adicionar cache para melhorar performance"
|
|
990
|
-
|
|
991
|
-
**❌ ERRADO (decisão automática):**
|
|
992
|
-
```
|
|
993
|
-
Vou implementar cache usando Redis Premium tier.
|
|
994
|
-
```
|
|
995
|
-
|
|
996
|
-
**✅ CORRETO (apresentar opções):**
|
|
997
|
-
|
|
998
|
-
```markdown
|
|
999
|
-
---
|
|
1000
|
-
🤔 **DECISÃO TÉCNICA NECESSÁRIA**
|
|
1001
|
-
|
|
1002
|
-
**Contexto:** Você pediu cache para melhorar performance das queries de produtos. Precisamos decidir qual estratégia usar.
|
|
1003
|
-
|
|
1004
|
-
**Opções disponíveis:**
|
|
1005
|
-
|
|
1006
|
-
**Opção 1: In-Memory Cache (IMemoryCache .NET)**
|
|
1007
|
-
- ✅ Vantagens: Zero custo, simples, rápido para dados pequenos
|
|
1008
|
-
- ❌ Desvantagens: Limitado à memória do servidor, perdido em restart, não compartilhado entre instâncias
|
|
1009
|
-
- 💰 Custo: $0
|
|
1010
|
-
- ⚡ Complexidade: Baixa
|
|
1011
|
-
|
|
1012
|
-
**Opção 2: Redis (Azure Cache for Redis - Basic tier)**
|
|
1013
|
-
- ✅ Vantagens: Persistente, compartilhado, suporta estruturas complexas
|
|
1014
|
-
- ❌ Desvantagens: Custo adicional, latência de rede
|
|
1015
|
-
- 💰 Custo: ~$16/mês (Basic C0)
|
|
1016
|
-
- ⚡ Complexidade: Média
|
|
1017
|
-
|
|
1018
|
-
**Opção 3: Distributed Memory Cache (SQL Server)**
|
|
1019
|
-
- ✅ Vantagens: Usa SQL existente, sem custo adicional, compartilhado
|
|
1020
|
-
- ❌ Desvantagens: Mais lento que Redis, usa DB para cache
|
|
1021
|
-
- 💰 Custo: $0 (usa SQL existente)
|
|
1022
|
-
- ⚡ Complexidade: Baixa-Média
|
|
1023
|
-
|
|
1024
|
-
**💡 Minha recomendação:**
|
|
1025
|
-
Opção 1 (IMemoryCache) se você tem apenas 1 instância do app e dados de cache < 100MB.
|
|
1026
|
-
Opção 3 (SQL Distributed Cache) se você tem múltiplas instâncias mas quer evitar custo de Redis.
|
|
1027
|
-
|
|
1028
|
-
**Trade-offs principais:**
|
|
1029
|
-
- Performance vs Custo: Redis é mais rápido mas custa $16/mês
|
|
1030
|
-
- Simplicidade vs Escalabilidade: IMemoryCache é simples mas não escala para múltiplas instâncias
|
|
1031
|
-
|
|
1032
|
-
**Qual opção você prefere?** Ou quer ajustar alguma delas?
|
|
1033
|
-
---
|
|
1034
|
-
```
|
|
1035
|
-
|
|
1036
|
-
---
|
|
1037
|
-
|
|
1038
|
-
### Integração com Fases
|
|
1039
|
-
|
|
1040
|
-
**FASE 1.5 (UI/UX):**
|
|
1041
|
-
- ❓ Perguntar: Fluent UI vs MudBlazor vs outra biblioteca
|
|
1042
|
-
- ❓ Perguntar: Preferências de layout, cores, componentes
|
|
1043
|
-
|
|
1044
|
-
**FASE 2 (DESIGN):**
|
|
1045
|
-
- ❓ Perguntar: Padrões arquiteturais (CQRS, Repository, etc.)
|
|
1046
|
-
- ❓ Perguntar: Infraestrutura Azure (recursos, SKUs)
|
|
1047
|
-
- ❓ Perguntar: Bibliotecas e SDKs necessários
|
|
1048
|
-
- ❓ Perguntar: Estrutura de dados (entidades, relacionamentos)
|
|
1049
|
-
|
|
1050
|
-
**Durante IMPLEMENTAÇÃO:**
|
|
1051
|
-
- ❓ Pausar: Se encontrar decisão não prevista no design
|
|
1052
|
-
- ❓ Pausar: Se precisar adicionar dependência nova
|
|
1053
|
-
- ❓ Pausar: Se precisar mudar estrutura de dados aprovada
|
|
1054
|
-
|
|
1055
|
-
---
|
|
1056
|
-
|
|
1057
|
-
### Validação Automática (CLI)
|
|
1058
|
-
|
|
1059
|
-
Use o comando `morph-spec validate-decisions` para verificar se decisões foram documentadas:
|
|
1060
|
-
|
|
1061
|
-
```bash
|
|
1062
|
-
# Validar decisions.md de uma feature
|
|
1063
|
-
morph-spec validate-decisions {feature-name}
|
|
1064
|
-
|
|
1065
|
-
# O comando verifica:
|
|
1066
|
-
# - Decisões de infraestrutura têm ADRs?
|
|
1067
|
-
# - Bibliotecas escolhidas estão documentadas?
|
|
1068
|
-
# - Padrões arquiteturais estão justificados?
|
|
1069
|
-
```
|
|
1070
|
-
|
|
1071
|
-
---
|
|
1072
|
-
|
|
1073
|
-
## AGENTES
|
|
1074
|
-
|
|
1075
|
-
### Core Agents (Sempre Ativos)
|
|
1076
|
-
|
|
1077
|
-
| Agente | Responsabilidades |
|
|
1078
|
-
|--------|-------------------|
|
|
1079
|
-
| **Standards Architect** | Padrões em `framework/standards/` e `project/standards/`, nomenclatura, revisão |
|
|
1080
|
-
| **Azure Architect** | Infra Azure, Bicep IaC, App Service, Container Apps, SQL |
|
|
1081
|
-
| **Cost Guardian** | Validar custos, alertar recursos caros, bloquear não aprovados |
|
|
1082
|
-
|
|
1083
|
-
### Stack Agents (Por Stack)
|
|
1084
|
-
|
|
1085
|
-
| Agente | Stack | Keywords |
|
|
1086
|
-
|--------|-------|----------|
|
|
1087
|
-
| **Blazor Builder** | .NET + Blazor | blazor, razor, server-side |
|
|
1088
|
-
| **NextJS Expert** | .NET + Next.js | nextjs, react, api, frontend |
|
|
1089
|
-
| **Shopify Expert** | Shopify | shopify, hydrogen, liquid |
|
|
1090
|
-
|
|
1091
|
-
### Specialist Agents (Sob Demanda)
|
|
1092
|
-
|
|
1093
|
-
| Agente | Keywords de Ativação |
|
|
1094
|
-
|--------|---------------------|
|
|
1095
|
-
| **EF Modeler** | entity, database, migration, ef core |
|
|
1096
|
-
| **Agent Framework Expert** | agent, ai, llm, rag, embedding (.NET 10) |
|
|
1097
|
-
| **Hangfire Orchestrator** | scheduled, job, background, cron |
|
|
1098
|
-
| **UI/UX Designer** | **PT-BR:** tela, interface, formulário, visualização, mostrar, exibir, cadastro<br>**EN:** screen, view, display, form, show, render, create<br>**Components:** wizard, dashboard, chart, dialog, modal, card, list, grid<br>**Stack:** blazor, ui, ux, page, component, frontend<br>(FASE 1.5 obrigatória) |
|
|
1099
|
-
| **PO/PM Advisor** | unclear, requirements, priority, ROI |
|
|
1100
|
-
|
|
1101
|
-
### Integration Agents (Sob Demanda)
|
|
1102
|
-
|
|
1103
|
-
| Agente | Keywords | Docs |
|
|
1104
|
-
|--------|----------|------|
|
|
1105
|
-
| **Asaas Financial** | asaas, payment, pix, boleto | [API](https://docs.asaas.com/) |
|
|
1106
|
-
| **Clerk Auth** | clerk, auth, login, signup | [SDK](https://clerk.com/) |
|
|
1107
|
-
| **Azure Identity** | identity, entra, microsoft auth | [Docs](https://learn.microsoft.com/entra/) |
|
|
1108
|
-
|
|
1109
|
-
### Infra Agents (Sob Demanda)
|
|
1110
|
-
|
|
1111
|
-
| Agente | Keywords | Docs |
|
|
1112
|
-
|--------|----------|------|
|
|
1113
|
-
| **Bicep Architect** | bicep, iac, infra, provision | [Bicep](https://learn.microsoft.com/azure/azure-resource-manager/bicep/) |
|
|
1114
|
-
| **DevOps Engineer** | pipeline, ci/cd, deploy, release | [Pipelines](https://learn.microsoft.com/azure/devops/pipelines/) |
|
|
1115
|
-
| **Container Specialist** | docker, container, containerize | [Container Apps](https://learn.microsoft.com/azure/container-apps/) |
|
|
1116
|
-
|
|
1117
|
-
---
|
|
1118
|
-
|
|
1119
|
-
## LIMITES DE CUSTO
|
|
1120
|
-
|
|
1121
|
-
### Limites Configuráveis
|
|
1122
|
-
|
|
1123
|
-
Os limites de custo são definidos em `.morph/config/config.json` e podem ser customizados por projeto:
|
|
1124
|
-
|
|
1125
|
-
```json
|
|
1126
|
-
{
|
|
1127
|
-
"costs": {
|
|
1128
|
-
"monthlyBudget": 15,
|
|
1129
|
-
"currency": "USD",
|
|
1130
|
-
"limits": {
|
|
1131
|
-
"freeTierOnly": 0,
|
|
1132
|
-
"withApproval": 10,
|
|
1133
|
-
"requiresADR": 10
|
|
1134
|
-
},
|
|
1135
|
-
"enforcement": {
|
|
1136
|
-
"blockCommitsAboveLimit": true,
|
|
1137
|
-
"requireADRInDecisionsMd": true,
|
|
1138
|
-
"alertOnApproach": 0.8
|
|
1139
|
-
}
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
```
|
|
1143
|
-
|
|
1144
|
-
| Limite | Padrão | Descrição | Requisito |
|
|
1145
|
-
|--------|--------|-----------|-----------|
|
|
1146
|
-
| `freeTierOnly` | $0 | Apenas recursos free tier | Nenhum |
|
|
1147
|
-
| `withApproval` | $10 | Requer confirmação do usuário | Aprovação explícita |
|
|
1148
|
-
| `requiresADR` | $10 | Requer ADR documentado | ADR em decisions.md |
|
|
1149
|
-
|
|
1150
|
-
### Cost Calculator CLI
|
|
1151
|
-
|
|
1152
|
-
**Validação automática de custos:**
|
|
1153
|
-
|
|
1154
|
-
```bash
|
|
1155
|
-
# Calcular custos de arquivos Bicep
|
|
1156
|
-
morph-spec cost infra/main.bicep --verbose
|
|
1157
|
-
|
|
1158
|
-
# Múltiplos arquivos (glob pattern)
|
|
1159
|
-
morph-spec cost "infra/**/*.bicep" --json
|
|
1160
|
-
|
|
1161
|
-
# Usar config customizado
|
|
1162
|
-
morph-spec cost infra/main.bicep --config .morph/config/config.json
|
|
1163
|
-
|
|
1164
|
-
# OU, se em desenvolvimento local do framework:
|
|
1165
|
-
# node bin/calculate-costs.js infra/main.bicep --verbose
|
|
1166
|
-
```
|
|
1167
|
-
|
|
1168
|
-
**Funcionalidades:**
|
|
1169
|
-
- ✅ Parseia arquivos Bicep e extrai recursos + SKUs
|
|
1170
|
-
- ✅ Calcula custo mensal baseado em pricing table do Azure
|
|
1171
|
-
- ✅ Valida contra limites configurados
|
|
1172
|
-
- ✅ Exit code 1 se exceder limite `requiresADR`
|
|
1173
|
-
- ✅ Output JSON ou verbose (ASCII table)
|
|
1174
|
-
|
|
1175
|
-
**Pricing table inclui:**
|
|
1176
|
-
- Azure SQL Database (Free, Basic, S0-S4, P1-P2, GP, BC)
|
|
1177
|
-
- Container Apps (Consumption, Dedicated)
|
|
1178
|
-
- Storage Account (LRS, GRS, Premium)
|
|
1179
|
-
- Application Insights (Free, Basic)
|
|
1180
|
-
- Key Vault (Standard, Premium)
|
|
1181
|
-
- Cosmos DB (Serverless, Provisioned)
|
|
1182
|
-
- App Service (F1, D1, B1-B2, S1, P1v2)
|
|
1183
|
-
- Service Bus (Basic, Standard, Premium)
|
|
1184
|
-
- Redis Cache (C0-C2, P1)
|
|
1185
|
-
- Azure Functions (Consumption, Premium)
|
|
1186
|
-
|
|
1187
|
-
### Pre-commit Hook
|
|
1188
|
-
|
|
1189
|
-
**Bloqueio automático de commits caros:**
|
|
1190
|
-
|
|
1191
|
-
```bash
|
|
1192
|
-
# Instalar hook
|
|
1193
|
-
cp .morph/hooks/pre-commit-costs.sh .git/hooks/pre-commit
|
|
1194
|
-
chmod +x .git/hooks/pre-commit
|
|
1195
|
-
|
|
1196
|
-
# Ou symlink
|
|
1197
|
-
ln -s ../../.morph/hooks/pre-commit-costs.sh .git/hooks/pre-commit
|
|
1198
|
-
```
|
|
1199
|
-
|
|
1200
|
-
**Comportamento:**
|
|
1201
|
-
1. Detecta arquivos Bicep modificados no staged area
|
|
1202
|
-
2. Roda cost calculator automaticamente
|
|
1203
|
-
3. Se custo > `requiresADR`: procura ADR em decisions.md
|
|
1204
|
-
4. **Bloqueia commit** se ADR não encontrado
|
|
1205
|
-
5. Mensagem clara de erro com instruções
|
|
1206
|
-
|
|
1207
|
-
### Quando Usar
|
|
1208
|
-
|
|
1209
|
-
| Fase | Ação | CLI |
|
|
1210
|
-
|------|------|-----|
|
|
1211
|
-
| **FASE 2 (Design)** | Estimar custos de infra proposta | `/morph-design` (integrado) |
|
|
1212
|
-
| **Antes de commit** | Validar custos automaticamente | Pre-commit hook |
|
|
1213
|
-
| **Revisão manual** | Verificar custos de Bicep | `morph-spec cost <bicep-files> --verbose` |
|
|
1214
|
-
|
|
1215
|
-
### Exemplo de ADR de Custo
|
|
1216
|
-
|
|
1217
|
-
Se custo > `requiresADR`, documente em `decisions.md`:
|
|
1218
|
-
|
|
1219
|
-
```markdown
|
|
1220
|
-
## ADR-003: Infrastructure Costs
|
|
1221
|
-
|
|
1222
|
-
**Estimated Monthly Cost:** $12.50
|
|
1223
|
-
|
|
1224
|
-
**Breakdown:**
|
|
1225
|
-
- Azure SQL S0: $14.72/mo
|
|
1226
|
-
- Container App (scale-to-zero): $0.00/mo
|
|
1227
|
-
- Storage LRS: $0.02/mo
|
|
1228
|
-
|
|
1229
|
-
**Justification:**
|
|
1230
|
-
S0 tier necessary for 50k+ rows with indexed queries.
|
|
1231
|
-
Basic tier ($ 4.99) insufficient for expected load.
|
|
1232
|
-
|
|
1233
|
-
**Alternatives Considered:**
|
|
1234
|
-
- Basic tier: Too slow for projected 1M queries/month
|
|
1235
|
-
- Cosmos DB: More expensive ($23.36 minimum)
|
|
1236
|
-
|
|
1237
|
-
**Approval:** [User/Team] on 2024-01-15
|
|
1238
|
-
```
|
|
1239
|
-
|
|
1240
|
-
---
|
|
1241
|
-
|
|
1242
|
-
## INFRASTRUCTURE AS CODE
|
|
1243
|
-
|
|
1244
|
-
### Princípio: Zero Portal
|
|
1245
|
-
|
|
1246
|
-
> NUNCA criar recursos Azure manualmente. Tudo via Bicep.
|
|
1247
|
-
|
|
1248
|
-
### Estrutura IaC
|
|
1249
|
-
|
|
1250
|
-
```
|
|
1251
|
-
infra/
|
|
1252
|
-
├── main.bicep # Entry point
|
|
1253
|
-
├── parameters.dev.json # Params dev
|
|
1254
|
-
├── parameters.prod.json # Params prod
|
|
1255
|
-
└── modules/
|
|
1256
|
-
├── app-service.bicep
|
|
1257
|
-
├── container-app.bicep
|
|
1258
|
-
├── sql-database.bicep
|
|
1259
|
-
├── storage.bicep
|
|
1260
|
-
├── key-vault.bicep
|
|
1261
|
-
└── app-insights.bicep
|
|
1262
|
-
```
|
|
1263
|
-
|
|
1264
|
-
### Quando usar SDK .NET vs Bicep
|
|
1265
|
-
|
|
1266
|
-
| Recurso | Abordagem |
|
|
1267
|
-
|---------|-----------|
|
|
1268
|
-
| Infra estática (SQL, Storage, Container Apps) | Bicep |
|
|
1269
|
-
| Recursos dinâmicos (Fabric, Azure AI) | SDK .NET |
|
|
1270
|
-
| CI/CD | YAML + Bicep |
|
|
1271
|
-
|
|
1272
|
-
---
|
|
1273
|
-
|
|
1274
|
-
## ESTRUTURA DE OUTPUTS
|
|
1275
|
-
|
|
1276
|
-
```
|
|
1277
|
-
.morph/project/outputs/{feature-name}/
|
|
1278
|
-
├── proposal.md # Análise inicial e proposta (FASE 0)
|
|
1279
|
-
├── ui-design-system.md # Design system: cores, tipografia, spacing (FASE 1.5 - se front-end)
|
|
1280
|
-
├── ui-mockups.md # Wireframes ASCII + descrições (FASE 1.5 - se front-end)
|
|
1281
|
-
├── ui-components.md # Specs componentes Fluent UI/MudBlazor (FASE 1.5 - se front-end)
|
|
1282
|
-
├── ui-flows.md # Fluxos de usuário + diagramas (FASE 1.5 - se front-end)
|
|
1283
|
-
├── spec.md # Especificação técnica completa (FASE 2)
|
|
1284
|
-
├── contracts.cs # Interfaces, DTOs, Enums (FASE 2)
|
|
1285
|
-
├── tasks.json # Lista de tasks (FASE 4)
|
|
1286
|
-
├── decisions.md # ADRs (FASE 2+, atualizado na FASE 1.5 com UI lib)
|
|
1287
|
-
└── recap.md # Resumo pós-implementação (FASE 5)
|
|
1288
|
-
```
|
|
1289
|
-
|
|
1290
|
-
**Nota:** Arquivos `ui-*.md` são gerados apenas se a feature envolver front-end (keywords detectadas).
|
|
1291
|
-
|
|
1292
|
-
**Arquivos de Tema** (gerados na FASE 5 baseados em ui-design-system.md):
|
|
1293
|
-
- `wwwroot/css/design-system.css` - CSS Variables
|
|
1294
|
-
- `Themes/FluentDesignTheme.cs` - Se Fluent UI
|
|
1295
|
-
- `Themes/MudTheme.cs` - Se MudBlazor
|
|
1296
|
-
|
|
1297
|
-
---
|
|
1298
|
-
|
|
1299
|
-
## STATE MANAGEMENT
|
|
1300
|
-
|
|
1301
|
-
O MORPH-SPEC rastreia automaticamente o progresso de features usando `.morph/state.json`.
|
|
1302
|
-
|
|
1303
|
-
### Arquivo de State
|
|
1304
|
-
|
|
1305
|
-
```json
|
|
1306
|
-
{
|
|
1307
|
-
"version": "2.1.1",
|
|
1308
|
-
"project": {
|
|
1309
|
-
"name": "ProjectName",
|
|
1310
|
-
"type": "blazor-server",
|
|
1311
|
-
"createdAt": "2024-01-15T10:00:00Z",
|
|
1312
|
-
"updatedAt": "2024-01-15T14:30:00Z"
|
|
1313
|
-
},
|
|
1314
|
-
"features": {
|
|
1315
|
-
"feature-name": {
|
|
1316
|
-
"status": "in_progress",
|
|
1317
|
-
"phase": "implement",
|
|
1318
|
-
"activeAgents": ["blazor-builder", "ef-modeler"],
|
|
1319
|
-
"outputs": {
|
|
1320
|
-
"proposal": { "created": true, "path": ".morph/project/outputs/..." },
|
|
1321
|
-
"spec": { "created": true, "path": ".morph/project/outputs/..." },
|
|
1322
|
-
"tasks": { "created": true, "path": ".morph/project/outputs/..." }
|
|
1323
|
-
},
|
|
1324
|
-
"tasks": {
|
|
1325
|
-
"total": 12,
|
|
1326
|
-
"completed": 5,
|
|
1327
|
-
"inProgress": 1,
|
|
1328
|
-
"pending": 6
|
|
1329
|
-
},
|
|
1330
|
-
"checkpoints": [
|
|
1331
|
-
{
|
|
1332
|
-
"timestamp": "2024-01-15T12:00:00Z",
|
|
1333
|
-
"phase": "implement",
|
|
1334
|
-
"completedTasks": 3,
|
|
1335
|
-
"note": "Checkpoint após T001-T003"
|
|
1336
|
-
}
|
|
1337
|
-
],
|
|
1338
|
-
"costs": {
|
|
1339
|
-
"estimated": 2.50,
|
|
1340
|
-
"approved": true
|
|
1341
|
-
}
|
|
1342
|
-
}
|
|
1343
|
-
},
|
|
1344
|
-
"metadata": {
|
|
1345
|
-
"totalFeatures": 1,
|
|
1346
|
-
"completedFeatures": 0,
|
|
1347
|
-
"totalCostEstimated": 2.50
|
|
1348
|
-
}
|
|
1349
|
-
}
|
|
1350
|
-
```
|
|
1351
|
-
|
|
1352
|
-
### CLI para State Management
|
|
1353
|
-
|
|
1354
|
-
Use o comando `morph-spec state` para manipular o state:
|
|
1355
|
-
|
|
1356
|
-
```bash
|
|
1357
|
-
# Inicializar state (primeira vez)
|
|
1358
|
-
morph-spec state init
|
|
1359
|
-
|
|
1360
|
-
# Criar/atualizar feature
|
|
1361
|
-
morph-spec state set feature-name phase design
|
|
1362
|
-
morph-spec state set feature-name status in_progress
|
|
1363
|
-
|
|
1364
|
-
# Atualizar tasks
|
|
1365
|
-
morph-spec state set feature-name tasks.completed 5
|
|
1366
|
-
morph-spec state set feature-name tasks.total 12
|
|
1367
|
-
|
|
1368
|
-
# Adicionar agentes
|
|
1369
|
-
morph-spec state add-agent feature-name blazor-builder
|
|
1370
|
-
|
|
1371
|
-
# Marcar outputs como criados
|
|
1372
|
-
morph-spec state mark-output feature-name spec
|
|
1373
|
-
morph-spec state mark-output feature-name contracts
|
|
1374
|
-
|
|
1375
|
-
# Registrar checkpoint
|
|
1376
|
-
morph-spec state checkpoint feature-name "Completadas tasks T001-T003"
|
|
1377
|
-
|
|
1378
|
-
# Listar todas as features
|
|
1379
|
-
morph-spec state list
|
|
1380
|
-
|
|
1381
|
-
# Obter detalhes de uma feature (JSON)
|
|
1382
|
-
morph-spec state get feature-name
|
|
1383
|
-
|
|
1384
|
-
# OU, se em desenvolvimento local do framework:
|
|
1385
|
-
# node bin/state-manager.js <command>
|
|
1386
|
-
```
|
|
1387
|
-
|
|
1388
|
-
### Quando Atualizar State
|
|
1389
|
-
|
|
1390
|
-
**SEMPRE** atualize o state nos seguintes momentos:
|
|
1391
|
-
|
|
1392
|
-
| Momento | Comando |
|
|
1393
|
-
|---------|---------|
|
|
1394
|
-
| **Criar proposal** (FASE 0) | `set {feature} phase proposal`<br>`mark-output {feature} proposal` |
|
|
1395
|
-
| **Iniciar design** (FASE 2) | `set {feature} phase design`<br>`add-agent {feature} {agent-id}` |
|
|
1396
|
-
| **Aprovar design** | `set {feature} status approved`<br>`mark-output {feature} spec`<br>`mark-output {feature} contracts` |
|
|
1397
|
-
| **Iniciar implementação** (FASE 5) | `set {feature} phase implement`<br>`set {feature} status in_progress`<br>`set {feature} tasks.total {N}` |
|
|
1398
|
-
| **Completar task** | `set {feature} tasks.completed {X}` |
|
|
1399
|
-
| **Checkpoint (a cada 3 tasks)** | `checkpoint {feature} "nota"` |
|
|
1400
|
-
| **Finalizar feature** | `set {feature} status done`<br>`mark-output {feature} recap` |
|
|
1401
|
-
|
|
1402
|
-
### Benefícios
|
|
1403
|
-
|
|
1404
|
-
- ✅ **Persistência**: Estado mantido entre sessões
|
|
1405
|
-
- ✅ **Rastreamento**: Saber exatamente em qual fase cada feature está
|
|
1406
|
-
- ✅ **Progresso**: Visualizar tasks completadas vs total
|
|
1407
|
-
- ✅ **Histórico**: Checkpoints registrados com timestamps
|
|
1408
|
-
- ✅ **Custos**: Rastreamento de custos estimados e aprovações
|
|
1409
|
-
- ✅ **Dashboard**: Comando `list` gera visualização ASCII automática
|
|
1410
|
-
|
|
1411
|
-
---
|
|
1412
|
-
|
|
1413
|
-
## COMANDOS
|
|
1414
|
-
|
|
1415
|
-
### Comandos CLI (via npm package)
|
|
1416
|
-
|
|
1417
|
-
| Comando | Descrição | Quando Usar |
|
|
1418
|
-
|---------|-----------|-------------|
|
|
1419
|
-
| `morph-spec init` | Inicializar MORPH no projeto | Primeira vez em um projeto |
|
|
1420
|
-
| `morph-spec detect` | Detectar stack/patterns | Projeto existente, entender estrutura |
|
|
1421
|
-
| `morph-spec sync` | Sincronizar standards | Após implementar features |
|
|
1422
|
-
| `morph-spec update` | Atualizar framework | Nova versão do MORPH disponível |
|
|
1423
|
-
| `morph-spec doctor` | Check de saúde | Diagnosticar problemas |
|
|
1424
|
-
| `morph-spec state <action>` | Gerenciar state.json | Rastrear features, progresso, agentes |
|
|
1425
|
-
| `morph-spec cost <bicep-files>` | Calcular custos Azure | Validar custos de infraestrutura |
|
|
1426
|
-
| `morph-spec generate design-system` | Gerar CSS + temas | Após aprovar UI/UX design |
|
|
1427
|
-
|
|
1428
|
-
### Story-Driven Development Commands
|
|
1429
|
-
|
|
1430
|
-
| Comando | Descrição | Quando Usar |
|
|
1431
|
-
|---------|-----------|-------------|
|
|
1432
|
-
| `morph-spec story create <feature> <story-id>` | Criar story com Dev Notes auto-injetadas | Início da implementação |
|
|
1433
|
-
| `morph-spec story shard <feature>` | Dividir spec.md em shards (90% token savings) | Feature com spec grande (5+ seções) |
|
|
1434
|
-
| `morph-spec story status <feature> show` | Ver progresso do sprint | Qualquer momento |
|
|
1435
|
-
| `morph-spec story status <feature> start <id>` | Marcar story como in_progress | Antes de implementar |
|
|
1436
|
-
| `morph-spec story status <feature> qa <id>` | Marcar story como ready_for_qa | Após implementar |
|
|
1437
|
-
| `morph-spec story status <feature> done <id>` | Marcar story como done | Após QA aprovar |
|
|
1438
|
-
| `morph-spec story status <feature> next` | Mostrar próxima story | Planejar próximo trabalho |
|
|
1439
|
-
|
|
1440
|
-
**Options:**
|
|
1441
|
-
- `--title <title>` - Título da story
|
|
1442
|
-
- `--tasks <tasks>` - Lista de tasks separadas por vírgula
|
|
1443
|
-
- `--dry-run` - Preview sem escrever arquivos
|
|
1444
|
-
- `--verbose` - Mostrar informações detalhadas
|
|
1445
|
-
|
|
1446
|
-
**Exemplo completo:**
|
|
1447
|
-
```bash
|
|
1448
|
-
# 1. Shardar spec (opcional)
|
|
1449
|
-
morph-spec story shard scheduled-reports
|
|
1450
|
-
|
|
1451
|
-
# 2. Criar stories
|
|
1452
|
-
morph-spec story create scheduled-reports SR-001 \
|
|
1453
|
-
--title "Create entity" \
|
|
1454
|
-
--tasks "Create entity,EF mapping,Migration,Tests"
|
|
1455
|
-
|
|
1456
|
-
# 3. Implementar
|
|
1457
|
-
morph-spec story status scheduled-reports start SR-001
|
|
1458
|
-
# [Claude implementa código]
|
|
1459
|
-
morph-spec story status scheduled-reports qa SR-001
|
|
1460
|
-
|
|
1461
|
-
# 4. QA
|
|
1462
|
-
# [Claude revisa código]
|
|
1463
|
-
morph-spec story status scheduled-reports done SR-001
|
|
1464
|
-
|
|
1465
|
-
# 5. Ver progresso
|
|
1466
|
-
morph-spec story status scheduled-reports show
|
|
1467
|
-
```
|
|
1468
|
-
|
|
1469
|
-
**Ver também:** `content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md` para guia completo.
|
|
1470
|
-
|
|
1471
|
-
### State Management Command
|
|
1472
|
-
|
|
1473
|
-
**Gerencia state.json para rastreamento de features:**
|
|
1474
|
-
|
|
1475
|
-
```bash
|
|
1476
|
-
# Inicializar state.json
|
|
1477
|
-
morph-spec state init [--force] [--project <name>] [--type <type>]
|
|
1478
|
-
|
|
1479
|
-
# Ver feature
|
|
1480
|
-
morph-spec state get <feature> [--json]
|
|
1481
|
-
|
|
1482
|
-
# Atualizar propriedade (suporta dot notation)
|
|
1483
|
-
morph-spec state set <feature> <key> <value>
|
|
1484
|
-
|
|
1485
|
-
# Registrar checkpoint
|
|
1486
|
-
morph-spec state checkpoint <feature> "<note>"
|
|
1487
|
-
|
|
1488
|
-
# Listar todas as features
|
|
1489
|
-
morph-spec state list
|
|
1490
|
-
|
|
1491
|
-
# Gerenciar agentes
|
|
1492
|
-
morph-spec state add-agent <feature> <agent-id>
|
|
1493
|
-
morph-spec state remove-agent <feature> <agent-id>
|
|
1494
|
-
|
|
1495
|
-
# Marcar outputs como criados
|
|
1496
|
-
morph-spec state mark-output <feature> <output-type>
|
|
1497
|
-
```
|
|
1498
|
-
|
|
1499
|
-
**Uso automático interno:**
|
|
1500
|
-
- `morph-spec story create/status` atualiza state automaticamente
|
|
1501
|
-
- Slash commands `/morph-*` registram fases e checkpoints
|
|
1502
|
-
- Todos os comandos que geram outputs marcam no state
|
|
1503
|
-
|
|
1504
|
-
**Exemplo completo:**
|
|
1505
|
-
```bash
|
|
1506
|
-
# Setup inicial
|
|
1507
|
-
morph-spec state init --project "MyApp" --type "blazor-server"
|
|
1508
|
-
|
|
1509
|
-
# Durante feature
|
|
1510
|
-
morph-spec state set scheduled-reports phase design
|
|
1511
|
-
morph-spec state add-agent scheduled-reports blazor-builder
|
|
1512
|
-
morph-spec state mark-output scheduled-reports spec
|
|
1513
|
-
|
|
1514
|
-
# Checkpoints (automáticos ou manuais)
|
|
1515
|
-
morph-spec state checkpoint scheduled-reports "Completed T001-T003"
|
|
1516
|
-
|
|
1517
|
-
# Ver progresso
|
|
1518
|
-
morph-spec state list
|
|
1519
|
-
```
|
|
1520
|
-
|
|
1521
|
-
### Cost Calculator Command
|
|
1522
|
-
|
|
1523
|
-
**Calcula custos de infraestrutura Azure de arquivos Bicep:**
|
|
1524
|
-
|
|
1525
|
-
```bash
|
|
1526
|
-
# Calcular custos
|
|
1527
|
-
morph-spec cost <bicep-files> [--verbose] [--json] [--strict]
|
|
1528
|
-
|
|
1529
|
-
# Exemplos
|
|
1530
|
-
morph-spec cost infra/main.bicep --verbose
|
|
1531
|
-
morph-spec cost "infra/**/*.bicep" --json
|
|
1532
|
-
morph-spec cost infra/main.bicep --strict # Exit code 1 se > ADR threshold
|
|
1533
|
-
```
|
|
1534
|
-
|
|
1535
|
-
**Uso automático interno:**
|
|
1536
|
-
- `/morph-design` calcula custos automaticamente se detectar Bicep
|
|
1537
|
-
- Pre-commit hook valida custos antes de commitar
|
|
1538
|
-
- `morph-spec story create` alerta se tasks incluem "bicep"
|
|
1539
|
-
|
|
1540
|
-
**Pricing table inclui:**
|
|
1541
|
-
- Azure SQL Database (Free, Basic, S0-S4, P1-P2, GP, BC)
|
|
1542
|
-
- Container Apps (Consumption, Dedicated)
|
|
1543
|
-
- Storage Account, Application Insights, Key Vault
|
|
1544
|
-
- Cosmos DB, App Service, Service Bus, Redis, Functions
|
|
1545
|
-
|
|
1546
|
-
**Validação automática:**
|
|
1547
|
-
- Alerta se custo > `freeTierOnly` (requer aprovação)
|
|
1548
|
-
- Bloqueia se custo > `requiresADR` (requer ADR em decisions.md)
|
|
1549
|
-
- Pre-commit hook impede commits sem ADR
|
|
1550
|
-
|
|
1551
|
-
### Generate Design System Command
|
|
1552
|
-
|
|
1553
|
-
**Gera CSS + temas C# a partir de ui-design-system.md:**
|
|
1554
|
-
|
|
1555
|
-
```bash
|
|
1556
|
-
# Gerar design system
|
|
1557
|
-
morph-spec generate design-system <ui-design-system.md> [options]
|
|
1558
|
-
|
|
1559
|
-
# Opções
|
|
1560
|
-
--fluent # Apenas Fluent UI theme
|
|
1561
|
-
--mud # Apenas MudBlazor theme
|
|
1562
|
-
--both # Ambos os temas (padrão)
|
|
1563
|
-
--namespace <ns> # Namespace C# (padrão: YourProject.Themes)
|
|
1564
|
-
--dry-run # Preview sem escrever arquivos
|
|
1565
|
-
|
|
1566
|
-
# Exemplos
|
|
1567
|
-
morph-spec generate design-system .morph/project/outputs/my-feature/ui-design-system.md --fluent
|
|
1568
|
-
morph-spec generate design-system .morph/project/outputs/my-feature/ui-design-system.md --both
|
|
1569
|
-
```
|
|
1570
|
-
|
|
1571
|
-
**Arquivos gerados:**
|
|
1572
|
-
- `wwwroot/css/design-system.css` - CSS variables
|
|
1573
|
-
- `Themes/FluentDesignTheme.cs` - Tema Fluent UI (se --fluent ou --both)
|
|
1574
|
-
- `Themes/MudDesignTheme.cs` - Tema MudBlazor (se --mud ou --both)
|
|
1575
|
-
|
|
1576
|
-
**Uso automático interno:**
|
|
1577
|
-
- `/morph-uiux` gera temas automaticamente após aprovar design
|
|
1578
|
-
- FASE 5: IMPLEMENT regenera se ui-design-system.md for modificado
|
|
1579
|
-
|
|
1580
|
-
**Parsing automático de:**
|
|
1581
|
-
- Primary/Secondary/Neutral colors (#hex)
|
|
1582
|
-
- Semantic colors (Success, Error, Warning, Info)
|
|
1583
|
-
- Font families, sizes, weights
|
|
1584
|
-
- Spacing values (margin, padding, gap)
|
|
1585
|
-
|
|
1586
|
-
---
|
|
1587
|
-
|
|
1588
|
-
### Slash Commands (Claude Code)
|
|
1589
|
-
|
|
1590
|
-
Comandos disponíveis para cada fase do workflow:
|
|
1591
|
-
|
|
1592
|
-
| Comando | Fase | Descrição |
|
|
1593
|
-
|---------|------|-----------|
|
|
1594
|
-
| `/morph-proposal {feature}` | FASE 0 | Criar proposta inicial, detectar agentes |
|
|
1595
|
-
| `/morph-setup {feature}` | FASE 1 | Carregar contexto, confirmar stack e padrões |
|
|
1596
|
-
| `/morph-uiux {feature}` | FASE 1.5 | Coletar UI/UX, gerar wireframes e specs de componentes (condicional) |
|
|
1597
|
-
| `/morph-design {feature}` | FASE 2 | Gerar spec.md, contracts.cs, decisions.md, estimar custos |
|
|
1598
|
-
| `/morph-clarify {feature}` | FASE 3 | Identificar ambiguidades, fazer perguntas de clarificação |
|
|
1599
|
-
| `/morph-tasks {feature}` | FASE 4 | Quebrar spec em tasks executáveis, definir checkpoints |
|
|
1600
|
-
| `/morph-apply {feature}` | FASE 5 | Implementar tasks sequencialmente com validação de fases |
|
|
1601
|
-
| `/morph-status` | Qualquer | Mostrar dashboard de progresso com state.json |
|
|
1602
|
-
| `/morph-archive {feature}` | Pós-impl | Arquivar feature concluída |
|
|
1603
|
-
|
|
1604
|
-
**Uso típico:**
|
|
1605
|
-
|
|
1606
|
-
```bash
|
|
1607
|
-
# 1. Criar proposta
|
|
1608
|
-
/morph-proposal scheduled-reports
|
|
1609
|
-
|
|
1610
|
-
# 2. Setup (após aprovação)
|
|
1611
|
-
/morph-setup scheduled-reports
|
|
1612
|
-
|
|
1613
|
-
# 3. UI/UX (se necessário)
|
|
1614
|
-
/morph-uiux scheduled-reports
|
|
1615
|
-
|
|
1616
|
-
# 4. Design técnico
|
|
1617
|
-
/morph-design scheduled-reports
|
|
1618
|
-
|
|
1619
|
-
# 5. Clarificações
|
|
1620
|
-
/morph-clarify scheduled-reports
|
|
1621
|
-
|
|
1622
|
-
# 6. Breakdown de tasks
|
|
1623
|
-
/morph-tasks scheduled-reports
|
|
1624
|
-
|
|
1625
|
-
# 7. Implementação
|
|
1626
|
-
/morph-apply scheduled-reports
|
|
1627
|
-
|
|
1628
|
-
# 8. Ver status a qualquer momento
|
|
1629
|
-
/morph-status
|
|
1630
|
-
|
|
1631
|
-
# 9. Arquivar quando completo
|
|
1632
|
-
/morph-archive scheduled-reports
|
|
1633
|
-
```
|
|
1634
|
-
|
|
1635
|
-
**Validação de fases:**
|
|
1636
|
-
- `/morph-apply` valida que TODAS as fases anteriores foram concluídas
|
|
1637
|
-
- Impossível pular fases (segurança do workflow)
|
|
1638
|
-
- State.json rastreia progresso automaticamente
|
|
1639
|
-
|
|
1640
|
-
---
|
|
1641
|
-
|
|
1642
|
-
## REFERÊNCIAS
|
|
1643
|
-
|
|
1644
|
-
### Framework Standards (Read-only, do MORPH)
|
|
1645
|
-
- `framework/standards/coding.md` - Padrões de código
|
|
1646
|
-
- `framework/standards/architecture.md` - Padrões de arquitetura
|
|
1647
|
-
- `framework/standards/azure.md` - Padrões Azure e IaC
|
|
1648
|
-
- `framework/standards/agent-framework-setup.md` - Setup Agent Framework (.NET 10)
|
|
1649
|
-
- `framework/standards/passkeys-auth.md` - Autenticação com Passkeys/WebAuthn
|
|
1650
|
-
- `framework/standards/vector-search-rag.md` - Vector Search + RAG com EF Core 10
|
|
1651
|
-
- `framework/standards/dotnet10-migration.md` - Guia de migração .NET 9 → 10
|
|
1652
|
-
- `framework/standards/fluent-ui-setup.md` - UI Library recomendada (Fluent UI Blazor)
|
|
1653
|
-
- `framework/standards/migration-guide.md` - Guia de migração App Service → Container Apps
|
|
1654
|
-
|
|
1655
|
-
### Framework Templates
|
|
1656
|
-
- `framework/templates/` - Templates para outputs de features
|
|
1657
|
-
- `framework/templates/infra/` - Templates Bicep e scripts de deploy
|
|
1658
|
-
|
|
1659
|
-
### Project Context (Editável, do projeto)
|
|
1660
|
-
- `.morph/project/context/README.md` - Overview do projeto
|
|
1661
|
-
- `.morph/project/standards/inferred.md` - Standards detectados automaticamente
|
|
1662
|
-
- `.morph/project/standards/*.md` - Overrides e extensões dos standards
|
|
1663
|
-
- `.morph/project/outputs/` - Features em desenvolvimento
|
|
1664
|
-
- `.morph/config.json` - Config do projeto + link para framework
|
|
1665
|
-
|
|
1666
|
-
### Azure DevOps (se aplicável)
|
|
1667
|
-
- `.azure/README.md` - Overview completo de CI/CD
|
|
1668
|
-
- `.azure/pipelines/` - Pipelines (staging, prod)
|
|
1669
|
-
- `.azure/docs/azure-devops-setup.md` - Setup Workload Identity Federation
|
|
1670
|
-
|
|
1671
|
-
---
|
|
1672
|
-
|
|
1673
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
1
|
+
# MORPH-SPEC - Instruções para Claude Code
|
|
2
|
+
|
|
3
|
+
**M**ethodical **O**rchestration for **R**eliable **P**roduction-ready **SPEC**-driven development
|
|
4
|
+
|
|
5
|
+
> by Polymorphism Tech
|
|
6
|
+
|
|
7
|
+
Sistema de desenvolvimento orientado por especificações. Hub de agentes especializados em multi-stack (.NET/Blazor, .NET/Next.js) com Infrastructure as Code.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## REGRAS CRÍTICAS
|
|
12
|
+
|
|
13
|
+
### NUNCA:
|
|
14
|
+
- Pular direto para código sem especificação
|
|
15
|
+
- Implementar sem aprovação do design
|
|
16
|
+
- Ignorar os padrões (framework/standards/ ou project/standards/)
|
|
17
|
+
- Criar recursos Azure manualmente no portal (use Bicep)
|
|
18
|
+
- Gerar código sem contracts definidos
|
|
19
|
+
- **Tomar decisões técnicas sozinho (infraestrutura, bibliotecas, patterns, schemas)**
|
|
20
|
+
|
|
21
|
+
### SEMPRE:
|
|
22
|
+
- Seguir workflow adequado à complexidade (ver WORKFLOWS)
|
|
23
|
+
- Gerar outputs em `.morph/project/outputs/{feature}/`
|
|
24
|
+
- Documentar decisões em `decisions.md`
|
|
25
|
+
- Checkpoint a cada 3 tasks implementadas
|
|
26
|
+
- Usar Infrastructure as Code (Bicep)
|
|
27
|
+
- Usar exclusivamente Microsoft Agent Framework (.NET 10)
|
|
28
|
+
- Coletar input do usuário na FASE 1.5 (layout, referências, imagens)
|
|
29
|
+
- **Consultar usuário em DECISION POINTS**
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## AGENTES E SKILLS
|
|
34
|
+
|
|
35
|
+
**Agent** = Metadata em `.morph/config/agents.json` (quem sou, quando ativo)
|
|
36
|
+
**Skill** = Implementação em `.claude/skills/{cat}/{id}.md` (como faço, prompts, workflows)
|
|
37
|
+
|
|
38
|
+
**Workflow:** Keywords no input → `npx morph-spec detect-agents "{input}"` → retorna agent-ids → Claude ativa agentes → invoca Skills dos detectados
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx morph-spec detect-agents "implementar jobs agendados" # Detectar agentes por keywords
|
|
42
|
+
npx morph-spec detect-agents --verbose "criar dashboard" # Ver matches detalhados
|
|
43
|
+
npx morph-spec detect # Detectar stack/arquitetura do projeto
|
|
44
|
+
npx morph-spec validate-agents-skills # Validar consistência
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Após detectar, registrar: `morph-spec state add-agent {feature} {agent-id}`
|
|
48
|
+
|
|
49
|
+
### Agentes Disponíveis
|
|
50
|
+
|
|
51
|
+
| Tipo | Agente | Keywords |
|
|
52
|
+
|------|--------|----------|
|
|
53
|
+
| **Core** | Standards Architect | *(sempre ativo)* |
|
|
54
|
+
| **Core** | Azure Architect | *(sempre ativo)* |
|
|
55
|
+
| **Core** | .NET Senior Engineer | *(sempre ativo)* — ultrathink mode |
|
|
56
|
+
| **Stack** | Blazor Builder | blazor, razor, server-side |
|
|
57
|
+
| **Stack** | NextJS Expert | nextjs, react, api, frontend |
|
|
58
|
+
| **Specialist** | EF Modeler | entity, database, migration, ef core |
|
|
59
|
+
| **Specialist** | Code Analyzer | analyze, review, refactor, clean code, smell, duplicate |
|
|
60
|
+
| **Specialist** | Agent Framework Expert | agent, ai, llm, rag, embedding, workflow, orchestration, mcp, a2a, middleware |
|
|
61
|
+
| **Specialist** | Hangfire Orchestrator | scheduled, job, background, cron |
|
|
62
|
+
| **Specialist** | UI/UX Designer | tela, interface, dashboard, form, chart, wizard, blazor, ui, ux, page, component |
|
|
63
|
+
| **Specialist** | PO/PM Advisor | unclear, requirements, priority, ROI |
|
|
64
|
+
| **Integration** | Asaas Financial | asaas, payment, pix, boleto |
|
|
65
|
+
| **Integration** | Clerk Auth | clerk, auth, login, signup |
|
|
66
|
+
| **Integration** | Azure Identity | identity, entra, microsoft auth |
|
|
67
|
+
| **Integration** | Resend Email | resend, email, transactional, notification |
|
|
68
|
+
| **Infra** | Bicep Architect | bicep, iac, infra, provision |
|
|
69
|
+
| **Infra** | DevOps Engineer | pipeline, ci/cd, deploy, release |
|
|
70
|
+
| **Infra** | Container Specialist | docker, container, containerize |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## WORKFLOWS POR COMPLEXIDADE
|
|
75
|
+
|
|
76
|
+
O MORPH-SPEC detecta automaticamente a complexidade via `src/lib/complexity-analyzer.js`. Override: `[FAST-TRACK]` ou `[FULL-MORPH]` no pedido.
|
|
77
|
+
|
|
78
|
+
| Aspecto | Fast Track | Standard | Full MORPH | UI Refresh | Design Impl |
|
|
79
|
+
|---------|-----------|----------|------------|------------|-------------|
|
|
80
|
+
| **Quando** | Bug fixes, ajustes | Features simples | Features complexas | Redesign visual | Prototipo → Codigo |
|
|
81
|
+
| **Arquivos** | ≤ 3 | 3-10 | > 10 | CSS + .razor | .html → .razor |
|
|
82
|
+
| **Fases** | 2 | 4 | 9 (todas) | 3 | 3 |
|
|
83
|
+
| **Pausas** | 1 | 2-3 | 5-6 | 2 | 2 |
|
|
84
|
+
| **Outputs** | Nenhum | proposal, spec, recap | Todos (9+) | checklist, CSS, recap | recap, CSS |
|
|
85
|
+
|
|
86
|
+
**Detalhes de cada workflow:** Ler `content/.morph/docs/workflows/` para fases completas.
|
|
87
|
+
|
|
88
|
+
**Keywords de detecção:**
|
|
89
|
+
- **Trivial:** bug, fix, corrigir, ajustar, hotfix, edge case, cor, css
|
|
90
|
+
- **Infra:** azure, bicep, sql, container, deploy, infra
|
|
91
|
+
- **Arquitetura:** sistema, autenticação, integração, pattern, cqrs, subsistema
|
|
92
|
+
- **UI Refresh:** redesign, redesenhar, bonito, visual, estetica, modernizar
|
|
93
|
+
- **Design Impl:** prototipo, prototype, figma, html para, converter design, replicar
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## AS 9 FASES DO WORKFLOW
|
|
98
|
+
|
|
99
|
+
| Fase | Gatilho | Ações Principais | Output | Pausa? |
|
|
100
|
+
|------|---------|-------------------|--------|--------|
|
|
101
|
+
| **0.5 CONTEXT** | Início sessão (auto) | Detectar framework, projeto, stack, histórico; gerar standards inferidos | context/, inferred.md | Não |
|
|
102
|
+
| **0 PROPOSAL** | Feature request | `npx morph-spec detect`; analisar; gerar proposal.md; registrar agentes | proposal.md | **Sim** |
|
|
103
|
+
| **1 SETUP** | Proposal aprovado | Ler config.json; confirmar stack; ativar agentes; criar pasta outputs | Confirmação | Não |
|
|
104
|
+
| **1.5 UI/UX** | Setup + keywords UI *(condicional)* | Perguntar layout/refs ao usuário; gerar wireframes e specs AGNÓSTICOS (sem escolher lib UI) | ui-*.md | **Sim** |
|
|
105
|
+
| **2 DESIGN** | Contexto confirmado | Gerar spec.md + contracts.cs; DECISION POINTS (lib UI, padrões, dados, infra, SDKs); estimar custos | spec.md, contracts.cs, decisions.md | **Sim** |
|
|
106
|
+
| **3 CLARIFY** | Design aprovado | Identificar ambiguidades; perguntas de clarificação; validar edge cases | Spec atualizado | Não |
|
|
107
|
+
| **4 TASKS** | Clarificações resolvidas | Quebrar spec em tasks T001-TXXX; definir ordem, checkpoints, dependências | tasks.json | **Sim** |
|
|
108
|
+
| **5 IMPLEMENT** | Tasks aprovadas | Implementar task por task; `npx morph-spec task done {feature} {task-id}` após cada; gerar recap.md | Código + recap.md | Não |
|
|
109
|
+
| **6 SYNC** | Implementação + complexidade média/alta *(condicional)* | Promover decisions.md para project/standards/; gerar commit sync | standards/*.md | **Sim** |
|
|
110
|
+
|
|
111
|
+
**Fases Obrigatórias:** 0, 1, 2, 3, 4, 5
|
|
112
|
+
**Fases Condicionais:** 0.5 (auto), 1.5 (se UI), 6 (se complexo)
|
|
113
|
+
|
|
114
|
+
### Regras da FASE 5 (IMPLEMENT)
|
|
115
|
+
|
|
116
|
+
- **SEMPRE** chamar `npx morph-spec task done {feature} {task-id}` após cada task (validators run automatically)
|
|
117
|
+
- **Se validação falhar:** corrigir violações ANTES de re-executar `task done`. NUNCA usar `--skip-validation` sem autorização do usuário
|
|
118
|
+
- **NUNCA** atualizar state.json ou tasks.json manualmente
|
|
119
|
+
- **NUNCA** pular tasks com dependências não completadas
|
|
120
|
+
- Framework gerencia checkpoints automaticamente (a cada 3 tasks, inclui validation summary)
|
|
121
|
+
- Usar `morph-spec phase advance {feature}` para avançar entre fases (valida → avança → mostra próximos passos)
|
|
122
|
+
- Gerar recap: `morph-spec generate recap {feature}` (auto-popula com dados reais de state + validation + contracts)
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## PAUSAS INTERATIVAS
|
|
127
|
+
|
|
128
|
+
Toda pausa obrigatória termina com **exatamente 3 itens** (mix de ações/perguntas/sugestões):
|
|
129
|
+
|
|
130
|
+
| Fase | Mix Recomendado |
|
|
131
|
+
|------|----------------|
|
|
132
|
+
| PROPOSAL | 1 ação + 1 pergunta + 1 sugestão |
|
|
133
|
+
| DESIGN | 2 ações + 1 pergunta/sugestão |
|
|
134
|
+
| TASKS | 3 ações (aprovar/repriorizar/adicionar) |
|
|
135
|
+
|
|
136
|
+
**Template:**
|
|
137
|
+
```
|
|
138
|
+
⛔ PAUSA OBRIGATÓRIA
|
|
139
|
+
{Contexto breve}
|
|
140
|
+
1. {Emoji} **{Título}** - {Descrição}
|
|
141
|
+
2. {Emoji} **{Título}** - {Descrição}
|
|
142
|
+
3. {Emoji} **{Título}** - {Descrição}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## DECISION POINTS
|
|
148
|
+
|
|
149
|
+
### Regra: NUNCA decida sozinho sobre arquitetura, dependências externas ou estrutura de dados.
|
|
150
|
+
|
|
151
|
+
**Requer aprovação do usuário:**
|
|
152
|
+
- Infraestrutura Azure (recursos, SKUs, tiers, custos)
|
|
153
|
+
- Bibliotecas e Frameworks (NuGet, UI libs, auth providers, SDKs)
|
|
154
|
+
- Padrões Arquiteturais (CQRS vs simples, Repository vs EF direto, etc.)
|
|
155
|
+
- Estrutura de Dados (entidades, relacionamentos, normalização)
|
|
156
|
+
|
|
157
|
+
**Decisões são ENFORCED por validators na FASE 5.** Ao documentar decisão em `decisions.md`, os validators automaticamente ajustam suas regras (ex: "Fluent UI chosen" → blazor-validator valida Fluent patterns; "Hangfire chosen" → blazor-concurrency analyzer ativado).
|
|
158
|
+
|
|
159
|
+
**Decisões automáticas permitidas:**
|
|
160
|
+
- Nomenclatura (seguir standards), estrutura de pastas, imports, formatação, tipos primitivos, validações básicas, padrões já em project/standards/
|
|
161
|
+
|
|
162
|
+
**Template de decisão:**
|
|
163
|
+
```
|
|
164
|
+
🤔 DECISÃO TÉCNICA NECESSÁRIA
|
|
165
|
+
Contexto: {por que decidir agora}
|
|
166
|
+
|
|
167
|
+
Opção 1: {Nome} - ✅ {vantagens} | ❌ {desvantagens} | ⚡ {complexidade}
|
|
168
|
+
Opção 2: {Nome} - ✅ {vantagens} | ❌ {desvantagens} | ⚡ {complexidade}
|
|
169
|
+
|
|
170
|
+
💡 Recomendação: {opção} porque {justificativa}
|
|
171
|
+
Qual prefere?
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## QUANDO NÃO USAR MORPH
|
|
177
|
+
|
|
178
|
+
| Não usar MORPH | Sempre usar MORPH |
|
|
179
|
+
|----------------|-------------------|
|
|
180
|
+
| Bug fix simples (< 3 arquivos) | Nova feature com UI |
|
|
181
|
+
| Hotfix urgente | Integração com API externa |
|
|
182
|
+
| Ajuste CSS/typo | Novo subsistema/módulo |
|
|
183
|
+
| Atualizar dependência | Mudança de schema de banco |
|
|
184
|
+
| Pergunta sobre código | Autenticação/autorização |
|
|
185
|
+
|
|
186
|
+
> **Regra de Ouro:** ARQUITETURA, DEPENDÊNCIAS EXTERNAS ou ESTRUTURA DE DADOS → Use MORPH. CORREÇÃO, AJUSTE ou OPERAÇÃO → Faça diretamente.
|
|
187
|
+
|
|
188
|
+
Escalação: Se descobrir complexidade maior, `morph-spec state set {feature} workflow full-morph`
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## INFRASTRUCTURE AS CODE
|
|
193
|
+
|
|
194
|
+
> NUNCA criar recursos Azure manualmente. Tudo via Bicep.
|
|
195
|
+
|
|
196
|
+
| Recurso | Abordagem |
|
|
197
|
+
|---------|-----------|
|
|
198
|
+
| Infra estática (SQL, Storage, Container Apps) | Bicep |
|
|
199
|
+
| Recursos dinâmicos (Fabric, Azure AI) | SDK .NET |
|
|
200
|
+
| CI/CD | YAML + Bicep |
|
|
201
|
+
|
|
202
|
+
Estrutura: `infra/main.bicep` → `infra/modules/*.bicep` + `parameters.{env}.json`
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## STATE MANAGEMENT
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
morph-spec state init # Inicializar
|
|
210
|
+
morph-spec state set {feature} phase {phase} # Atualizar fase
|
|
211
|
+
morph-spec state set {feature} status {status} # Atualizar status
|
|
212
|
+
morph-spec state add-agent {feature} {agent-id} # Adicionar agente
|
|
213
|
+
morph-spec state mark-output {feature} {type} # Marcar output
|
|
214
|
+
morph-spec state checkpoint {feature} "{nota}" # Registrar checkpoint
|
|
215
|
+
morph-spec state list # Dashboard
|
|
216
|
+
morph-spec state get {feature} # Detalhes
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Quando atualizar:** Criar proposal → phase proposal + mark-output proposal. Iniciar design → phase design + add-agent. Aprovar design → status approved + mark-output spec/contracts. Implementar → phase implement + tasks.total. Completar task → tasks.completed. Finalizar → status done + mark-output recap.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## COMANDOS
|
|
224
|
+
|
|
225
|
+
> **npx** para projetos consumidores. **node bin/** apenas para dev do framework.
|
|
226
|
+
|
|
227
|
+
### User Commands
|
|
228
|
+
|
|
229
|
+
**Slash Commands (o que o usuário digita):**
|
|
230
|
+
| Comando | Descrição |
|
|
231
|
+
|---------|-----------|
|
|
232
|
+
| `/morph-proposal {feature}` | Spec pipeline completo (fases 0-4 com pausas e auto-continuação) |
|
|
233
|
+
| `/morph-apply {feature}` | Implementar (fase 5, valida fases anteriores) |
|
|
234
|
+
| `/morph-status` | Dashboard de progresso |
|
|
235
|
+
| `/morph-archive {feature}` | Arquivar feature concluída |
|
|
236
|
+
| `/morph-infra {action}` | Gerenciar infra Bicep (init, validate, plan, deploy) |
|
|
237
|
+
| `/morph-preflight` | Validação pre-deploy Azure |
|
|
238
|
+
| `/morph-troubleshoot {error}` | Troubleshooting de erros |
|
|
239
|
+
|
|
240
|
+
**CLI (o que o usuário executa no terminal):**
|
|
241
|
+
| Comando | Descrição |
|
|
242
|
+
|---------|-----------|
|
|
243
|
+
| `morph-spec init` | Inicializar MORPH no projeto |
|
|
244
|
+
| `morph-spec update` | Atualizar templates e standards |
|
|
245
|
+
| `morph-spec doctor` | Check de saúde |
|
|
246
|
+
|
|
247
|
+
### Framework Commands (Claude internal)
|
|
248
|
+
|
|
249
|
+
> Comandos usados pelo Claude automaticamente durante o workflow. Usuário NÃO precisa executar.
|
|
250
|
+
|
|
251
|
+
| Comando | Quando |
|
|
252
|
+
|---------|--------|
|
|
253
|
+
| `morph-spec detect-agents "{text}"` | Detectar agentes na proposta |
|
|
254
|
+
| `morph-spec state <action>` | Gerenciar state.json |
|
|
255
|
+
| `morph-spec task done/start/next` | Gerenciar tasks na implementação |
|
|
256
|
+
| `morph-spec phase advance {feature}` | Avançar entre fases |
|
|
257
|
+
| `morph-spec generate recap/design-system` | Gerar outputs |
|
|
258
|
+
| `morph-spec validate-phase {feature} {phase}` | Validar pré-requisitos |
|
|
259
|
+
| `morph-spec validate/validate-blazor/lint-fluent/...` | Validators |
|
|
260
|
+
| `morph-spec story create/shard/status` | Story-driven development |
|
|
261
|
+
|
|
262
|
+
### Internal Workflow Skills (auto-invoked by /morph-proposal)
|
|
263
|
+
|
|
264
|
+
| Skill | Fase | Path |
|
|
265
|
+
|-------|------|------|
|
|
266
|
+
| phase-setup | 1 | `.claude/skills/workflows/phase-setup.md` |
|
|
267
|
+
| phase-uiux | 1.5 | `.claude/skills/workflows/phase-uiux.md` |
|
|
268
|
+
| phase-design | 2 | `.claude/skills/workflows/phase-design.md` |
|
|
269
|
+
| phase-clarify | 3 | `.claude/skills/workflows/phase-clarify.md` |
|
|
270
|
+
| phase-tasks | 4 | `.claude/skills/workflows/phase-tasks.md` |
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## ESTRUTURA DE OUTPUTS
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
.morph/project/outputs/{feature-name}/
|
|
278
|
+
├── proposal.md # FASE 0
|
|
279
|
+
├── ui-design-system.md # FASE 1.5 (se front-end)
|
|
280
|
+
├── ui-mockups.md # FASE 1.5 (se front-end)
|
|
281
|
+
├── ui-components.md # FASE 1.5 (se front-end)
|
|
282
|
+
├── ui-flows.md # FASE 1.5 (se front-end)
|
|
283
|
+
├── spec.md # FASE 2
|
|
284
|
+
├── contracts.cs # FASE 2
|
|
285
|
+
├── tasks.json # FASE 4
|
|
286
|
+
├── decisions.md # FASE 2+ (acumulativo)
|
|
287
|
+
└── recap.md # FASE 5
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## REFERÊNCIAS
|
|
293
|
+
|
|
294
|
+
### Standards (framework/standards/)
|
|
295
|
+
`coding.md` | `architecture.md` | `azure.md` | `agent-framework-setup.md` | `agent-framework-workflows.md` | `agent-framework-production.md` | `agent-framework-blazor-ui.md` | `passkeys-auth.md` | `vector-search-rag.md` | `dotnet10-migration.md` | `fluent-ui-blazor.md` | `migration-guide.md`
|
|
296
|
+
|
|
297
|
+
### Templates
|
|
298
|
+
- `content/.morph/templates/` - Source (NPM package)
|
|
299
|
+
- `.morph/templates/` - No projeto consumidor (editável, copiado pelo `init`)
|
|
300
|
+
|
|
301
|
+
### Project Context
|
|
302
|
+
`.morph/project/context/README.md` | `.morph/project/standards/inferred.md` | `.morph/project/standards/*.md` | `.morph/config.json`
|
|
303
|
+
|
|
304
|
+
### Skills
|
|
305
|
+
- `workflows/` - phase-setup, phase-uiux, phase-design, phase-clarify, phase-tasks, morph-replicate
|
|
306
|
+
- `checklists/` - morph-checklist, simulation-checklist, code-review
|
|
307
|
+
- `integrations/` - asaas-financial, clerk-auth, azure-identity, resend-email
|
|
308
|
+
- `specialists/` - dotnet-senior, code-analyzer, ui-ux-designer, ai-system-architect, ef-modeler, hangfire-orchestrator, testing-specialist, etc.
|
|
309
|
+
- `stacks/` - dotnet-blazor, dotnet-nextjs
|
|
310
|
+
- `infra/` - bicep-architect, devops-engineer, container-specialist
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
*MORPH-SPEC by Polymorphism Tech*
|