@geraldmaron/construct 1.2.2 → 1.3.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 (497) hide show
  1. package/README.md +7 -10
  2. package/bin/construct +286 -220
  3. package/bin/construct-postinstall.mjs +0 -21
  4. package/commands/work/optimize-prompts.md +1 -1
  5. package/examples/distribution/sources/adr.md +2 -2
  6. package/examples/seed-observations/decisions.md +1 -1
  7. package/lib/artifact-loop-core.mjs +412 -0
  8. package/lib/artifact-manifest.mjs +6 -0
  9. package/lib/artifact-release-gate.mjs +115 -49
  10. package/lib/audit-rules.mjs +2 -4
  11. package/lib/audit-skills.mjs +32 -20
  12. package/lib/audit-specialists.mjs +44 -26
  13. package/lib/auto-docs.mjs +6 -5
  14. package/lib/brand-prose.mjs +3 -3
  15. package/lib/brand-tokens.mjs +2 -2
  16. package/lib/certification/artifact-fixtures.mjs +4 -1
  17. package/lib/certification/demo-parity.mjs +6 -32
  18. package/lib/certification/real-llm-scenarios.mjs +58 -13
  19. package/lib/certification/role-cards.mjs +7 -6
  20. package/lib/certification/role-overlays.mjs +4 -4
  21. package/lib/certification/runner.mjs +9 -2
  22. package/lib/certification/skill-inventory.mjs +34 -22
  23. package/lib/certification/skill-scenarios.mjs +21 -8
  24. package/lib/certification/specialist-contracts.mjs +4 -3
  25. package/lib/certification/specialist-scenarios.mjs +7 -6
  26. package/lib/certification/status.mjs +5 -4
  27. package/lib/cli-commands.mjs +56 -57
  28. package/lib/comment-lint.mjs +1 -5
  29. package/lib/completions.mjs +20 -2
  30. package/lib/config/legacy-config-migration.mjs +125 -0
  31. package/lib/config/schema.mjs +5 -5
  32. package/lib/config/source-targets.mjs +80 -0
  33. package/lib/contracts/validate.mjs +119 -51
  34. package/lib/decisions/golden.mjs +3 -2
  35. package/lib/decisions/registry.mjs +11 -6
  36. package/lib/demo-project.mjs +188 -0
  37. package/lib/demo-recording.mjs +9 -34
  38. package/lib/demo-script.mjs +2 -2
  39. package/lib/demo-surface.mjs +13 -131
  40. package/lib/demo-tour-renderer.mjs +92 -0
  41. package/lib/demo.mjs +69 -54
  42. package/lib/diagram-export.mjs +63 -14
  43. package/lib/doctor/source-checkout.mjs +3 -4
  44. package/lib/doctor/watchers/consistency.mjs +90 -22
  45. package/lib/doctor/watchers/credential-parity.mjs +97 -0
  46. package/lib/doctor/watchers/mcp-protocol.mjs +1 -1
  47. package/lib/doctor/watchers/service-health.mjs +4 -32
  48. package/lib/document-export.mjs +73 -9
  49. package/lib/document-extract.mjs +10 -198
  50. package/lib/embed/artifact.mjs +2 -3
  51. package/lib/embed/cli.mjs +1 -1
  52. package/lib/embed/config.mjs +1 -2
  53. package/lib/embed/customer-profiles.mjs +1 -1
  54. package/lib/embed/daemon.mjs +5 -6
  55. package/lib/embed/demand-fetch.mjs +114 -2
  56. package/lib/embed/docs-lifecycle.mjs +9 -5
  57. package/lib/embed/intake-metrics.mjs +2 -2
  58. package/lib/embed/notifications.mjs +2 -3
  59. package/lib/embed/recommendation-store.mjs +25 -22
  60. package/lib/embed/role-framing.mjs +4 -9
  61. package/lib/embedded-contract/capability.mjs +4 -2
  62. package/lib/embedded-contract/contract-version.mjs +1 -1
  63. package/lib/env-config.mjs +2 -2
  64. package/lib/flavors/loader.mjs +21 -19
  65. package/lib/graph/build-from-registry.mjs +31 -7
  66. package/lib/graph/staleness.mjs +1 -1
  67. package/lib/headhunt.mjs +82 -35
  68. package/lib/hooks/agent-tracker.mjs +2 -2
  69. package/lib/hooks/config-protection.mjs +1 -1
  70. package/lib/hooks/registry-sync.mjs +3 -3
  71. package/lib/host-capabilities.mjs +5 -5
  72. package/lib/improvement/controller.mjs +2 -2
  73. package/lib/init-unified.mjs +19 -21
  74. package/lib/intake/classify.mjs +26 -0
  75. package/lib/intake/daemon.mjs +2 -3
  76. package/lib/intake/prepare.mjs +10 -3
  77. package/lib/intake/session-prelude.mjs +1 -1
  78. package/lib/intake/tables/creative.mjs +9 -9
  79. package/lib/intake/tables/operations.mjs +4 -4
  80. package/lib/intake/tables/research.mjs +2 -2
  81. package/lib/integrations/intake-integrations.mjs +9 -10
  82. package/lib/knowledge/research-store.mjs +2 -2
  83. package/lib/mcp/server.mjs +104 -61
  84. package/lib/mcp/tool-budget.mjs +1 -46
  85. package/lib/mcp/tool-recovery.mjs +44 -0
  86. package/lib/mcp/tools/artifact-author.mjs +36 -0
  87. package/lib/mcp/tools/find-tool.mjs +86 -0
  88. package/lib/mcp/tools/orchestration-run.mjs +107 -69
  89. package/lib/mcp/tools/project.mjs +4 -3
  90. package/lib/mcp/tools/{profile.mjs → scope.mjs} +54 -52
  91. package/lib/mcp/tools/skills.mjs +39 -22
  92. package/lib/mcp/tools/telemetry.mjs +2 -1
  93. package/lib/mcp/tools/workflow.mjs +1 -1
  94. package/lib/mcp-platform-config.mjs +7 -5
  95. package/lib/migrations/index.mjs +4 -2
  96. package/lib/migrations/v2-unified-registry.mjs +35 -0
  97. package/lib/model-router.mjs +203 -36
  98. package/lib/models/catalog.mjs +25 -9
  99. package/lib/models/execution-capability-profile.mjs +3 -3
  100. package/lib/models/execution-policy.mjs +7 -6
  101. package/lib/models/provider-poll.mjs +18 -4
  102. package/lib/opencode-config.mjs +56 -1
  103. package/lib/opencode-runtime-plugin.mjs +13 -10
  104. package/lib/oracle/artifact-gate.mjs +14 -4
  105. package/lib/oracle/cli.mjs +2 -0
  106. package/lib/oracle/dispatch.mjs +18 -1
  107. package/lib/oracle/execute.mjs +39 -7
  108. package/lib/oracle/index.mjs +1 -1
  109. package/lib/oracle/org-graph.mjs +10 -5
  110. package/lib/oracle/policy.mjs +6 -0
  111. package/lib/oracle/read-model.mjs +103 -6
  112. package/lib/oracle/reconcile.mjs +31 -4
  113. package/lib/oracle/remediation-dispatch.mjs +53 -0
  114. package/lib/oracle/routing.mjs +5 -0
  115. package/lib/oracle/synthesize.mjs +80 -3
  116. package/lib/orchestration/routing-tables.mjs +44 -10
  117. package/lib/orchestration/runtime.mjs +2 -0
  118. package/lib/orchestration/worker.mjs +1 -1
  119. package/lib/orchestration-policy.mjs +351 -62
  120. package/lib/overrides/resolver.mjs +1 -12
  121. package/lib/parity.mjs +37 -11
  122. package/lib/policy/engine.mjs +80 -15
  123. package/lib/prompt-composer.js +51 -15
  124. package/lib/prompt-metadata.mjs +3 -2
  125. package/lib/providers/connection-probe.mjs +58 -0
  126. package/lib/providers/copilot-auth.mjs +1 -1
  127. package/lib/providers/credential-bootstrap.mjs +1 -1
  128. package/lib/providers/op-run.mjs +3 -4
  129. package/lib/providers/secret-resolver.mjs +31 -0
  130. package/lib/publish-tooling.mjs +3 -11
  131. package/lib/publish.mjs +12 -29
  132. package/lib/reconcile/mcp-entry-reconcile.mjs +14 -9
  133. package/lib/reflect.mjs +2 -2
  134. package/lib/registry/agent-manifest.mjs +190 -0
  135. package/lib/registry/assemble.mjs +133 -0
  136. package/lib/registry/catalog.mjs +171 -0
  137. package/lib/registry/cli.mjs +590 -6
  138. package/lib/registry/consolidation.mjs +5 -4
  139. package/lib/registry/docs-sync.mjs +67 -0
  140. package/lib/registry/loader.mjs +147 -0
  141. package/lib/registry/org-io.mjs +76 -0
  142. package/lib/registry/retired-paths.mjs +71 -0
  143. package/lib/registry/surface-map.mjs +5 -7
  144. package/lib/registry/validator.mjs +438 -0
  145. package/lib/research-execution-policy.mjs +173 -0
  146. package/lib/roles/catalog.mjs +4 -9
  147. package/lib/roles/fence.mjs +107 -1
  148. package/lib/roles/flavor-bindings.mjs +68 -0
  149. package/lib/roles/gateway.mjs +140 -29
  150. package/lib/roles/manifest.mjs +22 -13
  151. package/lib/roles/router.mjs +1 -1
  152. package/lib/runtime-env.mjs +1 -1
  153. package/lib/scopes/enrich.mjs +67 -0
  154. package/lib/scopes/hooks.mjs +12 -0
  155. package/lib/{profiles → scopes}/lifecycle.mjs +70 -70
  156. package/lib/scopes/loader.mjs +104 -0
  157. package/lib/scopes/rebrand.mjs +32 -0
  158. package/lib/scopes/research-profile.mjs +16 -0
  159. package/lib/scopes/teams.mjs +98 -0
  160. package/lib/service-manager.mjs +1 -117
  161. package/lib/setup-prompts.mjs +1 -1
  162. package/lib/setup.mjs +17 -28
  163. package/lib/skills/composition-graph.mjs +98 -0
  164. package/lib/skills/router.mjs +80 -0
  165. package/lib/specialist-contracts.mjs +17 -18
  166. package/lib/specialists/postconditions.mjs +2 -2
  167. package/lib/specialists/prompt-schema.mjs +6 -5
  168. package/lib/specialists/roster.mjs +7 -12
  169. package/lib/specialists/schema.mjs +9 -6
  170. package/lib/status.mjs +25 -90
  171. package/lib/storage/file-lock.mjs +6 -3
  172. package/lib/telemetry/skill-calls.mjs +1 -1
  173. package/lib/templates/doc-presentation.mjs +63 -0
  174. package/lib/templates/visual-requirements.mjs +35 -2
  175. package/lib/term-format.mjs +107 -2
  176. package/lib/test-env-setup.mjs +21 -0
  177. package/lib/ui/components.mjs +42 -0
  178. package/lib/ui/glyphs.mjs +58 -0
  179. package/lib/ui/links.mjs +115 -0
  180. package/lib/ui/theme.mjs +108 -0
  181. package/lib/uninstall/uninstall.mjs +2 -1
  182. package/lib/validator.mjs +45 -8
  183. package/lib/validators/skill-effectiveness.mjs +174 -0
  184. package/lib/validators/skills.mjs +1 -1
  185. package/package.json +12 -7
  186. package/personas/construct.md +12 -3
  187. package/platforms/claude/CLAUDE.md +1 -1
  188. package/rules/common/beads-hygiene.md +52 -0
  189. package/rules/common/neurodivergent-output.md +4 -7
  190. package/rules/common/research.md +2 -0
  191. package/scripts/sync-specialists.mjs +260 -49
  192. package/skills/ai/prompt-optimizer.md +3 -3
  193. package/skills/brand/output-vibe.md +48 -0
  194. package/skills/docs/adr-workflow.md +3 -0
  195. package/skills/docs/backlog-proposal-workflow.md +3 -0
  196. package/skills/docs/codebase-research-workflow.md +5 -2
  197. package/skills/docs/customer-profile-workflow.md +3 -0
  198. package/skills/docs/document-ingest-workflow.md +3 -0
  199. package/skills/docs/evidence-ingest-workflow.md +4 -1
  200. package/skills/docs/init-project.md +1 -1
  201. package/skills/docs/prd-workflow.md +1 -1
  202. package/skills/docs/prfaq-workflow.md +3 -0
  203. package/skills/docs/product-intelligence-workflow.md +4 -1
  204. package/skills/docs/product-signal-workflow.md +3 -0
  205. package/skills/docs/research-workflow.md +13 -6
  206. package/skills/docs/runbook-workflow.md +3 -0
  207. package/skills/docs/strategy-workflow.md +3 -0
  208. package/skills/docs/user-research-workflow.md +6 -3
  209. package/skills/operating/orchestration-reference.md +1 -1
  210. package/skills/roles/{engineer.ai.md → ai-engineer.md} +2 -2
  211. package/skills/roles/architect.ai-systems.md +1 -1
  212. package/skills/roles/architect.data.md +1 -1
  213. package/skills/roles/architect.enterprise.md +1 -1
  214. package/skills/roles/architect.integration.md +1 -1
  215. package/skills/roles/architect.md +1 -1
  216. package/skills/roles/architect.platform.md +1 -1
  217. package/skills/roles/{product-manager.business-strategy.md → business-strategist.md} +3 -3
  218. package/skills/roles/data-analyst.experiment.md +1 -1
  219. package/skills/roles/data-analyst.md +1 -1
  220. package/skills/roles/data-analyst.product-intelligence.md +1 -1
  221. package/skills/roles/data-analyst.product.md +1 -1
  222. package/skills/roles/data-analyst.telemetry.md +1 -1
  223. package/skills/roles/{engineer.data.md → data-engineer.md} +2 -2
  224. package/skills/roles/data-engineer.pipeline.md +2 -2
  225. package/skills/roles/data-engineer.vector-retrieval.md +2 -2
  226. package/skills/roles/data-engineer.warehouse.md +2 -2
  227. package/skills/roles/debugger.md +1 -1
  228. package/skills/roles/designer.accessibility.md +1 -1
  229. package/skills/roles/designer.md +1 -1
  230. package/skills/roles/{reviewer.devil-advocate.md → devil-advocate.md} +2 -2
  231. package/skills/roles/{operator.docs.md → docs-keeper.md} +3 -3
  232. package/skills/roles/engineer.md +3 -7
  233. package/skills/roles/{reviewer.evaluator.md → evaluator.md} +2 -2
  234. package/skills/roles/{researcher.explorer.md → explorer.md} +2 -2
  235. package/skills/roles/{operator.md → operations.md} +2 -5
  236. package/skills/roles/orchestrator.md +1 -1
  237. package/skills/roles/{engineer.platform.md → platform-engineer.md} +2 -2
  238. package/skills/roles/product-manager.ai-product.md +1 -1
  239. package/skills/roles/product-manager.enterprise.md +1 -1
  240. package/skills/roles/product-manager.growth.md +1 -2
  241. package/skills/roles/product-manager.md +1 -2
  242. package/skills/roles/product-manager.platform.md +1 -1
  243. package/skills/roles/product-manager.product.md +1 -1
  244. package/skills/roles/qa.ai-eval.md +1 -1
  245. package/skills/roles/qa.api-contract.md +1 -1
  246. package/skills/roles/qa.data-pipeline.md +1 -1
  247. package/skills/roles/qa.md +1 -1
  248. package/skills/roles/qa.web-ui.md +1 -1
  249. package/skills/roles/{operator.release.md → release-manager.md} +3 -3
  250. package/skills/roles/researcher.md +1 -1
  251. package/skills/roles/reviewer.md +1 -1
  252. package/skills/roles/security.ai.md +1 -1
  253. package/skills/roles/security.appsec.md +1 -1
  254. package/skills/roles/security.cloud.md +1 -1
  255. package/skills/roles/security.legal-compliance.md +1 -1
  256. package/skills/roles/security.md +1 -1
  257. package/skills/roles/security.privacy.md +1 -1
  258. package/skills/roles/security.supply-chain.md +1 -1
  259. package/skills/roles/{operator.sre.md → sre.md} +3 -3
  260. package/skills/roles/{qa.test-automation.md → test-automation.md} +2 -2
  261. package/skills/roles/{reviewer.trace.md → trace-reviewer.md} +2 -2
  262. package/skills/roles/{researcher.ux.md → ux-researcher.md} +2 -2
  263. package/skills/routing.json +18 -0
  264. package/skills/routing.md +1 -1
  265. package/specialists/artifact-manifest.json +2 -1
  266. package/specialists/audit-enrichments.json +14 -14
  267. package/specialists/org/contracts/accessibility-to-qa.json +37 -0
  268. package/specialists/org/contracts/any-to-business-strategist.json +57 -0
  269. package/specialists/org/contracts/any-to-debugger.json +38 -0
  270. package/specialists/org/contracts/any-to-designer.json +33 -0
  271. package/specialists/org/contracts/any-to-docs-keeper.json +34 -0
  272. package/specialists/org/contracts/any-to-explorer.json +39 -0
  273. package/specialists/org/contracts/any-to-sre-incident.json +33 -0
  274. package/specialists/org/contracts/any-to-trace-reviewer.json +32 -0
  275. package/specialists/org/contracts/architect-to-ai-engineer.json +32 -0
  276. package/specialists/org/contracts/architect-to-data-engineer.json +52 -0
  277. package/specialists/org/contracts/architect-to-devil-advocate.json +38 -0
  278. package/specialists/org/contracts/architect-to-engineer.json +34 -0
  279. package/specialists/org/contracts/architect-to-evaluator.json +59 -0
  280. package/specialists/org/contracts/architect-to-legal-compliance.json +55 -0
  281. package/specialists/org/contracts/architect-to-operations.json +45 -0
  282. package/specialists/org/contracts/architect-to-platform-engineer.json +42 -0
  283. package/specialists/org/contracts/business-strategist-to-product-manager.json +39 -0
  284. package/specialists/org/contracts/construct-to-orchestrator.json +36 -0
  285. package/specialists/org/contracts/construct-to-rd-lead.json +53 -0
  286. package/specialists/org/contracts/data-analyst-to-product-manager.json +43 -0
  287. package/specialists/org/contracts/data-engineer-to-platform-engineer.json +36 -0
  288. package/specialists/org/contracts/designer-to-accessibility.json +36 -0
  289. package/specialists/org/contracts/engineer-to-qa.json +34 -0
  290. package/specialists/org/contracts/engineer-to-reviewer.json +52 -0
  291. package/specialists/org/contracts/explorer-to-engineer.json +38 -0
  292. package/specialists/org/contracts/legal-compliance-to-release-manager.json +43 -0
  293. package/specialists/org/contracts/platform-engineer-to-engineer.json +31 -0
  294. package/specialists/org/contracts/product-manager-to-architect.json +71 -0
  295. package/specialists/org/contracts/product-manager-to-data-analyst.json +49 -0
  296. package/specialists/org/contracts/product-manager-to-ux-researcher.json +51 -0
  297. package/specialists/org/contracts/qa-to-release-manager.json +42 -0
  298. package/specialists/org/contracts/qa-to-test-automation.json +42 -0
  299. package/specialists/org/contracts/rd-lead-to-architect.json +38 -0
  300. package/specialists/org/contracts/researcher-to-architect.json +40 -0
  301. package/specialists/org/contracts/researcher-to-product-manager.json +57 -0
  302. package/specialists/org/contracts/reviewer-to-security.json +41 -0
  303. package/specialists/org/contracts/sre-to-release-manager.json +36 -0
  304. package/specialists/org/contracts/test-automation-to-engineer.json +34 -0
  305. package/specialists/org/contracts/trace-reviewer-to-sre.json +41 -0
  306. package/specialists/org/contracts/user-to-construct.json +30 -0
  307. package/specialists/org/groups/engineering-group.json +43 -0
  308. package/specialists/org/groups/governance-group.json +38 -0
  309. package/specialists/org/groups/operations-group.json +41 -0
  310. package/specialists/org/groups/product-group.json +46 -0
  311. package/specialists/org/groups/quality-group.json +42 -0
  312. package/specialists/org/groups/strategy-group.json +41 -0
  313. package/specialists/org/policies/action-approval.json +13 -0
  314. package/specialists/org/policies/agents-routing.json +13 -0
  315. package/specialists/org/policies/architecture.json +20 -0
  316. package/specialists/org/policies/bash-safety.json +13 -0
  317. package/specialists/org/policies/beads-hygiene.json +13 -0
  318. package/specialists/org/policies/bootstrap-state.json +13 -0
  319. package/specialists/org/policies/code-review.json +13 -0
  320. package/specialists/org/policies/coding-style.json +13 -0
  321. package/specialists/org/policies/comments.json +13 -0
  322. package/specialists/org/policies/commit-approval.json +13 -0
  323. package/specialists/org/policies/contract-preconditions.json +13 -0
  324. package/specialists/org/policies/deployment.json +20 -0
  325. package/specialists/org/policies/description.json +14 -0
  326. package/specialists/org/policies/design-approval.json +19 -0
  327. package/specialists/org/policies/doc-ownership.json +13 -0
  328. package/specialists/org/policies/file-path-fence.json +13 -0
  329. package/specialists/org/policies/framing.json +13 -0
  330. package/specialists/org/policies/git-workflow.json +13 -0
  331. package/specialists/org/policies/incident-response.json +15 -0
  332. package/specialists/org/policies/intake-triage.json +15 -0
  333. package/specialists/org/policies/neurodivergent-output.json +13 -0
  334. package/specialists/org/policies/no-fabrication.json +13 -0
  335. package/specialists/org/policies/patterns.json +13 -0
  336. package/specialists/org/policies/quality-gate-approval.json +17 -0
  337. package/specialists/org/policies/release-gates.json +13 -0
  338. package/specialists/org/policies/research-evidence.json +13 -0
  339. package/specialists/org/policies/review-before-change.json +13 -0
  340. package/specialists/org/policies/rollback.json +15 -0
  341. package/specialists/org/policies/scope-change.json +20 -0
  342. package/specialists/org/policies/secret-scan.json +13 -0
  343. package/specialists/org/policies/security-approval.json +17 -0
  344. package/specialists/org/policies/security.json +13 -0
  345. package/specialists/org/policies/session-efficiency.json +13 -0
  346. package/specialists/org/policies/skill-routing.json +13 -0
  347. package/specialists/org/policies/strategic-prioritization.json +17 -0
  348. package/specialists/org/policies/testing.json +13 -0
  349. package/specialists/org/policies/tool-invisibility.json +14 -0
  350. package/specialists/org/scopes/creative.json +54 -0
  351. package/specialists/org/scopes/operations.json +51 -0
  352. package/specialists/org/scopes/research.json +60 -0
  353. package/specialists/org/scopes/rnd.json +81 -0
  354. package/specialists/org/specialists/cx-accessibility.json +69 -0
  355. package/specialists/org/specialists/cx-ai-engineer.json +75 -0
  356. package/specialists/org/specialists/cx-architect.json +89 -0
  357. package/specialists/org/specialists/cx-business-strategist.json +72 -0
  358. package/specialists/org/specialists/cx-data-analyst.json +68 -0
  359. package/specialists/org/specialists/cx-data-engineer.json +71 -0
  360. package/specialists/org/specialists/cx-debugger.json +75 -0
  361. package/specialists/org/specialists/cx-designer.json +85 -0
  362. package/specialists/org/specialists/cx-devil-advocate.json +71 -0
  363. package/specialists/org/specialists/cx-docs-keeper.json +82 -0
  364. package/specialists/org/specialists/cx-engineer.json +106 -0
  365. package/specialists/org/specialists/cx-evaluator.json +69 -0
  366. package/specialists/org/specialists/cx-explorer.json +69 -0
  367. package/specialists/org/specialists/cx-legal-compliance.json +74 -0
  368. package/specialists/org/specialists/cx-operations.json +72 -0
  369. package/specialists/org/specialists/cx-oracle.json +46 -0
  370. package/specialists/org/specialists/cx-orchestrator.json +81 -0
  371. package/specialists/org/specialists/cx-platform-engineer.json +80 -0
  372. package/specialists/org/specialists/cx-product-manager.json +102 -0
  373. package/specialists/org/specialists/cx-qa.json +79 -0
  374. package/specialists/org/specialists/cx-rd-lead.json +73 -0
  375. package/specialists/org/specialists/cx-release-manager.json +77 -0
  376. package/specialists/org/specialists/cx-researcher.json +82 -0
  377. package/specialists/org/specialists/cx-reviewer.json +71 -0
  378. package/specialists/org/specialists/cx-security.json +91 -0
  379. package/specialists/org/specialists/cx-sre.json +94 -0
  380. package/specialists/org/specialists/cx-test-automation.json +69 -0
  381. package/specialists/org/specialists/cx-trace-reviewer.json +69 -0
  382. package/specialists/org/specialists/cx-ux-researcher.json +68 -0
  383. package/specialists/org/teams/accessibility-team.json +39 -0
  384. package/specialists/org/teams/design-team.json +40 -0
  385. package/specialists/org/teams/engineering-team.json +50 -0
  386. package/specialists/org/teams/governance-team.json +41 -0
  387. package/specialists/org/teams/operations-team.json +46 -0
  388. package/specialists/org/teams/product-management-team.json +45 -0
  389. package/specialists/org/teams/quality-team.json +49 -0
  390. package/specialists/org/teams/research-team.json +39 -0
  391. package/specialists/org/teams/strategy-team.json +48 -0
  392. package/specialists/org/teams/ux-research-team.json +39 -0
  393. package/specialists/prompts/_shared/validation-contract.md +1 -1
  394. package/specialists/prompts/_team-template.md +10 -0
  395. package/specialists/prompts/cx-accessibility.md +1 -0
  396. package/specialists/prompts/cx-ai-engineer.md +1 -1
  397. package/specialists/prompts/cx-business-strategist.md +1 -1
  398. package/specialists/prompts/cx-data-engineer.md +1 -1
  399. package/specialists/prompts/cx-designer.md +1 -0
  400. package/specialists/prompts/cx-devil-advocate.md +1 -1
  401. package/specialists/prompts/cx-docs-keeper.md +1 -1
  402. package/specialists/prompts/cx-evaluator.md +1 -1
  403. package/specialists/prompts/cx-explorer.md +1 -1
  404. package/specialists/prompts/cx-operations.md +1 -1
  405. package/specialists/prompts/cx-oracle.md +7 -3
  406. package/specialists/prompts/cx-orchestrator.md +17 -1
  407. package/specialists/prompts/cx-platform-engineer.md +1 -1
  408. package/specialists/prompts/cx-product-manager.md +2 -0
  409. package/specialists/prompts/cx-release-manager.md +1 -1
  410. package/specialists/prompts/cx-researcher.md +7 -4
  411. package/specialists/prompts/cx-sre.md +1 -1
  412. package/specialists/prompts/cx-test-automation.md +2 -2
  413. package/specialists/prompts/cx-trace-reviewer.md +3 -3
  414. package/specialists/prompts/cx-ux-researcher.md +2 -1
  415. package/templates/demos/scripts/architecture-review-adr.json +30 -0
  416. package/templates/demos/scripts/capability-contract.json +25 -0
  417. package/templates/demos/scripts/intake-triage.json +25 -0
  418. package/templates/demos/scripts/profile-doctor-health.json +25 -0
  419. package/templates/demos/tapes/agentic-platforms-prd.tape +2 -2
  420. package/templates/demos/tapes/architecture-review-adr.tape +44 -0
  421. package/templates/demos/tapes/capability-contract.tape +39 -0
  422. package/templates/demos/tapes/intake-triage.tape +39 -0
  423. package/templates/demos/tapes/profile-doctor-health.tape +39 -0
  424. package/templates/distribution/construct-brand.typ +23 -18
  425. package/templates/distribution/construct-decision.typ +1 -1
  426. package/templates/distribution/construct-pdf.typ +1 -1
  427. package/templates/distribution/construct-prd.typ +1 -1
  428. package/templates/distribution/construct-research.typ +1 -1
  429. package/templates/distribution/mermaid-puppeteer.json +8 -0
  430. package/templates/docs/persona-artifact.md +1 -1
  431. package/templates/docs/prd.md +6 -0
  432. package/lib/boundary.mjs +0 -127
  433. package/lib/certification/dashboard-api.mjs +0 -71
  434. package/lib/chat/cli.mjs +0 -333
  435. package/lib/chat/command-suggest.mjs +0 -161
  436. package/lib/chat/commands.mjs +0 -215
  437. package/lib/chat/config.mjs +0 -142
  438. package/lib/chat/context-compactor.mjs +0 -250
  439. package/lib/chat/context-continuation.mjs +0 -253
  440. package/lib/chat/continuation-source.mjs +0 -58
  441. package/lib/chat/demo-guide.mjs +0 -61
  442. package/lib/chat/design-tokens.mjs +0 -91
  443. package/lib/chat/desktop-binary.mjs +0 -81
  444. package/lib/chat/desktop-build.mjs +0 -130
  445. package/lib/chat/desktop-launcher.mjs +0 -133
  446. package/lib/chat/evidence.mjs +0 -145
  447. package/lib/chat/export.mjs +0 -74
  448. package/lib/chat/harness/driver.mjs +0 -91
  449. package/lib/chat/list-picker.mjs +0 -112
  450. package/lib/chat/model-picker.mjs +0 -356
  451. package/lib/chat/openrouter-fallback.mjs +0 -151
  452. package/lib/chat/permission-prompt.mjs +0 -33
  453. package/lib/chat/picker-catalog.mjs +0 -45
  454. package/lib/chat/policy-telemetry.mjs +0 -34
  455. package/lib/chat/present.mjs +0 -246
  456. package/lib/chat/session-context.mjs +0 -39
  457. package/lib/chat/session-persist.mjs +0 -73
  458. package/lib/chat/session-restore.mjs +0 -71
  459. package/lib/chat/session-settings.mjs +0 -53
  460. package/lib/chat/system-prompt.mjs +0 -52
  461. package/lib/chat/transparency.mjs +0 -93
  462. package/lib/chat/tui/color-scheme.mjs +0 -42
  463. package/lib/chat/tui/markdown.mjs +0 -123
  464. package/lib/chat/tui/presentation.mjs +0 -100
  465. package/lib/chat/tui/render.mjs +0 -500
  466. package/lib/chat/tui/turn-block.mjs +0 -284
  467. package/lib/chat/tui/turn-present.mjs +0 -18
  468. package/lib/chat/tui/turn-state.mjs +0 -88
  469. package/lib/chat/tui/usage.mjs +0 -122
  470. package/lib/chat/web-commands.mjs +0 -146
  471. package/lib/chat/web-launcher.mjs +0 -63
  472. package/lib/chat/web-picker-keys.mjs +0 -46
  473. package/lib/chat/web-session.mjs +0 -159
  474. package/lib/config/alias.mjs +0 -57
  475. package/lib/dashboard-demo.mjs +0 -71
  476. package/lib/dashboard-static.mjs +0 -175
  477. package/lib/install/desktop-binary-download.mjs +0 -88
  478. package/lib/profiles/loader.mjs +0 -123
  479. package/lib/profiles/rebrand.mjs +0 -46
  480. package/lib/server/auth.mjs +0 -169
  481. package/lib/server/chat-loop.mjs +0 -622
  482. package/lib/server/chat.mjs +0 -336
  483. package/lib/server/cors.mjs +0 -77
  484. package/lib/server/csrf.mjs +0 -103
  485. package/lib/server/demo-preview.mjs +0 -63
  486. package/lib/server/index.mjs +0 -2641
  487. package/lib/server/insights.mjs +0 -780
  488. package/lib/server/langfuse-login.mjs +0 -58
  489. package/lib/server/rate-limit.mjs +0 -93
  490. package/lib/server/telemetry-login.mjs +0 -100
  491. package/lib/server/webhook.mjs +0 -512
  492. package/specialists/contracts.json +0 -1032
  493. package/specialists/contracts.schema.json +0 -83
  494. package/specialists/policy-inventory.json +0 -188
  495. package/specialists/registry.json +0 -1412
  496. package/specialists/role-manifests.json +0 -217
  497. package/specialists/teams.json +0 -94
@@ -6,7 +6,7 @@ artifactType: prompt
6
6
  ---
7
7
  # Prompt Auto-Optimization Loop
8
8
 
9
- Construct's prompt improvement system uses telemetry traces and quality scores as the feedback signal, Claude as the optimizer, and the agent registry (`specialists/registry.json`) as the deployment layer. This is a closed loop: production data → failure analysis → improved prompt → staging → promotion.
9
+ Construct's prompt improvement system uses telemetry traces and quality scores as the feedback signal, Claude as the optimizer, and the modular org registry (`specialists/org/`, assembled at runtime via `loadRegistry()`) as the deployment layer. This is a closed loop: production data → failure analysis → improved prompt → staging → promotion.
10
10
 
11
11
  ## Running the optimizer
12
12
 
@@ -34,7 +34,7 @@ The optimizer requires Python 3.12+ (`pip3` must be available). It will auto-ins
34
34
 
35
35
  ## Step 1: Gather signal
36
36
 
37
- Retrieve the current production prompt for the target agent from `specialists/registry.json` (or the corresponding `promptFile` if using extracted prompts).
37
+ Retrieve the current production prompt for the target agent from the specialist entry under `specialists/org/specialists/` (or the corresponding `promptFile` if using extracted prompts).
38
38
 
39
39
  Then retrieve recent traces via the telemetry backend REST API:
40
40
 
@@ -76,7 +76,7 @@ Write an improved prompt that directly addresses the diagnosed failures. Rules:
76
76
 
77
77
  ## Step 4: Push to staging
78
78
 
79
- Update the agent's prompt in `specialists/registry.json` (or the corresponding `promptFile`) with a staging marker comment. Tag the version by writing to `.cx/decisions/prompt-staging-{agent}-{date}.md`.
79
+ Update the agent's prompt in `specialists/org/specialists/<agent>.json` (or the corresponding `promptFile`) with a staging marker comment. Tag the version by writing to `.cx/decisions/prompt-staging-{agent}-{date}.md`.
80
80
 
81
81
  Log the candidate prompt as a span attribute on a test run batch using `cx_trace`. Tag spans with `promptVersion: staging-{timestamp}` and score them with `cx_score` as traces complete.
82
82
 
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: brand-output-vibe
3
+ description: Use when drafting or exporting customer-facing artifacts (PRD, deck, brief, runbook). Sets typography, prose rhythm, sketch diagrams, and export consistency.
4
+ inputs: [artifact-draft, export-target]
5
+ artifactType: style-guide
6
+ ---
7
+
8
+ # Output vibe (construct-modern)
9
+
10
+ Apply this skill before drafting or exporting any customer-facing artifact (PRD, deck, brief, runbook, video script). User instructions always win; this sets the default feel.
11
+
12
+ ## Typography and color
13
+
14
+ - Sans: Space Grotesk (400–700). Mono: JetBrains Mono for code, IDs, and tables.
15
+ - Monochrome ink ramp only for page furniture: near-black body (`#23272e`), muted labels (`#565c66`), hairline rules (`#e3e4e8`). Color belongs in diagrams and data, not chrome.
16
+ - Do not stamp "Construct" on external deliverables unless the user asks.
17
+
18
+ ## Prose rhythm
19
+
20
+ - Lead with a short declarative paragraph, then structure (headings, one compact table, selective bullets).
21
+ - Avoid bullet walls; never more than seven bullets in a row without a prose bridge.
22
+ - Rare em dashes; prefer commas or parentheses.
23
+
24
+ ## Diagrams (sketch-forward)
25
+
26
+ - Prefer hand-drawn / sketch aesthetic over rigid box-and-arrow clipart.
27
+ - In Mermaid, open with a sketch theme block:
28
+
29
+ ```mermaid
30
+ %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#fafafa', 'primaryBorderColor': '#565c66', 'lineColor': '#23272e', 'fontFamily': 'Space Grotesk'}}}%%
31
+ flowchart LR
32
+ User --> Product
33
+ ```
34
+
35
+ - For high-touch user flows, an Excalidraw embed (`*.excalidraw` beside the doc) is acceptable when Mermaid feels too mechanical.
36
+ - Every flowchart shows at least one non-happy path (error, escalation, or rollback).
37
+
38
+ ## Tables and metrics
39
+
40
+ - Use tables for metrics, acceptance criteria, and comparisons — not for narrative.
41
+ - Pin baselines and targets; cite sources or mark `[unverified]`.
42
+
43
+ ## Export parity
44
+
45
+ - PDF/HTML/PPTX inherit the same fonts and ink ramp from distribution templates.
46
+ - No stock clip-art icons; use simple line icons or typographic labels.
47
+
48
+ When invoked at the start of a workflow skill, restate which vibe choices apply to this artifact type in one sentence, then proceed.
@@ -30,3 +30,6 @@ Use when: an architectural decision is made that affects the system structure, d
30
30
  ## Cross-referencing
31
31
  - If this ADR supersedes another: update the old ADR's status field
32
32
  - If this ADR depends on another: add a References link
33
+ ## Release gate
34
+
35
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -21,3 +21,6 @@ Use when: product evidence should create or update Jira, Linear, GitHub Issues,
21
21
  ## Rules
22
22
 
23
23
  Never write externally from weak evidence without making the risk explicit. Never create duplicate issues when an existing issue can be updated.
24
+ ## Release gate
25
+
26
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -5,13 +5,13 @@ inputs: [repository-path]
5
5
  artifactType: research-brief
6
6
  toneDefault: pedagogical
7
7
  toneAllowed: [pedagogical, direct]
8
- verificationBar: "Every claim cites file:line or command output; no assumed architecture."
8
+ verificationBar: "Every load-bearing claim cites a verifiable primary source; label inference confidence; satisfy template structure requirements."
9
9
  ---
10
10
  # Codebase Research Workflow
11
11
 
12
12
  Use when: cx-explorer investigates **this repository** — structure, dependencies, behavior. Not for external vendor research or user interviews.
13
13
 
14
- Call `get_skill("roles/researcher.explorer")` and `get_skill("exploration/repo-map")` before deep dives.
14
+ Call `get_skill("roles/researcher")` and `get_skill("exploration/repo-map")` before deep dives.
15
15
 
16
16
  ## Steps
17
17
 
@@ -38,3 +38,6 @@ Call `get_skill("roles/researcher.explorer")` and `get_skill("exploration/repo-m
38
38
  - Every architectural claim traceable to file:line.
39
39
  - Unknown paths marked `[unverified]` until read.
40
40
  - cx-explorer must **not** answer product prioritization or user preference questions.
41
+ ## Release gate
42
+
43
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -24,3 +24,6 @@ Profiles are product memory, not CRM records. Keep only information needed for p
24
24
  ## Retrieval
25
25
 
26
26
  Customer profiles are indexed by hybrid retrieval. Future PRDs, PRFAQs, evidence briefs, and backlog proposals should search them before drafting.
27
+ ## Release gate
28
+
29
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -54,3 +54,6 @@ construct ingest ./data/export.xlsx --out=./notes/export.md
54
54
  ## Rules
55
55
 
56
56
  Do not overwrite an existing markdown artifact unless the user explicitly asks for replacement. Prefer creating a suffixed filename instead. Keep original source files untouched.
57
+ ## Release gate
58
+
59
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -3,7 +3,7 @@ name: docs-evidence-ingest-workflow
3
3
  description: "Use when: the user pastes customer notes, Slack threads, support tickets, sales notes, research snippets, RFCs, analytics summaries, or competitor signals."
4
4
  inputs: [signal, document]
5
5
  artifactType: evidence-brief
6
- verificationBar: "Every load-bearing claim cites a verifiable source; label inference confidence; satisfy template structure requirements."
6
+ verificationBar: "Observed behavior weighted over self-report; sample size stated; no invented quotes; every load-bearing claim cites a verifiable source."
7
7
  ---
8
8
  # Evidence Ingest Workflow
9
9
 
@@ -34,3 +34,6 @@ Always preserve:
34
34
  ## Storage
35
35
 
36
36
  Files in `.cx/knowledge/` are indexed by Construct's hybrid retrieval path. The vector layer makes them semantically retrievable for future PRDs and Meta PRDs.
37
+ ## Release gate
38
+
39
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -37,7 +37,7 @@ docs/ ← human-readable project documentation
37
37
  1. Treat `.cx/context.md`, `.cx/context.json`, `.cx/workflow.json`, `docs/README.md`, and `docs/architecture.md` as required project state.
38
38
  2. Read them at the start of every meaningful session.
39
39
  3. Update them whenever work changes active reality: decisions, workflow phase, architecture assumptions, or documentation contract.
40
- 4. Run `construct dashboard` to see the project in the dashboard.
40
+ 4. Run `construct status` to review the project's current state (workflow phase, core docs, uncommitted changes).
41
41
 
42
42
  ## For cx-docs-keeper
43
43
  At session start, check the core docs set. If missing, suggest running `construct init --docs-preset=lean` (or `construct init --docs-preset=full` for the full lane set).
@@ -39,7 +39,7 @@ Style constraint: do not produce a wall of bullets. Use paragraphs for reasoning
39
39
  | `meta-prd` | `docs/meta-prd/{YYYY-MM-DD}-{slug}.md` |
40
40
  | `rfc` | `docs/decisions/rfc/{YYYY-MM-DD}-{slug}.md` |
41
41
  | `rfc-platform` | `docs/decisions/rfc/{YYYY-MM-DD}-{slug}.md` |
42
- 5. **cx-devil-advocate** runs the FMEA challenge pass (`roles/reviewer.devil-advocate`) on the draft; highest-RPN failure modes need a mitigation or explicit accept-with-rationale before ship. Their specialist id must appear in `.cx/agent-log.jsonl` (manifest `releaseGate.requiredReviewers` for PRD-family types).
42
+ 5. **cx-devil-advocate** runs the FMEA challenge pass (`roles/devil-advocate`) on the draft; highest-RPN failure modes need a mitigation or explicit accept-with-rationale before ship. Their specialist id must appear in `.cx/agent-log.jsonl` (manifest `releaseGate.requiredReviewers` for PRD-family types).
43
43
  6. **cx-docs-keeper** updates `.cx/context.md` with a link to the PRD
44
44
 
45
45
  Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -27,3 +27,6 @@ Use when: the user asks for a PRFAQ, working-backwards doc, launch narrative, or
27
27
  ## Approval
28
28
 
29
29
  Stop before marking a PRFAQ approved or publishing it as a document of record.
30
+ ## Release gate
31
+
32
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -2,7 +2,7 @@
2
2
  name: docs-product-intelligence-workflow
3
3
  description: "Use when: the request involves customer evidence, PM synthesis, product requirements, PRDs, PRFAQs, customer profiles, product signals, or backlog proposals."
4
4
  inputs: [signal, evidence-brief]
5
- artifactType: prd
5
+ artifactType: product-intelligence
6
6
  verificationBar: "Every load-bearing claim cites a verifiable source; label inference confidence; satisfy template structure requirements."
7
7
  ---
8
8
  # Product Intelligence Workflow
@@ -73,3 +73,6 @@ Stop and ask the primary persona before:
73
73
  Product Intelligence output must cite evidence, distinguish observation from inference, name confidence, and avoid a wall of bullets. Keep em dashes rare. Use paragraphs for reasoning, tables for comparisons, and bullets for scanability.
74
74
 
75
75
  For time-sensitive or externally sourced claims, include the date basis. For load-bearing claims, prefer two independent sources unless one authoritative primary source is enough.
76
+ ## Release gate
77
+
78
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -61,3 +61,6 @@ After grouping evidence, check `.cx/knowledge/decisions/strategy/` for any decla
61
61
  | PRFAQ | `docs/prfaq/` |
62
62
  | Meta PRD | `docs/meta-prd/` |
63
63
  | Backlog proposal | pending approval gate: do not file until explicit user approval |
64
+ ## Release gate
65
+
66
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -18,7 +18,14 @@ Follow [rules/common/research.md](../../rules/common/research.md) as the default
18
18
  1. **Clarify the question**: one specific, falsifiable question the research must answer.
19
19
  2. **Apply recency discipline**: search from the most recent year backward. For fast-moving domains, treat sources older than 12 months as presumptively stale unless confirmed.
20
20
  3. **Check internal evidence first**: `.cx/research/`, `.cx/knowledge/`, PRDs, ADRs, runbooks before going external.
21
- 4. **Choose authoritative starting points** (external primary only):
21
+ 4. **Choose the tool path by intent, not habit**:
22
+
23
+ - Construct itself → `knowledge_search`
24
+ - Current repo / attached files / ingested artifacts → local evidence first
25
+ - Library / framework / API / cloud docs → Context7 when available, otherwise web-search and fetch official docs directly
26
+ - Everything else → domain-primary sources first, web search only as the locator
27
+
28
+ 5. **Choose authoritative starting points** (external primary only):
22
29
 
23
30
  | Domain | Starting points |
24
31
  |---|---|
@@ -28,11 +35,11 @@ Follow [rules/common/research.md](../../rules/common/research.md) as the default
28
35
  | Cloud / API / SDK | Official vendor docs for exact version, changelog, migration guide |
29
36
  | Regulatory | Primary regulation text, official agency guidance |
30
37
 
31
- 5. **Source hierarchy**: primary → secondary → tertiary (tertiary never alone for load-bearing claims).
32
- 6. **Verify every URL** before citing. Mark unconfirmed as `[unverified]`.
33
- 7. **Tone**: resolve from artifact manifest (`direct`). See `specialists/tone-profiles.json`.
34
- 8. **Structure** with `get_template("research-brief")`; write to `.cx/research/{topic-slug}.md`.
35
- 9. **Reference** the research doc in the requesting agent's output.
38
+ 6. **Source hierarchy**: primary → secondary → tertiary (tertiary never alone for load-bearing claims).
39
+ 7. **Verify every URL** before citing. Mark unconfirmed as `[unverified]`.
40
+ 8. **Tone**: resolve from artifact manifest (`direct`). See `specialists/tone-profiles.json`.
41
+ 9. **Structure** with `get_template("research-brief")`; write to `.cx/research/{topic-slug}.md`.
42
+ 10. **Reference** the research doc in the requesting agent's output.
36
43
 
37
44
  ## Distribution (publish pipeline)
38
45
 
@@ -24,3 +24,6 @@ Use when: creating operational procedures for services, alerts, or recurring ope
24
24
  ## Review cadence
25
25
  - Runbooks should be tested (table-top or live) at least quarterly
26
26
  - Update `Last updated` field after each use or review
27
+ ## Release gate
28
+
29
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -36,3 +36,6 @@ Given a product signal or PRD, check:
36
36
  |---|---|---|
37
37
  | User-global | `~/.cx/strategy.md` | No: local only |
38
38
  | Project-local | `.cx/strategy.md` | Yes: source of truth for this repo |
39
+ ## Release gate
40
+
41
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -5,13 +5,13 @@ inputs: [user-research, interview-data]
5
5
  artifactType: evidence-brief
6
6
  toneDefault: pedagogical
7
7
  toneAllowed: [pedagogical, direct, friendly]
8
- verificationBar: "Observed behavior weighted over self-report; sample size stated; no invented quotes."
8
+ verificationBar: "Observed behavior weighted over self-report; sample size stated; no invented quotes; every load-bearing claim cites a verifiable source."
9
9
  ---
10
10
  # User Research Workflow
11
11
 
12
12
  Use when: cx-ux-researcher gathers or synthesizes **user** evidence. Do not use for CVE lookups, API version facts, or repo structure — use `docs/research-workflow` (cx-researcher) or `docs/codebase-research-workflow` (cx-explorer) instead.
13
13
 
14
- Follow [rules/common/research.md](../../rules/common/research.md) and call `get_skill("roles/researcher.ux")` before drafting.
14
+ Follow [rules/common/research.md](../../rules/common/research.md) and call `get_skill("roles/ux-researcher")` before drafting.
15
15
 
16
16
  ## Steps
17
17
 
@@ -28,7 +28,7 @@ Follow [rules/common/research.md](../../rules/common/research.md) and call `get_
28
28
  | Sales / CS summary | secondary | Trace to underlying tickets when possible |
29
29
 
30
30
  4. **Sampling**: state segment, N, recruitment method. Behavioral claims need ≥5 per segment unless exploratory (flag as low confidence).
31
- 5. **Validity**: name the weakest validity threat (internal/external/construct/conclusion) per `roles/researcher.ux` — that threat is where the finding is most likely wrong.
31
+ 5. **Validity**: name the weakest validity threat (internal/external/construct/conclusion) per `roles/ux-researcher` — that threat is where the finding is most likely wrong.
32
32
  6. **Inter-rater reliability**: when themes are coded from qualitative data, two coders code a sample independently; report agreement (or Cohen's κ when N permits). Persistent disagreement means the codebook is unfinished — fix the codebook before shipping themes.
33
33
  7. **Tone**: default `pedagogical`; override via `.cx/brand-voice.json` if present.
34
34
  8. **Output**: `get_template("evidence-brief")` or `signal-brief` when threshold not met; store under `.cx/knowledge/internal/evidence-briefs/`.
@@ -38,3 +38,6 @@ Follow [rules/common/research.md](../../rules/common/research.md) and call `get_
38
38
  - No invented customer names, quotes, or ticket ids.
39
39
  - Findings describe problems, not prescribed UI solutions.
40
40
  - cx-ux-researcher must **not** cite blog posts for API version or security claims.
41
+ ## Release gate
42
+
43
+ Run `construct artifact validate <path> --type=<type>` before marking the artifact approved.
@@ -118,7 +118,7 @@ If you reason about the same decision across two consecutive turns without a new
118
118
 
119
119
  ## Speculation rule
120
120
 
121
- When choosing between named options (SDK vs SDK, library vs library, pattern vs pattern), the answer comes from `context7_query-docs`, `WebFetch`, the user, or an explicit default: never from internal reasoning rounds alone.
121
+ When choosing between named options (SDK vs SDK, library vs library, pattern vs pattern), the answer comes from the appropriate evidence path: Context7 for library/framework/API docs when available, direct fetch/search of official docs otherwise, local repo evidence when the question is project-local, the user, or an explicit default. Never from internal reasoning rounds alone.
122
122
 
123
123
  ## Dispatch-first test
124
124
 
@@ -3,12 +3,12 @@ name: roles-engineer-ai
3
3
  description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Engineer — AI role. Use when reviewing or generating work by cx-ai-engineer, or when an agent is acting in the Engineer — AI role.
4
4
  inputs: [code-diff, prompt]
5
5
  artifactType: role-guidance
6
- role: engineer.ai
6
+ role: ai-engineer
7
7
  applies_to:
8
8
  - cx-ai-engineer
9
9
  inherits: engineer
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-architect
9
9
  inherits: architect
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-architect
9
9
  inherits: architect
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-architect
9
9
  inherits: architect
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-architect
9
9
  inherits: architect
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -9,7 +9,7 @@ applies_to:
9
9
  - cx-rd-lead
10
10
  inherits: null
11
11
  version: 2
12
- profiles:
12
+ scopes:
13
13
  - rnd
14
14
  cap: 1
15
15
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-architect
9
9
  inherits: architect
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -3,12 +3,12 @@ name: roles-product-manager-business-strategy
3
3
  description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Product Manager — Business Strategy role. Use when reviewing or generating work by cx-business-strategist, or when an agent is acting in the Product Manager — Business Strategy role.
4
4
  inputs: [strategy-doc, competitive-analysis]
5
5
  artifactType: guidance
6
- role: product-manager.business-strategy
6
+ role: business-strategist
7
7
  applies_to:
8
8
  - cx-business-strategist
9
- inherits: product-manager
9
+ inherits: null
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-data-analyst
9
9
  inherits: data-analyst
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-data-analyst
9
9
  inherits: null
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -9,7 +9,7 @@ applies_to:
9
9
  - cx-product-manager
10
10
  inherits: data-analyst
11
11
  version: 2
12
- profiles:
12
+ scopes:
13
13
  - rnd
14
14
  cap: 1
15
15
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-data-analyst
9
9
  inherits: data-analyst
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -9,7 +9,7 @@ applies_to:
9
9
  - cx-sre
10
10
  inherits: data-analyst
11
11
  version: 2
12
- profiles:
12
+ scopes:
13
13
  - rnd
14
14
  cap: 1
15
15
  ---
@@ -3,12 +3,12 @@ name: roles-engineer-data
3
3
  description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Engineer — Data role. Use when reviewing or generating work by cx-data-engineer, or when an agent is acting in the Engineer — Data role.
4
4
  inputs: [code-diff, data-pipeline]
5
5
  artifactType: role-guidance
6
- role: engineer.data
6
+ role: data-engineer
7
7
  applies_to:
8
8
  - cx-data-engineer
9
9
  inherits: engineer
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -6,9 +6,9 @@ artifactType: role-guidance
6
6
  role: data-engineer.pipeline
7
7
  applies_to:
8
8
  - cx-data-engineer
9
- inherits: engineer.data
9
+ inherits: data-engineer
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -7,9 +7,9 @@ role: data-engineer.vector-retrieval
7
7
  applies_to:
8
8
  - cx-data-engineer
9
9
  - cx-ai-engineer
10
- inherits: engineer.data
10
+ inherits: data-engineer
11
11
  version: 2
12
- profiles:
12
+ scopes:
13
13
  - rnd
14
14
  cap: 1
15
15
  ---
@@ -6,9 +6,9 @@ artifactType: role-guidance
6
6
  role: data-engineer.warehouse
7
7
  applies_to:
8
8
  - cx-data-engineer
9
- inherits: engineer.data
9
+ inherits: data-engineer
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-debugger
9
9
  inherits: null
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -8,7 +8,7 @@ applies_to:
8
8
  - cx-accessibility
9
9
  inherits: designer
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -9,7 +9,7 @@ applies_to:
9
9
  - cx-accessibility
10
10
  inherits: null
11
11
  version: 2
12
- profiles:
12
+ scopes:
13
13
  - rnd
14
14
  cap: 1
15
15
  ---
@@ -3,12 +3,12 @@ name: roles-reviewer-devil-advocate
3
3
  description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Reviewer — Devil Advocate role. Use when reviewing or generating work by cx-devil-advocate, or when an agent is acting in the Reviewer — Devil Advocate role.
4
4
  inputs: [plan, proposal]
5
5
  artifactType: guidance
6
- role: reviewer.devil-advocate
6
+ role: devil-advocate
7
7
  applies_to:
8
8
  - cx-devil-advocate
9
9
  inherits: reviewer
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -3,12 +3,12 @@ name: roles-operator-docs
3
3
  description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Operator — Docs role. Use when reviewing or generating work by cx-docs-keeper, or when an agent is acting in the Operator — Docs role.
4
4
  inputs: [docs, runbook]
5
5
  artifactType: role-guidance
6
- role: operator.docs
6
+ role: docs-keeper
7
7
  applies_to:
8
8
  - cx-docs-keeper
9
- inherits: operator
9
+ inherits: operations
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -1,17 +1,14 @@
1
1
  ---
2
2
  name: roles-engineer
3
- description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Engineer role. Use when reviewing or generating work by cx-engineer, cx-ai-engineer, cx-data-engineer, cx-platform-engineer, or when an agent is acting in the Engineer role.
3
+ description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Engineer role. Use when reviewing or generating work by cx-engineer, or when an agent is acting in the Engineer role.
4
4
  inputs: [code-diff, task-context]
5
5
  artifactType: role-guidance
6
6
  role: engineer
7
7
  applies_to:
8
8
  - cx-engineer
9
- - cx-ai-engineer
10
- - cx-data-engineer
11
- - cx-platform-engineer
12
9
  inherits: null
13
10
  version: 2
14
- profiles:
11
+ scopes:
15
12
  - rnd
16
13
  cap: 1
17
14
  ---
@@ -68,7 +65,7 @@ Load this before drafting. These are the failure modes that separate strong role
68
65
  ### 10. Speculating across thinking turns
69
66
  **Symptom**: reasoning about which library, pattern, or abstraction to use across multiple thinking turns without reading code, calling docs, or asking.
70
67
  **Why it fails**: guesses compound; the eventual choice is made from context the model built about itself, not from the codebase or the library.
71
- **Counter-move**: two unproductive passes is the cap. Next step is a targeted read, a docs lookup (`context7_query-docs`/`WebFetch`), a NEEDS_MAIN_INPUT packet, or a default with a noted assumption.
68
+ **Counter-move**: two unproductive passes is the cap. Next step is a targeted read, the appropriate docs/evidence lookup path (Context7 for library docs when available, direct official-doc fetch otherwise), a NEEDS_MAIN_INPUT packet, or a default with a noted assumption.
72
69
 
73
70
  ### 11. Unbounded file reads
74
71
  **Symptom**: reading files with large `limit` values without checking size first, or offset reads that fail with "out of range".
@@ -118,4 +115,3 @@ Shortcut: `npm run release:check`.
118
115
  **Effective Action**: Before modifying a function, read the full file and grep for callers with `grep -r 'functionName' src/`...
119
116
  **Evidence**: Score 0.89, used 8 times, 2 projects
120
117
  *Last reinforced: 2026-05-04*
121
-
@@ -3,12 +3,12 @@ name: roles-reviewer-evaluator
3
3
  description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Reviewer — Evaluator role. Use when reviewing or generating work by cx-evaluator, or when an agent is acting in the Reviewer — Evaluator role.
4
4
  inputs: [model-output, eval-set]
5
5
  artifactType: guidance
6
- role: reviewer.evaluator
6
+ role: evaluator
7
7
  applies_to:
8
8
  - cx-evaluator
9
9
  inherits: reviewer
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---
@@ -3,12 +3,12 @@ name: roles-researcher-explorer
3
3
  description: Surfaces anti-patterns, failure modes, and counter-moves specific to the Researcher — Explorer role. Use when reviewing or generating work by cx-explorer, or when an agent is acting in the Researcher — Explorer role.
4
4
  inputs: [repo, task-context]
5
5
  artifactType: guidance
6
- role: researcher.explorer
6
+ role: explorer
7
7
  applies_to:
8
8
  - cx-explorer
9
9
  inherits: researcher
10
10
  version: 2
11
- profiles:
11
+ scopes:
12
12
  - rnd
13
13
  cap: 1
14
14
  ---