@polymorphism-tech/morph-spec 2.4.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 (218) hide show
  1. package/CLAUDE.md +158 -26
  2. package/LICENSE +72 -72
  3. package/bin/detect-agents.js +225 -225
  4. package/bin/morph-spec.js +8 -0
  5. package/bin/render-template.js +302 -302
  6. package/bin/semantic-detect-agents.js +246 -246
  7. package/bin/validate-agents-skills.js +251 -251
  8. package/bin/validate-agents.js +69 -69
  9. package/bin/validate-phase.js +263 -263
  10. package/content/.azure/README.md +293 -293
  11. package/content/.azure/docs/azure-devops-setup.md +454 -454
  12. package/content/.azure/docs/branch-strategy.md +398 -398
  13. package/content/.azure/docs/local-development.md +515 -515
  14. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  15. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  16. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  17. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  18. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  19. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  20. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  21. package/content/.claude/commands/morph-archive.md +79 -79
  22. package/content/.claude/commands/morph-deploy.md +529 -0
  23. package/content/.claude/commands/morph-infra.md +209 -209
  24. package/content/.claude/commands/morph-preflight.md +227 -227
  25. package/content/.claude/commands/morph-troubleshoot.md +122 -122
  26. package/content/.claude/settings.local.json +15 -15
  27. package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
  28. package/content/.claude/skills/level-0-meta/README.md +7 -0
  29. package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
  30. package/content/.claude/skills/level-1-workflows/README.md +7 -0
  31. package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
  32. package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
  33. package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
  34. package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
  35. package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
  36. package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
  37. package/content/.claude/skills/level-2-domains/README.md +14 -0
  38. package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
  39. package/content/.claude/skills/level-3-technologies/README.md +7 -0
  40. package/content/.claude/skills/level-4-patterns/README.md +7 -0
  41. package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
  42. package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
  43. package/content/.morph/.morphversion +5 -5
  44. package/content/.morph/archive/.gitkeep +25 -25
  45. package/content/.morph/config/agents.json +742 -358
  46. package/content/.morph/config/config.template.json +33 -0
  47. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  48. package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
  49. package/content/.morph/examples/api-nextjs/README.md +241 -241
  50. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  51. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  52. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  53. package/content/.morph/examples/micro-saas/README.md +125 -125
  54. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  55. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  56. package/content/.morph/examples/micro-saas/spec.md +236 -236
  57. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  58. package/content/.morph/examples/multi-agent/README.md +309 -309
  59. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  60. package/content/.morph/examples/multi-agent/spec.md +479 -479
  61. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  62. package/content/.morph/examples/scheduled-reports/decisions.md +158 -158
  63. package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
  64. package/content/.morph/examples/scheduled-reports/spec.md +267 -267
  65. package/content/.morph/examples/state-v3.json +188 -188
  66. package/content/.morph/features/.gitkeep +25 -25
  67. package/content/.morph/hooks/README.md +158 -0
  68. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  69. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  70. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  71. package/content/.morph/hooks/task-completed.js +73 -0
  72. package/content/.morph/hooks/teammate-idle.js +68 -0
  73. package/content/.morph/project.md +160 -160
  74. package/content/.morph/schemas/agent.schema.json +296 -296
  75. package/content/.morph/schemas/tasks.schema.json +220 -220
  76. package/content/.morph/specs/.gitkeep +20 -20
  77. package/content/.morph/standards/agent-teams-workflow.md +474 -0
  78. package/content/.morph/standards/coding.md +377 -377
  79. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  80. package/content/.morph/standards/migration-guide.md +514 -514
  81. package/content/.morph/standards/passkeys-auth.md +423 -423
  82. package/content/.morph/standards/vector-search-rag.md +536 -536
  83. package/content/.morph/state.json +17 -17
  84. package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
  85. package/content/.morph/templates/CONTEXT.md +170 -0
  86. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  87. package/content/.morph/templates/MudTheme.cs +281 -281
  88. package/content/.morph/templates/clarify-questions.md +159 -159
  89. package/content/.morph/templates/component.razor +239 -239
  90. package/content/.morph/templates/contracts/Commands.cs +74 -74
  91. package/content/.morph/templates/contracts/Entities.cs +25 -25
  92. package/content/.morph/templates/contracts/Queries.cs +74 -74
  93. package/content/.morph/templates/contracts/README.md +74 -74
  94. package/content/.morph/templates/contracts.cs +217 -217
  95. package/content/.morph/templates/design-system.css +226 -226
  96. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  97. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  98. package/content/.morph/templates/infra/README.md +286 -286
  99. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  100. package/content/.morph/templates/infra/app-service.bicep +164 -164
  101. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
  102. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  103. package/content/.morph/templates/infra/container-app.bicep +156 -156
  104. package/content/.morph/templates/infra/deploy-checklist.md +426 -426
  105. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  106. package/content/.morph/templates/infra/deploy.sh +208 -208
  107. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  108. package/content/.morph/templates/infra/main.bicep +189 -189
  109. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  110. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  111. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  112. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  113. package/content/.morph/templates/infra/storage.bicep +106 -106
  114. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  115. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  116. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  117. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  118. package/content/.morph/templates/job.cs +171 -171
  119. package/content/.morph/templates/migration.cs +83 -83
  120. package/content/.morph/templates/repository.cs +141 -141
  121. package/content/.morph/templates/saas/subscription.cs +347 -347
  122. package/content/.morph/templates/saas/tenant.cs +338 -338
  123. package/content/.morph/templates/service.cs +139 -139
  124. package/content/.morph/templates/sprint-status.yaml +68 -68
  125. package/content/.morph/templates/story.md +143 -143
  126. package/content/.morph/templates/test.cs +239 -239
  127. package/content/.morph/templates/ui-design-system.md +286 -286
  128. package/content/.morph/templates/ui-flows.md +336 -336
  129. package/content/.morph/templates/ui-mockups.md +133 -133
  130. package/content/.morph/test-infra/example.bicep +59 -59
  131. package/content/README.md +79 -79
  132. package/detectors/config-detector.js +223 -223
  133. package/detectors/conversation-analyzer.js +163 -163
  134. package/detectors/index.js +84 -84
  135. package/detectors/standards-generator.js +275 -275
  136. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  137. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  138. package/docs/api/scripts/collapse.js +38 -38
  139. package/docs/api/scripts/commonNav.js +28 -28
  140. package/docs/api/scripts/linenumber.js +25 -25
  141. package/docs/api/scripts/nav.js +12 -12
  142. package/docs/api/scripts/polyfill.js +3 -3
  143. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  144. package/docs/api/scripts/prettify/lang-css.js +2 -2
  145. package/docs/api/scripts/prettify/prettify.js +28 -28
  146. package/docs/api/scripts/search.js +98 -98
  147. package/docs/api/styles/jsdoc.css +776 -776
  148. package/docs/api/styles/prettify.css +80 -80
  149. package/docs/examples.md +328 -328
  150. package/docs/templates.md +418 -418
  151. package/package.json +1 -1
  152. package/scripts/postinstall.js +132 -132
  153. package/src/commands/advance-phase.js +83 -0
  154. package/src/commands/analyze-blazor-concurrency.js +193 -193
  155. package/src/commands/create-story.js +351 -351
  156. package/src/commands/deploy.js +780 -0
  157. package/src/commands/detect-agents.js +34 -6
  158. package/src/commands/detect.js +104 -104
  159. package/src/commands/generate-context.js +40 -0
  160. package/src/commands/generate.js +149 -149
  161. package/src/commands/lint-fluent.js +352 -352
  162. package/src/commands/rollback-phase.js +185 -185
  163. package/src/commands/session-summary.js +291 -291
  164. package/src/commands/shard-spec.js +224 -224
  165. package/src/commands/sprint-status.js +250 -250
  166. package/src/commands/state.js +333 -333
  167. package/src/commands/sync.js +167 -167
  168. package/src/commands/troubleshoot.js +222 -222
  169. package/src/commands/validate-blazor-state.js +210 -210
  170. package/src/commands/validate-blazor.js +156 -156
  171. package/src/commands/validate-css.js +84 -84
  172. package/src/commands/validate-phase.js +221 -221
  173. package/src/lib/blazor-concurrency-analyzer.js +288 -288
  174. package/src/lib/blazor-state-validator.js +291 -291
  175. package/src/lib/blazor-validator.js +374 -374
  176. package/src/lib/context-generator.js +513 -0
  177. package/src/lib/css-validator.js +352 -352
  178. package/src/lib/design-system-detector.js +187 -0
  179. package/src/lib/design-system-generator.js +298 -298
  180. package/src/lib/design-system-scaffolder.js +299 -0
  181. package/src/lib/hook-executor.js +256 -0
  182. package/src/lib/learning-system.js +520 -520
  183. package/src/lib/mockup-generator.js +366 -366
  184. package/src/lib/spec-validator.js +258 -0
  185. package/src/lib/standards-context-injector.js +287 -0
  186. package/src/lib/team-orchestrator.js +322 -0
  187. package/src/lib/troubleshoot-grep.js +194 -194
  188. package/src/lib/troubleshoot-index.js +144 -144
  189. package/src/lib/ui-detector.js +350 -350
  190. package/src/lib/validation-runner.js +65 -13
  191. package/src/lib/validators/architecture-validator.js +387 -387
  192. package/src/lib/validators/design-system-validator.js +231 -0
  193. package/src/lib/validators/package-validator.js +360 -360
  194. package/src/lib/validators/ui-contrast-validator.js +422 -422
  195. package/src/utils/file-copier.js +9 -1
  196. package/src/utils/logger.js +32 -32
  197. package/src/utils/version-checker.js +175 -175
  198. /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
  199. /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
  200. /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
  201. /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
  202. /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
  203. /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
  204. /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
  205. /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
  206. /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
  207. /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
  208. /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
  209. /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
  210. /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
  211. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
  212. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
  213. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
  214. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
  215. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
  216. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
  217. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
  218. /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +0 -0
@@ -1,205 +1,213 @@
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
16
-
17
- Leia os arquivos existentes da feature:
18
-
19
- ```bash
20
- npx morph-spec state get {feature-name}
21
- ```
22
-
23
- Leia:
24
- 1. `.morph/project/outputs/{feature}/proposal.md` - Proposta inicial
25
- 2. `.morph/project/outputs/{feature}/ui-*.md` - UI/UX specs (se existirem)
26
- 3. `framework/standards/` e `.morph/project/standards/` - Padrões aplicáveis
27
-
28
- ### Passo 2: Gerar `spec.md`
29
-
30
- Crie `.morph/project/outputs/{feature}/spec.md` com:
31
-
32
- #### 2.1. Overview
33
- - **Objetivo:** Resumo de 1-2 parágrafos
34
- - **Usuários afetados:** Quem vai usar?
35
- - **Problema resolvido:** Qual dor/necessidade?
36
-
37
- #### 2.2. Functional Requirements
38
- Lista detalhada de requisitos funcionais:
39
- ```markdown
40
- ### FR001: {Requisito}
41
- **Description:** {O que deve fazer}
42
- **Acceptance Criteria:**
43
- - [ ] Critério 1
44
- - [ ] Critério 2
45
- **Priority:** High/Medium/Low
46
- ```
47
-
48
- #### 2.3. Non-Functional Requirements
49
- - Performance (tempos de resposta esperados)
50
- - Segurança (autenticação, autorização)
51
- - Escalabilidade (volume de dados/usuários)
52
- - Disponibilidade (uptime esperado)
53
-
54
- #### 2.4. Technical Architecture
55
- - **Camadas:** (Presentation, Application, Domain, Infrastructure)
56
- - **Patterns:** (Repository, CQRS, DI, etc.)
57
- - **Dependências:** Bibliotecas/serviços externos necessários
58
-
59
- #### 2.5. Data Model
60
- - Entities principais
61
- - Relacionamentos (1:1, 1:N, N:N)
62
- - Campos obrigatórios vs opcionais
63
- - Validações de negócio
64
-
65
- #### 2.6. Infrastructure Requirements
66
- Se houver recursos Azure:
67
- - Banco de dados (Azure SQL, Cosmos DB)
68
- - Storage (Blob Storage)
69
- - Compute (Container Apps, App Service)
70
- - Monitoring (App Insights)
71
-
72
- **SEMPRE usar Bicep para infra!**
73
-
74
- ### Passo 3: Gerar `contracts.cs`
75
-
76
- Crie `.morph/project/outputs/{feature}/contracts.cs` com:
77
-
78
- ```csharp
79
- // Interfaces, DTOs, Enums, Value Objects
80
-
81
- namespace {ProjectName}.Features.{FeatureName};
82
-
83
- // DTOs (Data Transfer Objects)
84
- public record {Feature}CreateDto(
85
- string Name,
86
- DateTime Date
87
- );
88
-
89
- public record {Feature}ResponseDto(
90
- Guid Id,
91
- string Name,
92
- DateTime Date,
93
- DateTime CreatedAt
94
- );
95
-
96
- // Interfaces
97
- public interface I{Feature}Service
98
- {
99
- Task<{Feature}ResponseDto> CreateAsync({Feature}CreateDto dto, CancellationToken ct);
100
- Task<{Feature}ResponseDto?> GetByIdAsync(Guid id, CancellationToken ct);
101
- }
102
-
103
- // Enums
104
- public enum {Feature}Status
105
- {
106
- Pending,
107
- Active,
108
- Completed
109
- }
110
- ```
111
-
112
- **Padrões obrigatórios:**
113
- - Records para DTOs (immutable)
114
- - Interfaces para serviços
115
- - CancellationToken em métodos async
116
- - Nullable reference types habilitados
117
-
118
- ### Passo 4: Iniciar `decisions.md`
119
-
120
- Crie `.morph/project/outputs/{feature}/decisions.md` com ADRs relevantes:
121
-
122
- ```markdown
123
- # Architectural Decision Records (ADRs)
124
-
125
- ## ADR-001: {Decisão Arquitetural}
126
-
127
- **Status:** Proposed/Accepted/Deprecated
128
-
129
- **Context:**
130
- {Por que esta decisão foi necessária}
131
-
132
- **Decision:**
133
- {O que foi decidido}
134
-
135
- **Consequences:**
136
- **Pros:**
137
- - Pro 1
138
-
139
- **Cons:**
140
- - Con 1
141
-
142
- **Alternatives Considered:**
143
- - Alternativa 1: {Por que foi rejeitada}
144
-
145
- **Date:** {YYYY-MM-DD}
146
- ```
147
-
148
- **ADRs obrigatórios:**
149
- - Escolha de biblioteca UI (se FASE 1.5 executou)
150
- - Padrões arquiteturais (CQRS, Repository, etc.)
151
- - Recursos Azure (se houver infra)
152
- - Integrações externas (APIs, webhooks, etc.)
153
-
154
- ### Passo 5: Estimar Custos
155
-
156
- Se houver recursos Azure na spec:
157
-
158
- **Limites configuráveis** (em config.json):
159
- - `costs.limits.freeTierOnly`: $0 (apenas free tier)
160
- - `costs.limits.withApproval`: $10 (requer confirmação do usuário)
161
- - `costs.limits.requiresADR`: $10 (requer ADR documentado)
162
-
163
- Documente custos em `decisions.md` e atualize state:
164
-
165
- ```bash
166
- npx morph-spec state set {feature-name} costs.estimated {X.XX}
167
- npx morph-spec state set {feature-name} costs.approved {true/false}
168
- ```
169
-
170
- ### Passo 6: Atualizar State
171
-
172
- ```bash
173
- npx morph-spec state set {feature-name} phase design
174
- npx morph-spec state mark-output {feature-name} spec
175
- npx morph-spec state mark-output {feature-name} contracts
176
- npx morph-spec state mark-output {feature-name} decisions
177
- ```
178
-
179
- ## Outputs Gerados
180
-
181
- - `.morph/project/outputs/{feature}/spec.md` - Especificação técnica completa
182
- - `.morph/project/outputs/{feature}/contracts.cs` - Interfaces, DTOs, Enums
183
- - `.morph/project/outputs/{feature}/decisions.md` - ADRs (novo ou atualizado)
184
- - State atualizado com custos estimados
185
-
186
- ## PAUSA OBRIGATÓRIA
187
-
188
- Apresente ao usuário 3 ações sugeridas:
189
-
190
- 1. **Aprovar design e continuar para clarificação**
191
- 2. **Ajustar escopo/complexidade** - Revisar spec.md
192
- 3. **Modificar contracts** - Ajustar interfaces/DTOs
193
-
194
- ## Critérios de Avanço
195
-
196
- - [x] `spec.md` completo com todos os requisitos
197
- - [x] `contracts.cs` com interfaces e DTOs
198
- - [x] `decisions.md` com ADRs relevantes
199
- - [x] Custos estimados e documentados (se houver infra)
200
- - [x] State atualizado
201
- - [x] Usuário aprovou design
202
-
203
- ---
204
-
205
- Continuar automaticamente para FASE 3 (Clarify) após aprovação.
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.
@@ -1,92 +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 do Projeto
26
-
27
- Leia os seguintes arquivos para entender o projeto:
28
-
29
- 1. **Contexto geral**:
30
- - `.morph/project/context/README.md` - Overview do projeto
31
- - `.morph/config.json` - Configurações
32
-
33
- 2. **Standards do framework**:
34
- - `framework/standards/coding.md` - Padrões de código
35
- - `framework/standards/architecture.md` - Padrões de arquitetura
36
- - `framework/standards/azure.md` - Padrões Azure e IaC
37
-
38
- 3. **Standards do projeto** (sobrescrevem framework se existirem):
39
- - `.morph/project/standards/coding.md`
40
- - `.morph/project/standards/architecture.md`
41
- - `.morph/project/standards/inferred.md` - Standards detectados
42
-
43
- ### Passo 3: Confirmar Stack
44
-
45
- Baseado no proposal e contexto, confirme:
46
- - Stack tecnológica (Blazor Server, Next.js, etc.)
47
- - Padrões arquiteturais aplicáveis
48
- - Componentes reutilizáveis existentes
49
-
50
- ### Passo 4: Listar Agentes Ativos
51
-
52
- Mostre os agentes detectados no proposal:
53
-
54
- ```bash
55
- npx morph-spec state get {feature-name}
56
- ```
57
-
58
- Parse o JSON e liste os `activeAgents` com seus emojis e responsabilidades (consulte `.morph/config/agents.json`).
59
-
60
- ### Passo 5: Atualizar State
61
-
62
- Marque a feature como na fase SETUP:
63
-
64
- ```bash
65
- npx morph-spec state set {feature-name} phase setup
66
- npx morph-spec state set {feature-name} status in_progress
67
- ```
68
-
69
- ## Outputs
70
-
71
- **Apresente ao usuário:**
72
-
73
- 1. **Contexto carregado**:
74
- - Nome do projeto
75
- - Stack confirmado
76
- - Standards aplicáveis
77
-
78
- 2. **Agentes ativos**:
79
- - Lista de agentes com emojis
80
- - Responsabilidades de cada um
81
-
82
- ## Critérios de Avanço
83
-
84
- - [x] Contexto do projeto carregado
85
- - [x] Standards identificados (framework + project)
86
- - [x] Stack confirmado
87
- - [x] Agentes listados
88
- - [x] State atualizado para phase: setup
89
-
90
- ---
91
-
92
- Continuar automaticamente para próxima fase (UI/UX se detectado, ou Design).
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).