@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.
Files changed (251) hide show
  1. package/CLAUDE.md +314 -1673
  2. package/LICENSE +72 -72
  3. package/README.md +515 -516
  4. package/bin/detect-agents.js +225 -225
  5. package/bin/morph-spec.js +358 -173
  6. package/bin/render-template.js +302 -302
  7. package/bin/semantic-detect-agents.js +246 -246
  8. package/bin/task-manager.js +429 -0
  9. package/bin/validate-agents-skills.js +251 -251
  10. package/bin/validate-agents.js +69 -69
  11. package/bin/validate-phase.js +263 -263
  12. package/bin/validate.js +369 -0
  13. package/content/.azure/README.md +293 -293
  14. package/content/.azure/docs/azure-devops-setup.md +454 -454
  15. package/content/.azure/docs/branch-strategy.md +398 -398
  16. package/content/.azure/docs/local-development.md +515 -515
  17. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  18. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  19. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  20. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  21. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  22. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  23. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  24. package/content/.claude/commands/morph-apply.md +221 -158
  25. package/content/.claude/commands/morph-archive.md +79 -79
  26. package/content/.claude/commands/morph-infra.md +209 -209
  27. package/content/.claude/commands/morph-preflight.md +227 -0
  28. package/content/.claude/commands/morph-proposal.md +122 -101
  29. package/content/.claude/commands/morph-status.md +86 -86
  30. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  31. package/content/.claude/settings.local.json +15 -15
  32. package/content/.claude/skills/checklists/code-review.md +226 -0
  33. package/content/.claude/skills/checklists/morph-checklist.md +117 -0
  34. package/content/.claude/skills/checklists/simulation-checklist.md +77 -0
  35. package/content/.claude/skills/infra/bicep-architect.md +126 -419
  36. package/content/.claude/skills/infra/container-specialist.md +131 -437
  37. package/content/.claude/skills/infra/devops-engineer.md +119 -405
  38. package/content/.claude/skills/integrations/asaas-financial.md +130 -333
  39. package/content/.claude/skills/integrations/azure-identity.md +142 -309
  40. package/content/.claude/skills/integrations/clerk-auth.md +108 -290
  41. package/content/.claude/skills/integrations/resend-email.md +119 -0
  42. package/content/.claude/skills/specialists/ai-system-architect.md +192 -604
  43. package/content/.claude/skills/specialists/azure-architect.md +142 -142
  44. package/content/.claude/skills/specialists/code-analyzer.md +235 -0
  45. package/content/.claude/skills/specialists/dotnet-senior.md +287 -0
  46. package/content/.claude/skills/specialists/ef-modeler.md +113 -200
  47. package/content/.claude/skills/specialists/hangfire-orchestrator.md +126 -245
  48. package/content/.claude/skills/specialists/ms-agent-expert.md +109 -263
  49. package/content/.claude/skills/specialists/po-pm-advisor.md +197 -197
  50. package/content/.claude/skills/specialists/standards-architect.md +156 -78
  51. package/content/.claude/skills/specialists/testing-specialist.md +126 -0
  52. package/content/.claude/skills/specialists/ui-ux-designer.md +191 -1060
  53. package/content/.claude/skills/stacks/dotnet-blazor.md +210 -588
  54. package/content/.claude/skills/stacks/dotnet-nextjs.md +154 -402
  55. package/content/.claude/skills/workflows/morph-replicate.md +213 -0
  56. package/content/.claude/{commands/morph-clarify.md → skills/workflows/phase-clarify.md} +5 -58
  57. package/content/.claude/{commands/morph-design.md → skills/workflows/phase-design.md} +16 -86
  58. package/content/.claude/{commands/morph-setup.md → skills/workflows/phase-setup.md} +9 -17
  59. package/content/.claude/skills/workflows/phase-tasks.md +164 -0
  60. package/content/.claude/{commands/morph-uiux.md → skills/workflows/phase-uiux.md} +15 -88
  61. package/content/.morph/.morphversion +5 -5
  62. package/content/.morph/archive/.gitkeep +25 -25
  63. package/content/.morph/config/agents.json +378 -242
  64. package/content/.morph/config/config.template.json +89 -108
  65. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  66. package/content/.morph/docs/workflows/design-impl.md +37 -0
  67. package/content/.morph/docs/workflows/fast-track.md +29 -0
  68. package/content/.morph/docs/workflows/full-morph.md +76 -0
  69. package/content/.morph/docs/workflows/standard.md +44 -0
  70. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  71. package/content/.morph/examples/api-nextjs/README.md +241 -241
  72. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  73. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  74. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  75. package/content/.morph/examples/micro-saas/README.md +125 -125
  76. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  77. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  78. package/content/.morph/examples/micro-saas/spec.md +236 -236
  79. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  80. package/content/.morph/examples/multi-agent/README.md +309 -309
  81. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  82. package/content/.morph/examples/multi-agent/spec.md +479 -479
  83. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  84. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  85. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  86. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  87. package/content/.morph/examples/state-v3.json +188 -0
  88. package/content/.morph/features/.gitkeep +25 -25
  89. package/content/.morph/hooks/README.md +190 -239
  90. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  91. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  92. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  93. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  94. package/content/.morph/project.md +160 -160
  95. package/content/.morph/schemas/agent.schema.json +296 -296
  96. package/content/.morph/schemas/tasks.schema.json +220 -0
  97. package/content/.morph/specs/.gitkeep +20 -20
  98. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  99. package/content/.morph/standards/agent-framework-production.md +410 -0
  100. package/content/.morph/standards/agent-framework-setup.md +413 -453
  101. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  102. package/content/.morph/standards/architecture.md +325 -325
  103. package/content/.morph/standards/azure.md +605 -379
  104. package/content/.morph/standards/coding.md +377 -377
  105. package/content/.morph/standards/dotnet10-migration.md +520 -494
  106. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  107. package/content/.morph/standards/migration-guide.md +514 -514
  108. package/content/.morph/standards/passkeys-auth.md +423 -423
  109. package/content/.morph/standards/vector-search-rag.md +536 -536
  110. package/content/.morph/state.json +17 -17
  111. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  112. package/content/.morph/templates/MudTheme.cs +281 -281
  113. package/content/.morph/templates/agent.cs +163 -172
  114. package/content/.morph/templates/clarify-questions.md +159 -0
  115. package/content/.morph/templates/component.razor +239 -239
  116. package/content/.morph/templates/contracts/Commands.cs +74 -0
  117. package/content/.morph/templates/contracts/Entities.cs +25 -0
  118. package/content/.morph/templates/contracts/Queries.cs +74 -0
  119. package/content/.morph/templates/contracts/README.md +74 -0
  120. package/content/.morph/templates/contracts.cs +217 -217
  121. package/content/.morph/templates/decisions.md +123 -106
  122. package/content/.morph/templates/design-system.css +226 -226
  123. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  124. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  125. package/content/.morph/templates/infra/README.md +286 -286
  126. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  127. package/content/.morph/templates/infra/app-service.bicep +164 -164
  128. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  129. package/content/.morph/templates/infra/container-app.bicep +156 -156
  130. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  131. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  132. package/content/.morph/templates/infra/deploy.sh +208 -208
  133. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  134. package/content/.morph/templates/infra/main.bicep +189 -189
  135. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  136. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  137. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  138. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  139. package/content/.morph/templates/infra/storage.bicep +106 -106
  140. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  141. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  142. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  143. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  144. package/content/.morph/templates/job.cs +171 -171
  145. package/content/.morph/templates/migration.cs +83 -83
  146. package/content/.morph/templates/proposal.md +141 -155
  147. package/content/.morph/templates/recap.md +94 -105
  148. package/content/.morph/templates/repository.cs +141 -141
  149. package/content/.morph/templates/saas/subscription.cs +347 -347
  150. package/content/.morph/templates/saas/tenant.cs +338 -338
  151. package/content/.morph/templates/service.cs +139 -139
  152. package/content/.morph/templates/simulation.md +353 -0
  153. package/content/.morph/templates/spec.md +149 -148
  154. package/content/.morph/templates/sprint-status.yaml +68 -68
  155. package/content/.morph/templates/state.template.json +222 -222
  156. package/content/.morph/templates/story.md +143 -143
  157. package/content/.morph/templates/tasks.md +257 -235
  158. package/content/.morph/templates/test.cs +239 -239
  159. package/content/.morph/templates/ui-components.md +362 -276
  160. package/content/.morph/templates/ui-design-system.md +286 -286
  161. package/content/.morph/templates/ui-flows.md +336 -336
  162. package/content/.morph/templates/ui-mockups.md +133 -133
  163. package/content/.morph/test-infra/example.bicep +59 -59
  164. package/content/CLAUDE.md +150 -442
  165. package/content/README.md +79 -79
  166. package/detectors/config-detector.js +223 -223
  167. package/detectors/conversation-analyzer.js +163 -163
  168. package/detectors/index.js +84 -84
  169. package/detectors/standards-generator.js +275 -275
  170. package/detectors/structure-detector.js +245 -250
  171. package/docs/README.md +144 -149
  172. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  173. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  174. package/docs/api/scripts/collapse.js +38 -38
  175. package/docs/api/scripts/commonNav.js +28 -28
  176. package/docs/api/scripts/linenumber.js +25 -25
  177. package/docs/api/scripts/nav.js +12 -12
  178. package/docs/api/scripts/polyfill.js +3 -3
  179. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  180. package/docs/api/scripts/prettify/lang-css.js +2 -2
  181. package/docs/api/scripts/prettify/prettify.js +28 -28
  182. package/docs/api/scripts/search.js +98 -98
  183. package/docs/api/styles/jsdoc.css +776 -776
  184. package/docs/api/styles/prettify.css +80 -80
  185. package/docs/examples.md +328 -328
  186. package/docs/getting-started.md +301 -302
  187. package/docs/installation.md +361 -361
  188. package/docs/templates.md +418 -418
  189. package/docs/validation-checklist.md +265 -266
  190. package/package.json +80 -80
  191. package/scripts/postinstall.js +132 -132
  192. package/src/commands/advance-phase.js +183 -0
  193. package/src/commands/analyze-blazor-concurrency.js +193 -0
  194. package/src/commands/create-story.js +351 -351
  195. package/src/commands/detect-agents.js +139 -0
  196. package/src/commands/detect.js +104 -104
  197. package/src/commands/doctor.js +356 -280
  198. package/src/commands/generate.js +149 -149
  199. package/src/commands/init.js +258 -245
  200. package/src/commands/lint-fluent.js +352 -0
  201. package/src/commands/rollback-phase.js +185 -0
  202. package/src/commands/session-summary.js +291 -0
  203. package/src/commands/shard-spec.js +224 -224
  204. package/src/commands/sprint-status.js +250 -250
  205. package/src/commands/state.js +333 -333
  206. package/src/commands/sync.js +167 -167
  207. package/src/commands/task.js +78 -0
  208. package/src/commands/troubleshoot.js +222 -0
  209. package/src/commands/update.js +192 -159
  210. package/src/commands/validate-blazor-state.js +210 -0
  211. package/src/commands/validate-blazor.js +156 -0
  212. package/src/commands/validate-css.js +84 -0
  213. package/src/commands/validate-phase.js +221 -0
  214. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  215. package/src/lib/blazor-state-validator.js +291 -0
  216. package/src/lib/blazor-validator.js +374 -0
  217. package/src/lib/complexity-analyzer.js +441 -292
  218. package/src/lib/continuous-validator.js +421 -0
  219. package/src/lib/css-validator.js +352 -0
  220. package/src/lib/decision-constraint-loader.js +109 -0
  221. package/src/lib/design-system-generator.js +298 -298
  222. package/src/lib/learning-system.js +520 -0
  223. package/src/lib/mockup-generator.js +366 -0
  224. package/src/lib/recap-generator.js +205 -0
  225. package/src/lib/state-manager.js +397 -340
  226. package/src/lib/troubleshoot-grep.js +194 -0
  227. package/src/lib/troubleshoot-index.js +144 -0
  228. package/src/lib/ui-detector.js +350 -0
  229. package/src/lib/validation-runner.js +231 -0
  230. package/src/lib/validators/architecture-validator.js +387 -0
  231. package/src/lib/validators/contract-compliance-validator.js +273 -0
  232. package/src/lib/validators/package-validator.js +360 -0
  233. package/src/lib/validators/ui-contrast-validator.js +422 -0
  234. package/src/utils/file-copier.js +179 -139
  235. package/src/utils/logger.js +32 -32
  236. package/src/utils/version-checker.js +175 -175
  237. package/content/.claude/commands/morph-costs.md +0 -206
  238. package/content/.claude/commands/morph-tasks.md +0 -319
  239. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  240. package/content/.claude/skills/stacks/shopify.md +0 -445
  241. package/content/.morph/config/azure-pricing.json +0 -70
  242. package/content/.morph/config/azure-pricing.schema.json +0 -50
  243. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  244. package/docs/api/cost-calculator.js.html +0 -513
  245. package/docs/api/design-system-generator.js.html +0 -382
  246. package/docs/api/global.html +0 -5263
  247. package/docs/api/index.html +0 -96
  248. package/docs/api/state-manager.js.html +0 -423
  249. package/src/commands/cost.js +0 -181
  250. package/src/commands/update-pricing.js +0 -206
  251. 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
- Você é um sistema de desenvolvimento orientado por especificações. Opera como um **hub de agentes especializados** em desenvolvimento multi-stack (.NET/Blazor, .NET/Next.js, Shopify) 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
- - Ultrapassar limites de custo sem aprovação
18
- - Criar recursos Azure manualmente no portal (use Bicep)
19
- - Gerar código sem contracts definidos
20
- - **Tomar decisões técnicas sozinho (infraestrutura, bibliotecas, patterns, schemas)**
21
-
22
- ### SEMPRE:
23
- - Seguir as 8 fases obrigatórias (incluindo FASE 0.5: CONTEXT e FASE 1.5: UI/UX)
24
- - Gerar outputs em `.morph/project/outputs/{feature}/`
25
- - Validar custos antes de propor recursos Azure
26
- - Documentar decisões em `decisions.md`
27
- - Checkpoint a cada 3 tasks implementadas
28
- - Usar Infrastructure as Code (Bicep)
29
- - Usar exclusivamente Microsoft Agent Framework (.NET 10)
30
- - Coletar input do usuário na FASE 1.5 (layout, referências, imagens)
31
- - **Consultar usuário em DECISION POINTS (ver seção DECISION POINTS)**
32
-
33
- ---
34
-
35
- ## AGENTES E SKILLS
36
-
37
- ### Relação: Agentes ↔ Skills
38
-
39
- **Agent = Metadata (quem sou, quando ativo)**
40
- **Skill = Implementação (como faço, prompts, workflows)**
41
-
42
- | Conceito | Definição | Localização |
43
- |----------|-----------|-------------|
44
- | **Agent** | Metadata: ID, keywords, responsabilidades | `.morph/config/agents.json` |
45
- | **Skill** | Implementação: prompts detalhados, exemplos | `.claude/skills/{categoria}/{agent-id}.md` |
46
-
47
- **Workflow unificado:**
48
- 1. Keywords no user input → `detect-agents.js` retorna `[agent-ids]`
49
- 2. Claude ativa agentes detectados
50
- 3. Para agentes com `skillPath` → Claude invoca Skill tool
51
- 4. Skill contém conhecimento especializado profundo
52
-
53
- **Exemplo:**
54
- ```json
55
- {
56
- "id": "uiux-designer",
57
- "skillPath": ".claude/skills/specialists/ui-ux-designer.md",
58
- "autoActivation": {
59
- "keywords": ["blazor", "ui", "dashboard"]
60
- }
61
- }
62
- ```
63
-
64
- Quando usuário diz "criar dashboard", o CLI detecta `uiux-designer`, e Claude invoca o Skill para acessar conhecimento profundo de UI/UX.
65
-
66
- ### Validação
67
-
68
- Use o CLI para validar consistência:
69
-
70
- ```bash
71
- # Validar que todos skillPaths existem
72
- npx morph-spec validate-agents-skills
73
-
74
- # Modo verbose (mostra todos os mappings)
75
- npx morph-spec validate-agents-skills --verbose
76
-
77
- # OU, se em desenvolvimento local do framework:
78
- # node bin/validate-agents-skills.js
79
- ```
80
-
81
- Warnings de "orphan skills" são OK - são skills extras (infra/integrations) que podem ser usadas manualmente mas não têm agentes auto-ativados.
82
-
83
- ---
84
-
85
- ## AGENT ACTIVATION
86
-
87
- ### Detecção Automática de Agentes
88
-
89
- **SEMPRE** use o CLI para detectar automaticamente quais agentes ativar:
90
-
91
- ```bash
92
- # Detectar agentes baseado no input do usuário
93
- npx morph-spec detect "implementar jobs agendados"
94
- # Output: ["standards-architect","azure-architect","blazor-builder","ef-modeler","cost-guardian","ms-agent-expert","hangfire-orchestrator"]
95
-
96
- # Modo verbose para ver matches
97
- npx morph-spec detect --verbose "criar dashboard com charts"
98
- # Mostra quais keywords fizeram match
99
-
100
- # Modo JSON completo
101
- npx morph-spec detect --json "adicionar RAG pipeline"
102
- # Retorna objeto completo com core, specialists, matches
103
-
104
- # OU, se em desenvolvimento local do framework:
105
- # node bin/detect-agents.js "text..."
106
- ```
107
-
108
- ### Quando Detectar
109
-
110
- | Momento | Ação |
111
- |---------|------|
112
- | **FASE 0: PROPOSAL** | Rodar CLI com user input inicial |
113
- | **Adicionar features** | Rodar CLI sempre que escopo mudar |
114
- | **Design técnico** | Validar se todos agentes necessários estão ativos |
115
-
116
- ### Agentes Detectados
117
-
118
- **Core Agents (sempre retornados):**
119
- - `standards-architect` - Validação de padrões
120
- - `azure-architect` - Infraestrutura Azure
121
- - `blazor-builder` - Componentes Blazor
122
- - `ef-modeler` - Entity Framework
123
- - `cost-guardian` - Validação de custos
124
- - `ms-agent-expert` - Microsoft Agent Framework
125
-
126
- **Specialist Agents (keyword-triggered):**
127
- - `hangfire-orchestrator` - Background jobs (keywords: scheduled, job, background, cron, queue)
128
- - `uiux-designer` - UI/UX Design (keywords: blazor, ui, dashboard, form, chart, wizard, component, page)
129
- - `popm-advisor` - Product/Requirements (keywords: unclear, requirements, priority, ROI, scope)
130
- - `ai-system-architect` - Sistemas agênticos (keywords: rag, vector search, orchestration, multi-agent, memory, embedding)
131
-
132
- ### Integração com State
133
-
134
- Após detectar agentes, **SEMPRE** registrar no state.json:
135
-
136
- ```bash
137
- # Para cada agente detectado
138
- morph-spec state add-agent {feature} {agent-id}
139
-
140
- # OU, se em desenvolvimento local do framework:
141
- # node bin/state-manager.js add-agent {feature} {agent-id}
142
- ```
143
-
144
- ### Benefícios
145
-
146
- - ✅ **Zero tokens desperdiçados:** Não precisa ler agents.json manualmente
147
- - **Consistente:** Mesmo algoritmo sempre
148
- - ✅ **Rápido:** CLI retorna em <100ms
149
- - **Rastreável:** Agentes ficam registrados no state.json
150
- - ✅ **Completo:** Nunca esquece de ativar um agente relevante
151
-
152
- ---
153
-
154
- ## WORKFLOWS POR COMPLEXIDADE
155
-
156
- ### Detecção Automática de Workflow
157
-
158
- **IMPORTANTE:** O MORPH-SPEC detecta automaticamente a complexidade do request e escolhe o workflow apropriado. Você **NÃO** precisa seguir sempre as 8 fases completas!
159
-
160
- ```bash
161
- # Claude usa automaticamente o complexity-analyzer
162
- # Baseado no user input, classifica em:
163
- # - fast-track: Bug fixes, ajustes menores
164
- # - standard: Features simples, melhorias incrementais
165
- # - full-morph: Features complexas, arquitetura
166
- ```
167
-
168
- ### 🚀 Workflow 1: FAST TRACK (Trivial)
169
-
170
- **Para:** Bug fixes, hotfixes, ajustes de CSS, edge cases, correções menores
171
-
172
- **Critérios de Ativação:**
173
- - ≤ 3 arquivos modificados
174
- - ≤ 50 linhas de código
175
- - 0 novos componentes
176
- - Sem infraestrutura
177
- - Sem decisões arquiteturais
178
-
179
- **Fases:**
180
- 1. **Quick Analysis** (combina FASE 0 + 1 + 2)
181
- - Identifica problema em 2-3 parágrafos
182
- - Propõe solução direta
183
- - **1 PAUSA:** Aprovar ou ajustar?
184
-
185
- 2. **Implement & Test**
186
- - Implementa diretamente
187
- - Testa
188
- - Cria commit descritivo
189
-
190
- **Outputs:** Nenhum (ou apenas commit message detalhado)
191
-
192
- **Exemplos:**
193
- - "Corrigir validação de CPF no formulário"
194
- - "Ajustar cor do botão primário"
195
- - "Hotfix: null pointer na home"
196
- - "Corrigir typo no texto de erro"
197
- - "Edge case: validação quando campo vazio"
198
-
199
- ---
200
-
201
- ### ⚡ Workflow 2: STANDARD (Média)
202
-
203
- **Para:** Features simples, refactorings, melhorias incrementais, componentes isolados
204
-
205
- **Critérios de Ativação:**
206
- - 3-10 arquivos modificados
207
- - 50-500 linhas de código
208
- - 1-2 novos componentes simples
209
- - Sem infraestrutura complexa
210
- - Decisões táticas (não estratégicas)
211
-
212
- **Fases:**
213
- 1. **FASE 0: PROPOSAL** (simplificada)
214
- - Análise inicial em 1 parágrafo
215
- - Detecta agentes relevantes
216
- - **PAUSA:** Aprovar?
217
-
218
- 2. **FASE 2: DESIGN** (apenas spec.md)
219
- - Spec técnico conciso (1-2 páginas)
220
- - Sem contracts.cs se trivial
221
- - Decisões táticas em decisions.md
222
- - **PAUSA:** Aprovar?
223
-
224
- 3. **FASE 4: TASKS** (se > 5 tasks)
225
- - Breakdown em tasks
226
- - **PAUSA:** Aprovar?
227
-
228
- 4. **FASE 5: IMPLEMENT**
229
- - Implementa task por task
230
- - Gera recap.md ao final
231
-
232
- **Outputs:** proposal.md, spec.md, recap.md (mínimo necessário)
233
-
234
- **Pula:**
235
- - FASE 1 (SETUP) - contexto já carregado
236
- - FASE 1.5 (UI/UX) - se não tiver front-end significativo
237
- - FASE 3 (CLARIFY) - se spec for claro
238
- - FASE 6 (SYNC) - decisões não são estratégicas
239
-
240
- **Exemplos:**
241
- - "Adicionar paginação na tabela de usuários"
242
- - "Criar filtro por data no relatório"
243
- - "Refatorar serviço de email para async"
244
- - "Melhorar performance da query de busca"
245
- - "Adicionar botão de exportar CSV"
246
-
247
- ---
248
-
249
- ### 🎯 Workflow 3: FULL MORPH (Alta/Complexa)
250
-
251
- **Para:** Features complexas, novos subsistemas, decisões arquiteturais, infraestrutura
252
-
253
- **Critérios de Ativação:**
254
- - > 10 arquivos modificados
255
- - > 500 linhas de código
256
- - Múltiplos componentes novos
257
- - Infraestrutura Azure (Bicep)
258
- - Decisões arquiteturais estratégicas
259
- - Múltiplos agentes especializados
260
-
261
- **Fases:** **TODAS as 8 fases obrigatórias**
262
-
263
- 1. FASE 0.5: CONTEXT
264
- 2. FASE 0: PROPOSAL
265
- 3. FASE 1: SETUP
266
- 4. FASE 1.5: UI/UX (se front-end)
267
- 5. FASE 2: DESIGN
268
- 6. FASE 3: CLARIFY
269
- 7. FASE 4: TASKS
270
- 8. FASE 5: IMPLEMENT
271
- 9. FASE 6: SYNC
272
-
273
- **Outputs:** Todos os outputs completos (proposal, ui-*, spec, contracts, tasks, decisions, recap)
274
-
275
- **Exemplos:**
276
- - "Sistema de relatórios com jobs agendados Hangfire"
277
- - "Autenticação completa com Clerk (login, signup, OAuth)"
278
- - "Dashboard com gráficos, tabelas e filtros complexos"
279
- - "Sistema de notificações em tempo real com SignalR"
280
- - "RAG pipeline com Azure AI Search e embeddings"
281
- - "Infraestrutura Azure completa com Bicep (SQL, Container Apps, Storage)"
282
-
283
- ---
284
-
285
- ### Como o Workflow é Detectado
286
-
287
- Claude usa `src/lib/complexity-analyzer.js` para analisar automaticamente:
288
-
289
- ```javascript
290
- // Análise automática do user input
291
- const analysis = analyzeRequestComplexity(userInput);
292
-
293
- // Resultado:
294
- {
295
- workflow: "fast-track" | "standard" | "full-morph",
296
- impact: {
297
- estimatedFiles: 3,
298
- estimatedLines: 50,
299
- estimatedComponents: 0
300
- },
301
- hasInfrastructure: false,
302
- hasArchitecturalDecisions: false,
303
- confidence: "high" | "medium" | "low",
304
- reason: "Estimated 3 files, 50 lines, 0 components"
305
- }
306
- ```
307
-
308
- **Keywords detectadas:**
309
- - **Trivial:** "bug", "fix", "corrigir", "ajustar", "hotfix", "edge case", "cor", "css"
310
- - **Infraestrutura:** "azure", "bicep", "sql", "container", "deploy", "infra"
311
- - **Arquitetura:** "sistema", "autenticação", "integração", "pattern", "cqrs", "subsistema"
312
-
313
- ### Override Manual
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*