@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.
Files changed (114) hide show
  1. package/README.md +367 -366
  2. package/docs/CHEATSHEET.md +3 -3
  3. package/docs/QUICKSTART.md +4 -4
  4. package/framework/CLAUDE.md +13 -0
  5. package/framework/MORPH.md +57 -36
  6. package/framework/agents.json +132 -127
  7. package/framework/commands/morph-apply.md +4 -21
  8. package/framework/commands/morph-archive.md +1 -1
  9. package/framework/commands/morph-proposal.md +2 -0
  10. package/framework/hooks/claude-code/core/enforce-phase-writes.js +1 -1
  11. package/framework/hooks/claude-code/core/protect-spec-files.js +1 -1
  12. package/framework/hooks/claude-code/core/state-sync.js +212 -0
  13. package/framework/hooks/shared/phase-utils.js +5 -4
  14. package/framework/hooks/shared/state-reader.js +1 -1
  15. package/framework/phases.json +1 -1
  16. package/framework/rubrics/backend.json +41 -36
  17. package/framework/rules/ai-agents-standards.md +45 -15
  18. package/framework/rules/morph-workflow.md +15 -34
  19. package/framework/rules/neon-standards.md +25 -26
  20. package/framework/schemas/tasks.schema.json +35 -0
  21. package/framework/skills/core/morph-apply/SKILL.md +154 -0
  22. package/framework/skills/core/morph-brainstorming/SKILL.md +53 -30
  23. package/framework/skills/core/morph-implement/SKILL.md +25 -14
  24. package/framework/skills/core/morph-plan/SKILL.md +91 -23
  25. package/framework/skills/core/morph-proposal/SKILL.md +137 -0
  26. package/framework/skills/core/morph-review/SKILL.md +43 -7
  27. package/framework/skills/core/morph-stack-scan/SKILL.md +40 -1
  28. package/framework/standards/STANDARDS.json +1729 -1134
  29. package/framework/standards/ai-agents/agent-session.md +160 -0
  30. package/framework/standards/ai-agents/batching.md +193 -0
  31. package/framework/standards/ai-agents/context-providers.md +188 -0
  32. package/framework/standards/ai-agents/mcp-server.md +250 -0
  33. package/framework/standards/ai-agents/mcp-tools.md +197 -0
  34. package/framework/standards/ai-agents/middleware-patterns.md +207 -0
  35. package/framework/standards/ai-agents/modalities-image-gen.md +173 -0
  36. package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -0
  37. package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -0
  38. package/framework/standards/ai-agents/modalities-vision.md +201 -0
  39. package/framework/standards/ai-agents/multi-agent-patterns.md +155 -0
  40. package/framework/standards/ai-agents/production.md +114 -258
  41. package/framework/standards/ai-agents/prompts-in-db.md +214 -0
  42. package/framework/standards/ai-agents/providers/model-registry.md +158 -0
  43. package/framework/standards/ai-agents/rag-custom-pgvector.md +243 -0
  44. package/framework/standards/ai-agents/service-tier-flex.md +135 -0
  45. package/framework/standards/ai-agents/setup.md +142 -316
  46. package/framework/standards/ai-agents/structured-output.md +249 -0
  47. package/framework/standards/ai-agents/sweet-spot.md +109 -0
  48. package/framework/standards/ai-agents/workflows.md +114 -284
  49. package/framework/standards/architecture/vertical-slice/vertical-slice.md +433 -429
  50. package/framework/standards/backend/api/validation.md +92 -88
  51. package/framework/standards/backend/database/postgresql/database.md +336 -332
  52. package/framework/standards/backend/database/vector-search-rag.md +599 -541
  53. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +4 -0
  54. package/framework/standards/backend/dotnet/result-pattern.md +4 -0
  55. package/framework/standards/backend/dotnet/scalar-ui.md +176 -172
  56. package/framework/standards/backend/dotnet/scrutor.md +4 -0
  57. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +278 -274
  58. package/framework/standards/backend/integrations/asaas/asaas-api.md +260 -216
  59. package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +354 -350
  60. package/framework/standards/backend/integrations/neon-auth/neon-auth.md +30 -19
  61. package/framework/standards/backend/integrations/resend/resend-email.md +400 -385
  62. package/framework/standards/data/nosql/cache/redis.md +106 -97
  63. package/framework/standards/data/nosql/cosmos-db.md +127 -118
  64. package/framework/standards/data/vector-search/rag-chunking.md +113 -104
  65. package/framework/standards/frontend/design-system/ai-image-generation.md +4 -0
  66. package/framework/standards/frontend/design-system/animations.md +164 -160
  67. package/framework/standards/frontend/design-system/naming.md +68 -64
  68. package/framework/standards/frontend/gsap/gsap-core.md +14 -8
  69. package/framework/standards/frontend/gsap/gsap-plugins.md +26 -21
  70. package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +9 -7
  71. package/framework/standards/frontend/nextjs/app-router.md +127 -123
  72. package/framework/standards/frontend/nextjs/components.md +136 -132
  73. package/framework/standards/frontend/nextjs/data-fetching.md +130 -126
  74. package/framework/standards/frontend/nextjs/forms.md +134 -128
  75. package/framework/standards/frontend/nextjs/motion-patterns.md +328 -322
  76. package/framework/standards/frontend/nextjs/naming-conventions.md +71 -67
  77. package/framework/standards/frontend/nextjs/nextjs-patterns.md +229 -225
  78. package/framework/standards/frontend/nextjs/project-structure.md +106 -102
  79. package/framework/standards/frontend/nextjs/state-management.md +76 -72
  80. package/framework/standards/frontend/nextjs/testing.md +115 -111
  81. package/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -192
  82. package/framework/standards/infrastructure/neon/neon-pgrag.md +6 -2
  83. package/framework/standards/infrastructure/neon/neon-pgvector.md +4 -0
  84. package/framework/standards/infrastructure/neon/neon-setup.md +5 -1
  85. package/framework/standards/integration/mcp/mcp-tools.md +471 -462
  86. package/framework/templates/REGISTRY.json +1745 -1239
  87. package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -0
  88. package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -0
  89. package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -0
  90. package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -0
  91. package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -0
  92. package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -0
  93. package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -0
  94. package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -0
  95. package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -0
  96. package/framework/templates/docs/onboarding.md +4 -4
  97. package/framework/templates/tasks.template.json +17 -0
  98. package/package.json +89 -83
  99. package/src/commands/project/init.js +16 -0
  100. package/src/commands/validation/validate-feature.js +1 -1
  101. package/src/core/paths/output-schema.js +6 -6
  102. package/src/core/state/state-manager.js +1 -1
  103. package/src/core/templates/template-registry.js +289 -256
  104. package/src/lib/detectors/design-system-detector.js +1 -1
  105. package/src/lib/generators/context-generator.js +516 -518
  106. package/src/lib/generators/scaffold-generator.js +23 -26
  107. package/src/lib/installers/memory-installer.js +138 -0
  108. package/src/lib/phase-chain/phase-validator.js +4 -4
  109. package/src/lib/risk-detector.js +80 -0
  110. package/src/lib/tasks/tasks-json-parser.js +185 -0
  111. package/src/scripts/setup-infra.js +25 -0
  112. package/src/utils/hooks-installer.js +59 -10
  113. package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +0 -310
  114. 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 tarefas de implementação serem concluídas
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 tarefas do tasks.md estarem com status Done
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 relatório ao usuário e aguarde o Gate 3.
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 apresentado ao usuário para aprovação
90
+ - Gate 3 marcado aprovado em state.json (auto ou manual)
56
91
 
57
92
  ## Referências
58
- - `framework/MORPH.md` — seção 5 (Gate 3) e seção 1 (papel Evaluator)
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
- - `framework/evals/trace-schema.md` — formato canônico do trace
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
- ## O que fazer
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