@polymorphism-tech/morph-spec 2.3.0 → 3.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 (166) hide show
  1. package/CLAUDE.md +446 -1730
  2. package/README.md +515 -516
  3. package/bin/morph-spec.js +366 -294
  4. package/bin/task-manager.js +429 -368
  5. package/bin/validate.js +369 -268
  6. package/content/.claude/commands/morph-apply.md +221 -158
  7. package/content/.claude/commands/morph-deploy.md +529 -0
  8. package/content/.claude/commands/morph-preflight.md +227 -0
  9. package/content/.claude/commands/morph-proposal.md +122 -101
  10. package/content/.claude/commands/morph-status.md +86 -86
  11. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  12. package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
  13. package/content/.claude/skills/level-0-meta/README.md +7 -0
  14. package/content/.claude/skills/level-0-meta/code-review.md +226 -0
  15. package/content/.claude/skills/level-0-meta/morph-checklist.md +117 -0
  16. package/content/.claude/skills/level-0-meta/simulation-checklist.md +77 -0
  17. package/content/.claude/skills/level-1-workflows/README.md +7 -0
  18. package/content/.claude/skills/level-1-workflows/morph-replicate.md +213 -0
  19. package/content/.claude/{commands/morph-clarify.md → skills/level-1-workflows/phase-clarify.md} +131 -184
  20. package/content/.claude/{commands/morph-design.md → skills/level-1-workflows/phase-design.md} +213 -275
  21. package/content/.claude/skills/level-1-workflows/phase-setup.md +106 -0
  22. package/content/.claude/skills/level-1-workflows/phase-tasks.md +164 -0
  23. package/content/.claude/{commands/morph-uiux.md → skills/level-1-workflows/phase-uiux.md} +169 -211
  24. package/content/.claude/skills/level-2-domains/README.md +14 -0
  25. package/content/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +192 -0
  26. package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +197 -197
  27. package/content/.claude/skills/level-2-domains/architecture/standards-architect.md +156 -0
  28. package/content/.claude/skills/level-2-domains/backend/dotnet-senior.md +287 -0
  29. package/content/.claude/skills/level-2-domains/backend/ef-modeler.md +113 -0
  30. package/content/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +126 -0
  31. package/content/.claude/skills/level-2-domains/backend/ms-agent-expert.md +109 -0
  32. package/content/.claude/skills/level-2-domains/frontend/blazor-builder.md +210 -0
  33. package/content/.claude/skills/level-2-domains/frontend/nextjs-expert.md +154 -0
  34. package/content/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +191 -0
  35. package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +142 -142
  36. package/content/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +126 -0
  37. package/content/.claude/skills/level-2-domains/infrastructure/container-specialist.md +131 -0
  38. package/content/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +119 -0
  39. package/content/.claude/skills/level-2-domains/integrations/asaas-financial.md +130 -0
  40. package/content/.claude/skills/level-2-domains/integrations/azure-identity.md +142 -0
  41. package/content/.claude/skills/level-2-domains/integrations/clerk-auth.md +108 -0
  42. package/content/.claude/skills/level-2-domains/integrations/resend-email.md +119 -0
  43. package/content/.claude/skills/level-2-domains/quality/code-analyzer.md +235 -0
  44. package/content/.claude/skills/level-2-domains/quality/testing-specialist.md +126 -0
  45. package/content/.claude/skills/level-3-technologies/README.md +7 -0
  46. package/content/.claude/skills/level-4-patterns/README.md +7 -0
  47. package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
  48. package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
  49. package/content/.morph/config/agents.json +762 -242
  50. package/content/.morph/config/config.template.json +122 -108
  51. package/content/.morph/docs/workflows/design-impl.md +37 -0
  52. package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
  53. package/content/.morph/docs/workflows/fast-track.md +29 -0
  54. package/content/.morph/docs/workflows/full-morph.md +76 -0
  55. package/content/.morph/docs/workflows/standard.md +44 -0
  56. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  57. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  58. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  59. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  60. package/content/.morph/hooks/README.md +348 -239
  61. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  62. package/content/.morph/hooks/task-completed.js +73 -0
  63. package/content/.morph/hooks/teammate-idle.js +68 -0
  64. package/content/.morph/schemas/tasks.schema.json +220 -0
  65. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  66. package/content/.morph/standards/agent-framework-production.md +410 -0
  67. package/content/.morph/standards/agent-framework-setup.md +413 -453
  68. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  69. package/content/.morph/standards/agent-teams-workflow.md +474 -0
  70. package/content/.morph/standards/architecture.md +325 -325
  71. package/content/.morph/standards/azure.md +605 -379
  72. package/content/.morph/standards/dotnet10-migration.md +520 -494
  73. package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
  74. package/content/.morph/templates/CONTEXT.md +170 -0
  75. package/content/.morph/templates/agent.cs +163 -172
  76. package/content/.morph/templates/clarify-questions.md +159 -0
  77. package/content/.morph/templates/contracts/Commands.cs +74 -0
  78. package/content/.morph/templates/contracts/Entities.cs +25 -0
  79. package/content/.morph/templates/contracts/Queries.cs +74 -0
  80. package/content/.morph/templates/contracts/README.md +74 -0
  81. package/content/.morph/templates/decisions.md +123 -106
  82. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
  83. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  84. package/content/.morph/templates/proposal.md +141 -155
  85. package/content/.morph/templates/recap.md +94 -105
  86. package/content/.morph/templates/simulation.md +353 -0
  87. package/content/.morph/templates/spec.md +149 -148
  88. package/content/.morph/templates/state.template.json +222 -222
  89. package/content/.morph/templates/tasks.md +257 -235
  90. package/content/.morph/templates/ui-components.md +362 -276
  91. package/content/CLAUDE.md +150 -442
  92. package/detectors/structure-detector.js +245 -250
  93. package/docs/README.md +144 -149
  94. package/docs/getting-started.md +301 -302
  95. package/docs/installation.md +361 -361
  96. package/docs/validation-checklist.md +265 -266
  97. package/package.json +80 -80
  98. package/src/commands/advance-phase.js +266 -0
  99. package/src/commands/analyze-blazor-concurrency.js +193 -0
  100. package/src/commands/deploy.js +780 -0
  101. package/src/commands/detect-agents.js +167 -0
  102. package/src/commands/doctor.js +356 -280
  103. package/src/commands/generate-context.js +40 -0
  104. package/src/commands/init.js +258 -245
  105. package/src/commands/lint-fluent.js +352 -0
  106. package/src/commands/rollback-phase.js +185 -0
  107. package/src/commands/session-summary.js +291 -0
  108. package/src/commands/task.js +78 -75
  109. package/src/commands/troubleshoot.js +222 -0
  110. package/src/commands/update.js +192 -159
  111. package/src/commands/validate-blazor-state.js +210 -0
  112. package/src/commands/validate-blazor.js +156 -0
  113. package/src/commands/validate-css.js +84 -0
  114. package/src/commands/validate-phase.js +221 -0
  115. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  116. package/src/lib/blazor-state-validator.js +291 -0
  117. package/src/lib/blazor-validator.js +374 -0
  118. package/src/lib/complexity-analyzer.js +441 -292
  119. package/src/lib/context-generator.js +513 -0
  120. package/src/lib/continuous-validator.js +421 -440
  121. package/src/lib/css-validator.js +352 -0
  122. package/src/lib/decision-constraint-loader.js +109 -0
  123. package/src/lib/design-system-detector.js +187 -0
  124. package/src/lib/design-system-scaffolder.js +299 -0
  125. package/src/lib/hook-executor.js +256 -0
  126. package/src/lib/recap-generator.js +205 -0
  127. package/src/lib/spec-validator.js +258 -0
  128. package/src/lib/standards-context-injector.js +287 -0
  129. package/src/lib/state-manager.js +397 -340
  130. package/src/lib/team-orchestrator.js +322 -0
  131. package/src/lib/troubleshoot-grep.js +194 -0
  132. package/src/lib/troubleshoot-index.js +144 -0
  133. package/src/lib/validation-runner.js +283 -0
  134. package/src/lib/validators/contract-compliance-validator.js +273 -0
  135. package/src/lib/validators/design-system-validator.js +231 -0
  136. package/src/utils/file-copier.js +187 -139
  137. package/content/.claude/commands/morph-costs.md +0 -206
  138. package/content/.claude/commands/morph-setup.md +0 -100
  139. package/content/.claude/commands/morph-tasks.md +0 -319
  140. package/content/.claude/skills/infra/bicep-architect.md +0 -419
  141. package/content/.claude/skills/infra/container-specialist.md +0 -437
  142. package/content/.claude/skills/infra/devops-engineer.md +0 -405
  143. package/content/.claude/skills/integrations/asaas-financial.md +0 -333
  144. package/content/.claude/skills/integrations/azure-identity.md +0 -309
  145. package/content/.claude/skills/integrations/clerk-auth.md +0 -290
  146. package/content/.claude/skills/specialists/ai-system-architect.md +0 -604
  147. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  148. package/content/.claude/skills/specialists/ef-modeler.md +0 -211
  149. package/content/.claude/skills/specialists/hangfire-orchestrator.md +0 -255
  150. package/content/.claude/skills/specialists/ms-agent-expert.md +0 -263
  151. package/content/.claude/skills/specialists/standards-architect.md +0 -78
  152. package/content/.claude/skills/specialists/ui-ux-designer.md +0 -1100
  153. package/content/.claude/skills/stacks/dotnet-blazor.md +0 -606
  154. package/content/.claude/skills/stacks/dotnet-nextjs.md +0 -402
  155. package/content/.claude/skills/stacks/shopify.md +0 -445
  156. package/content/.morph/config/azure-pricing.json +0 -70
  157. package/content/.morph/config/azure-pricing.schema.json +0 -50
  158. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  159. package/docs/api/cost-calculator.js.html +0 -513
  160. package/docs/api/design-system-generator.js.html +0 -382
  161. package/docs/api/global.html +0 -5263
  162. package/docs/api/index.html +0 -96
  163. package/docs/api/state-manager.js.html +0 -423
  164. package/src/commands/cost.js +0 -181
  165. package/src/commands/update-pricing.js +0 -206
  166. package/src/lib/cost-calculator.js +0 -429
@@ -1,275 +1,213 @@
1
- # MORPH Design - FASE 2
2
-
3
- Expanda a proposta em especificação técnica completa, contracts, decisões arquiteturais e estimativa de custos.
4
-
5
- ## Uso
6
-
7
- ```
8
- /morph-design {feature-name}
9
- ```
10
-
11
- ## Pré-requisitos
12
-
13
- - [ ] FASE 1 (Setup) concluída
14
- - [ ] FASE 1.5 (UI/UX) concluída OU pulada (se não houver front-end)
15
- - [ ] Proposta aprovada pelo usuário
16
-
17
- ## Workflow
18
-
19
- ### Passo 1: Carregar Contexto
20
-
21
- Leia os arquivos existentes da feature:
22
-
23
- ```bash
24
- # Verificar outputs existentes
25
- node bin/state-manager.js get {feature-name}
26
- ```
27
-
28
- Leia:
29
- 1. `.morph/project/outputs/{feature}/proposal.md` - Proposta inicial
30
- 2. `.morph/project/outputs/{feature}/ui-*.md` - UI/UX specs (se existirem)
31
- 3. `framework/standards/` e `.morph/project/standards/` - Padrões aplicáveis
32
-
33
- ### Passo 2: Gerar `spec.md`
34
-
35
- Crie `.morph/project/outputs/{feature}/spec.md` com:
36
-
37
- #### 2.1. Overview
38
- - **Objetivo:** Resumo de 1-2 parágrafos
39
- - **Usuários afetados:** Quem vai usar?
40
- - **Problema resolvido:** Qual dor/necessidade?
41
-
42
- #### 2.2. Functional Requirements
43
- Lista detalhada de requisitos funcionais:
44
- ```markdown
45
- ### FR001: {Requisito}
46
- **Description:** {O que deve fazer}
47
- **Acceptance Criteria:**
48
- - [ ] Critério 1
49
- - [ ] Critério 2
50
- **Priority:** High/Medium/Low
51
- ```
52
-
53
- #### 2.3. Non-Functional Requirements
54
- - Performance (tempos de resposta esperados)
55
- - Segurança (autenticação, autorização)
56
- - Escalabilidade (volume de dados/usuários)
57
- - Disponibilidade (uptime esperado)
58
-
59
- #### 2.4. Technical Architecture
60
- - **Camadas:** (Presentation, Application, Domain, Infrastructure)
61
- - **Patterns:** (Repository, CQRS, DI, etc.)
62
- - **Dependências:** Bibliotecas/serviços externos necessários
63
-
64
- #### 2.5. Data Model
65
- - Entities principais
66
- - Relacionamentos (1:1, 1:N, N:N)
67
- - Campos obrigatórios vs opcionais
68
- - Validações de negócio
69
-
70
- #### 2.6. Infrastructure Requirements
71
- Se houver recursos Azure:
72
- - Banco de dados (Azure SQL, Cosmos DB)
73
- - Storage (Blob Storage)
74
- - Compute (Container Apps, App Service)
75
- - Monitoring (App Insights)
76
-
77
- **SEMPRE usar Bicep para infra!**
78
-
79
- ### Passo 3: Gerar `contracts.cs`
80
-
81
- Crie `.morph/project/outputs/{feature}/contracts.cs` com:
82
-
83
- ```csharp
84
- // Interfaces, DTOs, Enums, Value Objects
85
-
86
- namespace {ProjectName}.Features.{FeatureName};
87
-
88
- // DTOs (Data Transfer Objects)
89
- public record {Feature}CreateDto(
90
- string Name,
91
- DateTime Date
92
- );
93
-
94
- public record {Feature}ResponseDto(
95
- Guid Id,
96
- string Name,
97
- DateTime Date,
98
- DateTime CreatedAt
99
- );
100
-
101
- // Interfaces
102
- public interface I{Feature}Service
103
- {
104
- Task<{Feature}ResponseDto> CreateAsync({Feature}CreateDto dto, CancellationToken ct);
105
- Task<{Feature}ResponseDto?> GetByIdAsync(Guid id, CancellationToken ct);
106
- }
107
-
108
- // Enums
109
- public enum {Feature}Status
110
- {
111
- Pending,
112
- Active,
113
- Completed
114
- }
115
- ```
116
-
117
- **Padrões obrigatórios:**
118
- - Records para DTOs (immutable)
119
- - Interfaces para serviços
120
- - CancellationToken em métodos async
121
- - Nullable reference types habilitados
122
-
123
- ### Passo 4: Iniciar `decisions.md`
124
-
125
- Crie `.morph/project/outputs/{feature}/decisions.md` com ADRs relevantes:
126
-
127
- ```markdown
128
- # Architectural Decision Records (ADRs)
129
-
130
- ## ADR-001: {Decisão Arquitetural}
131
-
132
- **Status:** Proposed/Accepted/Deprecated
133
-
134
- **Context:**
135
- {Por que esta decisão foi necessária}
136
-
137
- **Decision:**
138
- {O que foi decidido}
139
-
140
- **Consequences:**
141
- **Pros:**
142
- - Pro 1
143
- - Pro 2
144
-
145
- **Cons:**
146
- - Con 1
147
- - Con 2
148
-
149
- **Alternatives Considered:**
150
- - Alternativa 1: {Por que foi rejeitada}
151
- - Alternativa 2: {Por que foi rejeitada}
152
-
153
- **Date:** {YYYY-MM-DD}
154
-
155
- ---
156
- ```
157
-
158
- **ADRs obrigatórios:**
159
- - Escolha de biblioteca UI (se FASE 1.5 executou)
160
- - Padrões arquiteturais (CQRS, Repository, etc.)
161
- - Recursos Azure (se houver infra)
162
- - Integrações externas (APIs, webhooks, etc.)
163
-
164
- ### Passo 5: Estimar Custos
165
-
166
- Se houver recursos Azure na spec (arquivos Bicep):
167
-
168
- ```bash
169
- # Calcular custos automaticamente
170
- node bin/calculate-costs.js .morph/project/outputs/{feature}/infra/*.bicep --verbose
171
- ```
172
-
173
- O cost calculator:
174
- - Parseia arquivos Bicep e extrai recursos + SKUs
175
- - Calcula custo mensal baseado em pricing table do Azure
176
- - Valida contra limites configurados em `.morph/config/config.json`
177
- - Exit code 1 se exceder o limite `requiresADR` (padrão: $10)
178
-
179
- **Limites configuráveis** (em config.json):
180
- - `costs.limits.freeTierOnly`: $0 (apenas free tier)
181
- - `costs.limits.withApproval`: $10 (requer confirmação do usuário)
182
- - `costs.limits.requiresADR`: $10 (requer ADR documentado)
183
-
184
- **Exemplo de output:**
185
- ```
186
- ╔════════════════════════════════════════════════╗
187
- ║ MORPH-SPEC COST CALCULATOR ║
188
- ╠════════════════════════════════════════════════╣
189
- sqlDatabase (Basic) $4.99/mo ║
190
- containerApp (Consumption) $0.00/mo ║
191
- appInsights (Free) $0.00/mo ║
192
- ╠════════════════════════════════════════════════╣
193
- ║ Total Monthly Cost: $4.99 ║
194
- Requires Approval: YES ║
195
- ║ Requires ADR: NO ║
196
- ╚════════════════════════════════════════════════╝
197
- ```
198
-
199
- **Documente custos em `decisions.md`:**
200
-
201
- ```markdown
202
- ## ADR-XXX: Infrastructure Costs
203
-
204
- **Estimated Monthly Cost:** $X.XX
205
-
206
- **Breakdown:**
207
- - Azure SQL Basic: $5.00
208
- - Container App (scale-to-zero): $0.00
209
- - Storage LRS (1GB): $0.02
210
- - App Insights Free: $0.00
211
-
212
- **Total:** $5.02/month
213
-
214
- **Approval Required:** {Yes/No - based on $10 threshold}
215
-
216
- **Justification:**
217
- {Se > $10, justificar aqui}
218
- ```
219
-
220
- 4. Atualizar state com custo:
221
-
222
- ```bash
223
- node bin/state-manager.js set {feature-name} costs.estimated {X.XX}
224
- node bin/state-manager.js set {feature-name} costs.approved {true/false}
225
- ```
226
-
227
- ### Passo 6: Atualizar State
228
-
229
- ```bash
230
- # Marcar fase como design
231
- node bin/state-manager.js set {feature-name} phase design
232
-
233
- # Marcar outputs criados
234
- node bin/state-manager.js mark-output {feature-name} spec
235
- node bin/state-manager.js mark-output {feature-name} contracts
236
- node bin/state-manager.js mark-output {feature-name} decisions
237
- ```
238
-
239
- ## Outputs Gerados
240
-
241
- - `.morph/project/outputs/{feature}/spec.md` - Especificação técnica completa
242
- - `.morph/project/outputs/{feature}/contracts.cs` - Interfaces, DTOs, Enums
243
- - `.morph/project/outputs/{feature}/decisions.md` - ADRs (novo ou atualizado)
244
- - State atualizado com custos estimados
245
-
246
- ## ⛔ PAUSA OBRIGATÓRIA
247
-
248
- Apresente ao usuário 3 ações sugeridas:
249
-
250
- 1. ✅ **Aprovar design e continuar para clarificação**
251
- Prosseguir para `/morph-clarify` (FASE 3)
252
-
253
- 2. 🔄 **Ajustar escopo/complexidade**
254
- Revisar spec.md para reduzir ou expandir funcionalidades
255
-
256
- 3. 💰 **Revisar custos estimados** (se houver recursos Azure)
257
- Ajustar SKUs ou recursos para ficar dentro do budget
258
-
259
- 4. 📋 **Modificar contracts**
260
- Ajustar interfaces/DTOs se necessário
261
-
262
- **Formato:** Escolher 3 das opções acima, contextualizadas para a feature
263
-
264
- ## Critérios de Avanço
265
-
266
- - [x] `spec.md` completo com todos os requisitos
267
- - [x] `contracts.cs` com interfaces e DTOs
268
- - [x] `decisions.md` com ADRs relevantes
269
- - [x] Custos estimados e documentados (se houver infra)
270
- - [x] State atualizado
271
- - [x] Usuário aprovou design
272
-
273
- ---
274
-
275
- **Feature:** $ARGUMENTS
1
+ # MORPH Design - FASE 2
2
+
3
+ > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
4
+
5
+ Expanda a proposta em especificação técnica completa, contracts, decisões arquiteturais e estimativa de custos.
6
+
7
+ ## Pré-requisitos
8
+
9
+ - [ ] FASE 1 (Setup) concluída
10
+ - [ ] FASE 1.5 (UI/UX) concluída OU pulada (se não houver front-end)
11
+ - [ ] Proposta aprovada pelo usuário
12
+
13
+ ## Workflow
14
+
15
+ ### Passo 1: Carregar Contexto e Standards
16
+
17
+ **Obtenha feature state e standards context:**
18
+
19
+ ```bash
20
+ npx morph-spec state get {feature-name}
21
+ ```
22
+
23
+ Parse o JSON para obter `activeAgents`, então use standards context (já carregado na FASE 1):
24
+ - Standards relevantes estão em `standardsSummary` do detect-agents
25
+ - Padrões já incluem project overrides + inferred learnings
26
+
27
+ **Leia outputs existentes:**
28
+ 1. `.morph/project/outputs/{feature}/proposal.md` - Proposta inicial
29
+ 2. `.morph/project/outputs/{feature}/ui-*.md` - UI/UX specs (se existirem)
30
+
31
+ **Use standards context ao gerar spec.md:**
32
+ - Architecture standards → guiam Technical Architecture section
33
+ - Coding standards definem contracts.cs patterns
34
+ - Azure standards → determinam Infrastructure Requirements
35
+
36
+ ### Passo 2: Gerar `spec.md`
37
+
38
+ Crie `.morph/project/outputs/{feature}/spec.md` com:
39
+
40
+ #### 2.1. Overview
41
+ - **Objetivo:** Resumo de 1-2 parágrafos
42
+ - **Usuários afetados:** Quem vai usar?
43
+ - **Problema resolvido:** Qual dor/necessidade?
44
+
45
+ #### 2.2. Functional Requirements
46
+ Lista detalhada de requisitos funcionais:
47
+ ```markdown
48
+ ### FR001: {Requisito}
49
+ **Description:** {O que deve fazer}
50
+ **Acceptance Criteria:**
51
+ - [ ] Critério 1
52
+ - [ ] Critério 2
53
+ **Priority:** High/Medium/Low
54
+ ```
55
+
56
+ #### 2.3. Non-Functional Requirements
57
+ - Performance (tempos de resposta esperados)
58
+ - Segurança (autenticação, autorização)
59
+ - Escalabilidade (volume de dados/usuários)
60
+ - Disponibilidade (uptime esperado)
61
+
62
+ #### 2.4. Technical Architecture
63
+ - **Camadas:** (Presentation, Application, Domain, Infrastructure)
64
+ - **Patterns:** (Repository, CQRS, DI, etc.)
65
+ - **Dependências:** Bibliotecas/serviços externos necessários
66
+
67
+ #### 2.5. Data Model
68
+ - Entities principais
69
+ - Relacionamentos (1:1, 1:N, N:N)
70
+ - Campos obrigatórios vs opcionais
71
+ - Validações de negócio
72
+
73
+ #### 2.6. Infrastructure Requirements
74
+ Se houver recursos Azure:
75
+ - Banco de dados (Azure SQL, Cosmos DB)
76
+ - Storage (Blob Storage)
77
+ - Compute (Container Apps, App Service)
78
+ - Monitoring (App Insights)
79
+
80
+ **SEMPRE usar Bicep para infra!**
81
+
82
+ ### Passo 3: Gerar `contracts.cs`
83
+
84
+ Crie `.morph/project/outputs/{feature}/contracts.cs` com:
85
+
86
+ ```csharp
87
+ // Interfaces, DTOs, Enums, Value Objects
88
+
89
+ namespace {ProjectName}.Features.{FeatureName};
90
+
91
+ // DTOs (Data Transfer Objects)
92
+ public record {Feature}CreateDto(
93
+ string Name,
94
+ DateTime Date
95
+ );
96
+
97
+ public record {Feature}ResponseDto(
98
+ Guid Id,
99
+ string Name,
100
+ DateTime Date,
101
+ DateTime CreatedAt
102
+ );
103
+
104
+ // Interfaces
105
+ public interface I{Feature}Service
106
+ {
107
+ Task<{Feature}ResponseDto> CreateAsync({Feature}CreateDto dto, CancellationToken ct);
108
+ Task<{Feature}ResponseDto?> GetByIdAsync(Guid id, CancellationToken ct);
109
+ }
110
+
111
+ // Enums
112
+ public enum {Feature}Status
113
+ {
114
+ Pending,
115
+ Active,
116
+ Completed
117
+ }
118
+ ```
119
+
120
+ **Padrões obrigatórios:**
121
+ - Records para DTOs (immutable)
122
+ - Interfaces para serviços
123
+ - CancellationToken em métodos async
124
+ - Nullable reference types habilitados
125
+
126
+ ### Passo 4: Iniciar `decisions.md`
127
+
128
+ Crie `.morph/project/outputs/{feature}/decisions.md` com ADRs relevantes:
129
+
130
+ ```markdown
131
+ # Architectural Decision Records (ADRs)
132
+
133
+ ## ADR-001: {Decisão Arquitetural}
134
+
135
+ **Status:** Proposed/Accepted/Deprecated
136
+
137
+ **Context:**
138
+ {Por que esta decisão foi necessária}
139
+
140
+ **Decision:**
141
+ {O que foi decidido}
142
+
143
+ **Consequences:**
144
+ **Pros:**
145
+ - Pro 1
146
+
147
+ **Cons:**
148
+ - Con 1
149
+
150
+ **Alternatives Considered:**
151
+ - Alternativa 1: {Por que foi rejeitada}
152
+
153
+ **Date:** {YYYY-MM-DD}
154
+ ```
155
+
156
+ **ADRs obrigatórios:**
157
+ - Escolha de biblioteca UI (se FASE 1.5 executou)
158
+ - Padrões arquiteturais (CQRS, Repository, etc.)
159
+ - Recursos Azure (se houver infra)
160
+ - Integrações externas (APIs, webhooks, etc.)
161
+
162
+ ### Passo 5: Estimar Custos
163
+
164
+ Se houver recursos Azure na spec:
165
+
166
+ **Limites configuráveis** (em config.json):
167
+ - `costs.limits.freeTierOnly`: $0 (apenas free tier)
168
+ - `costs.limits.withApproval`: $10 (requer confirmação do usuário)
169
+ - `costs.limits.requiresADR`: $10 (requer ADR documentado)
170
+
171
+ Documente custos em `decisions.md` e atualize state:
172
+
173
+ ```bash
174
+ npx morph-spec state set {feature-name} costs.estimated {X.XX}
175
+ npx morph-spec state set {feature-name} costs.approved {true/false}
176
+ ```
177
+
178
+ ### Passo 6: Atualizar State
179
+
180
+ ```bash
181
+ npx morph-spec state set {feature-name} phase design
182
+ npx morph-spec state mark-output {feature-name} spec
183
+ npx morph-spec state mark-output {feature-name} contracts
184
+ npx morph-spec state mark-output {feature-name} decisions
185
+ ```
186
+
187
+ ## Outputs Gerados
188
+
189
+ - `.morph/project/outputs/{feature}/spec.md` - Especificação técnica completa
190
+ - `.morph/project/outputs/{feature}/contracts.cs` - Interfaces, DTOs, Enums
191
+ - `.morph/project/outputs/{feature}/decisions.md` - ADRs (novo ou atualizado)
192
+ - State atualizado com custos estimados
193
+
194
+ ## PAUSA OBRIGATÓRIA
195
+
196
+ Apresente ao usuário 3 ações sugeridas:
197
+
198
+ 1. **Aprovar design e continuar para clarificação**
199
+ 2. **Ajustar escopo/complexidade** - Revisar spec.md
200
+ 3. **Modificar contracts** - Ajustar interfaces/DTOs
201
+
202
+ ## Critérios de Avanço
203
+
204
+ - [x] `spec.md` completo com todos os requisitos
205
+ - [x] `contracts.cs` com interfaces e DTOs
206
+ - [x] `decisions.md` com ADRs relevantes
207
+ - [x] Custos estimados e documentados (se houver infra)
208
+ - [x] State atualizado
209
+ - [x] Usuário aprovou design
210
+
211
+ ---
212
+
213
+ Continuar automaticamente para FASE 3 (Clarify) após aprovação.
@@ -0,0 +1,106 @@
1
+ # MORPH Setup - FASE 1
2
+
3
+ > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
4
+
5
+ Inicialize o contexto e prepare o ambiente para uma feature aprovada.
6
+
7
+ ## Pré-requisitos
8
+
9
+ - [ ] Feature tem `proposal.md` criado (FASE 0 concluída)
10
+ - [ ] Proposal foi aprovado pelo usuário
11
+ - [ ] Agentes foram detectados e registrados no state
12
+
13
+ ## Workflow
14
+
15
+ ### Passo 1: Verificar State
16
+
17
+ Confirme que a feature existe no state:
18
+
19
+ ```bash
20
+ npx morph-spec state get {feature-name}
21
+ ```
22
+
23
+ Se não existir, volte para FASE 0 (proposal).
24
+
25
+ ### Passo 2: Carregar Contexto e Standards Automaticamente
26
+
27
+ **Use detect-agents --json para obter standards context:**
28
+
29
+ ```bash
30
+ npx morph-spec detect-agents --json "{feature description from proposal}"
31
+ ```
32
+
33
+ O output JSON contém `standardsSummary` com todos os standards relevantes para cada agente ativo:
34
+
35
+ ```json
36
+ {
37
+ "standardsSummary": {
38
+ "blazor-builder": {
39
+ "standards": ["blazor-lifecycle", "blazor-state", "coding", ...],
40
+ "fullContent": "# blazor-lifecycle\n\n...", // Full standards text
41
+ "count": 10
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ **Standards resolution order** (automático):
48
+ 1. `.morph/project/standards/*.md` (project overrides - highest priority)
49
+ 2. `content/.morph/standards/*.md` (AI Agent Framework, Azure)
50
+ 3. `framework/standards/*.md` (Blazor, CSS, .NET)
51
+ 4. `.morph/project/standards/inferred.md` (always loaded if exists)
52
+
53
+ **Contexto geral** (leia manualmente):
54
+ - `.morph/project/context/README.md` - Overview do projeto
55
+ - `.morph/config.json` - Configurações
56
+
57
+ ### Passo 3: Confirmar Stack
58
+
59
+ Baseado no proposal e contexto, confirme:
60
+ - Stack tecnológica (Blazor Server, Next.js, etc.)
61
+ - Padrões arquiteturais aplicáveis
62
+ - Componentes reutilizáveis existentes
63
+
64
+ ### Passo 4: Listar Agentes Ativos
65
+
66
+ Mostre os agentes detectados no proposal:
67
+
68
+ ```bash
69
+ npx morph-spec state get {feature-name}
70
+ ```
71
+
72
+ Parse o JSON e liste os `activeAgents` com seus emojis e responsabilidades (consulte `.morph/config/agents.json`).
73
+
74
+ ### Passo 5: Atualizar State
75
+
76
+ Marque a feature como na fase SETUP:
77
+
78
+ ```bash
79
+ npx morph-spec state set {feature-name} phase setup
80
+ npx morph-spec state set {feature-name} status in_progress
81
+ ```
82
+
83
+ ## Outputs
84
+
85
+ **Apresente ao usuário:**
86
+
87
+ 1. **Contexto carregado**:
88
+ - Nome do projeto
89
+ - Stack confirmado
90
+ - Standards aplicáveis
91
+
92
+ 2. **Agentes ativos**:
93
+ - Lista de agentes com emojis
94
+ - Responsabilidades de cada um
95
+
96
+ ## Critérios de Avanço
97
+
98
+ - [x] Contexto do projeto carregado
99
+ - [x] Standards identificados (framework + project)
100
+ - [x] Stack confirmado
101
+ - [x] Agentes listados
102
+ - [x] State atualizado para phase: setup
103
+
104
+ ---
105
+
106
+ Continuar automaticamente para próxima fase (UI/UX se detectado, ou Design).