@polymorphism-tech/morph-spec 6.0.0 → 7.1.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.
- package/README.md +367 -366
- package/docs/CHEATSHEET.md +3 -3
- package/docs/QUICKSTART.md +4 -4
- package/framework/CLAUDE.md +13 -0
- package/framework/MORPH.md +57 -36
- package/framework/agents.json +132 -127
- package/framework/commands/morph-apply.md +4 -21
- package/framework/commands/morph-archive.md +1 -1
- package/framework/commands/morph-proposal.md +2 -0
- package/framework/hooks/claude-code/core/enforce-phase-writes.js +1 -1
- package/framework/hooks/claude-code/core/protect-spec-files.js +1 -1
- package/framework/hooks/claude-code/core/state-sync.js +212 -0
- package/framework/hooks/shared/phase-utils.js +5 -4
- package/framework/hooks/shared/state-reader.js +1 -1
- package/framework/phases.json +1 -1
- package/framework/rubrics/backend.json +41 -36
- package/framework/rules/ai-agents-standards.md +45 -15
- package/framework/rules/morph-workflow.md +15 -34
- package/framework/rules/neon-standards.md +25 -26
- package/framework/schemas/tasks.schema.json +35 -0
- package/framework/skills/core/morph-apply/SKILL.md +154 -0
- package/framework/skills/core/morph-brainstorming/SKILL.md +53 -30
- package/framework/skills/core/morph-implement/SKILL.md +25 -14
- package/framework/skills/core/morph-plan/SKILL.md +91 -23
- package/framework/skills/core/morph-proposal/SKILL.md +137 -0
- package/framework/skills/core/morph-review/SKILL.md +43 -7
- package/framework/skills/core/morph-stack-scan/SKILL.md +40 -1
- package/framework/standards/STANDARDS.json +1729 -1134
- package/framework/standards/ai-agents/agent-session.md +160 -0
- package/framework/standards/ai-agents/batching.md +193 -0
- package/framework/standards/ai-agents/context-providers.md +188 -0
- package/framework/standards/ai-agents/mcp-server.md +250 -0
- package/framework/standards/ai-agents/mcp-tools.md +197 -0
- package/framework/standards/ai-agents/middleware-patterns.md +207 -0
- package/framework/standards/ai-agents/modalities-image-gen.md +173 -0
- package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -0
- package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -0
- package/framework/standards/ai-agents/modalities-vision.md +201 -0
- package/framework/standards/ai-agents/multi-agent-patterns.md +155 -0
- package/framework/standards/ai-agents/production.md +114 -258
- package/framework/standards/ai-agents/prompts-in-db.md +214 -0
- package/framework/standards/ai-agents/providers/model-registry.md +158 -0
- package/framework/standards/ai-agents/rag-custom-pgvector.md +243 -0
- package/framework/standards/ai-agents/service-tier-flex.md +135 -0
- package/framework/standards/ai-agents/setup.md +142 -316
- package/framework/standards/ai-agents/structured-output.md +249 -0
- package/framework/standards/ai-agents/sweet-spot.md +109 -0
- package/framework/standards/ai-agents/workflows.md +114 -284
- package/framework/standards/architecture/vertical-slice/vertical-slice.md +433 -429
- package/framework/standards/backend/api/validation.md +92 -88
- package/framework/standards/backend/database/postgresql/database.md +336 -332
- package/framework/standards/backend/database/vector-search-rag.md +599 -541
- package/framework/standards/backend/dotnet/fluent-validation-vsa.md +4 -0
- package/framework/standards/backend/dotnet/result-pattern.md +4 -0
- package/framework/standards/backend/dotnet/scalar-ui.md +176 -172
- package/framework/standards/backend/dotnet/scrutor.md +4 -0
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +278 -274
- package/framework/standards/backend/integrations/asaas/asaas-api.md +260 -216
- package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +354 -350
- package/framework/standards/backend/integrations/neon-auth/neon-auth.md +30 -19
- package/framework/standards/backend/integrations/resend/resend-email.md +400 -385
- package/framework/standards/data/nosql/cache/redis.md +106 -97
- package/framework/standards/data/nosql/cosmos-db.md +127 -118
- package/framework/standards/data/vector-search/rag-chunking.md +113 -104
- package/framework/standards/frontend/design-system/ai-image-generation.md +4 -0
- package/framework/standards/frontend/design-system/animations.md +164 -160
- package/framework/standards/frontend/design-system/naming.md +68 -64
- package/framework/standards/frontend/gsap/gsap-core.md +14 -8
- package/framework/standards/frontend/gsap/gsap-plugins.md +26 -21
- package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +9 -7
- package/framework/standards/frontend/nextjs/app-router.md +127 -123
- package/framework/standards/frontend/nextjs/components.md +136 -132
- package/framework/standards/frontend/nextjs/data-fetching.md +130 -126
- package/framework/standards/frontend/nextjs/forms.md +134 -128
- package/framework/standards/frontend/nextjs/motion-patterns.md +328 -322
- package/framework/standards/frontend/nextjs/naming-conventions.md +71 -67
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +229 -225
- package/framework/standards/frontend/nextjs/project-structure.md +106 -102
- package/framework/standards/frontend/nextjs/state-management.md +76 -72
- package/framework/standards/frontend/nextjs/testing.md +115 -111
- package/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -192
- package/framework/standards/infrastructure/neon/neon-pgrag.md +6 -2
- package/framework/standards/infrastructure/neon/neon-pgvector.md +4 -0
- package/framework/standards/infrastructure/neon/neon-setup.md +5 -1
- package/framework/standards/integration/mcp/mcp-tools.md +471 -462
- package/framework/templates/REGISTRY.json +1745 -1239
- package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -0
- package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -0
- package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -0
- package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -0
- package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -0
- package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -0
- package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -0
- package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -0
- package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -0
- package/framework/templates/docs/onboarding.md +4 -4
- package/framework/templates/tasks.template.json +17 -0
- package/package.json +89 -83
- package/src/commands/project/init.js +16 -0
- package/src/commands/validation/validate-feature.js +1 -1
- package/src/core/paths/output-schema.js +6 -6
- package/src/core/state/state-manager.js +1 -1
- package/src/core/templates/template-registry.js +289 -256
- package/src/lib/detectors/design-system-detector.js +1 -1
- package/src/lib/generators/context-generator.js +516 -518
- package/src/lib/generators/scaffold-generator.js +23 -26
- package/src/lib/installers/memory-installer.js +138 -0
- package/src/lib/phase-chain/phase-validator.js +4 -4
- package/src/lib/risk-detector.js +80 -0
- package/src/lib/tasks/tasks-json-parser.js +185 -0
- package/src/scripts/setup-infra.js +25 -0
- package/src/utils/hooks-installer.js +59 -10
- package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +0 -310
- package/framework/templates/integrations/semantic-kernel-neon.cs +0 -125
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: morph-review
|
|
3
3
|
description: Conduz a fase de revisão e produz o review-report.md para o Gate 3
|
|
4
4
|
version: core
|
|
5
|
-
when-to-invoke: ao iniciar a fase review, após todas as
|
|
5
|
+
when-to-invoke: ao iniciar a fase review, após todas as tasks de tasks.json estarem com status `done`
|
|
6
6
|
user-invokable: true
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -13,8 +13,8 @@ Verificar se a implementação atende ao mandate.md e produzir um review-report.
|
|
|
13
13
|
claro o suficiente para que o usuário tome a decisão de aprovação ou rejeição.
|
|
14
14
|
|
|
15
15
|
## Quando invocar
|
|
16
|
-
Ao iniciar a fase review — após todas as
|
|
17
|
-
e o recap.md estar atualizado.
|
|
16
|
+
Ao iniciar a fase review — após todas as tasks de `tasks.json` estarem com status `done`
|
|
17
|
+
e o `recap.md` estar atualizado. Normalmente invocada pela skill orquestradora `morph-apply`.
|
|
18
18
|
|
|
19
19
|
## O que fazer
|
|
20
20
|
|
|
@@ -47,16 +47,52 @@ e o recap.md estar atualizado.
|
|
|
47
47
|
- Preencha `sub_agents_dispatched` com a contagem de tasks onde `sub_agent_dispatched: true`
|
|
48
48
|
- Preencha `completed_at` com o timestamp atual
|
|
49
49
|
|
|
50
|
-
8. Apresente o
|
|
50
|
+
8. Apresente o Gate 3 segundo trust mode.
|
|
51
|
+
|
|
52
|
+
Ler `.morph/config/config.json → trust` (default `"auto"`). Calcular sinais de risco:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
import { shouldPauseGate } from '../../../src/lib/risk-detector.js';
|
|
56
|
+
const signals = {
|
|
57
|
+
evalScore: phaseScores.composite,
|
|
58
|
+
standardsViolations: blockingItems.filter(b => b.kind === 'standard').map(b => b.id),
|
|
59
|
+
};
|
|
60
|
+
const { pause, reason } = shouldPauseGate(config, signals);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Se `pause === true`**, use `AskUserQuestion`:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
question: "Gate 3 — Review de {feature} aprovado?{ reason ? ' Sinal: ' + reason : '' }"
|
|
67
|
+
header: "Gate 3"
|
|
68
|
+
options:
|
|
69
|
+
- { label: "aprovado, fechar feature", description: "Marcar feature como completed, habilitar /morph-archive" }
|
|
70
|
+
- { label: "preciso ajustar", description: "Apontar correções necessárias antes de fechar" }
|
|
71
|
+
- { label: "rollback", description: "Desfazer e voltar para implement" }
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Se `pause === false`**, exibir summary curto e prosseguir:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
## Gate 3 (auto-aprovado)
|
|
78
|
+
|
|
79
|
+
**Composite score:** {score}/10
|
|
80
|
+
**Dimensões:** arquitetura={X} contratos={Y} qualidade={Z} cobertura={W}
|
|
81
|
+
**Bloqueantes:** {N (zero esperado em auto-aprovação)}
|
|
82
|
+
**Recomendação:** Aprovado
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
O hook state-sync detecta a aprovação em answers de AskUserQuestion e marca `features[X].approvalGates.review = true`. Em auto sem AskUserQuestion, a skill atualiza state.json direto.
|
|
51
86
|
|
|
52
87
|
## Output esperado
|
|
53
88
|
- `.morph/features/{feature}/4-review/review-report.md` com scores e recomendação
|
|
54
89
|
- Trace da fase com `phase_summary` preenchido
|
|
55
|
-
- Gate 3
|
|
90
|
+
- Gate 3 marcado aprovado em state.json (auto ou manual)
|
|
56
91
|
|
|
57
92
|
## Referências
|
|
58
|
-
-
|
|
93
|
+
- `.morph/framework/MORPH.md` — seção 5 (Gate 3), seção 1 (papel Evaluator), Trust Mode
|
|
59
94
|
- `framework/skills/core/morph-eval/SKILL.md` — para calcular scores por dimensão
|
|
60
|
-
-
|
|
95
|
+
- `.morph/framework/evals/trace-schema.md` — formato canônico do trace
|
|
61
96
|
- `.morph/features/{feature}/2-plan/mandate.md` — critérios de done da feature
|
|
62
97
|
- `.morph/features/{feature}/3-implement/recap.md` — registro de execução
|
|
98
|
+
- `src/lib/risk-detector.js` — `shouldPauseGate` para Gate 3
|
|
@@ -30,7 +30,46 @@ Quando o projeto já tem código existente e você precisa entender o estado atu
|
|
|
30
30
|
|
|
31
31
|
**Padrões proibidos:** `Guid.NewGuid()`, classes não-sealed sem justificativa, exceptions como fluxo de controle, Repository pattern, `IRepository<T>`.
|
|
32
32
|
|
|
33
|
-
##
|
|
33
|
+
## Greenfield short-circuit
|
|
34
|
+
|
|
35
|
+
Antes de despachar Explore, verifique se o projeto é greenfield:
|
|
36
|
+
|
|
37
|
+
1. Use `Glob` para detectar presença de qualquer um destes:
|
|
38
|
+
- `**/*.csproj`
|
|
39
|
+
- `**/*.sln`
|
|
40
|
+
- `package.json` (na raiz)
|
|
41
|
+
- `src/**/*.cs` ou `src/**/*.ts` ou `src/**/*.tsx`
|
|
42
|
+
- `migrations/**/*`
|
|
43
|
+
|
|
44
|
+
2. Se **nenhum** for encontrado, o projeto é greenfield. Produza este `stack-scan.md` em `.morph/features/{feature}/0-proposal/` e retorne sem chamar Explore:
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
# Stack Scan — {feature}
|
|
48
|
+
|
|
49
|
+
**Status:** GREENFIELD (sem código source detectado)
|
|
50
|
+
|
|
51
|
+
## Stack
|
|
52
|
+
Project empty. Aplicar stack padrão de MORPH.md:
|
|
53
|
+
- Backend: .NET 10 + VSA + EF Core + Neon
|
|
54
|
+
- Frontend: Next.js App Router + Tailwind + Shadcn + Framer Motion
|
|
55
|
+
- IA: MAF (quando aplicável à feature)
|
|
56
|
+
- Jobs: Hangfire (apenas se necessário)
|
|
57
|
+
|
|
58
|
+
## Padrões obrigatórios
|
|
59
|
+
- IDs: `Guid.CreateVersion7()`
|
|
60
|
+
- Classes: `sealed` por padrão
|
|
61
|
+
- Erros: Result pattern (`result.Match()`)
|
|
62
|
+
|
|
63
|
+
## Padrões proibidos
|
|
64
|
+
`Guid.NewGuid()`, classes não-sealed sem justificativa, exceptions como fluxo de controle, Repository pattern, `IRepository<T>`.
|
|
65
|
+
|
|
66
|
+
## Recomendação
|
|
67
|
+
Compliance trivial (greenfield). Prosseguir para morph-brainstorming.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
3. Se algum dos arquivos foi encontrado, o projeto é brownfield — siga para o passo seguinte.
|
|
71
|
+
|
|
72
|
+
## O que fazer (brownfield)
|
|
34
73
|
|
|
35
74
|
1. Despache um `Explore` subagent para varrer o codebase:
|
|
36
75
|
|