@polymorphism-tech/morph-spec 8.33.0 → 8.35.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 (253) hide show
  1. package/CLAUDE.md +22 -2
  2. package/README.md +2 -2
  3. package/bin/morph-spec.js +43 -5
  4. package/claude-plugin.json +1 -1
  5. package/docs/CHEATSHEET.md +5 -4
  6. package/docs/QUICKSTART.md +1 -1
  7. package/framework/CLAUDE.md +2 -2
  8. package/framework/MORPH.md +20 -22
  9. package/framework/agents.json +198 -44
  10. package/framework/ai-pin.json +22 -0
  11. package/framework/commands/morph-media.md +45 -0
  12. package/framework/docs/CLI.md +238 -10
  13. package/framework/evals/proof-rubrics/README.md +76 -0
  14. package/framework/evals/proof-rubrics/eval-de-modelo.md +64 -0
  15. package/framework/evals/proof-rubrics/fiacao.md +54 -0
  16. package/framework/evals/proof-rubrics/guard-cego.md +52 -0
  17. package/framework/evals/proof-rubrics/media-claims.md +109 -0
  18. package/framework/evals/proof-rubrics/mutation-proof.md +77 -0
  19. package/framework/evals/proof-rubrics/observabilidade-genai.md +119 -0
  20. package/framework/evals/proof-rubrics/verde-nao-e-coberto.md +48 -0
  21. package/framework/evals/rubrics/architecture.md +30 -0
  22. package/framework/evals/rubrics/code-quality.md +26 -0
  23. package/framework/evals/rubrics/test-coverage.md +20 -0
  24. package/framework/hooks/README.md +11 -1
  25. package/framework/hooks/claude-code/core/block-destructive-worktree-removal.js +5 -8
  26. package/framework/hooks/claude-code/core/block-raw-worktree-add.js +79 -0
  27. package/framework/hooks/claude-code/core/chain.js +27 -7
  28. package/framework/hooks/claude-code/core/protect-spec-files.js +41 -4
  29. package/framework/hooks/claude-code/core/worktree-context.js +83 -14
  30. package/framework/hooks/claude-code/core/worktree-create.js +206 -0
  31. package/framework/hooks/claude-code/core/worktree-env-inject.js +87 -0
  32. package/framework/hooks/claude-code/core/worktree-remove.js +81 -0
  33. package/framework/hooks/shared/command-tokens.js +23 -0
  34. package/framework/hooks/shared/e2e-check.js +0 -0
  35. package/framework/hooks/shared/git-paths.js +25 -0
  36. package/framework/hooks/shared/hook-response.js +17 -0
  37. package/framework/hooks/shared/morph-cli.js +134 -0
  38. package/framework/rules/ai-agents-standards.md +14 -2
  39. package/framework/rules/infrastructure-standards.md +3 -1
  40. package/framework/schemas/ai-pin.schema.json +97 -0
  41. package/framework/schemas/config.schema.json +107 -0
  42. package/framework/schemas/feature.schema.json +23 -4
  43. package/framework/skills/core/create-umbraco-lp/SKILL.md +1 -1
  44. package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +1 -1
  45. package/framework/skills/core/morph-apply/SKILL.md +28 -7
  46. package/framework/skills/core/morph-brainstorming/SKILL.md +1 -1
  47. package/framework/skills/core/morph-eval/SKILL.md +1 -1
  48. package/framework/skills/core/morph-hotfix/SKILL.md +2 -2
  49. package/framework/skills/core/morph-implement/SKILL.md +20 -2
  50. package/framework/skills/core/morph-media/SKILL.md +215 -0
  51. package/framework/skills/core/morph-plan/SKILL.md +38 -4
  52. package/framework/skills/core/morph-proposal/SKILL.md +1 -1
  53. package/framework/skills/core/morph-review/SKILL.md +166 -9
  54. package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
  55. package/framework/skills/core/morph-standards/SKILL.md +1 -1
  56. package/framework/skills/core/morph-uiux/SKILL.md +1 -1
  57. package/framework/standards/PROVENANCE.json +81 -3
  58. package/framework/standards/STANDARDS.json +1504 -830
  59. package/framework/standards/ai-agents/agent-archetypes.md +160 -0
  60. package/framework/standards/ai-agents/agent-session.md +256 -160
  61. package/framework/standards/ai-agents/agent-spec.md +196 -0
  62. package/framework/standards/ai-agents/batching.md +217 -193
  63. package/framework/standards/ai-agents/context-providers.md +261 -188
  64. package/framework/standards/ai-agents/conversational-agent-with-phases.md +239 -0
  65. package/framework/standards/ai-agents/cost-and-budget.md +256 -0
  66. package/framework/standards/ai-agents/durable-workflows-hitl.md +98 -5
  67. package/framework/standards/ai-agents/evals-with-cache.md +289 -0
  68. package/framework/standards/ai-agents/guardrails.md +222 -0
  69. package/framework/standards/ai-agents/llm-runtime-defaults.md +226 -0
  70. package/framework/standards/ai-agents/mcp-server.md +351 -250
  71. package/framework/standards/ai-agents/mcp-tools.md +250 -197
  72. package/framework/standards/ai-agents/media-pipeline.md +352 -0
  73. package/framework/standards/ai-agents/media-video.md +267 -0
  74. package/framework/standards/ai-agents/middleware-patterns.md +241 -207
  75. package/framework/standards/ai-agents/modalities-image-gen.md +422 -173
  76. package/framework/standards/ai-agents/modalities-speech-to-text.md +177 -171
  77. package/framework/standards/ai-agents/modalities-text-to-speech.md +189 -181
  78. package/framework/standards/ai-agents/modalities-vision.md +205 -201
  79. package/framework/standards/ai-agents/multi-agent-patterns.md +211 -155
  80. package/framework/standards/ai-agents/observability-patterns.md +227 -17
  81. package/framework/standards/ai-agents/production.md +260 -231
  82. package/framework/standards/ai-agents/prompt-sources.md +389 -0
  83. package/framework/standards/ai-agents/providers/model-registry.md +293 -158
  84. package/framework/standards/ai-agents/rag-custom-pgvector.md +69 -4
  85. package/framework/standards/ai-agents/service-tier-flex.md +143 -135
  86. package/framework/standards/ai-agents/setup.md +166 -50
  87. package/framework/standards/ai-agents/structured-output.md +280 -249
  88. package/framework/standards/ai-agents/sweet-spot.md +129 -109
  89. package/framework/standards/ai-agents/testing-ai.md +236 -0
  90. package/framework/standards/ai-agents/vector-data-extensions.md +50 -20
  91. package/framework/standards/ai-agents/workflows.md +27 -7
  92. package/framework/standards/frontend/design-system/ai-image-generation.md +12 -0
  93. package/framework/standards/frontend/design-system/ai-video-generation.md +13 -0
  94. package/framework/standards/infrastructure/docker/local-compose-isolation.md +90 -0
  95. package/framework/templates/REGISTRY.json +14 -1
  96. package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -95
  97. package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -58
  98. package/framework/templates/dotnet/ai-kit/Directory.Build.props +25 -0
  99. package/framework/templates/dotnet/ai-kit/Directory.Packages.props +26 -0
  100. package/framework/templates/dotnet/ai-kit/Morph.AiKit.sln +56 -0
  101. package/framework/templates/dotnet/ai-kit/NuGet.config +12 -0
  102. package/framework/templates/dotnet/ai-kit/README.md +128 -0
  103. package/framework/templates/dotnet/ai-kit/global.json +9 -0
  104. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentApi.cs +65 -0
  105. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentFactory.cs +289 -0
  106. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentFactoryOptions.cs +91 -0
  107. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentSpec.cs +91 -0
  108. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentSpecOptions.cs +181 -0
  109. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/AiKitAssemblyMarker.cs +14 -0
  110. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Conversation/ConversationStore.cs +174 -0
  111. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Conversation/IConversationStore.cs +54 -0
  112. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Conversation/InMemoryConversationStore.cs +75 -0
  113. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/CountingChatClient.cs +71 -0
  114. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalAssertion.cs +246 -0
  115. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalCacheMissException.cs +57 -0
  116. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalCacheOptions.cs +78 -0
  117. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalCacheStamp.cs +225 -0
  118. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalFixture.cs +463 -0
  119. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalMode.cs +32 -0
  120. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalQualityEvaluators.cs +49 -0
  121. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalScenario.cs +214 -0
  122. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalSummary.cs +168 -0
  123. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/OfflineChatClient.cs +142 -0
  124. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/ShortPathResponseCache.cs +349 -0
  125. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/IMediaGenerator.cs +42 -0
  126. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/IMediaProvider.cs +77 -0
  127. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaArtifact.cs +28 -0
  128. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaDisclosure.cs +107 -0
  129. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaGenerator.cs +253 -0
  130. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaIdempotencyKey.cs +103 -0
  131. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaJob.cs +259 -0
  132. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaJobId.cs +21 -0
  133. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaJobState.cs +47 -0
  134. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaPricing.cs +102 -0
  135. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaProvenance.cs +44 -0
  136. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaRequest.cs +192 -0
  137. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaResult.cs +94 -0
  138. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaReview.cs +99 -0
  139. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaSeams.cs +97 -0
  140. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaStore.cs +133 -0
  141. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MorphMedia.cs +93 -0
  142. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/Providers/GoogleImageProvider.cs +112 -0
  143. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/Providers/OpenAIImageProvider.cs +288 -0
  144. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/Providers/VeoVideoProvider.cs +158 -0
  145. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Middleware/IUsageCostSink.cs +29 -0
  146. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Middleware/UsageCostMiddleware.cs +208 -0
  147. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Middleware/UsageCostRecord.cs +95 -0
  148. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Morph.AiKit.csproj +38 -0
  149. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Observability/MorphOpenTelemetryExtensions.cs +119 -0
  150. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Observability/MorphTelemetryOptions.cs +82 -0
  151. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/IProviderClientFactory.cs +33 -0
  152. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/ModelAlias.cs +267 -0
  153. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/ModelRegistry.cs +474 -0
  154. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/model-registry.v2.json +87 -0
  155. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Rag/DeltaIngest.cs +169 -0
  156. package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Rag/DeltaPlan.cs +49 -0
  157. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/AgentFactoryTests.cs +495 -0
  158. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/AgentSpecTests.cs +260 -0
  159. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/ConversationStoreTests.cs +405 -0
  160. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/DeltaIngestTests.cs +379 -0
  161. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalAssertionTests.cs +197 -0
  162. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalCacheMissTests.cs +139 -0
  163. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalCacheStampTests.cs +157 -0
  164. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalFailuresTests.cs +178 -0
  165. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalFixtureTests.cs +153 -0
  166. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalRefreshTests.cs +194 -0
  167. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalWorkspace.cs +86 -0
  168. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/KitEvals.cs +213 -0
  169. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/OfflineChatClientTests.cs +95 -0
  170. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeChatClient.cs +225 -0
  171. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeChatClientTests.cs +215 -0
  172. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeClock.cs +33 -0
  173. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeMediaProvider.cs +89 -0
  174. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeProviderClientFactory.cs +55 -0
  175. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeUsageCostSink.cs +60 -0
  176. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/InMemoryMediaStore.cs +131 -0
  177. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaAccessibilityTests.cs +133 -0
  178. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaAliasIsNotAnAgentTests.cs +127 -0
  179. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaDisclosureTests.cs +216 -0
  180. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaGeneratorTests.cs +264 -0
  181. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaIdempotencyKeyTests.cs +148 -0
  182. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaJobStateTests.cs +184 -0
  183. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaReviewTests.cs +89 -0
  184. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaStoreTests.cs +98 -0
  185. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/ModelRegistryTests.cs +451 -0
  186. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Morph.AiKit.Tests.csproj +76 -0
  187. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/SkeletonSmokeTests.cs +33 -0
  188. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/TelemetryTests.cs +261 -0
  189. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/UsageCostMiddlewareTests.cs +374 -0
  190. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/.morph-eval-cache.json +12 -0
  191. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/orcamento.acme.a-resposta-estruturada/1/CF70A7CE27BBD66A/contents.data +13 -0
  192. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/orcamento.acme.a-resposta-estruturada/1/CF70A7CE27BBD66A/entry.json +7 -0
  193. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.a-saudacao/1/19F631228C6E00BA/contents.data +13 -0
  194. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.a-saudacao/1/19F631228C6E00BA/entry.json +7 -0
  195. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.b-escalonamento/1/A24A7C9BDD8239D8/contents.data +13 -0
  196. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.b-escalonamento/1/A24A7C9BDD8239D8/entry.json +7 -0
  197. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.globex.a-saudacao/1/E38CD37DF003EDB7/contents.data +13 -0
  198. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.globex.a-saudacao/1/E38CD37DF003EDB7/entry.json +7 -0
  199. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/orcamento/acme/a-resposta-estruturada.json +24 -0
  200. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/triagem/acme/a-saudacao.json +23 -0
  201. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/triagem/acme/b-escalonamento.json +24 -0
  202. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/triagem/globex/a-saudacao.json +23 -0
  203. package/framework/templates/infrastructure/docker/docker-compose.template.yml +24 -14
  204. package/package.json +3 -3
  205. package/src/commands/e2e/e2e.js +91 -40
  206. package/src/commands/project/doctor.js +143 -6
  207. package/src/commands/project/env.js +95 -0
  208. package/src/commands/project/update.js +469 -153
  209. package/src/commands/project/worktree.js +274 -53
  210. package/src/commands/state/advance.js +24 -2
  211. package/src/commands/state/approve.js +33 -1
  212. package/src/commands/state/create.js +72 -11
  213. package/src/commands/state/delete.js +8 -0
  214. package/src/commands/state/finish.js +360 -53
  215. package/src/commands/state/gate-check.js +190 -6
  216. package/src/commands/state/score.js +36 -1
  217. package/src/commands/validation/verify.js +134 -25
  218. package/src/core/state/state-manager.js +9 -1
  219. package/src/dashboard/app/pages/HookInspector.jsx +430 -418
  220. package/src/dashboard/scanner/hooks-scanner.js +5 -1
  221. package/src/lib/ai/ai-checks.js +182 -0
  222. package/src/lib/ai/ai-project-scan.js +347 -0
  223. package/src/lib/ai/code-audit.js +181 -0
  224. package/src/lib/ai/comment-stripper.js +184 -0
  225. package/src/lib/ai/pin-drift.js +138 -0
  226. package/src/lib/ai/registry-audit.js +285 -0
  227. package/src/lib/e2e/compose-env.js +55 -14
  228. package/src/lib/e2e/stack-teardown.js +115 -0
  229. package/src/lib/evaluator-report.js +269 -15
  230. package/src/lib/generators/architecture-scanner.js +2 -1
  231. package/src/lib/git/default-branch.js +92 -4
  232. package/src/lib/graph/graphifyignore.js +2 -1
  233. package/src/lib/installers/effects.js +193 -0
  234. package/src/lib/installers/templates-reconcile.js +3 -3
  235. package/src/lib/risk-detector.js +284 -0
  236. package/src/lib/standards/verified-against.js +276 -0
  237. package/src/lib/tasks/eval-node.js +485 -0
  238. package/src/lib/tasks/linux-runner.js +297 -0
  239. package/src/lib/tasks/test-nodes.js +486 -0
  240. package/src/lib/tasks/test-runner.js +431 -37
  241. package/src/lib/validators/verify-runner.js +590 -28
  242. package/src/lib/worktree/dirs.js +32 -0
  243. package/src/lib/worktree/docker-audit.js +287 -0
  244. package/src/lib/worktree/env-allocator.js +69 -11
  245. package/src/lib/worktree/worktree-audit.js +70 -3
  246. package/src/scripts/setup-infra.js +24 -11
  247. package/src/utils/agents-installer.js +18 -8
  248. package/src/utils/claude-md-injector.js +10 -5
  249. package/src/utils/file-copier.js +28 -16
  250. package/src/utils/hooks-installer.js +75 -29
  251. package/src/utils/skills-installer.js +194 -187
  252. package/src/utils/version-checker.js +68 -3
  253. package/framework/standards/ai-agents/prompts-in-db.md +0 -214
@@ -8,13 +8,30 @@
8
8
  "title": ".NET Senior Engineer",
9
9
  "icon": "🔷",
10
10
  "color": "blue",
11
- "domains": ["backend", "backend-api", "architecture"],
11
+ "domains": [
12
+ "backend",
13
+ "backend-api",
14
+ "architecture"
15
+ ],
12
16
  "keywords": [
13
- "backend", "api", "dotnet", ".net", "csharp", "c#",
14
- "minimal api", "vertical slice", "vsa", "result pattern",
15
- "feature slice", "endpoint", "handler", "validator"
17
+ "backend",
18
+ "api",
19
+ "dotnet",
20
+ ".net",
21
+ "csharp",
22
+ "c#",
23
+ "minimal api",
24
+ "vertical slice",
25
+ "vsa",
26
+ "result pattern",
27
+ "feature slice",
28
+ "endpoint",
29
+ "handler",
30
+ "validator"
31
+ ],
32
+ "stack": [
33
+ "dotnet"
16
34
  ],
17
- "stack": ["dotnet"],
18
35
  "standards": [
19
36
  "architecture-vertical-slice-vertical-slice",
20
37
  "backend-dotnet-result-pattern",
@@ -23,7 +40,9 @@
23
40
  "backend-dotnet-testing",
24
41
  "backend-integrations-neon-auth-neon-auth"
25
42
  ],
26
- "mcp": ["context7"],
43
+ "mcp": [
44
+ "context7"
45
+ ],
27
46
  "model": "sonnet",
28
47
  "persona": "Você é um engenheiro .NET sênior. Pensa em VSA com handlers diretos, result pattern, sealed classes, Guid.CreateVersion7(). Acesso a dados: ApplicationDbContext injetado direto no slice (DbSet<T> já é repository, DbContext já é unit of work); para concorrência ou SQL específico, store dedicado hand-written com justificativa em decisions.md; nunca uma camada de Service/Manager; nunca repository genérico (IRepository<T>/IUnitOfWork). Não usa exceptions como fluxo. Consulta o standard antes de escrever cada slice. Nomeia tudo em PascalCase para tipos, camelCase para parâmetros. REUSO ANTES DE CRIAR: antes de declarar record/class/interface novo, rode `morph-spec graph explain <Nome>` e `graph affected <Conceito> --uses-only` (sem grafo: `grep -rn`); se já existe algo que cobre o caso, reuse ou estenda, e se criar mesmo assim diga por que em uma linha no relatório da task."
29
48
  },
@@ -31,18 +50,33 @@
31
50
  "title": "EF Core / Database Modeler",
32
51
  "icon": "🗄️",
33
52
  "color": "cyan",
34
- "domains": ["database", "data-modeling", "migrations"],
53
+ "domains": [
54
+ "database",
55
+ "data-modeling",
56
+ "migrations"
57
+ ],
35
58
  "keywords": [
36
- "ef core", "entity framework", "neon", "postgres", "postgresql",
37
- "migration", "dbcontext", "navigation property", "configuration"
59
+ "ef core",
60
+ "entity framework",
61
+ "neon",
62
+ "postgres",
63
+ "postgresql",
64
+ "migration",
65
+ "dbcontext",
66
+ "navigation property",
67
+ "configuration"
68
+ ],
69
+ "stack": [
70
+ "dotnet"
38
71
  ],
39
- "stack": ["dotnet"],
40
72
  "standards": [
41
73
  "backend-database-postgresql-database",
42
74
  "infrastructure-neon-setup",
43
75
  "infrastructure-neon-pgvector"
44
76
  ],
45
- "mcp": ["context7"],
77
+ "mcp": [
78
+ "context7"
79
+ ],
46
80
  "model": "sonnet",
47
81
  "persona": "Você é um especialista em EF Core sobre Neon (Postgres). Pensa em migrations explícitas, configurações fluentes, navigation properties bem nomeadas, índices intencionais. Sempre Guid.CreateVersion7() para PKs. Sealed entities. Nunca leak de DbContext fora do handler. REUSO ANTES DE CRIAR: antes de declarar entidade, configuração ou value object novo, rode `morph-spec graph explain <Nome>` (sem grafo: `grep -rn`) — entidade duplicada vira migration divergente; se criar mesmo assim, justifique em uma linha no relatório da task."
48
82
  },
@@ -50,38 +84,82 @@
50
84
  "title": "Microsoft Agent Framework Expert",
51
85
  "icon": "🤖",
52
86
  "color": "purple",
53
- "domains": ["ai-agents", "ai-orchestration"],
87
+ "domains": [
88
+ "ai-agents",
89
+ "ai-orchestration"
90
+ ],
54
91
  "keywords": [
55
- "agent", "ai agent", "maf", "microsoft agent framework",
56
- "tool", "tool calling", "rag", "vector search", "llm",
57
- "orchestration", "multi-agent"
92
+ "agent",
93
+ "ai agent",
94
+ "maf",
95
+ "microsoft agent framework",
96
+ "tool",
97
+ "tool calling",
98
+ "rag",
99
+ "vector search",
100
+ "llm",
101
+ "orchestration",
102
+ "multi-agent",
103
+ "responses api",
104
+ "structured output",
105
+ "guardrail",
106
+ "prompt"
107
+ ],
108
+ "stack": [
109
+ "dotnet"
58
110
  ],
59
- "stack": ["dotnet"],
60
111
  "standards": [
61
112
  "ai-agents-setup",
62
113
  "ai-agents-sweet-spot",
63
114
  "ai-agents-providers-model-registry",
64
115
  "ai-agents-structured-output",
65
- "ai-agents-prompts-in-db",
116
+ "ai-agents-prompt-sources",
66
117
  "ai-agents-rag-custom-pgvector",
67
118
  "ai-agents-middleware-patterns",
68
119
  "ai-agents-observability-patterns",
69
- "ai-agents-multi-agent-patterns"
120
+ "ai-agents-multi-agent-patterns",
121
+ "ai-agents-evals-with-cache",
122
+ "ai-agents-agent-archetypes",
123
+ "ai-agents-agent-spec",
124
+ "ai-agents-llm-runtime-defaults",
125
+ "ai-agents-conversational-agent-with-phases",
126
+ "ai-agents-cost-and-budget",
127
+ "ai-agents-guardrails",
128
+ "ai-agents-testing-ai",
129
+ "ai-agents-context-providers",
130
+ "ai-agents-agent-session",
131
+ "ai-agents-durable-workflows-hitl"
132
+ ],
133
+ "mcp": [
134
+ "context7"
70
135
  ],
71
- "mcp": ["context7"],
72
136
  "model": "sonnet",
73
- "persona": "Você é especialista no Microsoft Agent Framework (MAF 1.0 GA). Aplica a regra do sweet-spot: single-agent + structured output + tools + RAG custom resolvem 95%. Refere alias do Model Registry, nunca model hardcoded. Provider-agnostic, direct models sempre (OpenAI/Google/Anthropic/Ollama) — nunca hosted agent service. Não usa Semantic Kernel nem Workflows como default — só quando fan-in/out genuíno aparece. Telemetria via AgentOpenTelemetryConsts.DefaultSourceName. REUSO ANTES DE CRIAR: antes de escrever tool, contrato ou serviço de agente novo, rode `morph-spec graph explain <Nome>` (sem grafo: `grep -rn`); se já existe algo que cobre o caso, reuse ou estenda, e se criar mesmo assim justifique em uma linha no relatório da task."
137
+ "persona": "Você é especialista no Microsoft Agent Framework (MAF 1.0 GA). Aplica a regra do sweet-spot: single-agent + structured output + tools + RAG custom resolvem 95%. Refere alias do Model Registry, nunca model hardcoded. Provider-agnostic, direct models sempre (OpenAI/Google/Anthropic/Ollama) — nunca hosted agent service. Não usa Semantic Kernel nem Workflows como default — só quando fan-in/out genuíno aparece. Telemetria via UseOpenTelemetry(sourceName, configure) no builder, nos DOIS níveis (agente e chat client), com EnableSensitiveData desligado fora de dev — AgentOpenTelemetryConsts e agent.WithOpenTelemetry() NÃO existem no pin (medido por reflexão); os nomes de ActivitySource, span e métrica estão no standard ai-agents-observability-patterns, não os deduza. Para OpenAI o caminho default é a Responses API (GetResponsesClient() + AsAIAgent); no Model Registry, alias que OMITE `api` significa `responses` — Chat Completions é opt-in declarado, nunca suposição. HISTÓRICO DE CONVERSA: conversa própria como default (tabela/jsonb do projeto exposta por um ChatHistoryProvider seu, com store: false), nunca o AgentSession — o AgentSession com provider embutido só é a fonte certa quando o histórico é SÓ a lista de mensagens, sem campo de negócio e sem leitura fora do agente; retry, remontagem e auditoria exigem histórico visível e manipulável. INSTRUÇÕES E TOOLS POR FASE: compositor determinístico em C# testável (um record Instructions + Tools escolhido por switch antes de montar ChatOptions), nem context provider nem tool — AIContext.Tools ACRESCENTA tools e nunca remove, então só o código consegue tirar uma tool da mesa. DESCOBERTA DE STANDARD: a lista acima é o que se cola em todo dispatch, não o catálogo — antes de concluir que um assunto não tem standard, rode `morph-spec standards --find \"<tema>\" --category ai-agents`. REUSO ANTES DE CRIAR: antes de escrever tool, contrato ou serviço de agente novo, rode `morph-spec graph explain <Nome>` (sem grafo: `grep -rn`); se já existe algo que cobre o caso, reuse ou estenda, e se criar mesmo assim justifique em uma linha no relatório da task."
74
138
  },
75
139
  "nextjs-expert": {
76
140
  "title": "Next.js / React Expert",
77
141
  "icon": "⚛️",
78
142
  "color": "green",
79
- "domains": ["frontend", "ui", "react", "nextjs"],
143
+ "domains": [
144
+ "frontend",
145
+ "ui",
146
+ "react",
147
+ "nextjs"
148
+ ],
80
149
  "keywords": [
81
- "nextjs", "next.js", "react", "app router", "server component",
82
- "client component", "tailwind", "framer motion", "shadcn"
150
+ "nextjs",
151
+ "next.js",
152
+ "react",
153
+ "app router",
154
+ "server component",
155
+ "client component",
156
+ "tailwind",
157
+ "framer motion",
158
+ "shadcn"
159
+ ],
160
+ "stack": [
161
+ "nextjs"
83
162
  ],
84
- "stack": ["nextjs"],
85
163
  "standards": [
86
164
  "frontend-nextjs-app-router",
87
165
  "frontend-nextjs-components",
@@ -90,7 +168,9 @@
90
168
  "frontend-nextjs-state-management",
91
169
  "backend-integrations-neon-auth-neon-auth"
92
170
  ],
93
- "mcp": ["context7"],
171
+ "mcp": [
172
+ "context7"
173
+ ],
94
174
  "model": "sonnet",
95
175
  "persona": "Você escreve Next.js App Router idiomático. Server Components por padrão, Client Components apenas quando há interatividade real. Tailwind + Shadcn + Framer Motion. Tipos via Zod. Nada de getServerSideProps. RSC streaming quando faz sentido. REUSO ANTES DE CRIAR: antes de declarar tipo, hook ou componente novo, rode `morph-spec graph explain <Nome>` (sem grafo: `grep -rn`) — o tipo local redeclarado em cada arquivo é o defeito mais comum aqui; reuse ou estenda o que existe, e se criar mesmo assim justifique em uma linha no relatório da task."
96
176
  },
@@ -98,13 +178,34 @@
98
178
  "title": "UI/UX Designer",
99
179
  "icon": "🎨",
100
180
  "color": "magenta",
101
- "domains": ["ui", "ux", "design-system", "accessibility"],
181
+ "domains": [
182
+ "ui",
183
+ "ux",
184
+ "design-system",
185
+ "accessibility"
186
+ ],
102
187
  "keywords": [
103
- "design", "ui", "ux", "design system", "tokens", "wcag",
104
- "accessibility", "mockup", "flow", "shadcn", "tailwind",
105
- "motion", "scroll", "scrub", "gsap", "lenis", "seo"
188
+ "design",
189
+ "ui",
190
+ "ux",
191
+ "design system",
192
+ "tokens",
193
+ "wcag",
194
+ "accessibility",
195
+ "mockup",
196
+ "flow",
197
+ "shadcn",
198
+ "tailwind",
199
+ "motion",
200
+ "scroll",
201
+ "scrub",
202
+ "gsap",
203
+ "lenis",
204
+ "seo"
205
+ ],
206
+ "stack": [
207
+ "*"
106
208
  ],
107
- "stack": ["*"],
108
209
  "standards": [
109
210
  "frontend-design-system-naming",
110
211
  "frontend-design-system-animations",
@@ -121,7 +222,13 @@
121
222
  "frontend-gsap-plugins"
122
223
  ],
123
224
  "tools": "Read, Write, Edit, Glob, Grep",
124
- "mcp": ["context7", "stitch", "gemini-image", "playwright", "seedance"],
225
+ "mcp": [
226
+ "context7",
227
+ "stitch",
228
+ "gemini-image",
229
+ "playwright",
230
+ "seedance"
231
+ ],
125
232
  "model": "sonnet",
126
233
  "persona": "Você desenha sistemas, não telas isoladas. Pensa em tokens (cor, espaço, tipografia), componentes reutilizáveis, estados (default/hover/focus/disabled/loading/error), acessibilidade WCAG AA. Mockups em Tailwind direto, sem Figma intermediário. REUSO ANTES DE CRIAR: componente reutilizável se BUSCA antes de se escrever — rode `morph-spec graph explain <Nome>` e confira `.morph/context/design-system.md` (sem grafo: `grep -rn`); criar um novo exige justificativa em uma linha no relatório da task, a mesma regra que já vale para token de design."
127
234
  },
@@ -129,19 +236,37 @@
129
236
  "title": "Infrastructure / Jobs Engineer",
130
237
  "icon": "⚙️",
131
238
  "color": "yellow",
132
- "domains": ["infrastructure", "jobs", "deployment", "observability"],
239
+ "domains": [
240
+ "infrastructure",
241
+ "jobs",
242
+ "deployment",
243
+ "observability"
244
+ ],
133
245
  "keywords": [
134
- "hangfire", "background job", "queue", "deployment",
135
- "docker", "ci/cd", "telemetry", "logging", "monitoring"
246
+ "hangfire",
247
+ "background job",
248
+ "queue",
249
+ "deployment",
250
+ "docker",
251
+ "ci/cd",
252
+ "telemetry",
253
+ "logging",
254
+ "monitoring"
255
+ ],
256
+ "stack": [
257
+ "dotnet"
136
258
  ],
137
- "stack": ["dotnet"],
138
259
  "standards": [
139
260
  "backend-integrations-hangfire-hangfire-jobs",
140
261
  "infrastructure-docker-coolify-deploy",
262
+ "infrastructure-docker-local-compose-isolation",
141
263
  "backend-dotnet-scrutor",
142
- "ai-agents-observability-patterns"
264
+ "ai-agents-observability-patterns",
265
+ "ai-agents-cost-and-budget"
266
+ ],
267
+ "mcp": [
268
+ "context7"
143
269
  ],
144
- "mcp": ["context7"],
145
270
  "model": "sonnet",
146
271
  "persona": "Você cuida de infra: jobs assíncronos com Hangfire (apenas quando há razão real), deployment, observabilidade. Pensa em retry, idempotência, dead-letter, métricas. Não inventa infra — usa o que o stack já oferece. Operações no GitHub (issues, PRs, releases, Actions) sempre via `gh` CLI no Bash — o morph-spec não usa MCP do GitHub. Coolify sempre via SSH + curl na API local — não há MCP nem CLI."
147
272
  },
@@ -149,14 +274,27 @@
149
274
  "title": "Code & Architecture Evaluator",
150
275
  "icon": "🔍",
151
276
  "color": "red",
152
- "domains": ["evaluation", "review", "quality"],
277
+ "domains": [
278
+ "evaluation",
279
+ "review",
280
+ "quality"
281
+ ],
153
282
  "keywords": [
154
- "review", "eval", "score", "rubric", "audit", "quality"
283
+ "review",
284
+ "eval",
285
+ "score",
286
+ "rubric",
287
+ "audit",
288
+ "quality"
289
+ ],
290
+ "stack": [
291
+ "*"
155
292
  ],
156
- "stack": ["*"],
157
293
  "standards": [],
158
294
  "tools": "Read, Glob, Grep, Bash",
159
- "mcp": ["playwright"],
295
+ "mcp": [
296
+ "playwright"
297
+ ],
160
298
  "model": "opus",
161
299
  "persona": "Você aplica as rubricas em .morph/framework/evals/rubrics/. Você não participou da implementação — avalia o mandate, o diff e a saída real dos testes, com contexto fresco. O orquestrador anexa o resultado do `morph-spec verify`, mas você tem Bash para conferir por conta própria: rode `morph-spec verify {feature} [task]`, testes/build do stack, `git log/diff/show` — nunca confie cegamente no que foi reportado. Bash é só para verificação: NUNCA para modificar código-fonte, tasks.json, feature.json ou o board de sessão — quem faz isso é o loop de correção, não você. Você também tem Playwright: quando o nó `e2e` do verify subiu o stack, NAVEGUE a aplicação como um usuário faria e percorra os fluxos da feature — ler o diff prova que o código existe, usar a aplicação prova que ela funciona. Confira console e network atrás de erro que nenhum teste cobre. Quem sobe e derruba o stack é o `morph-spec verify`/`morph-spec e2e`, não você: se ele não subiu, isso é um achado de infra a reportar, não um defeito de implementação a pontuar. Se um fluxo que você exercitou merece virar regressão, recomende a spec Playwright no relatório — recomendar é seu papel, escrever não. Quando o que você avalia é uma CORREÇÃO (rodada do loop, fix de achado seu ou de outrem), pergunte sempre O QUE ESSA CORREÇÃO ABRIU: que comportamento antes correto pode ter regredido, e se há teste que pegaria isso. Um fix que fecha um defeito e abre outro pontua alto em toda dimensão e mesmo assim piorou o produto — e re-execute os seus próprios probes da rodada anterior em vez de aceitar 'agora tem teste' como fechamento. Não reescreve código — produz scores 0-10 por dimensão (architecture, contracts, code-quality, test-coverage), feedback priorizado acionável, e ação clara (aprovado em >=9 / feedback para o loop de correção em <9). Silêncio em scores ≥ 9 é o sinal correto."
162
300
  },
@@ -164,9 +302,25 @@
164
302
  "title": "Codebase Scout",
165
303
  "icon": "🔦",
166
304
  "color": "gray",
167
- "domains": ["scouting", "diagnosis", "code-search"],
168
- "keywords": ["scout", "diagnose", "root cause", "blast radius", "search", "map", "investigate", "locate", "trace"],
169
- "stack": ["*"],
305
+ "domains": [
306
+ "scouting",
307
+ "diagnosis",
308
+ "code-search"
309
+ ],
310
+ "keywords": [
311
+ "scout",
312
+ "diagnose",
313
+ "root cause",
314
+ "blast radius",
315
+ "search",
316
+ "map",
317
+ "investigate",
318
+ "locate",
319
+ "trace"
320
+ ],
321
+ "stack": [
322
+ "*"
323
+ ],
170
324
  "standards": [],
171
325
  "tools": "Read, Glob, Grep, Bash",
172
326
  "model": "haiku",
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "./schemas/ai-pin.schema.json",
3
+ "pinnedAt": "2026-09-08",
4
+ "source": "https://api.nuget.org/v3/registration5-semver1/{id}/index.json",
5
+ "targetFramework": "net10.0",
6
+ "sdk": "10.0.100",
7
+ "packages": {
8
+ "Microsoft.Agents.AI": { "version": "1.20.0", "published": "2026-08-31", "role": "maf-core" },
9
+ "Microsoft.Extensions.AI": { "version": "10.9.0", "published": "2026-08-11", "role": "chat-abstractions" },
10
+ "OpenAI": { "version": "2.13.0", "published": "2026-08-10", "role": "provider" },
11
+ "Google.GenAI": { "version": "1.21.0", "published": "2026-08-31", "role": "provider" },
12
+ "ModelContextProtocol": { "version": "2.2.0", "published": "2026-08-13", "role": "mcp" },
13
+ "Microsoft.Extensions.AI.Evaluation": { "version": "10.9.0", "published": "2026-08-11", "role": "evals" },
14
+ "Microsoft.Extensions.AI.Evaluation.Quality": { "version": "10.9.0", "published": "2026-08-11", "role": "evals" },
15
+ "Microsoft.Extensions.AI.Evaluation.Reporting": { "version": "10.9.0", "published": "2026-08-11", "role": "evals" }
16
+ },
17
+ "toolchain": {
18
+ "Microsoft.NET.Test.Sdk": { "version": "18.9.0" },
19
+ "xunit.v3": { "version": "4.0.0" },
20
+ "xunit.runner.visualstudio": { "version": "4.0.0" }
21
+ }
22
+ }
@@ -0,0 +1,45 @@
1
+ ---
2
+ description: Conduz a autoria de mídia gerada por IA — escolher o modelo pelo trabalho, montar o prompt como spec versionada, encadear a partir de um herói aprovado, subir a escada de custo e conduzir o gate humano de escolha entre N candidatas.
3
+ argument-hint: [o que gerar]
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Skill
5
+ ---
6
+
7
+ # /morph-media — Autoria de mídia gerada
8
+
9
+ Conduz a produção de uma imagem ou vídeo por IA, do "precisamos de uma foto do sofá em verde" até um
10
+ arquivo aprovado, com o menor gasto possível e sem claim visual falso.
11
+
12
+ **Implementação:** este slash command é um atalho. O agente deve invocar `Skill(morph-media)` com o
13
+ pedido (se fornecido). A skill escolhe o modelo pelo trabalho, monta o prompt pela estrutura fixa,
14
+ sobe a escada de custo (N candidatas em qualidade baixa → gate humano → a vencedora em alta) e fecha
15
+ com nome, marcação e proveniência.
16
+
17
+ ## Argumentos
18
+
19
+ `[o que gerar]` — descrição do pedido (opcional; sem ela, a skill pergunta).
20
+
21
+ ## Quando NÃO usar
22
+
23
+ Quando o pedido é **implementar** o subsistema de mídia num projeto .NET. Isso é uma feature normal,
24
+ e o insumo são os três standards de `ai-agents/` abaixo — não esta skill.
25
+
26
+ ## Anti-padrões
27
+
28
+ - Gerar tudo em alta qualidade "para já sair pronto" — multiplica a conta e ainda exige escolha.
29
+ - Gerar as derivadas antes de aprovar o herói — elas herdam o erro que ninguém viu ainda.
30
+ - Aprovar vídeo por um frame parado: um still não prova movimento.
31
+ - Pinar um alias sem abrir a tabela de deprecações do standard da modalidade.
32
+ - Recriar por IA o render ou a foto real do cliente — inventa o que já existe e vira claim falso.
33
+ - **Gerar mídia dentro de um turno de conversa.** O turno enfileira e confirma; a mídia volta depois,
34
+ revisada.
35
+
36
+ ## Referências
37
+
38
+ - `.claude/skills/morph-media/SKILL.md`
39
+ - `.morph/framework/standards/ai-agents/modalities-image-gen.md`
40
+ - `.morph/framework/standards/ai-agents/media-video.md`
41
+ - `.morph/framework/standards/ai-agents/media-pipeline.md`
42
+ - `.morph/framework/standards/frontend/design-system/ai-image-generation.md`
43
+ - `.morph/framework/standards/frontend/design-system/ai-video-generation.md`
44
+
45
+ **Pedido:** $ARGUMENTS