@polymorphism-tech/morph-spec 1.0.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/CLAUDE.md +1381 -0
  2. package/LICENSE +72 -0
  3. package/README.md +89 -6
  4. package/bin/detect-agents.js +225 -0
  5. package/bin/morph-spec.js +120 -0
  6. package/bin/render-template.js +302 -0
  7. package/bin/semantic-detect-agents.js +246 -0
  8. package/bin/validate-agents-skills.js +239 -0
  9. package/bin/validate-agents.js +69 -0
  10. package/bin/validate-phase.js +263 -0
  11. package/content/.azure/README.md +293 -0
  12. package/content/.azure/docs/azure-devops-setup.md +454 -0
  13. package/content/.azure/docs/branch-strategy.md +398 -0
  14. package/content/.azure/docs/local-development.md +515 -0
  15. package/content/.azure/pipelines/pipeline-variables.yml +34 -0
  16. package/content/.azure/pipelines/prod-pipeline.yml +319 -0
  17. package/content/.azure/pipelines/staging-pipeline.yml +234 -0
  18. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -0
  19. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -0
  20. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -0
  21. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -0
  22. package/content/.claude/commands/morph-apply.md +118 -26
  23. package/content/.claude/commands/morph-archive.md +9 -9
  24. package/content/.claude/commands/morph-clarify.md +184 -0
  25. package/content/.claude/commands/morph-design.md +275 -0
  26. package/content/.claude/commands/morph-proposal.md +56 -15
  27. package/content/.claude/commands/morph-setup.md +100 -0
  28. package/content/.claude/commands/morph-status.md +47 -32
  29. package/content/.claude/commands/morph-tasks.md +319 -0
  30. package/content/.claude/commands/morph-uiux.md +211 -0
  31. package/content/.claude/skills/specialists/ai-system-architect.md +604 -0
  32. package/content/.claude/skills/specialists/ms-agent-expert.md +143 -89
  33. package/content/.claude/skills/specialists/ui-ux-designer.md +744 -9
  34. package/content/.claude/skills/stacks/dotnet-blazor.md +244 -8
  35. package/content/.claude/skills/stacks/dotnet-nextjs.md +2 -2
  36. package/content/.morph/.morphversion +5 -0
  37. package/content/.morph/config/agents.json +101 -8
  38. package/content/.morph/config/azure-pricing.json +70 -0
  39. package/content/.morph/config/azure-pricing.schema.json +50 -0
  40. package/content/.morph/config/config.template.json +15 -3
  41. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -0
  42. package/content/.morph/hooks/README.md +239 -0
  43. package/content/.morph/hooks/pre-commit-agents.sh +24 -0
  44. package/content/.morph/hooks/pre-commit-all.sh +48 -0
  45. package/content/.morph/hooks/pre-commit-costs.sh +91 -0
  46. package/content/.morph/hooks/pre-commit-specs.sh +49 -0
  47. package/content/.morph/hooks/pre-commit-tests.sh +60 -0
  48. package/content/.morph/project.md +5 -4
  49. package/content/.morph/schemas/agent.schema.json +296 -0
  50. package/content/.morph/standards/agent-framework-setup.md +453 -0
  51. package/content/.morph/standards/architecture.md +142 -7
  52. package/content/.morph/standards/azure.md +218 -23
  53. package/content/.morph/standards/coding.md +47 -12
  54. package/content/.morph/standards/dotnet10-migration.md +494 -0
  55. package/content/.morph/standards/fluent-ui-setup.md +590 -0
  56. package/content/.morph/standards/migration-guide.md +514 -0
  57. package/content/.morph/standards/passkeys-auth.md +423 -0
  58. package/content/.morph/standards/vector-search-rag.md +536 -0
  59. package/content/.morph/state.json +18 -0
  60. package/content/.morph/templates/FluentDesignTheme.cs +149 -0
  61. package/content/.morph/templates/MudTheme.cs +281 -0
  62. package/content/.morph/templates/contracts.cs +55 -55
  63. package/content/.morph/templates/decisions.md +4 -4
  64. package/content/.morph/templates/design-system.css +226 -0
  65. package/content/.morph/templates/infra/.dockerignore.example +89 -0
  66. package/content/.morph/templates/infra/Dockerfile.example +82 -0
  67. package/content/.morph/templates/infra/README.md +286 -0
  68. package/content/.morph/templates/infra/app-service.bicep +164 -0
  69. package/content/.morph/templates/infra/deploy.ps1 +229 -0
  70. package/content/.morph/templates/infra/deploy.sh +208 -0
  71. package/content/.morph/templates/infra/main.bicep +41 -7
  72. package/content/.morph/templates/infra/parameters.dev.json +6 -0
  73. package/content/.morph/templates/infra/parameters.prod.json +6 -0
  74. package/content/.morph/templates/infra/parameters.staging.json +29 -0
  75. package/content/.morph/templates/proposal.md +3 -3
  76. package/content/.morph/templates/recap.md +3 -3
  77. package/content/.morph/templates/spec.md +9 -8
  78. package/content/.morph/templates/sprint-status.yaml +68 -0
  79. package/content/.morph/templates/state.template.json +222 -0
  80. package/content/.morph/templates/story.md +143 -0
  81. package/content/.morph/templates/tasks.md +1 -1
  82. package/content/.morph/templates/ui-components.md +276 -0
  83. package/content/.morph/templates/ui-design-system.md +286 -0
  84. package/content/.morph/templates/ui-flows.md +336 -0
  85. package/content/.morph/templates/ui-mockups.md +133 -0
  86. package/content/.morph/test-infra/example.bicep +59 -0
  87. package/content/CLAUDE.md +124 -0
  88. package/content/README.md +79 -0
  89. package/detectors/config-detector.js +223 -0
  90. package/detectors/conversation-analyzer.js +163 -0
  91. package/detectors/index.js +84 -0
  92. package/detectors/standards-generator.js +275 -0
  93. package/detectors/structure-detector.js +221 -0
  94. package/docs/README.md +149 -0
  95. package/docs/api/cost-calculator.js.html +513 -0
  96. package/docs/api/design-system-generator.js.html +382 -0
  97. package/docs/api/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  98. package/docs/api/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  99. package/docs/api/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  100. package/docs/api/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  101. package/docs/api/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  102. package/docs/api/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  103. package/docs/api/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  104. package/docs/api/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  105. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  106. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  107. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  108. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  109. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  110. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  111. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  112. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  113. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  114. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  115. package/docs/api/global.html +5263 -0
  116. package/docs/api/index.html +96 -0
  117. package/docs/api/scripts/collapse.js +39 -0
  118. package/docs/api/scripts/commonNav.js +28 -0
  119. package/docs/api/scripts/linenumber.js +25 -0
  120. package/docs/api/scripts/nav.js +12 -0
  121. package/docs/api/scripts/polyfill.js +4 -0
  122. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -0
  123. package/docs/api/scripts/prettify/lang-css.js +2 -0
  124. package/docs/api/scripts/prettify/prettify.js +28 -0
  125. package/docs/api/scripts/search.js +99 -0
  126. package/docs/api/state-manager.js.html +423 -0
  127. package/docs/api/styles/jsdoc.css +776 -0
  128. package/docs/api/styles/prettify.css +80 -0
  129. package/docs/examples.md +328 -0
  130. package/docs/getting-started.md +302 -0
  131. package/docs/installation.md +361 -0
  132. package/docs/templates.md +418 -0
  133. package/docs/validation-checklist.md +266 -0
  134. package/package.json +39 -12
  135. package/src/commands/cost.js +181 -0
  136. package/src/commands/create-story.js +283 -0
  137. package/src/commands/detect.js +104 -0
  138. package/src/commands/doctor.js +67 -0
  139. package/src/commands/generate.js +149 -0
  140. package/src/commands/init.js +69 -45
  141. package/src/commands/shard-spec.js +224 -0
  142. package/src/commands/sprint-status.js +250 -0
  143. package/src/commands/state.js +333 -0
  144. package/src/commands/sync.js +167 -0
  145. package/src/commands/update-pricing.js +206 -0
  146. package/src/commands/update.js +88 -13
  147. package/src/lib/complexity-analyzer.js +292 -0
  148. package/src/lib/cost-calculator.js +429 -0
  149. package/src/lib/design-system-generator.js +298 -0
  150. package/src/lib/state-manager.js +340 -0
  151. package/src/utils/file-copier.js +59 -0
  152. package/src/utils/version-checker.js +175 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,1381 @@
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
+
21
+ ### SEMPRE:
22
+ - Seguir as 8 fases obrigatórias (incluindo FASE 0.5: CONTEXT e FASE 1.5: UI/UX)
23
+ - Gerar outputs em `.morph/project/outputs/{feature}/`
24
+ - Validar custos antes de propor recursos Azure
25
+ - Documentar decisões em `decisions.md`
26
+ - Checkpoint a cada 3 tasks implementadas
27
+ - Usar Infrastructure as Code (Bicep)
28
+ - Usar exclusivamente Microsoft Agent Framework (.NET 10)
29
+ - Coletar input do usuário na FASE 1.5 (layout, referências, imagens)
30
+
31
+ ---
32
+
33
+ ## AGENTES E SKILLS
34
+
35
+ ### Relação: Agentes ↔ Skills
36
+
37
+ **Agent = Metadata (quem sou, quando ativo)**
38
+ **Skill = Implementação (como faço, prompts, workflows)**
39
+
40
+ | Conceito | Definição | Localização |
41
+ |----------|-----------|-------------|
42
+ | **Agent** | Metadata: ID, keywords, responsabilidades | `.morph/config/agents.json` |
43
+ | **Skill** | Implementação: prompts detalhados, exemplos | `.claude/skills/{categoria}/{agent-id}.md` |
44
+
45
+ **Workflow unificado:**
46
+ 1. Keywords no user input → `detect-agents.js` retorna `[agent-ids]`
47
+ 2. Claude ativa agentes detectados
48
+ 3. Para agentes com `skillPath` → Claude invoca Skill tool
49
+ 4. Skill contém conhecimento especializado profundo
50
+
51
+ **Exemplo:**
52
+ ```json
53
+ {
54
+ "id": "uiux-designer",
55
+ "skillPath": ".claude/skills/specialists/ui-ux-designer.md",
56
+ "autoActivation": {
57
+ "keywords": ["blazor", "ui", "dashboard"]
58
+ }
59
+ }
60
+ ```
61
+
62
+ Quando usuário diz "criar dashboard", o CLI detecta `uiux-designer`, e Claude invoca o Skill para acessar conhecimento profundo de UI/UX.
63
+
64
+ ### Validação
65
+
66
+ Use o CLI para validar consistência:
67
+
68
+ ```bash
69
+ # Validar que todos skillPaths existem
70
+ node bin/validate-agents-skills.js
71
+
72
+ # Modo verbose (mostra todos os mappings)
73
+ node bin/validate-agents-skills.js --verbose
74
+ ```
75
+
76
+ 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.
77
+
78
+ ---
79
+
80
+ ## AGENT ACTIVATION
81
+
82
+ ### Detecção Automática de Agentes
83
+
84
+ **SEMPRE** use o CLI `bin/detect-agents.js` para detectar automaticamente quais agentes ativar:
85
+
86
+ ```bash
87
+ # Detectar agentes baseado no input do usuário
88
+ node bin/detect-agents.js "implementar jobs agendados"
89
+ # Output: ["standards-architect","azure-architect","blazor-builder","ef-modeler","cost-guardian","ms-agent-expert","hangfire-orchestrator"]
90
+
91
+ # Modo verbose para ver matches
92
+ node bin/detect-agents.js --verbose "criar dashboard com charts"
93
+ # Mostra quais keywords fizeram match
94
+
95
+ # Modo JSON completo
96
+ node bin/detect-agents.js --json "adicionar RAG pipeline"
97
+ # Retorna objeto completo com core, specialists, matches
98
+ ```
99
+
100
+ ### Quando Detectar
101
+
102
+ | Momento | Ação |
103
+ |---------|------|
104
+ | **FASE 0: PROPOSAL** | Rodar CLI com user input inicial |
105
+ | **Adicionar features** | Rodar CLI sempre que escopo mudar |
106
+ | **Design técnico** | Validar se todos agentes necessários estão ativos |
107
+
108
+ ### Agentes Detectados
109
+
110
+ **Core Agents (sempre retornados):**
111
+ - `standards-architect` - Validação de padrões
112
+ - `azure-architect` - Infraestrutura Azure
113
+ - `blazor-builder` - Componentes Blazor
114
+ - `ef-modeler` - Entity Framework
115
+ - `cost-guardian` - Validação de custos
116
+ - `ms-agent-expert` - Microsoft Agent Framework
117
+
118
+ **Specialist Agents (keyword-triggered):**
119
+ - `hangfire-orchestrator` - Background jobs (keywords: scheduled, job, background, cron, queue)
120
+ - `uiux-designer` - UI/UX Design (keywords: blazor, ui, dashboard, form, chart, wizard, component, page)
121
+ - `popm-advisor` - Product/Requirements (keywords: unclear, requirements, priority, ROI, scope)
122
+ - `ai-system-architect` - Sistemas agênticos (keywords: rag, vector search, orchestration, multi-agent, memory, embedding)
123
+
124
+ ### Integração com State
125
+
126
+ Após detectar agentes, **SEMPRE** registrar no state.json:
127
+
128
+ ```bash
129
+ # Para cada agente detectado
130
+ node bin/state-manager.js add-agent {feature} {agent-id}
131
+ ```
132
+
133
+ ### Benefícios
134
+
135
+ - ✅ **Zero tokens desperdiçados:** Não precisa ler agents.json manualmente
136
+ - ✅ **Consistente:** Mesmo algoritmo sempre
137
+ - ✅ **Rápido:** CLI retorna em <100ms
138
+ - ✅ **Rastreável:** Agentes ficam registrados no state.json
139
+ - ✅ **Completo:** Nunca esquece de ativar um agente relevante
140
+
141
+ ---
142
+
143
+ ## WORKFLOWS POR COMPLEXIDADE
144
+
145
+ ### Detecção Automática de Workflow
146
+
147
+ **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!
148
+
149
+ ```bash
150
+ # Claude usa automaticamente o complexity-analyzer
151
+ # Baseado no user input, classifica em:
152
+ # - fast-track: Bug fixes, ajustes menores
153
+ # - standard: Features simples, melhorias incrementais
154
+ # - full-morph: Features complexas, arquitetura
155
+ ```
156
+
157
+ ### 🚀 Workflow 1: FAST TRACK (Trivial)
158
+
159
+ **Para:** Bug fixes, hotfixes, ajustes de CSS, edge cases, correções menores
160
+
161
+ **Critérios de Ativação:**
162
+ - ≤ 3 arquivos modificados
163
+ - ≤ 50 linhas de código
164
+ - 0 novos componentes
165
+ - Sem infraestrutura
166
+ - Sem decisões arquiteturais
167
+
168
+ **Fases:**
169
+ 1. **Quick Analysis** (combina FASE 0 + 1 + 2)
170
+ - Identifica problema em 2-3 parágrafos
171
+ - Propõe solução direta
172
+ - **1 PAUSA:** Aprovar ou ajustar?
173
+
174
+ 2. **Implement & Test**
175
+ - Implementa diretamente
176
+ - Testa
177
+ - Cria commit descritivo
178
+
179
+ **Outputs:** Nenhum (ou apenas commit message detalhado)
180
+
181
+ **Exemplos:**
182
+ - "Corrigir validação de CPF no formulário"
183
+ - "Ajustar cor do botão primário"
184
+ - "Hotfix: null pointer na home"
185
+ - "Corrigir typo no texto de erro"
186
+ - "Edge case: validação quando campo vazio"
187
+
188
+ ---
189
+
190
+ ### ⚡ Workflow 2: STANDARD (Média)
191
+
192
+ **Para:** Features simples, refactorings, melhorias incrementais, componentes isolados
193
+
194
+ **Critérios de Ativação:**
195
+ - 3-10 arquivos modificados
196
+ - 50-500 linhas de código
197
+ - 1-2 novos componentes simples
198
+ - Sem infraestrutura complexa
199
+ - Decisões táticas (não estratégicas)
200
+
201
+ **Fases:**
202
+ 1. **FASE 0: PROPOSAL** (simplificada)
203
+ - Análise inicial em 1 parágrafo
204
+ - Detecta agentes relevantes
205
+ - **PAUSA:** Aprovar?
206
+
207
+ 2. **FASE 2: DESIGN** (apenas spec.md)
208
+ - Spec técnico conciso (1-2 páginas)
209
+ - Sem contracts.cs se trivial
210
+ - Decisões táticas em decisions.md
211
+ - **PAUSA:** Aprovar?
212
+
213
+ 3. **FASE 4: TASKS** (se > 5 tasks)
214
+ - Breakdown em tasks
215
+ - **PAUSA:** Aprovar?
216
+
217
+ 4. **FASE 5: IMPLEMENT**
218
+ - Implementa task por task
219
+ - Gera recap.md ao final
220
+
221
+ **Outputs:** proposal.md, spec.md, recap.md (mínimo necessário)
222
+
223
+ **Pula:**
224
+ - FASE 1 (SETUP) - contexto já carregado
225
+ - FASE 1.5 (UI/UX) - se não tiver front-end significativo
226
+ - FASE 3 (CLARIFY) - se spec for claro
227
+ - FASE 6 (SYNC) - decisões não são estratégicas
228
+
229
+ **Exemplos:**
230
+ - "Adicionar paginação na tabela de usuários"
231
+ - "Criar filtro por data no relatório"
232
+ - "Refatorar serviço de email para async"
233
+ - "Melhorar performance da query de busca"
234
+ - "Adicionar botão de exportar CSV"
235
+
236
+ ---
237
+
238
+ ### 🎯 Workflow 3: FULL MORPH (Alta/Complexa)
239
+
240
+ **Para:** Features complexas, novos subsistemas, decisões arquiteturais, infraestrutura
241
+
242
+ **Critérios de Ativação:**
243
+ - > 10 arquivos modificados
244
+ - > 500 linhas de código
245
+ - Múltiplos componentes novos
246
+ - Infraestrutura Azure (Bicep)
247
+ - Decisões arquiteturais estratégicas
248
+ - Múltiplos agentes especializados
249
+
250
+ **Fases:** **TODAS as 8 fases obrigatórias**
251
+
252
+ 1. FASE 0.5: CONTEXT
253
+ 2. FASE 0: PROPOSAL
254
+ 3. FASE 1: SETUP
255
+ 4. FASE 1.5: UI/UX (se front-end)
256
+ 5. FASE 2: DESIGN
257
+ 6. FASE 3: CLARIFY
258
+ 7. FASE 4: TASKS
259
+ 8. FASE 5: IMPLEMENT
260
+ 9. FASE 6: SYNC
261
+
262
+ **Outputs:** Todos os outputs completos (proposal, ui-*, spec, contracts, tasks, decisions, recap)
263
+
264
+ **Exemplos:**
265
+ - "Sistema de relatórios com jobs agendados Hangfire"
266
+ - "Autenticação completa com Clerk (login, signup, OAuth)"
267
+ - "Dashboard com gráficos, tabelas e filtros complexos"
268
+ - "Sistema de notificações em tempo real com SignalR"
269
+ - "RAG pipeline com Azure AI Search e embeddings"
270
+ - "Infraestrutura Azure completa com Bicep (SQL, Container Apps, Storage)"
271
+
272
+ ---
273
+
274
+ ### Como o Workflow é Detectado
275
+
276
+ Claude usa `src/lib/complexity-analyzer.js` para analisar automaticamente:
277
+
278
+ ```javascript
279
+ // Análise automática do user input
280
+ const analysis = analyzeRequestComplexity(userInput);
281
+
282
+ // Resultado:
283
+ {
284
+ workflow: "fast-track" | "standard" | "full-morph",
285
+ impact: {
286
+ estimatedFiles: 3,
287
+ estimatedLines: 50,
288
+ estimatedComponents: 0
289
+ },
290
+ hasInfrastructure: false,
291
+ hasArchitecturalDecisions: false,
292
+ confidence: "high" | "medium" | "low",
293
+ reason: "Estimated 3 files, 50 lines, 0 components"
294
+ }
295
+ ```
296
+
297
+ **Keywords detectadas:**
298
+ - **Trivial:** "bug", "fix", "corrigir", "ajustar", "hotfix", "edge case", "cor", "css"
299
+ - **Infraestrutura:** "azure", "bicep", "sql", "container", "deploy", "infra"
300
+ - **Arquitetura:** "sistema", "autenticação", "integração", "pattern", "cqrs", "subsistema"
301
+
302
+ ### Override Manual
303
+
304
+ Se Claude classificar errado, você pode forçar um workflow específico:
305
+
306
+ ```bash
307
+ # Forçar fast-track (pula fases)
308
+ morph-spec state set my-feature workflow fast-track
309
+
310
+ # Forçar full-morph (todas as fases)
311
+ morph-spec state set my-feature workflow full-morph
312
+
313
+ # Ou no próprio pedido:
314
+ "[FAST-TRACK] Corrigir bug de validação"
315
+ "[FULL-MORPH] Adicionar filtro simples"
316
+ ```
317
+
318
+ ### Quadro Comparativo
319
+
320
+ | Aspecto | Fast Track | Standard | Full MORPH |
321
+ |---------|-----------|----------|------------|
322
+ | **Fases** | 2 (Quick + Implement) | 4 (Proposal, Design, Tasks, Implement) | 9 (Todas) |
323
+ | **Pausas** | 1 | 2-3 | 5-6 |
324
+ | **Outputs** | Nenhum | 3 arquivos | 9+ arquivos |
325
+ | **Tempo** | 5-15 min | 30-60 min | 2-4 horas |
326
+ | **Tokens** | ~500-1k | ~5-10k | ~30-50k |
327
+ | **Quando** | Bug fixes, ajustes | Features simples | Features complexas |
328
+
329
+ ---
330
+
331
+ ## AS 8 FASES OBRIGATÓRIAS (FULL MORPH)
332
+
333
+ ### FASE 0.5: CONTEXT (automática, primeira interação)
334
+ ```
335
+ Gatilho: Início de qualquer interação (primeira mensagem ou nova sessão)
336
+
337
+ Ações:
338
+ 1. Detectar Framework MORPH
339
+ - Verificar se npm package @polymorphism-tech/morph-spec está instalado
340
+ - Localizar framework/standards/ e framework/templates/
341
+ - Se não encontrado: ativar modo "inferred" (funciona sem framework)
342
+
343
+ 2. Detectar/Criar estrutura do projeto
344
+ - Verificar se existe .morph/project/
345
+ - Se NÃO: rodar detecção automática (estrutura + config + conversas)
346
+ - Se SIM: carregar context/, standards/, outputs/ existentes
347
+
348
+ 3. Análise Automática do Projeto (se código existe)
349
+ - Detectar stack: glob patterns (*.razor = Blazor, *.tsx + next.config = Next.js, etc)
350
+ - Detectar arquitetura: pastas (Application/, Domain/ = Clean Architecture, etc)
351
+ - Ler configs: Program.cs, package.json, .csproj para tecnologias e versões
352
+ - Detectar UI library: FluentUI.Blazor, MudBlazor em .csproj
353
+ - Identificar patterns: Repository, Service Layer, CQRS, DI, etc
354
+
355
+ 4. Analisar Histórico (se disponível)
356
+ - Ler .morph/project/outputs/*/decisions.md (decisões passadas)
357
+ - Ler .morph/project/context/decisions-history.md
358
+ - Extrair preferências do usuário (UI lib favorita, patterns preferidos)
359
+
360
+ 5. Gerar/Atualizar Standards Inferidos
361
+ - Criar .morph/project/standards/inferred.md
362
+ - Consolidar: framework standards + detecção + histórico
363
+ - Identificar gaps e gerar recomendações
364
+
365
+ 6. Ativar Agentes Relevantes
366
+ - Baseado em stack detectado (Blazor Builder, NextJS Expert, etc)
367
+ - Baseado em keywords da conversa/request
368
+
369
+ Outputs:
370
+ - .morph/project/context/README.md (se novo projeto)
371
+ - .morph/project/standards/inferred.md (sempre atualizado)
372
+ - .morph/project/context/detection-log.md (debug)
373
+ - .morph/config.json (link para framework + project config)
374
+
375
+ Modo Degradado (sem framework):
376
+ - Funciona apenas com detecção de código
377
+ - Standards inferidos baseados APENAS no código existente
378
+ - Sem templates sofisticados, mas ainda útil
379
+ ```
380
+
381
+ ### FASE 0: PROPOSAL
382
+ ```
383
+ Gatilho: Nova feature request do usuário
384
+ Ações:
385
+ 1. **Detectar agentes automaticamente:**
386
+ node bin/detect-agents.js "{user-request}"
387
+
388
+ 2. Analisar a solicitação inicial
389
+ 3. Identificar stack provável (Blazor, Next.js, Shopify)
390
+ 4. Estimar complexidade (baixa, média, alta)
391
+ 5. Gerar proposal.md com análise inicial
392
+ 6. Registrar agentes no state.json:
393
+ node bin/state-manager.js add-agent {feature} {agent-id}
394
+
395
+ Output: .morph/project/outputs/{feature}/proposal.md
396
+
397
+ ⛔ PAUSA OBRIGATÓRIA
398
+ Apresentar ao usuário:
399
+ - ✅ Ações sugeridas (2-3 opções de próximos passos)
400
+ - ❓ Perguntas contextualizadas (para clarificar escopo/prioridades)
401
+ - 💡 Sugestões estratégicas (alternativas, trade-offs, otimizações)
402
+
403
+ Formato: 3 itens no total, mix inteligente de ações + perguntas
404
+ ```
405
+
406
+ ### FASE 1: SETUP
407
+ ```
408
+ Gatilho: Proposal aprovado
409
+ Ações:
410
+ 1. Ler `.morph/config.json` para contexto
411
+ 2. Confirmar stack identificado no proposal
412
+ 3. Ativar agentes conforme proposal
413
+ 4. Criar pasta `.morph/project/outputs/{feature}/`
414
+ 5. Carregar padrões:
415
+ - framework/standards/ (padrões do MORPH)
416
+ - .morph/project/standards/ (padrões do projeto)
417
+ - Priorizar project/standards/ se houver conflito
418
+
419
+ Output: Confirmação de contexto carregado
420
+ ```
421
+
422
+ ### FASE 1.5: UI/UX DESIGN (se houver front-end)
423
+ ```
424
+ Gatilho: Setup concluído + keywords de front-end detectadas
425
+ Ações:
426
+ 1. **SEMPRE perguntar ao usuário PRIMEIRO**:
427
+ - "Você tem alguma ideia de layout em mente?"
428
+ - "Tem alguma referência visual? (sites, apps, screenshots)"
429
+ - "Como imagina o fluxo do usuário?"
430
+ - "Tem imagens de exemplo que eu possa analisar?"
431
+
432
+ 2. Analisar imagens/referências fornecidas (se houver)
433
+ - Use Read tool para ler screenshots
434
+ - Extrair padrões: layout, componentes, cores
435
+
436
+ 3. Decidir biblioteca UI (Fluent UI vs MudBlazor)
437
+ - Justificar escolha baseado na feature
438
+ - Documentar em decisions.md
439
+
440
+ 4. Gerar deliverables:
441
+ - ui-mockups.md (wireframes ASCII + descrições)
442
+ - ui-components.md (specs de componentes)
443
+ - ui-flows.md (fluxos + diagramas + edge cases)
444
+
445
+ 5. Validar acessibilidade (WCAG 2.1) e responsividade
446
+
447
+ Outputs:
448
+ - .morph/project/outputs/{feature}/ui-design-system.md
449
+ - .morph/project/outputs/{feature}/ui-mockups.md
450
+ - .morph/project/outputs/{feature}/ui-components.md
451
+ - .morph/project/outputs/{feature}/ui-flows.md
452
+ - Atualizar decisions.md com ADR sobre biblioteca UI
453
+
454
+ Nota: Na FASE 5: IMPLEMENT, gerar automaticamente:
455
+ - wwwroot/css/design-system.css (CSS variables)
456
+ - Themes/FluentDesignTheme.cs (se Fluent UI)
457
+ - Themes/MudTheme.cs (se MudBlazor)
458
+
459
+ ⛔ PAUSA OBRIGATÓRIA
460
+ Apresentar ao usuário 3 ações sugeridas:
461
+ - ✅ "Aprovar UI/UX e prosseguir para design técnico"
462
+ - 🎨 "Ajustar wireframes/componentes de telas específicas"
463
+ - 🔄 "Revisar biblioteca UI escolhida (Fluent UI ↔ MudBlazor)"
464
+ - 📋 "Adicionar mais fluxos/edge cases"
465
+
466
+ Formato: 3 das opções acima, escolhidas inteligentemente
467
+
468
+ Nota: Esta fase SÓ executa se detectar keywords de front-end.
469
+ Se não detectar, pula direto para FASE 2: DESIGN.
470
+ ```
471
+
472
+ ### FASE 2: DESIGN
473
+ ```
474
+ Gatilho: Contexto confirmado (ou UI/UX aprovado se FASE 1.5 executou)
475
+ Ações:
476
+ 1. Gerar `spec.md` com requisitos completos
477
+ 2. Gerar `contracts.cs` com interfaces/DTOs
478
+ 3. Iniciar `decisions.md` com ADRs relevantes
479
+ 4. Estimar custos e documentar
480
+ 5. Definir infraestrutura necessária (Bicep)
481
+
482
+ Outputs:
483
+ - .morph/project/outputs/{feature}/spec.md
484
+ - .morph/project/outputs/{feature}/contracts.cs
485
+ - .morph/project/outputs/{feature}/decisions.md
486
+
487
+ ⛔ PAUSA OBRIGATÓRIA
488
+ Apresentar ao usuário 3 ações sugeridas:
489
+ - ✅ "Aprovar e continuar para tasks" (se tudo ok)
490
+ - 🔄 "Ajustar escopo/complexidade" (reduzir/expandir)
491
+ - 💰 "Revisar custos estimados" (se houver recursos Azure)
492
+ - 📋 "Modificar contracts" (ajustar interfaces/DTOs)
493
+ - ❓ Pergunta contextualizada sobre prioridades/trade-offs
494
+
495
+ Formato: 3 das opções acima, escolhidas inteligentemente
496
+ ```
497
+
498
+ ### FASE 3: CLARIFY
499
+ ```
500
+ Gatilho: Design aprovado
501
+ Ações:
502
+ 1. Identificar ambiguidades
503
+ 2. Fazer perguntas de clarificação
504
+ 3. Documentar respostas no spec.md
505
+ 4. Validar edge cases
506
+
507
+ Output: Spec atualizado com clarificações
508
+ ```
509
+
510
+ ### FASE 4: TASKS
511
+ ```
512
+ Gatilho: Clarificações resolvidas
513
+ Ações:
514
+ 1. Quebrar spec em tasks (T001-TXXX)
515
+ 2. Definir ordem de execução
516
+ 3. Estabelecer checkpoints
517
+ 4. Mapear dependências
518
+ 5. Incluir tasks de IaC se necessário
519
+
520
+ Output: .morph/project/outputs/{feature}/tasks.json
521
+
522
+ ⛔ PAUSA OBRIGATÓRIA
523
+ Apresentar ao usuário 3 ações sugeridas:
524
+ - ✅ "Aprovar breakdown e iniciar implementação"
525
+ - 🔀 "Repriorizar tasks" (mudar ordem de execução)
526
+ - ➕ "Adicionar/remover tasks" (ajustar escopo)
527
+
528
+ Formato: Sempre as 3 ações acima (padrão para esta fase)
529
+ ```
530
+
531
+ ### FASE 5: IMPLEMENT
532
+ ```
533
+ Gatilho: Tasks aprovadas
534
+ Ações:
535
+ 1. Implementar task por task
536
+ 2. Executar testes a cada task
537
+ 3. Checkpoint a cada 3 tasks
538
+ 4. Gerar recap ao final
539
+
540
+ Outputs:
541
+ - Código implementado
542
+ - Testes criados
543
+ - .morph/project/outputs/{feature}/recap.md
544
+ ```
545
+
546
+ ### FASE 6: SYNC (condicional)
547
+ ```
548
+ Gatilho: Implementação concluída + complexidade média/alta
549
+
550
+ Ações:
551
+ 1. Revisar decisions.md da feature
552
+ - Identificar ADRs (Architectural Decision Records)
553
+ - Identificar padrões técnicos adotados
554
+ - Identificar convenções e nomenclaturas
555
+ - Identificar configurações de integrações
556
+
557
+ 2. Categorizar decisões
558
+ - coding: Padrões de código, nomenclatura, testes
559
+ - architecture: Patterns, camadas, dependências
560
+ - azure: Infrastructure, deployment, recursos
561
+ - integrations: APIs, webhooks, auth, serviços externos
562
+ - ui-ux: Componentes, temas, bibliotecas UI
563
+
564
+ 3. Promover para Standards
565
+ - Atualizar .morph/project/standards/{category}.md
566
+ - Adicionar seção com data e feature origin
567
+ - Manter histórico de evolução dos standards
568
+
569
+ 4. Gerar Commit Dedicado
570
+ ```
571
+ sync: Update project standards from {feature-name}
572
+
573
+ Decisions promoted:
574
+ - coding: Primary constructors pattern
575
+ - architecture: CQRS for complex operations
576
+ - ui-ux: Fluent UI for AI components
577
+
578
+ Standards updated:
579
+ - .morph/project/standards/coding.md
580
+ - .morph/project/standards/architecture.md
581
+
582
+ Co-Authored-By: Claude <noreply@anthropic.com>
583
+ ```
584
+
585
+ Outputs:
586
+ - .morph/project/standards/*.md (atualizados)
587
+ - Commit dedicado de sync
588
+
589
+ Quando pular esta fase:
590
+ - Complexidade baixa (feature trivial)
591
+ - Sem decisões arquiteturais significativas
592
+ - Apenas bug fixes ou ajustes menores
593
+
594
+ ⛔ PAUSA OBRIGATÓRIA (se fase executar)
595
+ Apresentar decisões candidatas ao usuário:
596
+ - Listar decisões por categoria
597
+ - Pedir aprovação para promover
598
+ - Opção de editar antes de promover
599
+ ```
600
+
601
+ ---
602
+
603
+ ## FLUXO VISUAL DAS FASES
604
+
605
+ ```
606
+ ┌────────────────────────────────────────────────────────────────────────────┐
607
+ │ MORPH-SPEC WORKFLOW COMPLETO │
608
+ └────────────────────────────────────────────────────────────────────────────┘
609
+
610
+ [INÍCIO] Nova sessão ou feature request
611
+
612
+
613
+ ┌─────────────────────┐
614
+ │ FASE 0.5: CONTEXT │ ← Automática (primeira interação)
615
+ │ (Detecta framework, │
616
+ │ projeto, standards)│
617
+ └──────────┬──────────┘
618
+
619
+
620
+ ┌─────────────────────┐
621
+ │ FASE 0: PROPOSAL │ ← User request
622
+ │ (Análise inicial + │
623
+ │ agentes ativados) │
624
+ └──────────┬──────────┘
625
+
626
+ ⛔ PAUSA → Aprovação do usuário
627
+
628
+
629
+ ┌─────────────────────┐
630
+ │ FASE 1: SETUP │
631
+ │ (Carregar context + │
632
+ │ standards) │
633
+ └──────────┬──────────┘
634
+
635
+ ├────────── Keywords UI/UX detectadas?
636
+ │ │
637
+ │ SIM ──────┐
638
+ │ ▼
639
+ │ ┌─────────────────────┐
640
+ │ │ FASE 1.5: UI/UX │ ← Condicional
641
+ │ │ (Wireframes, specs, │
642
+ │ │ componentes) │
643
+ │ └──────────┬──────────┘
644
+ │ │
645
+ │ ⛔ PAUSA → Aprovação do usuário
646
+ │ │
647
+ NÃO ────────────────────────┘
648
+
649
+
650
+ ┌─────────────────────┐
651
+ │ FASE 2: DESIGN │
652
+ │ (Spec, contracts, │
653
+ │ decisions, custos) │
654
+ └──────────┬──────────┘
655
+
656
+ ⛔ PAUSA → Aprovação do usuário
657
+
658
+
659
+ ┌─────────────────────┐
660
+ │ FASE 3: CLARIFY │
661
+ │ (Perguntas de │
662
+ │ clarificação) │
663
+ └──────────┬──────────┘
664
+
665
+
666
+ ┌─────────────────────┐
667
+ │ FASE 4: TASKS │
668
+ │ (Breakdown em │
669
+ │ T001-TXXX) │
670
+ └──────────┬──────────┘
671
+
672
+ ⛔ PAUSA → Aprovação do usuário
673
+
674
+
675
+ ┌─────────────────────┐
676
+ │ FASE 5: IMPLEMENT │
677
+ │ (Task por task + │
678
+ │ checkpoints) │
679
+ └──────────┬──────────┘
680
+
681
+ ├────────── Complexidade média/alta + ADRs significativos?
682
+ │ │
683
+ │ SIM ──────┐
684
+ │ ▼
685
+ │ ┌─────────────────────┐
686
+ │ │ FASE 6: SYNC │ ← Condicional
687
+ │ │ (Promover decisions │
688
+ │ │ para standards) │
689
+ │ └──────────┬──────────┘
690
+ │ │
691
+ │ ⛔ PAUSA → Aprovação do usuário
692
+ │ │
693
+ NÃO ────────────────────────┘
694
+
695
+
696
+ [FIM] Feature concluída
697
+
698
+ ┌────────────────────────────────────────────────────────────────────────────┐
699
+ │ LEGENDA │
700
+ ├────────────────────────────────────────────────────────────────────────────┤
701
+ │ ⛔ PAUSA OBRIGATÓRIA - Aguarda interação do usuário │
702
+ │ ─── Fluxo principal (sempre executado) │
703
+ │ ├── Decisão condicional │
704
+ │ [FASE X.Y] Fase intermediária/condicional │
705
+ │ [FASE X] Fase principal obrigatória │
706
+ └────────────────────────────────────────────────────────────────────────────┘
707
+ ```
708
+
709
+ **Fases Obrigatórias:** 0, 1, 2, 3, 4, 5 (6 fases principais)
710
+ **Fases Condicionais:** 0.5 (auto), 1.5 (se UI), 6 (se complexo)
711
+ **Total:** 9 fases possíveis, 6-9 executadas dependendo do contexto
712
+
713
+ ---
714
+
715
+ ## PAUSAS INTERATIVAS
716
+
717
+ ### Princípio
718
+ Toda pausa obrigatória DEVE terminar com **exatamente 3 itens** que ajudem o usuário a tomar decisões.
719
+
720
+ ### Tipos de Itens
721
+
722
+ | Emoji | Tipo | Quando Usar | Exemplo |
723
+ |-------|------|-------------|---------|
724
+ | ✅ | Ação de Aprovação | Quando está pronto para avançar | "Aprovar e continuar para próxima fase" |
725
+ | 🔄 | Ação de Ajuste | Quando há algo para modificar | "Ajustar escopo da feature" |
726
+ | 💰 | Ação de Custo | Quando há recursos Azure | "Revisar custos estimados" |
727
+ | 📋 | Ação de Revisão | Quando há artefatos para validar | "Modificar contracts gerados" |
728
+ | ❓ | Pergunta Aberta | Para clarificar intenções | "Qual a prioridade: performance ou custo?" |
729
+ | 💡 | Sugestão Estratégica | Para propor alternativas | "Considerar serverless em vez de Container App?" |
730
+ | ⚡ | Ação Rápida | Atalho para comum | "Usar padrão CQRS nesta feature?" |
731
+
732
+ ### Estratégia por Fase
733
+
734
+ | Fase | Mix Recomendado | Objetivo |
735
+ |------|----------------|----------|
736
+ | **FASE 0: PROPOSAL** | 1 ação + 1 pergunta + 1 sugestão | Entender intenção e escopo |
737
+ | **FASE 2: DESIGN** | 2 ações + 1 pergunta/sugestão | Validar solução proposta |
738
+ | **FASE 4: TASKS** | 3 ações (padrão fixo) | Confirmar plano de execução |
739
+
740
+ ### Template de Pausa
741
+
742
+ ```markdown
743
+ ---
744
+ ⛔ **PAUSA OBRIGATÓRIA**
745
+
746
+ {Breve contexto do que foi feito}
747
+
748
+ **Próximos passos sugeridos:**
749
+
750
+ 1. {Emoji} **{Título da ação/pergunta}**
751
+ {Descrição breve do que acontece se escolher esta opção}
752
+
753
+ 2. {Emoji} **{Título da ação/pergunta}**
754
+ {Descrição breve}
755
+
756
+ 3. {Emoji} **{Título da ação/pergunta}**
757
+ {Descrição breve}
758
+
759
+ ---
760
+ ```
761
+
762
+ ### Exemplo Real
763
+
764
+ ```markdown
765
+ ---
766
+ ⛔ **PAUSA OBRIGATÓRIA**
767
+
768
+ Analisamos sua solicitação de "Sistema de pagamentos recorrentes com Asaas".
769
+ Complexidade estimada: **MÉDIA** | Stack: **.NET + Blazor** | Custo: **~$5/mês**
770
+
771
+ **Próximos passos sugeridos:**
772
+
773
+ 1. ✅ **Aprovar e prosseguir para design detalhado**
774
+ Gerar spec.md, contracts e estimativa completa de custos
775
+
776
+ 2. ❓ **Esclarecer modelo de negócio**
777
+ Você pretende cobrar por assinatura mensal, anual ou ambos? Isso afeta o design.
778
+
779
+ 3. 💡 **Considerar MVP incremental**
780
+ Começar só com pagamentos únicos e adicionar recorrência depois?
781
+
782
+ ---
783
+ ```
784
+
785
+ ---
786
+
787
+ ## AGENTES
788
+
789
+ ### Core Agents (Sempre Ativos)
790
+
791
+ | Agente | Responsabilidades |
792
+ |--------|-------------------|
793
+ | **Standards Architect** | Padrões em `framework/standards/` e `project/standards/`, nomenclatura, revisão |
794
+ | **Azure Architect** | Infra Azure, Bicep IaC, App Service, Container Apps, SQL |
795
+ | **Cost Guardian** | Validar custos, alertar recursos caros, bloquear não aprovados |
796
+
797
+ ### Stack Agents (Por Stack)
798
+
799
+ | Agente | Stack | Keywords |
800
+ |--------|-------|----------|
801
+ | **Blazor Builder** | .NET + Blazor | blazor, razor, server-side |
802
+ | **NextJS Expert** | .NET + Next.js | nextjs, react, api, frontend |
803
+ | **Shopify Expert** | Shopify | shopify, hydrogen, liquid |
804
+
805
+ ### Specialist Agents (Sob Demanda)
806
+
807
+ | Agente | Keywords de Ativação |
808
+ |--------|---------------------|
809
+ | **EF Modeler** | entity, database, migration, ef core |
810
+ | **Agent Framework Expert** | agent, ai, llm, rag, embedding (.NET 10) |
811
+ | **Hangfire Orchestrator** | scheduled, job, background, cron |
812
+ | **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) |
813
+ | **PO/PM Advisor** | unclear, requirements, priority, ROI |
814
+
815
+ ### Integration Agents (Sob Demanda)
816
+
817
+ | Agente | Keywords | Docs |
818
+ |--------|----------|------|
819
+ | **Asaas Financial** | asaas, payment, pix, boleto | [API](https://docs.asaas.com/) |
820
+ | **Clerk Auth** | clerk, auth, login, signup | [SDK](https://clerk.com/) |
821
+ | **Azure Identity** | identity, entra, microsoft auth | [Docs](https://learn.microsoft.com/entra/) |
822
+
823
+ ### Infra Agents (Sob Demanda)
824
+
825
+ | Agente | Keywords | Docs |
826
+ |--------|----------|------|
827
+ | **Bicep Architect** | bicep, iac, infra, provision | [Bicep](https://learn.microsoft.com/azure/azure-resource-manager/bicep/) |
828
+ | **DevOps Engineer** | pipeline, ci/cd, deploy, release | [Pipelines](https://learn.microsoft.com/azure/devops/pipelines/) |
829
+ | **Container Specialist** | docker, container, containerize | [Container Apps](https://learn.microsoft.com/azure/container-apps/) |
830
+
831
+ ---
832
+
833
+ ## LIMITES DE CUSTO
834
+
835
+ ### Limites Configuráveis
836
+
837
+ Os limites de custo são definidos em `.morph/config/config.json` e podem ser customizados por projeto:
838
+
839
+ ```json
840
+ {
841
+ "costs": {
842
+ "monthlyBudget": 15,
843
+ "currency": "USD",
844
+ "limits": {
845
+ "freeTierOnly": 0,
846
+ "withApproval": 10,
847
+ "requiresADR": 10
848
+ },
849
+ "enforcement": {
850
+ "blockCommitsAboveLimit": true,
851
+ "requireADRInDecisionsMd": true,
852
+ "alertOnApproach": 0.8
853
+ }
854
+ }
855
+ }
856
+ ```
857
+
858
+ | Limite | Padrão | Descrição | Requisito |
859
+ |--------|--------|-----------|-----------|
860
+ | `freeTierOnly` | $0 | Apenas recursos free tier | Nenhum |
861
+ | `withApproval` | $10 | Requer confirmação do usuário | Aprovação explícita |
862
+ | `requiresADR` | $10 | Requer ADR documentado | ADR em decisions.md |
863
+
864
+ ### Cost Calculator CLI
865
+
866
+ **Validação automática de custos:**
867
+
868
+ ```bash
869
+ # Calcular custos de arquivos Bicep
870
+ node bin/calculate-costs.js infra/main.bicep --verbose
871
+
872
+ # Múltiplos arquivos (glob pattern)
873
+ node bin/calculate-costs.js "infra/**/*.bicep" --json
874
+
875
+ # Usar config customizado
876
+ node bin/calculate-costs.js infra/main.bicep --config .morph/config/config.json
877
+ ```
878
+
879
+ **Funcionalidades:**
880
+ - ✅ Parseia arquivos Bicep e extrai recursos + SKUs
881
+ - ✅ Calcula custo mensal baseado em pricing table do Azure
882
+ - ✅ Valida contra limites configurados
883
+ - ✅ Exit code 1 se exceder limite `requiresADR`
884
+ - ✅ Output JSON ou verbose (ASCII table)
885
+
886
+ **Pricing table inclui:**
887
+ - Azure SQL Database (Free, Basic, S0-S4, P1-P2, GP, BC)
888
+ - Container Apps (Consumption, Dedicated)
889
+ - Storage Account (LRS, GRS, Premium)
890
+ - Application Insights (Free, Basic)
891
+ - Key Vault (Standard, Premium)
892
+ - Cosmos DB (Serverless, Provisioned)
893
+ - App Service (F1, D1, B1-B2, S1, P1v2)
894
+ - Service Bus (Basic, Standard, Premium)
895
+ - Redis Cache (C0-C2, P1)
896
+ - Azure Functions (Consumption, Premium)
897
+
898
+ ### Pre-commit Hook
899
+
900
+ **Bloqueio automático de commits caros:**
901
+
902
+ ```bash
903
+ # Instalar hook
904
+ cp .morph/hooks/pre-commit-costs.sh .git/hooks/pre-commit
905
+ chmod +x .git/hooks/pre-commit
906
+
907
+ # Ou symlink
908
+ ln -s ../../.morph/hooks/pre-commit-costs.sh .git/hooks/pre-commit
909
+ ```
910
+
911
+ **Comportamento:**
912
+ 1. Detecta arquivos Bicep modificados no staged area
913
+ 2. Roda cost calculator automaticamente
914
+ 3. Se custo > `requiresADR`: procura ADR em decisions.md
915
+ 4. **Bloqueia commit** se ADR não encontrado
916
+ 5. Mensagem clara de erro com instruções
917
+
918
+ ### Quando Usar
919
+
920
+ | Fase | Ação | CLI |
921
+ |------|------|-----|
922
+ | **FASE 2 (Design)** | Estimar custos de infra proposta | `/morph-design` (integrado) |
923
+ | **Antes de commit** | Validar custos automaticamente | Pre-commit hook |
924
+ | **Revisão manual** | Verificar custos de Bicep | `calculate-costs.js --verbose` |
925
+
926
+ ### Exemplo de ADR de Custo
927
+
928
+ Se custo > `requiresADR`, documente em `decisions.md`:
929
+
930
+ ```markdown
931
+ ## ADR-003: Infrastructure Costs
932
+
933
+ **Estimated Monthly Cost:** $12.50
934
+
935
+ **Breakdown:**
936
+ - Azure SQL S0: $14.72/mo
937
+ - Container App (scale-to-zero): $0.00/mo
938
+ - Storage LRS: $0.02/mo
939
+
940
+ **Justification:**
941
+ S0 tier necessary for 50k+ rows with indexed queries.
942
+ Basic tier ($ 4.99) insufficient for expected load.
943
+
944
+ **Alternatives Considered:**
945
+ - Basic tier: Too slow for projected 1M queries/month
946
+ - Cosmos DB: More expensive ($23.36 minimum)
947
+
948
+ **Approval:** [User/Team] on 2024-01-15
949
+ ```
950
+
951
+ ---
952
+
953
+ ## INFRASTRUCTURE AS CODE
954
+
955
+ ### Princípio: Zero Portal
956
+
957
+ > NUNCA criar recursos Azure manualmente. Tudo via Bicep.
958
+
959
+ ### Estrutura IaC
960
+
961
+ ```
962
+ infra/
963
+ ├── main.bicep # Entry point
964
+ ├── parameters.dev.json # Params dev
965
+ ├── parameters.prod.json # Params prod
966
+ └── modules/
967
+ ├── app-service.bicep
968
+ ├── container-app.bicep
969
+ ├── sql-database.bicep
970
+ ├── storage.bicep
971
+ ├── key-vault.bicep
972
+ └── app-insights.bicep
973
+ ```
974
+
975
+ ### Quando usar SDK .NET vs Bicep
976
+
977
+ | Recurso | Abordagem |
978
+ |---------|-----------|
979
+ | Infra estática (SQL, Storage, Container Apps) | Bicep |
980
+ | Recursos dinâmicos (Fabric, Azure AI) | SDK .NET |
981
+ | CI/CD | YAML + Bicep |
982
+
983
+ ---
984
+
985
+ ## ESTRUTURA DE OUTPUTS
986
+
987
+ ```
988
+ .morph/project/outputs/{feature-name}/
989
+ ├── proposal.md # Análise inicial e proposta (FASE 0)
990
+ ├── ui-design-system.md # Design system: cores, tipografia, spacing (FASE 1.5 - se front-end)
991
+ ├── ui-mockups.md # Wireframes ASCII + descrições (FASE 1.5 - se front-end)
992
+ ├── ui-components.md # Specs componentes Fluent UI/MudBlazor (FASE 1.5 - se front-end)
993
+ ├── ui-flows.md # Fluxos de usuário + diagramas (FASE 1.5 - se front-end)
994
+ ├── spec.md # Especificação técnica completa (FASE 2)
995
+ ├── contracts.cs # Interfaces, DTOs, Enums (FASE 2)
996
+ ├── tasks.json # Lista de tasks (FASE 4)
997
+ ├── decisions.md # ADRs (FASE 2+, atualizado na FASE 1.5 com UI lib)
998
+ └── recap.md # Resumo pós-implementação (FASE 5)
999
+ ```
1000
+
1001
+ **Nota:** Arquivos `ui-*.md` são gerados apenas se a feature envolver front-end (keywords detectadas).
1002
+
1003
+ **Arquivos de Tema** (gerados na FASE 5 baseados em ui-design-system.md):
1004
+ - `wwwroot/css/design-system.css` - CSS Variables
1005
+ - `Themes/FluentDesignTheme.cs` - Se Fluent UI
1006
+ - `Themes/MudTheme.cs` - Se MudBlazor
1007
+
1008
+ ---
1009
+
1010
+ ## STATE MANAGEMENT
1011
+
1012
+ O MORPH-SPEC rastreia automaticamente o progresso de features usando `.morph/state.json`.
1013
+
1014
+ ### Arquivo de State
1015
+
1016
+ ```json
1017
+ {
1018
+ "version": "2.1.1",
1019
+ "project": {
1020
+ "name": "ProjectName",
1021
+ "type": "blazor-server",
1022
+ "createdAt": "2024-01-15T10:00:00Z",
1023
+ "updatedAt": "2024-01-15T14:30:00Z"
1024
+ },
1025
+ "features": {
1026
+ "feature-name": {
1027
+ "status": "in_progress",
1028
+ "phase": "implement",
1029
+ "activeAgents": ["blazor-builder", "ef-modeler"],
1030
+ "outputs": {
1031
+ "proposal": { "created": true, "path": ".morph/project/outputs/..." },
1032
+ "spec": { "created": true, "path": ".morph/project/outputs/..." },
1033
+ "tasks": { "created": true, "path": ".morph/project/outputs/..." }
1034
+ },
1035
+ "tasks": {
1036
+ "total": 12,
1037
+ "completed": 5,
1038
+ "inProgress": 1,
1039
+ "pending": 6
1040
+ },
1041
+ "checkpoints": [
1042
+ {
1043
+ "timestamp": "2024-01-15T12:00:00Z",
1044
+ "phase": "implement",
1045
+ "completedTasks": 3,
1046
+ "note": "Checkpoint após T001-T003"
1047
+ }
1048
+ ],
1049
+ "costs": {
1050
+ "estimated": 2.50,
1051
+ "approved": true
1052
+ }
1053
+ }
1054
+ },
1055
+ "metadata": {
1056
+ "totalFeatures": 1,
1057
+ "completedFeatures": 0,
1058
+ "totalCostEstimated": 2.50
1059
+ }
1060
+ }
1061
+ ```
1062
+
1063
+ ### CLI para State Management
1064
+
1065
+ Use `bin/state-manager.js` para manipular o state:
1066
+
1067
+ ```bash
1068
+ # Inicializar state (primeira vez)
1069
+ node bin/state-manager.js init
1070
+
1071
+ # Criar/atualizar feature
1072
+ node bin/state-manager.js set feature-name phase design
1073
+ node bin/state-manager.js set feature-name status in_progress
1074
+
1075
+ # Atualizar tasks
1076
+ node bin/state-manager.js set feature-name tasks.completed 5
1077
+ node bin/state-manager.js set feature-name tasks.total 12
1078
+
1079
+ # Adicionar agentes
1080
+ node bin/state-manager.js add-agent feature-name blazor-builder
1081
+
1082
+ # Marcar outputs como criados
1083
+ node bin/state-manager.js mark-output feature-name spec
1084
+ node bin/state-manager.js mark-output feature-name contracts
1085
+
1086
+ # Registrar checkpoint
1087
+ node bin/state-manager.js checkpoint feature-name "Completadas tasks T001-T003"
1088
+
1089
+ # Listar todas as features
1090
+ node bin/state-manager.js list
1091
+
1092
+ # Obter detalhes de uma feature (JSON)
1093
+ node bin/state-manager.js get feature-name
1094
+ ```
1095
+
1096
+ ### Quando Atualizar State
1097
+
1098
+ **SEMPRE** atualize o state nos seguintes momentos:
1099
+
1100
+ | Momento | Comando |
1101
+ |---------|---------|
1102
+ | **Criar proposal** (FASE 0) | `set {feature} phase proposal`<br>`mark-output {feature} proposal` |
1103
+ | **Iniciar design** (FASE 2) | `set {feature} phase design`<br>`add-agent {feature} {agent-id}` |
1104
+ | **Aprovar design** | `set {feature} status approved`<br>`mark-output {feature} spec`<br>`mark-output {feature} contracts` |
1105
+ | **Iniciar implementação** (FASE 5) | `set {feature} phase implement`<br>`set {feature} status in_progress`<br>`set {feature} tasks.total {N}` |
1106
+ | **Completar task** | `set {feature} tasks.completed {X}` |
1107
+ | **Checkpoint (a cada 3 tasks)** | `checkpoint {feature} "nota"` |
1108
+ | **Finalizar feature** | `set {feature} status done`<br>`mark-output {feature} recap` |
1109
+
1110
+ ### Benefícios
1111
+
1112
+ - ✅ **Persistência**: Estado mantido entre sessões
1113
+ - ✅ **Rastreamento**: Saber exatamente em qual fase cada feature está
1114
+ - ✅ **Progresso**: Visualizar tasks completadas vs total
1115
+ - ✅ **Histórico**: Checkpoints registrados com timestamps
1116
+ - ✅ **Custos**: Rastreamento de custos estimados e aprovações
1117
+ - ✅ **Dashboard**: Comando `list` gera visualização ASCII automática
1118
+
1119
+ ---
1120
+
1121
+ ## COMANDOS
1122
+
1123
+ ### Comandos CLI (via npm package)
1124
+
1125
+ | Comando | Descrição | Quando Usar |
1126
+ |---------|-----------|-------------|
1127
+ | `morph-spec init` | Inicializar MORPH no projeto | Primeira vez em um projeto |
1128
+ | `morph-spec detect` | Detectar stack/patterns | Projeto existente, entender estrutura |
1129
+ | `morph-spec sync` | Sincronizar standards | Após implementar features |
1130
+ | `morph-spec update` | Atualizar framework | Nova versão do MORPH disponível |
1131
+ | `morph-spec doctor` | Check de saúde | Diagnosticar problemas |
1132
+ | `morph-spec state <action>` | Gerenciar state.json | Rastrear features, progresso, agentes |
1133
+ | `morph-spec cost <bicep-files>` | Calcular custos Azure | Validar custos de infraestrutura |
1134
+ | `morph-spec generate design-system` | Gerar CSS + temas | Após aprovar UI/UX design |
1135
+
1136
+ ### Story-Driven Development Commands
1137
+
1138
+ | Comando | Descrição | Quando Usar |
1139
+ |---------|-----------|-------------|
1140
+ | `morph-spec story create <feature> <story-id>` | Criar story com Dev Notes auto-injetadas | Início da implementação |
1141
+ | `morph-spec story shard <feature>` | Dividir spec.md em shards (90% token savings) | Feature com spec grande (5+ seções) |
1142
+ | `morph-spec story status <feature> show` | Ver progresso do sprint | Qualquer momento |
1143
+ | `morph-spec story status <feature> start <id>` | Marcar story como in_progress | Antes de implementar |
1144
+ | `morph-spec story status <feature> qa <id>` | Marcar story como ready_for_qa | Após implementar |
1145
+ | `morph-spec story status <feature> done <id>` | Marcar story como done | Após QA aprovar |
1146
+ | `morph-spec story status <feature> next` | Mostrar próxima story | Planejar próximo trabalho |
1147
+
1148
+ **Options:**
1149
+ - `--title <title>` - Título da story
1150
+ - `--tasks <tasks>` - Lista de tasks separadas por vírgula
1151
+ - `--dry-run` - Preview sem escrever arquivos
1152
+ - `--verbose` - Mostrar informações detalhadas
1153
+
1154
+ **Exemplo completo:**
1155
+ ```bash
1156
+ # 1. Shardar spec (opcional)
1157
+ morph-spec story shard scheduled-reports
1158
+
1159
+ # 2. Criar stories
1160
+ morph-spec story create scheduled-reports SR-001 \
1161
+ --title "Create entity" \
1162
+ --tasks "Create entity,EF mapping,Migration,Tests"
1163
+
1164
+ # 3. Implementar
1165
+ morph-spec story status scheduled-reports start SR-001
1166
+ # [Claude implementa código]
1167
+ morph-spec story status scheduled-reports qa SR-001
1168
+
1169
+ # 4. QA
1170
+ # [Claude revisa código]
1171
+ morph-spec story status scheduled-reports done SR-001
1172
+
1173
+ # 5. Ver progresso
1174
+ morph-spec story status scheduled-reports show
1175
+ ```
1176
+
1177
+ **Ver também:** `content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md` para guia completo.
1178
+
1179
+ ### State Management Command
1180
+
1181
+ **Gerencia state.json para rastreamento de features:**
1182
+
1183
+ ```bash
1184
+ # Inicializar state.json
1185
+ morph-spec state init [--force] [--project <name>] [--type <type>]
1186
+
1187
+ # Ver feature
1188
+ morph-spec state get <feature> [--json]
1189
+
1190
+ # Atualizar propriedade (suporta dot notation)
1191
+ morph-spec state set <feature> <key> <value>
1192
+
1193
+ # Registrar checkpoint
1194
+ morph-spec state checkpoint <feature> "<note>"
1195
+
1196
+ # Listar todas as features
1197
+ morph-spec state list
1198
+
1199
+ # Gerenciar agentes
1200
+ morph-spec state add-agent <feature> <agent-id>
1201
+ morph-spec state remove-agent <feature> <agent-id>
1202
+
1203
+ # Marcar outputs como criados
1204
+ morph-spec state mark-output <feature> <output-type>
1205
+ ```
1206
+
1207
+ **Uso automático interno:**
1208
+ - `morph-spec story create/status` atualiza state automaticamente
1209
+ - Slash commands `/morph-*` registram fases e checkpoints
1210
+ - Todos os comandos que geram outputs marcam no state
1211
+
1212
+ **Exemplo completo:**
1213
+ ```bash
1214
+ # Setup inicial
1215
+ morph-spec state init --project "MyApp" --type "blazor-server"
1216
+
1217
+ # Durante feature
1218
+ morph-spec state set scheduled-reports phase design
1219
+ morph-spec state add-agent scheduled-reports blazor-builder
1220
+ morph-spec state mark-output scheduled-reports spec
1221
+
1222
+ # Checkpoints (automáticos ou manuais)
1223
+ morph-spec state checkpoint scheduled-reports "Completed T001-T003"
1224
+
1225
+ # Ver progresso
1226
+ morph-spec state list
1227
+ ```
1228
+
1229
+ ### Cost Calculator Command
1230
+
1231
+ **Calcula custos de infraestrutura Azure de arquivos Bicep:**
1232
+
1233
+ ```bash
1234
+ # Calcular custos
1235
+ morph-spec cost <bicep-files> [--verbose] [--json] [--strict]
1236
+
1237
+ # Exemplos
1238
+ morph-spec cost infra/main.bicep --verbose
1239
+ morph-spec cost "infra/**/*.bicep" --json
1240
+ morph-spec cost infra/main.bicep --strict # Exit code 1 se > ADR threshold
1241
+ ```
1242
+
1243
+ **Uso automático interno:**
1244
+ - `/morph-design` calcula custos automaticamente se detectar Bicep
1245
+ - Pre-commit hook valida custos antes de commitar
1246
+ - `morph-spec story create` alerta se tasks incluem "bicep"
1247
+
1248
+ **Pricing table inclui:**
1249
+ - Azure SQL Database (Free, Basic, S0-S4, P1-P2, GP, BC)
1250
+ - Container Apps (Consumption, Dedicated)
1251
+ - Storage Account, Application Insights, Key Vault
1252
+ - Cosmos DB, App Service, Service Bus, Redis, Functions
1253
+
1254
+ **Validação automática:**
1255
+ - Alerta se custo > `freeTierOnly` (requer aprovação)
1256
+ - Bloqueia se custo > `requiresADR` (requer ADR em decisions.md)
1257
+ - Pre-commit hook impede commits sem ADR
1258
+
1259
+ ### Generate Design System Command
1260
+
1261
+ **Gera CSS + temas C# a partir de ui-design-system.md:**
1262
+
1263
+ ```bash
1264
+ # Gerar design system
1265
+ morph-spec generate design-system <ui-design-system.md> [options]
1266
+
1267
+ # Opções
1268
+ --fluent # Apenas Fluent UI theme
1269
+ --mud # Apenas MudBlazor theme
1270
+ --both # Ambos os temas (padrão)
1271
+ --namespace <ns> # Namespace C# (padrão: YourProject.Themes)
1272
+ --dry-run # Preview sem escrever arquivos
1273
+
1274
+ # Exemplos
1275
+ morph-spec generate design-system .morph/project/outputs/my-feature/ui-design-system.md --fluent
1276
+ morph-spec generate design-system .morph/project/outputs/my-feature/ui-design-system.md --both
1277
+ ```
1278
+
1279
+ **Arquivos gerados:**
1280
+ - `wwwroot/css/design-system.css` - CSS variables
1281
+ - `Themes/FluentDesignTheme.cs` - Tema Fluent UI (se --fluent ou --both)
1282
+ - `Themes/MudDesignTheme.cs` - Tema MudBlazor (se --mud ou --both)
1283
+
1284
+ **Uso automático interno:**
1285
+ - `/morph-uiux` gera temas automaticamente após aprovar design
1286
+ - FASE 5: IMPLEMENT regenera se ui-design-system.md for modificado
1287
+
1288
+ **Parsing automático de:**
1289
+ - Primary/Secondary/Neutral colors (#hex)
1290
+ - Semantic colors (Success, Error, Warning, Info)
1291
+ - Font families, sizes, weights
1292
+ - Spacing values (margin, padding, gap)
1293
+
1294
+ ---
1295
+
1296
+ ### Slash Commands (Claude Code)
1297
+
1298
+ Comandos disponíveis para cada fase do workflow:
1299
+
1300
+ | Comando | Fase | Descrição |
1301
+ |---------|------|-----------|
1302
+ | `/morph-proposal {feature}` | FASE 0 | Criar proposta inicial, detectar agentes |
1303
+ | `/morph-setup {feature}` | FASE 1 | Carregar contexto, confirmar stack e padrões |
1304
+ | `/morph-uiux {feature}` | FASE 1.5 | Coletar UI/UX, gerar wireframes e specs de componentes (condicional) |
1305
+ | `/morph-design {feature}` | FASE 2 | Gerar spec.md, contracts.cs, decisions.md, estimar custos |
1306
+ | `/morph-clarify {feature}` | FASE 3 | Identificar ambiguidades, fazer perguntas de clarificação |
1307
+ | `/morph-tasks {feature}` | FASE 4 | Quebrar spec em tasks executáveis, definir checkpoints |
1308
+ | `/morph-apply {feature}` | FASE 5 | Implementar tasks sequencialmente com validação de fases |
1309
+ | `/morph-status` | Qualquer | Mostrar dashboard de progresso com state.json |
1310
+ | `/morph-archive {feature}` | Pós-impl | Arquivar feature concluída |
1311
+
1312
+ **Uso típico:**
1313
+
1314
+ ```bash
1315
+ # 1. Criar proposta
1316
+ /morph-proposal scheduled-reports
1317
+
1318
+ # 2. Setup (após aprovação)
1319
+ /morph-setup scheduled-reports
1320
+
1321
+ # 3. UI/UX (se necessário)
1322
+ /morph-uiux scheduled-reports
1323
+
1324
+ # 4. Design técnico
1325
+ /morph-design scheduled-reports
1326
+
1327
+ # 5. Clarificações
1328
+ /morph-clarify scheduled-reports
1329
+
1330
+ # 6. Breakdown de tasks
1331
+ /morph-tasks scheduled-reports
1332
+
1333
+ # 7. Implementação
1334
+ /morph-apply scheduled-reports
1335
+
1336
+ # 8. Ver status a qualquer momento
1337
+ /morph-status
1338
+
1339
+ # 9. Arquivar quando completo
1340
+ /morph-archive scheduled-reports
1341
+ ```
1342
+
1343
+ **Validação de fases:**
1344
+ - `/morph-apply` valida que TODAS as fases anteriores foram concluídas
1345
+ - Impossível pular fases (segurança do workflow)
1346
+ - State.json rastreia progresso automaticamente
1347
+
1348
+ ---
1349
+
1350
+ ## REFERÊNCIAS
1351
+
1352
+ ### Framework Standards (Read-only, do MORPH)
1353
+ - `framework/standards/coding.md` - Padrões de código
1354
+ - `framework/standards/architecture.md` - Padrões de arquitetura
1355
+ - `framework/standards/azure.md` - Padrões Azure e IaC
1356
+ - `framework/standards/agent-framework-setup.md` - Setup Agent Framework (.NET 10)
1357
+ - `framework/standards/passkeys-auth.md` - Autenticação com Passkeys/WebAuthn
1358
+ - `framework/standards/vector-search-rag.md` - Vector Search + RAG com EF Core 10
1359
+ - `framework/standards/dotnet10-migration.md` - Guia de migração .NET 9 → 10
1360
+ - `framework/standards/fluent-ui-setup.md` - UI Library recomendada (Fluent UI Blazor)
1361
+ - `framework/standards/migration-guide.md` - Guia de migração App Service → Container Apps
1362
+
1363
+ ### Framework Templates
1364
+ - `framework/templates/` - Templates para outputs de features
1365
+ - `framework/templates/infra/` - Templates Bicep e scripts de deploy
1366
+
1367
+ ### Project Context (Editável, do projeto)
1368
+ - `.morph/project/context/README.md` - Overview do projeto
1369
+ - `.morph/project/standards/inferred.md` - Standards detectados automaticamente
1370
+ - `.morph/project/standards/*.md` - Overrides e extensões dos standards
1371
+ - `.morph/project/outputs/` - Features em desenvolvimento
1372
+ - `.morph/config.json` - Config do projeto + link para framework
1373
+
1374
+ ### Azure DevOps (se aplicável)
1375
+ - `.azure/README.md` - Overview completo de CI/CD
1376
+ - `.azure/pipelines/` - Pipelines (staging, prod)
1377
+ - `.azure/docs/azure-devops-setup.md` - Setup Workload Identity Federation
1378
+
1379
+ ---
1380
+
1381
+ *MORPH-SPEC by Polymorphism Tech*