@polymorphism-tech/morph-spec 4.8.12 → 4.8.15

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 (76) hide show
  1. package/README.md +379 -379
  2. package/bin/morph-spec.js +23 -2
  3. package/bin/{task-manager.cjs → task-manager.js} +249 -172
  4. package/claude-plugin.json +14 -14
  5. package/docs/CHEATSHEET.md +203 -203
  6. package/docs/QUICKSTART.md +1 -1
  7. package/framework/agents.json +224 -140
  8. package/framework/hooks/README.md +202 -202
  9. package/framework/hooks/claude-code/post-tool-use/dispatch.js +48 -2
  10. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +151 -0
  11. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +12 -0
  12. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +6 -0
  13. package/framework/hooks/claude-code/session-start/inject-morph-context.js +34 -0
  14. package/framework/hooks/claude-code/statusline.py +6 -0
  15. package/framework/hooks/claude-code/stop/validate-completion.js +38 -4
  16. package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +87 -0
  17. package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +58 -0
  18. package/framework/hooks/shared/phase-utils.js +4 -1
  19. package/framework/hooks/shared/state-reader.js +1 -0
  20. package/framework/skills/README.md +1 -0
  21. package/framework/skills/level-0-meta/brainstorming/SKILL.md +2 -0
  22. package/framework/skills/level-0-meta/code-review/SKILL.md +16 -0
  23. package/framework/skills/level-0-meta/code-review/references/review-guidelines.md +100 -0
  24. package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +36 -6
  25. package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +16 -0
  26. package/framework/skills/level-0-meta/code-review-nextjs/scripts/scan-nextjs.mjs +189 -0
  27. package/framework/skills/level-0-meta/frontend-review/SKILL.md +359 -0
  28. package/framework/skills/level-0-meta/frontend-review/scripts/scan-accessibility.mjs +376 -0
  29. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +1 -1
  30. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +10 -8
  31. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +70 -0
  32. package/framework/skills/level-0-meta/post-implementation/SKILL.md +315 -0
  33. package/framework/skills/level-0-meta/post-implementation/scripts/detect-dev-server.mjs +153 -0
  34. package/framework/skills/level-0-meta/post-implementation/scripts/detect-stack.mjs +234 -0
  35. package/framework/skills/level-0-meta/terminal-title/SKILL.md +61 -0
  36. package/framework/skills/level-0-meta/terminal-title/scripts/set_title.sh +65 -0
  37. package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +50 -188
  38. package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +213 -0
  39. package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +2 -0
  40. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +4 -7
  41. package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +1 -1
  42. package/framework/skills/level-1-workflows/phase-design/SKILL.md +71 -109
  43. package/framework/skills/level-1-workflows/phase-design/references/architecture-analysis-guide.md +89 -0
  44. package/framework/skills/level-1-workflows/phase-design/references/spec-authoring-guide.md +55 -0
  45. package/framework/skills/level-1-workflows/phase-implement/SKILL.md +171 -114
  46. package/framework/skills/level-1-workflows/phase-implement/references/vsa-implementation-guide.md +92 -0
  47. package/framework/skills/level-1-workflows/phase-setup/SKILL.md +1 -2
  48. package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +35 -159
  49. package/framework/skills/level-1-workflows/phase-tasks/references/task-planning-patterns.md +172 -0
  50. package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +42 -3
  51. package/framework/squad-templates/backend-only.json +14 -1
  52. package/framework/squad-templates/frontend-only.json +14 -1
  53. package/framework/squad-templates/full-stack.json +25 -8
  54. package/framework/standards/STANDARDS.json +631 -86
  55. package/framework/standards/frontend/design-system/aesthetic-direction.md +213 -0
  56. package/framework/templates/project/validate.js +122 -0
  57. package/framework/workflows/configs/zero-touch.json +7 -0
  58. package/package.json +87 -87
  59. package/src/commands/agents/dispatch-agents.js +53 -10
  60. package/src/commands/state/advance-phase.js +88 -13
  61. package/src/commands/state/index.js +2 -1
  62. package/src/commands/state/phase-runner.js +215 -0
  63. package/src/commands/tasks/task.js +25 -4
  64. package/src/core/paths/output-schema.js +2 -1
  65. package/src/lib/detectors/design-system-detector.js +5 -4
  66. package/src/lib/generators/recap-generator.js +16 -0
  67. package/src/lib/orchestration/team-orchestrator.js +171 -89
  68. package/src/lib/phase-chain/eligibility-checker.js +243 -0
  69. package/src/lib/standards/digest-builder.js +231 -0
  70. package/src/lib/tasks/task-parser.js +94 -0
  71. package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +39 -0
  72. package/src/lib/validators/content/content-validator.js +34 -106
  73. package/src/lib/validators/nextjs/next-component-validator.js +2 -0
  74. package/src/lib/validators/validation-runner.js +2 -2
  75. package/src/utils/file-copier.js +1 -0
  76. package/src/utils/hooks-installer.js +31 -7
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 3 (Clarify). Reviews spec.md for ambiguities, gene
4
4
  argument-hint: "[feature-name]"
5
5
  user-invocable: false
6
6
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
7
- cliVersion: "4.8.12"
7
+ cliVersion: "4.8.15"
8
8
  ---
9
9
 
10
10
  # MORPH Clarify - FASE 3
@@ -35,8 +35,8 @@ Identifique ambiguidades na especificação e faça perguntas de clarificação
35
35
  | Pesquisar edge cases externos | **WebSearch** | — |
36
36
  | Verificar comportamento UI existente | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | **WebFetch** URL |
37
37
  | Atualizar spec com clarificações | **Edit** spec.md | — |
38
- | Criar clarifications.md | **Bash** `npx morph-spec template render docs/clarifications ...` | — |
39
- | Atualizar state | **Bash** `npx morph-spec state mark-output ... clarifications` | — |
38
+ | Criar clarifications.md | **Bash** `npx morph-spec template render docs/clarifications .morph/features/$ARGUMENTS/2-clarify/clarifications.md` | — |
39
+ | Atualizar state | **Bash** `npx morph-spec state mark-output $ARGUMENTS clarifications` | — |
40
40
 
41
41
  **MCPs desta fase:** Context7 (validar viabilidade), GitHub (issues conhecidas), Playwright (verificar UI existente).
42
42
 
@@ -157,16 +157,13 @@ Documente no spec como lidar com cada edge case identificado:
157
157
 
158
158
  ### Passo 7: Atualizar State
159
159
 
160
- ```bash
161
- npx morph-spec state set $ARGUMENTS phase clarify
162
- ```
163
-
164
160
  ## Outputs Gerados/Atualizados
165
161
 
166
162
  - `.morph/features/$ARGUMENTS/1-design/spec.md` - Atualizado com:
167
163
  - Seção "Clarifications" com perguntas e respostas
168
164
  - Edge cases documentados
169
165
  - Requisitos mais específicos
166
+ - `.morph/features/$ARGUMENTS/2-clarify/clarifications.md` - Novo arquivo com Q&A estruturado
170
167
 
171
168
  ## Critérios de Avanço
172
169
 
@@ -3,7 +3,7 @@ name: phase-codebase-analysis
3
3
  description: MORPH-SPEC Design sub-phase that analyzes existing codebase and database schema, producing schema-analysis.md with real column names, types, relationships, and field mismatches. Use at the start of Design phase before generating contracts.cs to prevent incorrect field names or types.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
- cliVersion: "4.8.12"
6
+ cliVersion: "4.8.15"
7
7
  ---
8
8
 
9
9
  # MORPH Codebase Analysis - Sub-fase de DESIGN
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 2 (Design). Analyzes codebase/schema, then produce
4
4
  argument-hint: "[feature-name]"
5
5
  user-invocable: false
6
6
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
7
- cliVersion: "4.8.12"
7
+ cliVersion: "4.8.15"
8
8
  ---
9
9
 
10
10
  # MORPH Design - FASE 2
@@ -58,6 +58,62 @@ Expanda a proposta em especificação técnica completa, contracts, decisões ar
58
58
 
59
59
  ---
60
60
 
61
+ ## ✅ PRÉ-VOO OBRIGATÓRIO (antes de gerar qualquer artefato)
62
+
63
+ ### 1. Verificar contexto injetado pelo SessionStart
64
+
65
+ O hook já injetou o estado atual. Confirme que você leu:
66
+ - Feature ativa, fase, status de approvals
67
+ - Task progress e pending gates
68
+ - Spec snippet (se disponível)
69
+
70
+ ### 2. Ler todos os prerequisitos em PARALELO
71
+
72
+ ```
73
+ # Uma única chamada, não sequencial:
74
+ Read: .morph/features/{feature}/0-proposal/proposal.md
75
+ + Read: .morph/config/config.json (→ architecture.style)
76
+ + Read: .morph/context/README.md (→ project context)
77
+ + Read: framework/agents.json (→ activeAgents do feature)
78
+ ```
79
+
80
+ ### 3. Avaliar escopo → EnterPlanMode se necessário
81
+
82
+ Se QUALQUER uma das condições abaixo for verdadeira:
83
+ - [ ] Refactor toca ≥5 arquivos existentes de domínio
84
+ - [ ] Estimativa de tasks ≥20
85
+ - [ ] Mudança de arquitetura (ex: migrar de DDD Level 1 → Level 2)
86
+
87
+ → **USE EnterPlanMode** antes de gerar contratos. Explore o codebase, apresente opções, aguarde aprovação.
88
+
89
+ ### 4. Dispatch paralelo de subagents para artefatos independentes
90
+
91
+ Os 4 artefatos de design são **independentes entre si**. Dispatch em paralelo:
92
+
93
+ ```
94
+ # Executar todos ao mesmo tempo (uma mensagem, múltiplos Task tool calls):
95
+ Task(subagent=general): gerar spec.md (endpoints, regras de negócio)
96
+ Task(subagent=general): gerar contracts-vsa.cs ou contracts-levelN.cs
97
+ Task(subagent=general): gerar decisions.md (ADRs)
98
+ Task(subagent=general): gerar tasks.md skeleton
99
+ ```
100
+
101
+ Ou obter config de dispatch:
102
+ ```bash
103
+ npx morph-spec dispatch-agents {feature} design --table
104
+ ```
105
+
106
+ ### 5. Criar tasks de sessão para visibilidade
107
+
108
+ ```
109
+ TaskCreate: "Gerar spec.md" → activeForm: "Gerando spec.md"
110
+ TaskCreate: "Gerar contracts.cs" → activeForm: "Gerando contracts.cs"
111
+ TaskCreate: "Gerar decisions.md" → activeForm: "Gerando decisions.md"
112
+ TaskCreate: "Avanço de fase" → activeForm: "Avançando fase"
113
+ ```
114
+
115
+ ---
116
+
61
117
  ## Workflow
62
118
 
63
119
  ### Passo 1: Carregar Contexto, Agentes e Dispatch Config
@@ -85,77 +141,24 @@ O primeiro comando retorna `activeAgents`. O segundo retorna os agentes a dispar
85
141
 
86
142
  **⚠️ OBRIGATÓRIO:** Execute antes de gerar qualquer contrato. Use **Task tool** para isolar esta análise do contexto principal.
87
143
 
88
- O arquiteto ativo (lido do dispatch config no Passo 1) pode ser `domain-architect` (DDD) ou `vsa-architect` (VSA) — o prompt vem do dispatch config retornado por `dispatch-agents`.
144
+ > Para os prompts completos de análise de arquitetura, veja `references/architecture-analysis-guide.md`
89
145
 
90
- > **Paralelização:** Este Task dispatch pode iniciar SIMULTANEAMENTE com o Passo 2 (schema analysis), pois ambos são independentes. Use dois Task calls em paralelo quando o schema analysis também for necessário.
91
-
92
- #### Caminho A: `domain-architect` ativo (config sem `architecture.style: "vertical-slice"`)
93
-
94
- **Ref:** `framework/standards/architecture/ddd/complexity-levels.md`
95
-
96
- **Obtenha o taskPrompt do dispatch config** e use o Task tool:
97
-
98
- ```
99
- [Task tool — domain-architect]
100
- Prompt (do dispatch config, enriquecido com conteúdo da proposta):
101
-
102
- Você é o Domain Architect da feature '$ARGUMENTS'.
103
-
104
- Proposta da feature:
105
- [conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
106
-
107
- Standards de referência:
108
- [.morph/framework/standards/architecture/ddd/complexity-levels.md]
109
-
110
- Sua tarefa — responda cada ponto com "SIM" ou "NÃO" e cite trecho da proposta:
111
- 1. A entidade principal tem estados com transições? (ex: Draft → Confirmed → Shipped)
112
- 2. Existem invariants de negócio que impedem operações? (ex: "só cancela se Ativo")
113
- 3. Há cálculos derivados sobre a entidade? (ex: Total, Saldo, Desconto)
114
- 4. Outros módulos precisam reagir a mudanças? (Domain Events com consumidores reais)
115
- 5. A proposta declara explicitamente Bounded Context ou múltiplos domínios conflitantes?
116
-
117
- Regra de decisão:
118
- → Todas "NÃO": Nível 1 (CRUD simples)
119
- → Alguma de 1-4 "SIM": Nível 2 (Business Logic com AggregateRoot)
120
- → 5 "SIM" OU múltiplos domínios com modelos conflitantes: Nível 3 (Bounded Context)
121
-
122
- Retorne:
123
- - Nível detectado (1, 2 ou 3)
124
- - Justificativa com citações da proposta
125
- - Para Nível 2+: Aggregate Blueprint inicial (entidade principal, value objects, invariants)
126
- ```
127
-
128
- **Após receber o resultado:** Documente no spec.md (seção `## Domain Complexity`).
129
- **Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md.
130
- **Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template.
131
-
132
- #### Caminho B: `vsa-architect` ativo (config com `architecture.style: "vertical-slice"`)
133
-
134
- **Ref:** `framework/standards/architecture/vertical-slice/vertical-slice.md`
135
-
136
- **Obtenha o taskPrompt do dispatch config** e use o Task tool:
146
+ O arquiteto ativo (lido do dispatch config no Passo 1) pode ser `domain-architect` (DDD) ou `vsa-architect` (VSA) o prompt vem do dispatch config retornado por `dispatch-agents`.
137
147
 
138
- ```
139
- [Task tool — vsa-architect]
140
- Prompt (do dispatch config, enriquecido com conteúdo da proposta):
148
+ **Paralelização:** Este Task dispatch pode iniciar SIMULTANEAMENTE com o Passo 2 (schema analysis).
141
149
 
142
- Você é o VSA Specialist da feature '$ARGUMENTS'.
150
+ #### Caminho A: `domain-architect` ativo (DDD)
143
151
 
144
- Proposta da feature:
145
- [conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
152
+ Use o `taskPrompt` do dispatch config (enriquecido com o conteúdo da proposta). O agente responde às 5 perguntas de complexidade DDD e retorna o nível (1, 2 ou 3) com justificativa.
146
153
 
147
- Standards de referência:
148
- [.morph/framework/standards/architecture/vertical-slice/vertical-slice.md]
154
+ **Após receber o resultado:**
155
+ - Documente no spec.md (seção `## Domain Complexity`)
156
+ - **Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md
157
+ - **Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template
149
158
 
150
- Produza um VSA Blueprint:
151
- 1. ENTITY FIELDS: todos os campos com tipos C# corretos (sem AggregateRoot, sem Value Objects)
152
- 2. OPERATIONS: slices necessários (Create, GetAll, GetById, Update, Delete + operações customizadas)
153
- 3. ROUTES: HTTP method + rota por operação (ex: POST /api/products, GET /api/products/{id:guid})
154
- 4. ERROR TYPES: Error factory methods para {Entity}Errors
155
- 5. VALIDATION RULES: regras FluentValidation por campo por operação
159
+ #### Caminho B: `vsa-architect` ativo (VSA)
156
160
 
157
- Não use AggregateRoot, DomainEvent, CQRS formal, MediatR, Application Service layer.
158
- ```
161
+ Use o `taskPrompt` do dispatch config (enriquecido com o conteúdo da proposta). O agente produz um VSA Blueprint com entity fields, operations, routes, error types e validation rules.
159
162
 
160
163
  **Após receber o resultado:** Documente no spec.md (seção `## Architecture Style: Vertical Slice`).
161
164
 
@@ -182,49 +185,9 @@ Execute o workflow de `phase-codebase-analysis.md` para:
182
185
 
183
186
  ### Passo 3: Gerar `spec.md`
184
187
 
185
- Crie `.morph/features/$ARGUMENTS/1-design/spec.md` com:
186
-
187
- #### 3.1. Overview
188
- - **Objetivo:** Resumo de 1-2 parágrafos
189
- - **Usuários afetados:** Quem vai usar?
190
- - **Problema resolvido:** Qual dor/necessidade?
191
-
192
- #### 3.2. Functional Requirements
193
- Lista detalhada de requisitos funcionais:
194
- ```markdown
195
- ### FR001: {Requisito}
196
- **Description:** {O que deve fazer}
197
- **Acceptance Criteria:**
198
- - [ ] Critério 1
199
- - [ ] Critério 2
200
- **Priority:** High/Medium/Low
201
- ```
202
-
203
- #### 3.3. Non-Functional Requirements
204
- - Performance (tempos de resposta esperados)
205
- - Segurança (autenticação, autorização)
206
- - Escalabilidade (volume de dados/usuários)
207
- - Disponibilidade (uptime esperado)
208
-
209
- #### 3.4. Technical Architecture
210
- - **Camadas:** (Presentation, Application, Domain, Infrastructure)
211
- - **Patterns:** (Repository, CQRS, DI, etc.)
212
- - **Dependências:** Bibliotecas/serviços externos necessários
213
-
214
- #### 3.5. Data Model
215
- - Entities principais
216
- - Relacionamentos (1:1, 1:N, N:N)
217
- - Campos obrigatórios vs opcionais
218
- - Validações de negócio
219
-
220
- #### 3.6. Infrastructure Requirements
221
- Se houver recursos Azure:
222
- - Banco de dados (Azure SQL, Cosmos DB)
223
- - Storage (Blob Storage)
224
- - Compute (Container Apps, App Service)
225
- - Monitoring (App Insights)
188
+ > Para estrutura detalhada de cada seção, veja `references/spec-authoring-guide.md`
226
189
 
227
- **SEMPRE usar Bicep para infra!**
190
+ Crie `.morph/features/$ARGUMENTS/1-design/spec.md` com as seções: Overview, Functional Requirements (FR001...), Non-Functional Requirements, Technical Architecture, Data Model, e Infrastructure Requirements (se aplicável).
228
191
 
229
192
  ### Passo 4: Gerar `contracts.cs` (BASEADO NO SCHEMA REAL!)
230
193
 
@@ -267,7 +230,7 @@ npx morph-spec template render \
267
230
  }'
268
231
  ```
269
232
 
270
- **Após renderizar (VSA):** Preencha os campos `TODO` no template gerado com os campos reais da entidade, validators e mapeamentos do VSA Blueprint (Passo 1.5 Caminho B).
233
+ **Após renderizar (VSA):** Preencha os campos marcados com `// placeholder:` no template gerado com os campos reais da entidade, validators e mapeamentos do VSA Blueprint (Passo 1.5 Caminho B).
271
234
 
272
235
  **Padrões obrigatórios (DDD — já incluídos no template):**
273
236
  - Records para DTOs (immutable)
@@ -343,7 +306,6 @@ npx morph-spec state set $ARGUMENTS costs.approved {true/false}
343
306
  ### Passo 7: Atualizar State
344
307
 
345
308
  ```bash
346
- npx morph-spec state set $ARGUMENTS phase design
347
309
  npx morph-spec state mark-output $ARGUMENTS schema-analysis
348
310
  npx morph-spec state mark-output $ARGUMENTS spec
349
311
  npx morph-spec state mark-output $ARGUMENTS contracts
@@ -0,0 +1,89 @@
1
+ # Architecture Analysis Guide — Prompts de Dispatch
2
+
3
+ > Prompts completos para os agentes de análise de arquitetura dispatch via Task tool.
4
+ > Referenciado pelo Passo 1.5 de `phase-design/SKILL.md`.
5
+
6
+ ---
7
+
8
+ ## Caminho A: `domain-architect` (DDD)
9
+
10
+ **Quando usar:** Config **sem** `architecture.style: "vertical-slice"`.
11
+
12
+ **Ref:** `framework/standards/architecture/ddd/complexity-levels.md`
13
+
14
+ **Obtenha o taskPrompt do dispatch config** (`npx morph-spec dispatch-agents $ARGUMENTS design`) e use o Task tool:
15
+
16
+ ```
17
+ [Task tool — domain-architect]
18
+ Prompt (do dispatch config, enriquecido com conteúdo da proposta):
19
+
20
+ Você é o Domain Architect da feature '$ARGUMENTS'.
21
+
22
+ Proposta da feature:
23
+ [conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
24
+
25
+ Standards de referência:
26
+ [.morph/framework/standards/architecture/ddd/complexity-levels.md]
27
+
28
+ Sua tarefa — responda cada ponto com "SIM" ou "NÃO" e cite trecho da proposta:
29
+ 1. A entidade principal tem estados com transições? (ex: Draft → Confirmed → Shipped)
30
+ 2. Existem invariants de negócio que impedem operações? (ex: "só cancela se Ativo")
31
+ 3. Há cálculos derivados sobre a entidade? (ex: Total, Saldo, Desconto)
32
+ 4. Outros módulos precisam reagir a mudanças? (Domain Events com consumidores reais)
33
+ 5. A proposta declara explicitamente Bounded Context ou múltiplos domínios conflitantes?
34
+
35
+ Regra de decisão:
36
+ → Todas "NÃO": Nível 1 (CRUD simples)
37
+ → Alguma de 1-4 "SIM": Nível 2 (Business Logic com AggregateRoot)
38
+ → 5 "SIM" OU múltiplos domínios com modelos conflitantes: Nível 3 (Bounded Context)
39
+
40
+ Retorne:
41
+ - Nível detectado (1, 2 ou 3)
42
+ - Justificativa com citações da proposta
43
+ - Para Nível 2+: Aggregate Blueprint inicial (entidade principal, value objects, invariants)
44
+ ```
45
+
46
+ **Após receber o resultado:**
47
+ - Documente no spec.md (seção `## Domain Complexity`)
48
+ - **Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md
49
+ - **Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template
50
+
51
+ ---
52
+
53
+ ## Caminho B: `vsa-architect` (VSA)
54
+
55
+ **Quando usar:** Config com `architecture.style: "vertical-slice"`.
56
+
57
+ **Ref:** `framework/standards/architecture/vertical-slice/vertical-slice.md`
58
+
59
+ **Obtenha o taskPrompt do dispatch config** e use o Task tool:
60
+
61
+ ```
62
+ [Task tool — vsa-architect]
63
+ Prompt (do dispatch config, enriquecido com conteúdo da proposta):
64
+
65
+ Você é o VSA Specialist da feature '$ARGUMENTS'.
66
+
67
+ Proposta da feature:
68
+ [conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
69
+
70
+ Standards de referência:
71
+ [.morph/framework/standards/architecture/vertical-slice/vertical-slice.md]
72
+
73
+ Produza um VSA Blueprint:
74
+ 1. ENTITY FIELDS: todos os campos com tipos C# corretos (sem AggregateRoot, sem Value Objects)
75
+ 2. OPERATIONS: slices necessários (Create, GetAll, GetById, Update, Delete + operações customizadas)
76
+ 3. ROUTES: HTTP method + rota por operação (ex: POST /api/products, GET /api/products/{id:guid})
77
+ 4. ERROR TYPES: Error factory methods para {Entity}Errors
78
+ 5. VALIDATION RULES: regras FluentValidation por campo por operação
79
+
80
+ Não use AggregateRoot, DomainEvent, CQRS formal, MediatR, Application Service layer.
81
+ ```
82
+
83
+ **Após receber o resultado:** Documente no spec.md (seção `## Architecture Style: Vertical Slice`).
84
+
85
+ ---
86
+
87
+ ## Nota sobre Paralelização
88
+
89
+ Este Task dispatch pode iniciar **simultaneamente** com o Passo 2 (schema analysis), pois ambos são independentes. Use dois Task calls em paralelo quando o schema analysis também for necessário.
@@ -0,0 +1,55 @@
1
+ # Spec Authoring Guide — Seções do spec.md
2
+
3
+ > Guia de referência para estrutura e conteúdo de cada seção do `spec.md`.
4
+ > Referenciado pelo Passo 3 de `phase-design/SKILL.md`.
5
+
6
+ ---
7
+
8
+ ## 3.1. Overview
9
+
10
+ - **Objetivo:** Resumo de 1-2 parágrafos
11
+ - **Usuários afetados:** Quem vai usar?
12
+ - **Problema resolvido:** Qual dor/necessidade?
13
+
14
+ ## 3.2. Functional Requirements
15
+
16
+ Lista detalhada de requisitos funcionais:
17
+
18
+ ```markdown
19
+ ### FR001: {Requisito}
20
+ **Description:** {O que deve fazer}
21
+ **Acceptance Criteria:**
22
+ - [ ] Critério 1
23
+ - [ ] Critério 2
24
+ **Priority:** High/Medium/Low
25
+ ```
26
+
27
+ ## 3.3. Non-Functional Requirements
28
+
29
+ - Performance (tempos de resposta esperados)
30
+ - Segurança (autenticação, autorização)
31
+ - Escalabilidade (volume de dados/usuários)
32
+ - Disponibilidade (uptime esperado)
33
+
34
+ ## 3.4. Technical Architecture
35
+
36
+ - **Camadas:** (Presentation, Application, Domain, Infrastructure)
37
+ - **Patterns:** (Repository, CQRS, DI, etc.)
38
+ - **Dependências:** Bibliotecas/serviços externos necessários
39
+
40
+ ## 3.5. Data Model
41
+
42
+ - Entities principais
43
+ - Relacionamentos (1:1, 1:N, N:N)
44
+ - Campos obrigatórios vs opcionais
45
+ - Validações de negócio
46
+
47
+ ## 3.6. Infrastructure Requirements
48
+
49
+ Se houver recursos Azure:
50
+ - Banco de dados (Azure SQL, Cosmos DB)
51
+ - Storage (Blob Storage)
52
+ - Compute (Container Apps, App Service)
53
+ - Monitoring (App Insights)
54
+
55
+ > **SEMPRE usar Bicep para infra!**