@polymorphism-tech/morph-spec 4.8.14 → 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 (71) hide show
  1. package/README.md +2 -2
  2. package/bin/morph-spec.js +23 -2
  3. package/bin/task-manager.js +202 -14
  4. package/claude-plugin.json +1 -1
  5. package/docs/CHEATSHEET.md +1 -1
  6. package/docs/QUICKSTART.md +1 -1
  7. package/framework/agents.json +113 -116
  8. package/framework/hooks/claude-code/post-tool-use/dispatch.js +48 -2
  9. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +151 -0
  10. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +6 -0
  11. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +6 -0
  12. package/framework/hooks/claude-code/session-start/inject-morph-context.js +27 -0
  13. package/framework/hooks/claude-code/stop/validate-completion.js +17 -2
  14. package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +87 -0
  15. package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +58 -0
  16. package/framework/hooks/shared/phase-utils.js +1 -1
  17. package/framework/hooks/shared/state-reader.js +1 -0
  18. package/framework/skills/README.md +1 -0
  19. package/framework/skills/level-0-meta/brainstorming/SKILL.md +2 -0
  20. package/framework/skills/level-0-meta/code-review/SKILL.md +16 -0
  21. package/framework/skills/level-0-meta/code-review/references/review-guidelines.md +100 -0
  22. package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +36 -6
  23. package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +16 -0
  24. package/framework/skills/level-0-meta/code-review-nextjs/scripts/scan-nextjs.mjs +189 -0
  25. package/framework/skills/level-0-meta/frontend-review/SKILL.md +359 -0
  26. package/framework/skills/level-0-meta/frontend-review/scripts/scan-accessibility.mjs +376 -0
  27. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +1 -1
  28. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +10 -8
  29. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +70 -0
  30. package/framework/skills/level-0-meta/post-implementation/SKILL.md +315 -0
  31. package/framework/skills/level-0-meta/post-implementation/scripts/detect-dev-server.mjs +153 -0
  32. package/framework/skills/level-0-meta/post-implementation/scripts/detect-stack.mjs +234 -0
  33. package/framework/skills/level-0-meta/terminal-title/SKILL.md +61 -0
  34. package/framework/skills/level-0-meta/terminal-title/scripts/set_title.sh +65 -0
  35. package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +13 -206
  36. package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +213 -0
  37. package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +2 -0
  38. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +4 -7
  39. package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +1 -1
  40. package/framework/skills/level-1-workflows/phase-design/SKILL.md +16 -110
  41. package/framework/skills/level-1-workflows/phase-design/references/architecture-analysis-guide.md +89 -0
  42. package/framework/skills/level-1-workflows/phase-design/references/spec-authoring-guide.md +55 -0
  43. package/framework/skills/level-1-workflows/phase-implement/SKILL.md +153 -118
  44. package/framework/skills/level-1-workflows/phase-implement/references/vsa-implementation-guide.md +92 -0
  45. package/framework/skills/level-1-workflows/phase-setup/SKILL.md +1 -2
  46. package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +11 -158
  47. package/framework/skills/level-1-workflows/phase-tasks/references/task-planning-patterns.md +172 -0
  48. package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +42 -3
  49. package/framework/squad-templates/backend-only.json +14 -1
  50. package/framework/squad-templates/frontend-only.json +14 -1
  51. package/framework/squad-templates/full-stack.json +25 -8
  52. package/framework/standards/STANDARDS.json +631 -86
  53. package/framework/standards/frontend/design-system/aesthetic-direction.md +213 -0
  54. package/framework/templates/project/validate.js +122 -0
  55. package/framework/workflows/configs/zero-touch.json +7 -0
  56. package/package.json +1 -1
  57. package/src/commands/agents/dispatch-agents.js +53 -10
  58. package/src/commands/state/advance-phase.js +56 -0
  59. package/src/commands/state/index.js +2 -1
  60. package/src/commands/state/phase-runner.js +215 -0
  61. package/src/commands/tasks/task.js +23 -2
  62. package/src/core/paths/output-schema.js +1 -1
  63. package/src/lib/generators/recap-generator.js +16 -0
  64. package/src/lib/orchestration/team-orchestrator.js +171 -89
  65. package/src/lib/phase-chain/eligibility-checker.js +243 -0
  66. package/src/lib/standards/digest-builder.js +231 -0
  67. package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +39 -0
  68. package/src/lib/validators/nextjs/next-component-validator.js +2 -0
  69. package/src/lib/validators/validation-runner.js +2 -2
  70. package/src/utils/file-copier.js +1 -0
  71. package/src/utils/hooks-installer.js +31 -7
@@ -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.14"
7
+ cliVersion: "4.8.15"
8
8
  ---
9
9
 
10
10
  # MORPH Design - FASE 2
@@ -91,7 +91,7 @@ Se QUALQUER uma das condições abaixo for verdadeira:
91
91
  Os 4 artefatos de design são **independentes entre si**. Dispatch em paralelo:
92
92
 
93
93
  ```
94
- # Executar TODOS ao mesmo tempo (uma mensagem, múltiplos Task tool calls):
94
+ # Executar todos ao mesmo tempo (uma mensagem, múltiplos Task tool calls):
95
95
  Task(subagent=general): gerar spec.md (endpoints, regras de negócio)
96
96
  Task(subagent=general): gerar contracts-vsa.cs ou contracts-levelN.cs
97
97
  Task(subagent=general): gerar decisions.md (ADRs)
@@ -141,77 +141,24 @@ O primeiro comando retorna `activeAgents`. O segundo retorna os agentes a dispar
141
141
 
142
142
  **⚠️ OBRIGATÓRIO:** Execute antes de gerar qualquer contrato. Use **Task tool** para isolar esta análise do contexto principal.
143
143
 
144
- 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`.
145
-
146
- > **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.
147
-
148
- #### Caminho A: `domain-architect` ativo (config sem `architecture.style: "vertical-slice"`)
149
-
150
- **Ref:** `framework/standards/architecture/ddd/complexity-levels.md`
151
-
152
- **Obtenha o taskPrompt do dispatch config** e use o Task tool:
153
-
154
- ```
155
- [Task tool — domain-architect]
156
- Prompt (do dispatch config, enriquecido com conteúdo da proposta):
144
+ > Para os prompts completos de análise de arquitetura, veja `references/architecture-analysis-guide.md`
157
145
 
158
- Você é o Domain Architect da feature '$ARGUMENTS'.
159
-
160
- Proposta da feature:
161
- [conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
162
-
163
- Standards de referência:
164
- [.morph/framework/standards/architecture/ddd/complexity-levels.md]
165
-
166
- Sua tarefa — responda cada ponto com "SIM" ou "NÃO" e cite trecho da proposta:
167
- 1. A entidade principal tem estados com transições? (ex: Draft → Confirmed → Shipped)
168
- 2. Existem invariants de negócio que impedem operações? (ex: "só cancela se Ativo")
169
- 3. Há cálculos derivados sobre a entidade? (ex: Total, Saldo, Desconto)
170
- 4. Outros módulos precisam reagir a mudanças? (Domain Events com consumidores reais)
171
- 5. A proposta declara explicitamente Bounded Context ou múltiplos domínios conflitantes?
172
-
173
- Regra de decisão:
174
- → Todas "NÃO": Nível 1 (CRUD simples)
175
- → Alguma de 1-4 "SIM": Nível 2 (Business Logic com AggregateRoot)
176
- → 5 "SIM" OU múltiplos domínios com modelos conflitantes: Nível 3 (Bounded Context)
177
-
178
- Retorne:
179
- - Nível detectado (1, 2 ou 3)
180
- - Justificativa com citações da proposta
181
- - Para Nível 2+: Aggregate Blueprint inicial (entidade principal, value objects, invariants)
182
- ```
183
-
184
- **Após receber o resultado:** Documente no spec.md (seção `## Domain Complexity`).
185
- **Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md.
186
- **Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template.
187
-
188
- #### Caminho B: `vsa-architect` ativo (config com `architecture.style: "vertical-slice"`)
189
-
190
- **Ref:** `framework/standards/architecture/vertical-slice/vertical-slice.md`
191
-
192
- **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`.
193
147
 
194
- ```
195
- [Task tool — vsa-architect]
196
- 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).
197
149
 
198
- Você é o VSA Specialist da feature '$ARGUMENTS'.
150
+ #### Caminho A: `domain-architect` ativo (DDD)
199
151
 
200
- Proposta da feature:
201
- [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.
202
153
 
203
- Standards de referência:
204
- [.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
205
158
 
206
- Produza um VSA Blueprint:
207
- 1. ENTITY FIELDS: todos os campos com tipos C# corretos (sem AggregateRoot, sem Value Objects)
208
- 2. OPERATIONS: slices necessários (Create, GetAll, GetById, Update, Delete + operações customizadas)
209
- 3. ROUTES: HTTP method + rota por operação (ex: POST /api/products, GET /api/products/{id:guid})
210
- 4. ERROR TYPES: Error factory methods para {Entity}Errors
211
- 5. VALIDATION RULES: regras FluentValidation por campo por operação
159
+ #### Caminho B: `vsa-architect` ativo (VSA)
212
160
 
213
- Não use AggregateRoot, DomainEvent, CQRS formal, MediatR, Application Service layer.
214
- ```
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.
215
162
 
216
163
  **Após receber o resultado:** Documente no spec.md (seção `## Architecture Style: Vertical Slice`).
217
164
 
@@ -238,49 +185,9 @@ Execute o workflow de `phase-codebase-analysis.md` para:
238
185
 
239
186
  ### Passo 3: Gerar `spec.md`
240
187
 
241
- Crie `.morph/features/$ARGUMENTS/1-design/spec.md` com:
242
-
243
- #### 3.1. Overview
244
- - **Objetivo:** Resumo de 1-2 parágrafos
245
- - **Usuários afetados:** Quem vai usar?
246
- - **Problema resolvido:** Qual dor/necessidade?
247
-
248
- #### 3.2. Functional Requirements
249
- Lista detalhada de requisitos funcionais:
250
- ```markdown
251
- ### FR001: {Requisito}
252
- **Description:** {O que deve fazer}
253
- **Acceptance Criteria:**
254
- - [ ] Critério 1
255
- - [ ] Critério 2
256
- **Priority:** High/Medium/Low
257
- ```
258
-
259
- #### 3.3. Non-Functional Requirements
260
- - Performance (tempos de resposta esperados)
261
- - Segurança (autenticação, autorização)
262
- - Escalabilidade (volume de dados/usuários)
263
- - Disponibilidade (uptime esperado)
264
-
265
- #### 3.4. Technical Architecture
266
- - **Camadas:** (Presentation, Application, Domain, Infrastructure)
267
- - **Patterns:** (Repository, CQRS, DI, etc.)
268
- - **Dependências:** Bibliotecas/serviços externos necessários
269
-
270
- #### 3.5. Data Model
271
- - Entities principais
272
- - Relacionamentos (1:1, 1:N, N:N)
273
- - Campos obrigatórios vs opcionais
274
- - Validações de negócio
275
-
276
- #### 3.6. Infrastructure Requirements
277
- Se houver recursos Azure:
278
- - Banco de dados (Azure SQL, Cosmos DB)
279
- - Storage (Blob Storage)
280
- - Compute (Container Apps, App Service)
281
- - Monitoring (App Insights)
188
+ > Para estrutura detalhada de cada seção, veja `references/spec-authoring-guide.md`
282
189
 
283
- **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).
284
191
 
285
192
  ### Passo 4: Gerar `contracts.cs` (BASEADO NO SCHEMA REAL!)
286
193
 
@@ -323,7 +230,7 @@ npx morph-spec template render \
323
230
  }'
324
231
  ```
325
232
 
326
- **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).
327
234
 
328
235
  **Padrões obrigatórios (DDD — já incluídos no template):**
329
236
  - Records para DTOs (immutable)
@@ -399,7 +306,6 @@ npx morph-spec state set $ARGUMENTS costs.approved {true/false}
399
306
  ### Passo 7: Atualizar State
400
307
 
401
308
  ```bash
402
- npx morph-spec state set $ARGUMENTS phase design
403
309
  npx morph-spec state mark-output $ARGUMENTS schema-analysis
404
310
  npx morph-spec state mark-output $ARGUMENTS spec
405
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!**