@polymorphism-tech/morph-spec 8.46.0 → 8.47.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 (140) hide show
  1. package/CLAUDE.md +5 -5
  2. package/README.md +2 -2
  3. package/bin/morph-spec.js +1 -4
  4. package/bin/validate.js +4 -25
  5. package/claude-plugin.json +1 -1
  6. package/docs/CHEATSHEET.md +2 -2
  7. package/docs/QUICKSTART.md +1 -1
  8. package/framework/CLAUDE.md +1 -1
  9. package/framework/MORPH.md +8 -8
  10. package/framework/commands/create-umbraco-lp.md +2 -0
  11. package/framework/commands/migrate-lp-to-umbraco.md +2 -0
  12. package/framework/commands/morph-archive.md +1 -1
  13. package/framework/commands/morph-hotfix.md +1 -1
  14. package/framework/commands/morph-infra.md +17 -203
  15. package/framework/commands/morph-media.md +3 -0
  16. package/framework/commands/morph-preflight.md +5 -28
  17. package/framework/commands/morph-proposal.md +2 -2
  18. package/framework/commands/morph-troubleshoot.md +2 -14
  19. package/framework/docs/CLI.md +3 -3
  20. package/framework/hooks/claude-code/core/state-sync.js +13 -1
  21. package/framework/hooks/shared/e2e-check.js +3 -4
  22. package/framework/hooks/shared/state-writer.js +1 -0
  23. package/framework/rules/ai-agents-standards.md +18 -16
  24. package/framework/rules/asaas-standards.md +3 -1
  25. package/framework/rules/csharp-standards.md +10 -8
  26. package/framework/rules/data-standards.md +5 -5
  27. package/framework/rules/dotnet-templates.md +1 -1
  28. package/framework/rules/frontend-standards.md +4 -2
  29. package/framework/rules/gsap-standards.md +10 -5
  30. package/framework/rules/hangfire-standards.md +3 -1
  31. package/framework/rules/infrastructure-standards.md +4 -2
  32. package/framework/rules/morph-workflow.md +2 -2
  33. package/framework/rules/neon-auth-standards.md +3 -1
  34. package/framework/rules/neon-standards.md +6 -4
  35. package/framework/rules/nextjs-standards.md +13 -11
  36. package/framework/rules/nextjs-templates.md +1 -1
  37. package/framework/rules/resend-standards.md +3 -1
  38. package/framework/schemas/feature.schema.json +1 -3
  39. package/framework/skills/README.md +1 -1
  40. package/framework/skills/core/create-umbraco-lp/SKILL.md +3 -3
  41. package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +3 -3
  42. package/framework/skills/core/morph-apply/SKILL.md +3 -3
  43. package/framework/skills/core/morph-brainstorming/SKILL.md +3 -3
  44. package/framework/skills/core/morph-hotfix/SKILL.md +4 -4
  45. package/framework/skills/core/morph-implement/SKILL.md +3 -3
  46. package/framework/skills/core/morph-machine/SKILL.md +3 -3
  47. package/framework/skills/core/morph-media/SKILL.md +3 -3
  48. package/framework/skills/core/morph-plan/SKILL.md +3 -3
  49. package/framework/skills/core/morph-proposal/SKILL.md +3 -3
  50. package/framework/skills/core/morph-review/SKILL.md +3 -3
  51. package/framework/skills/core/morph-stack-scan/SKILL.md +3 -3
  52. package/framework/skills/core/morph-standards/SKILL.md +6 -6
  53. package/framework/skills/core/morph-uiux/SKILL.md +3 -3
  54. package/framework/standards/STANDARDS.json +59 -56
  55. package/framework/standards/ai-agents/evals-with-cache.md +1 -1
  56. package/framework/standards/ai-agents/llm-runtime-defaults.md +1 -1
  57. package/framework/standards/ai-agents/modalities-speech-to-text.md +36 -26
  58. package/framework/standards/ai-agents/prompt-sources.md +6 -4
  59. package/framework/standards/ai-agents/providers/model-registry.md +1 -1
  60. package/framework/standards/ai-agents/rag-custom-pgvector.md +67 -39
  61. package/framework/standards/ai-agents/setup.md +1 -1
  62. package/framework/standards/ai-agents/structured-output.md +1 -1
  63. package/framework/standards/ai-agents/sweet-spot.md +1 -1
  64. package/framework/standards/architecture/code-comments.md +2 -2
  65. package/framework/standards/architecture/vertical-slice/vertical-slice.md +18 -9
  66. package/framework/standards/backend/api/validation.md +135 -47
  67. package/framework/standards/backend/database/postgresql/database.md +11 -7
  68. package/framework/standards/backend/database/vector-search-rag.md +207 -324
  69. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +14 -8
  70. package/framework/standards/backend/dotnet/result-pattern.md +40 -6
  71. package/framework/standards/backend/dotnet/scalar-ui.md +13 -7
  72. package/framework/standards/backend/dotnet/scrutor.md +1 -1
  73. package/framework/standards/backend/dotnet/testing.md +1 -1
  74. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +7 -7
  75. package/framework/standards/backend/integrations/asaas/asaas-api.md +309 -165
  76. package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +134 -154
  77. package/framework/standards/data/nosql/cache/redis.md +120 -44
  78. package/framework/standards/data/nosql/cosmos-db.md +114 -71
  79. package/framework/standards/frontend/design-system/animations.md +1 -1
  80. package/framework/standards/frontend/design-system/naming.md +1 -1
  81. package/framework/standards/frontend/nextjs/motion-patterns.md +45 -29
  82. package/framework/standards/frontend/nextjs/naming-conventions.md +1 -1
  83. package/framework/standards/infrastructure/docker/coolify-deploy.md +8 -6
  84. package/framework/standards/infrastructure/neon/neon-pgvector.md +120 -75
  85. package/framework/standards/infrastructure/neon/neon-setup.md +53 -31
  86. package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +2 -2
  87. package/framework/templates/code/dotnet/extensions/database-extensions.cs +1 -1
  88. package/framework/templates/code/dotnet/extensions/result-extensions.cs +27 -0
  89. package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +2 -2
  90. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaDisclosureTests.cs +1 -1
  91. package/framework/templates/infrastructure/docker/coolify.template.json +3 -3
  92. package/framework/templates/infrastructure/github/README.md +2 -1
  93. package/framework/templates/infrastructure/github/workflows/deploy-coolify.yml.hbs +2 -1
  94. package/package.json +1 -1
  95. package/src/commands/observability/telemetry.js +3 -5
  96. package/src/commands/project/init.js +2 -1
  97. package/src/commands/project/update.js +16 -18
  98. package/src/commands/state/approve.js +17 -0
  99. package/src/commands/state/gate-check.js +4 -14
  100. package/src/commands/validation/verify.js +3 -12
  101. package/src/core/paths/output-schema.js +1 -1
  102. package/src/dashboard/app/App.jsx +0 -2
  103. package/src/dashboard/app/components/CommandPalette.jsx +2 -3
  104. package/src/dashboard/app/components/EntityLink.jsx +0 -1
  105. package/src/dashboard/app/components/Markdown.jsx +1 -1
  106. package/src/dashboard/app/components/Sidebar.jsx +1 -2
  107. package/src/dashboard/app/pages/RulesMap.jsx +3 -3
  108. package/src/dashboard/app/pages/SkillsLibrary.jsx +3 -3
  109. package/src/dashboard/scanner/activity-scanner.js +1 -1
  110. package/src/dashboard/scanner/docs-scanner.js +5 -23
  111. package/src/dashboard/scanner/features-scanner.js +1 -1
  112. package/src/dashboard/scanner/index.js +0 -2
  113. package/src/dashboard/scanner/rules-scanner.js +15 -10
  114. package/src/dashboard/scanner/skills-scanner.js +2 -3
  115. package/src/lib/evaluator-report.js +13 -0
  116. package/src/lib/risk-detector.js +8 -0
  117. package/src/lib/stack/stack-profile.js +1 -1
  118. package/src/lib/validators/reuse/reuse-validator.js +2 -3
  119. package/src/lib/validators/reuse/symbol-scanner.js +2 -4
  120. package/src/lib/validators/validation-runner.js +8 -88
  121. package/src/lib/validators/verify-runner.js +22 -72
  122. package/src/scripts/setup-infra.js +33 -22
  123. package/src/utils/agents-installer.js +20 -8
  124. package/src/utils/file-copier.js +7 -5
  125. package/framework/commands/commit.md +0 -166
  126. package/framework/rubrics/backend.json +0 -41
  127. package/framework/rubrics/default.json +0 -36
  128. package/framework/rubrics/frontend.json +0 -36
  129. package/framework/templates/project/validate.js +0 -97
  130. package/src/dashboard/app/pages/Rubrics.jsx +0 -97
  131. package/src/dashboard/scanner/rubrics-scanner.js +0 -12
  132. package/src/lib/validators/architecture/architecture-validator.js +0 -270
  133. package/src/lib/validators/architecture/index.js +0 -7
  134. package/src/lib/validators/css/css-validator.js +0 -340
  135. package/src/lib/validators/css/index.js +0 -7
  136. package/src/lib/validators/design-system/design-system-validator.js +0 -237
  137. package/src/lib/validators/design-system/index.js +0 -7
  138. package/src/lib/validators/score-aggregator.js +0 -244
  139. package/src/lib/validators/ui/index.js +0 -7
  140. package/src/lib/validators/ui/ui-contrast-validator.js +0 -422
@@ -2,9 +2,9 @@
2
2
  name: create-umbraco-lp
3
3
  description: Guia a criação de uma landing page nova ponta-a-ponta a partir do template MORPH_Umbraco_LP_Template (Umbraco 17 + Next.js): coleta decisões, scaffolda, sobe e valida, customiza branding e módulos, e entrega checklist final.
4
4
  version: core
5
- when-to-invoke: ao iniciar um novo projeto de LP com o template Umbraco genérico
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando for iniciar um novo projeto de LP com o template Umbraco genérico
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  stacks:
9
9
  - umbraco
10
10
  ---
@@ -2,9 +2,9 @@
2
2
  name: migrate-lp-to-umbraco
3
3
  description: Migra uma landing page existente (React/Vite, Next.js estático ou HTML) para o template Umbraco-headless MORPH_Umbraco_LP_Template entregando a LP EXATAMENTE igual à origem (mesmo CSS, imagens, fontes e comportamento) + Umbraco por cima — obtenção automática do template, inventário de seções, lift-and-rewire verbatim de cada seção para módulo editável, conexão do formulário ao backend de leads e gate de paridade determinístico. Repo-agnóstica: roda em qualquer lugar, sem template nem origem pré-baixados.
4
4
  version: core
5
- when-to-invoke: ao receber instrução "use /migrate-lp-to-umbraco {projeto}" do usuário, ou quando o usuário descrever necessidade de migrar uma LP para Umbraco
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando o usuário pedir "use /migrate-lp-to-umbraco {projeto}" ou descrever a necessidade de migrar uma LP para Umbraco
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  stacks:
9
9
  - umbraco
10
10
  ---
@@ -2,9 +2,9 @@
2
2
  name: morph-apply
3
3
  description: Orquestra a execução autônoma de tasks de uma feature morph-spec. Analisa DAG de dependências em tasks.json e decide adaptativamente entre execução sequencial (auto-advance) ou paralela (Agent dispatch). Termina com morph-review e Gate 3.
4
4
  version: core
5
- when-to-invoke: após Gate 2 aprovado, ao receber instrução "use /morph-apply" ou "implementar feature"
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando chegar a instrução "use /morph-apply" ou "implementar feature" com o Gate 2 aprovado
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-apply
@@ -2,9 +2,9 @@
2
2
  name: morph-brainstorming
3
3
  description: Entende o negócio, os usuários e a arquitetura antes de qualquer planejamento técnico. Varre o ambiente primeiro, monta a árvore de decisões abertas e abre com a escolha de modo de descoberta (entrevista uma-pergunta-por-vez ou automático). Para projetos existentes, detecta desvios de stack e propõe plano de compliance.
4
4
  version: core
5
- when-to-invoke: ao receber um novo request de feature, antes de morph-plan
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando chegar um novo request de feature, antes de morph-plan
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-brainstorming
@@ -2,9 +2,9 @@
2
2
  name: morph-hotfix
3
3
  description: ADW cirúrgico de hotfix — resolve uma queda/bug crítico de produção com prioridade máxima em velocidade, com aprovação humana obrigatória antes do ship.
4
4
  version: core
5
- when-to-invoke: ao receber "/morph-hotfix {feature}", quando a morph-proposal classifica o pedido como workType hotfix (Passo 0), ou o usuário diz "produção caiu / hotfix / urgente"
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando chegar "/morph-hotfix {feature}", quando a morph-proposal classificar o pedido como workType hotfix (Passo 0), ou quando o usuário disser "produção caiu / hotfix / urgente" a respeito de um incidente
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-hotfix
@@ -43,7 +43,7 @@ subagent_type: "morph-scout"
43
43
 
44
44
  **Fallback** (se `morph-scout` não estiver registrado nos subagent types deste projeto): `general-purpose` com o campo `persona` do agente `scout` colado no prompt, **registrando o fallback nas notes da task**.
45
45
 
46
- Peça ao scout: localizar o root cause provável, os arquivos afetados e o blast radius (o que mais pode quebrar). Ele é read-only (Read/Glob/Grep/Bash somente-leitura) — não escreve código. Inclua as 8 cláusulas do contrato do relatório final no prompt (template literal em `morph-implement` §4 / `morph-apply` §3b): relatório no arquivo canônico como retorno, sem `SendMessage`; não tocar `tasks.json`/`feature.json`/`state.json` nem o board de sessão; sem build/test da suíte compartilhada em batch paralelo; no máximo 3 tasks por dispatch; commit `wip({taskId})` ao fim de cada task; nunca `taskkill /IM node.exe`; nunca mutar código de produção para ver teste falhar.
46
+ Peça ao scout: localizar o root cause provável, os arquivos afetados e o blast radius (o que mais pode quebrar). Ele é read-only (Read/Glob/Grep/Bash somente-leitura): não cole as 8 cláusulas do contrato de implementador (`morph-implement` §4 / `morph-apply` §3b) — commit `wip`, orçamento de teste e limite de tasks não se aplicam a quem não escreve. O prompt dele diz só: não escreve nem reverte nada, e o mapa é a mensagem final (Observado/Inferido, no contrato de citação que a persona já carrega). Você grava o mapa.
47
47
 
48
48
  **Audite o mapa antes do brief.** Grave a resposta do scout em `.morph/features/{feature}/2-plan/scout-map.md` e rode `morph-spec scout-check .morph/features/{feature}/2-plan/scout-map.md --json`. Exit ≠ 0 → descarte o mapa e re-despache o scout **uma** vez com as `failures` no prompt (o mapa novo abre com o motivo); na segunda reprovação, faça você o grep do root cause e siga. Root cause e blast radius que entram no brief se conferem com grep próprio mesmo com o mapa aprovado: sob pressão de hotfix, citação inventada vira um segundo incidente.
49
49
 
@@ -2,9 +2,9 @@
2
2
  name: morph-implement
3
3
  description: Guia a execução de cada tarefa de implementação com standard e persona adequados
4
4
  version: core
5
- when-to-invoke: ao iniciar cada task de implementação listada em tasks.json
6
- user-invokable: false
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando for iniciar cada task de implementação listada em tasks.json
6
+ user-invocable: false
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-implement
@@ -2,9 +2,9 @@
2
2
  name: morph-machine
3
3
  description: Cuida da RAM e da CPU da máquina enquanto o morph-spec trabalha — fila de builds e testes pesados (heavy), processos órfãos, worktrees de sub-agent que sobram. Invoque quando a máquina ou o editor estiver lento ou sem RAM, quando um comando voltar "⏳ não rodou" ou sair com exit 3 (fila cheia), quando sobrar agent-* em worktrees/, ou antes de despachar vários sub-agents que compilam ou testam em paralelo.
4
4
  version: core
5
- when-to-invoke: quando a máquina está lenta ou sem RAM, um comando pesado esperou ou foi recusado pela fila, sobrou worktree de sub-agent, ou vários sub-agents pesados vão rodar em paralelo
6
- user-invokable: false
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando a máquina estiver lenta ou sem RAM, um comando pesado esperou ou foi recusado pela fila, sobrou worktree de sub-agent, ou vários sub-agents pesados vão rodar em paralelo
6
+ user-invocable: false
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-machine
@@ -2,9 +2,9 @@
2
2
  name: morph-media
3
3
  description: Conduz a AUTORIA de mídia gerada por IA — escolher o modelo pelo trabalho, montar o prompt como spec versionada, encadear derivadas a partir de um herói aprovado, subir a escada de custo e conduzir o gate humano de escolha entre N candidatas. É o lado processo; o conhecimento de API, custo e conformidade vive nos standards de mídia.
4
4
  version: core
5
- when-to-invoke: quando a tarefa é PRODUZIR imagem ou vídeo por IA (catálogo, marketing, asset de LP) e alguém precisa decidir modelo, prompt e aprovação
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando a tarefa for PRODUZIR imagem ou vídeo por IA (catálogo, marketing, asset de LP) e alguém precisar decidir modelo, prompt e aprovação
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  stacks:
9
9
  - dotnet
10
10
  - nextjs
@@ -2,9 +2,9 @@
2
2
  name: morph-plan
3
3
  description: Guia a produção dos artefatos de planejamento de uma feature (use cases, spec.md, tasks.json) e apresenta o Gate 2 trust-aware.
4
4
  version: core
5
- when-to-invoke: ao iniciar a fase plan de uma feature, após o Gate 1 (proposal aprovado)
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando a fase plan de uma feature começar, após o Gate 1 (proposal aprovado)
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-plan
@@ -2,9 +2,9 @@
2
2
  name: morph-proposal
3
3
  description: Orquestra a fase de proposta+plano de uma feature morph-spec. Encadeia morph-brainstorming (Gate 1) e morph-plan (Gate 2). Em trust:auto pula gates sem sinais de risco.
4
4
  version: core
5
- when-to-invoke: ao receber instrução "use /morph-proposal" do usuário, ou ao iniciar uma nova feature
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando o usuário pedir "use /morph-proposal" ou ao iniciar uma nova feature
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-proposal
@@ -2,9 +2,9 @@
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 tasks de tasks.json estarem com status `done`
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando a fase review começar, depois que todas as tasks de tasks.json estiverem com status `done`
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-review
@@ -2,9 +2,9 @@
2
2
  name: morph-stack-scan
3
3
  description: Varre o codebase existente, detecta stack atual, compara com o stack padrão e registra desvios em stack-scan.md
4
4
  version: core
5
- when-to-invoke: ao iniciar uma feature em projeto brownfield (codebase já existente)
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando uma feature começar em projeto brownfield (codebase já existente)
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-stack-scan
@@ -2,16 +2,16 @@
2
2
  name: morph-standards
3
3
  description: Localiza um standard específico via busca server-side (morph-spec standards --find) e carrega só o necessário
4
4
  version: core
5
- when-to-invoke: quando precisar consultar um standard específico durante a implementação
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando precisar consultar um standard específico durante a implementação
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-standards
11
11
 
12
12
  ## Objetivo
13
13
  Encontrar o standard certo para a situação atual e carregar apenas o necessário no contexto.
14
- Nunca abra o `STANDARDS.json` inteiro (65 KB) — a busca server-side já devolve o suficiente
14
+ Nunca abra o `STANDARDS.json` inteiro (mais de 150 KB) — a busca server-side já devolve o suficiente
15
15
  para aplicar o standard na maioria dos casos.
16
16
 
17
17
  ## Quando invocar
@@ -24,8 +24,8 @@ ou de teste — e o `spec.md` e os standards da task não bastarem para resolver
24
24
  ```
25
25
  morph-spec standards --find "<domínio/tecnologia da task>" [--category <cat>] [--tags <a,b>] [--json]
26
26
  ```
27
- Devolve o **top 3** como `id · path · digest` — o `digest` é o texto completo do standard;
28
- na maioria dos casos ele já basta para aplicar o padrão, sem abrir o `.md`.
27
+ Devolve o **top 3** como `id · path · digest` — o `digest` é um resumo do standard (~700 chars),
28
+ não o texto completo; na maioria dos casos ele já basta para aplicar o padrão, sem abrir o `.md`.
29
29
 
30
30
  2. Se dois resultados parecerem relevantes e houver conflito, adote o mais específico ao stack
31
31
  do projeto. Registre o conflito no `decisions.md` da feature.
@@ -2,9 +2,9 @@
2
2
  name: morph-uiux
3
3
  description: Conduz a fase opcional de UI/UX — design system, mockups, componentes e fluxos — entre o Gate 1 e o plan, despachando a persona ui-designer para o trabalho visual.
4
4
  version: core
5
- when-to-invoke: ao tomar o ramo uiux (morph-spec advance --design), depois do Gate 1 e antes do morph-plan
6
- user-invokable: true
7
- cliVersion: "8.46.0"
5
+ when_to_use: Use quando o ramo uiux for tomado (morph-spec advance --design), depois do Gate 1 e antes do morph-plan
6
+ user-invocable: true
7
+ cliVersion: "8.47.0"
8
8
  ---
9
9
 
10
10
  # morph-uiux