@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.
- package/README.md +379 -379
- package/bin/morph-spec.js +23 -2
- package/bin/{task-manager.cjs → task-manager.js} +249 -172
- package/claude-plugin.json +14 -14
- package/docs/CHEATSHEET.md +203 -203
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents.json +224 -140
- package/framework/hooks/README.md +202 -202
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +48 -2
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +151 -0
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +12 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +6 -0
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +34 -0
- package/framework/hooks/claude-code/statusline.py +6 -0
- package/framework/hooks/claude-code/stop/validate-completion.js +38 -4
- package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +87 -0
- package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +58 -0
- package/framework/hooks/shared/phase-utils.js +4 -1
- package/framework/hooks/shared/state-reader.js +1 -0
- package/framework/skills/README.md +1 -0
- package/framework/skills/level-0-meta/brainstorming/SKILL.md +2 -0
- package/framework/skills/level-0-meta/code-review/SKILL.md +16 -0
- package/framework/skills/level-0-meta/code-review/references/review-guidelines.md +100 -0
- package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +36 -6
- package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +16 -0
- package/framework/skills/level-0-meta/code-review-nextjs/scripts/scan-nextjs.mjs +189 -0
- package/framework/skills/level-0-meta/frontend-review/SKILL.md +359 -0
- package/framework/skills/level-0-meta/frontend-review/scripts/scan-accessibility.mjs +376 -0
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +10 -8
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +70 -0
- package/framework/skills/level-0-meta/post-implementation/SKILL.md +315 -0
- package/framework/skills/level-0-meta/post-implementation/scripts/detect-dev-server.mjs +153 -0
- package/framework/skills/level-0-meta/post-implementation/scripts/detect-stack.mjs +234 -0
- package/framework/skills/level-0-meta/terminal-title/SKILL.md +61 -0
- package/framework/skills/level-0-meta/terminal-title/scripts/set_title.sh +65 -0
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +50 -188
- package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +213 -0
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +2 -0
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +4 -7
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +71 -109
- package/framework/skills/level-1-workflows/phase-design/references/architecture-analysis-guide.md +89 -0
- package/framework/skills/level-1-workflows/phase-design/references/spec-authoring-guide.md +55 -0
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +171 -114
- package/framework/skills/level-1-workflows/phase-implement/references/vsa-implementation-guide.md +92 -0
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +1 -2
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +35 -159
- package/framework/skills/level-1-workflows/phase-tasks/references/task-planning-patterns.md +172 -0
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +42 -3
- package/framework/squad-templates/backend-only.json +14 -1
- package/framework/squad-templates/frontend-only.json +14 -1
- package/framework/squad-templates/full-stack.json +25 -8
- package/framework/standards/STANDARDS.json +631 -86
- package/framework/standards/frontend/design-system/aesthetic-direction.md +213 -0
- package/framework/templates/project/validate.js +122 -0
- package/framework/workflows/configs/zero-touch.json +7 -0
- package/package.json +87 -87
- package/src/commands/agents/dispatch-agents.js +53 -10
- package/src/commands/state/advance-phase.js +88 -13
- package/src/commands/state/index.js +2 -1
- package/src/commands/state/phase-runner.js +215 -0
- package/src/commands/tasks/task.js +25 -4
- package/src/core/paths/output-schema.js +2 -1
- package/src/lib/detectors/design-system-detector.js +5 -4
- package/src/lib/generators/recap-generator.js +16 -0
- package/src/lib/orchestration/team-orchestrator.js +171 -89
- package/src/lib/phase-chain/eligibility-checker.js +243 -0
- package/src/lib/standards/digest-builder.js +231 -0
- package/src/lib/tasks/task-parser.js +94 -0
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +39 -0
- package/src/lib/validators/content/content-validator.js +34 -106
- package/src/lib/validators/nextjs/next-component-validator.js +2 -0
- package/src/lib/validators/validation-runner.js +2 -2
- package/src/utils/file-copier.js +1 -0
- 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.
|
|
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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
144
|
+
> Para os prompts completos de análise de arquitetura, veja `references/architecture-analysis-guide.md`
|
|
89
145
|
|
|
90
|
-
|
|
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
|
-
|
|
150
|
+
#### Caminho A: `domain-architect` ativo (DDD)
|
|
143
151
|
|
|
144
|
-
|
|
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
|
-
|
|
148
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
package/framework/skills/level-1-workflows/phase-design/references/architecture-analysis-guide.md
ADDED
|
@@ -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!**
|