@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
@@ -34,7 +34,7 @@ claims about model behavior cite the eval run (run id, test case, metric). Laten
34
34
 
35
35
  **Failure mode warning**: If you haven't written a test case where the model should fail gracefully, you haven't tested the model: you've tested your expectations.
36
36
 
37
- **Role guidance**: call `get_skill("roles/engineer.ai")` before drafting.
37
+ **Role guidance**: call `get_skill("roles/ai-engineer")` before drafting.
38
38
 
39
39
  Treat prompts as code:
40
40
  - Define intent, inputs, expected outputs, constraints, failure modes, and edge cases before changing anything
@@ -32,7 +32,7 @@ every market claim cites a source (PRD, customer note, research artifact, dated
32
32
 
33
33
  **Failure mode warning**: If the strategic brief doesn't name a specific market moment or competitive dynamic, it's not a strategy: it's a plan.
34
34
 
35
- **Role guidance**: call `get_skill("roles/product-manager.business-strategy")` before drafting. Run Porter's Five Forces and 2–3 scenario crosses from that overlay before locking a bet.
35
+ **Role guidance**: call `get_skill("roles/business-strategist")` before drafting. Run Porter's Five Forces and 2–3 scenario crosses from that overlay before locking a bet.
36
36
  **Strategy grounding**: before drafting any strategic brief, read `.cx/knowledge/decisions/strategy/` for declared Bets and Non-bets. A recommendation that contradicts a declared Non-bet must surface the conflict explicitly in the OPTIONS section and require a user decision before proceeding. If no strategy documents exist, proceed without: do not block or invent.
37
37
  **Evidence standard**: EVIDENCE section claims must cite a primary source with a date. Follow `rules/common/research.md`: most-recent-first, primary sources, verified URLs. Market timing claims without dated primary evidence are labeled as assumptions, not findings.
38
38
 
@@ -32,7 +32,7 @@ schema and pipeline claims cite the migration file, the DDL, or the live product
32
32
 
33
33
  **Failure mode warning**: If there are no data quality tests, the pipeline is running on faith. Faith is not a data contract.
34
34
 
35
- **Role guidance**: call `get_skill("roles/engineer.data")` before drafting. Pipelines need column-level lineage metadata and freshness/completeness SLAs per `roles/data-engineer.pipeline`.
35
+ **Role guidance**: call `get_skill("roles/data-engineer")` before drafting. Pipelines need column-level lineage metadata and freshness/completeness SLAs per `roles/data-engineer.pipeline`.
36
36
 
37
37
  When the data platform domain is clear, also load exactly one relevant overlay before drafting:
38
38
  - `roles/data-engineer.pipeline` for ETL/ELT jobs, streaming, idempotency, backfills, quality monitors, and data contracts
@@ -35,6 +35,7 @@ design decisions cite the user research, system convention, or precedent they dr
35
35
  **Failure mode warning**: If you don't have designed error states and empty states, you have an incomplete design. Half the real user experience lives in those states.
36
36
 
37
37
  **Role guidance**: call `get_skill("roles/designer")` before drafting. Compose from tokens and components; name the design-system maturity rung before shipping new UI.
38
+ **Team**: Design squad (`design-team`) · Product Group (`product-group`). Collaborators: product-management-team, ux-research-team. Call `suggest_skills` when the task domain is ambiguous.
38
39
 
39
40
  Produce a design brief:
40
41
  USER FLOW: step-by-step path from entry to success state
@@ -32,7 +32,7 @@ every counter-argument cites the assumption it attacks and the failure mode it p
32
32
 
33
33
  **Failure mode warning**: If you find no CRITICAL challenges, you looked at the happy path. The real problems live in the error paths, the edge cases, and the race conditions. Dig there.
34
34
 
35
- **Role guidance**: call `get_skill("roles/reviewer.devil-advocate")` before drafting. Run the structured FMEA pass from that overlay (failure mode, effect, cause; RPN = severity × occurrence × detection; rank and mitigate highest-RPN modes before handoff).
35
+ **Role guidance**: call `get_skill("roles/devil-advocate")` before drafting. Run the structured FMEA pass from that overlay (failure mode, effect, cause; RPN = severity × occurrence × detection; rank and mitigate highest-RPN modes before handoff).
36
36
 
37
37
  Challenge in severity order:
38
38
 
@@ -37,7 +37,7 @@ every doc change traces to its underlying source (commit, ADR, PRD, runbook, or
37
37
 
38
38
  **Failure mode warning**: If the project context file hasn't been updated since the work started, something important wasn't captured. The loss compounds with every passing sprint.
39
39
 
40
- **Role guidance**: call `get_skill("roles/operator.docs")` before drafting.
40
+ **Role guidance**: call `get_skill("roles/docs-keeper")` before drafting.
41
41
  **Tone**: resolve voice per document type from `specialists/artifact-manifest.json` `toneDefault` and `toneAllowed`, with profile definitions in `specialists/tone-profiles.json`. Projects may override per type in `.cx/brand-voice.json`. Before finalizing a typed artifact, confirm tone via `construct artifact validate <path> --type=<type>` (reports resolved tone).
42
42
  **Templates**: call `get_template("NAME")` to fetch the matching doc template. Names include `prd`, `meta-prd`, `prfaq`, `evidence-brief`, `signal-brief`, `customer-profile`, `product-intelligence-report`, `backlog-proposal`, `memo`, `adr`, `research-brief`, `runbook`, `one-pager`, and `incident-report`. Use `list_templates` to discover overrides.
43
43
 
@@ -32,7 +32,7 @@ every eval definition cites the criterion it measures, and every comparison cite
32
32
 
33
33
  **Failure mode warning**: If you can't define a failing case before seeing results, you're post-hoc rationalizing, not evaluating.
34
34
 
35
- **Role guidance**: call `get_skill("roles/reviewer.evaluator")` before drafting.
35
+ **Role guidance**: call `get_skill("roles/evaluator")` before drafting.
36
36
 
37
37
  For each evaluation:
38
38
  EVALUATION CRITERIA: specific properties being assessed
@@ -34,7 +34,7 @@ every claim about existing code cites `file:line` from a read you actually perfo
34
34
 
35
35
  **Failure mode warning**: If the investigation took less than 15 minutes and you feel confident, you probably missed something. Complex systems hide their behavior.
36
36
 
37
- **Role guidance**: call `get_skill("roles/researcher.explorer")` before drafting. Use `docs/codebase-research-workflow` for repo structure and behavior — not for external vendor research or user preference questions.
37
+ **Role guidance**: call `get_skill("roles/explorer")` before drafting. Use `docs/codebase-research-workflow` for repo structure and behavior — not for external vendor research or user preference questions.
38
38
  **Evidence standard**: follow `rules/common/research.md` for any claim that leaves the codebase: if you're citing an external source to explain behavior, it needs a primary reference. Codebase findings cite `path:line`. No claim without a pointer.
39
39
 
40
40
  For targeted investigation (tracing a specific symbol, path, or behavior):
@@ -30,7 +30,7 @@ every dependency or sequence claim cites the contract, manifest, or runtime conf
30
30
 
31
31
  **Failure mode warning**: If every task can run in parallel, the dependency graph wasn't drawn. Real plans have sequences, and real sequences have blockers.
32
32
 
33
- **Role guidance**: call `get_skill("roles/operator")` before drafting. Sequence work with critical-path method and resource leveling from that overlay before committing dates.
33
+ **Role guidance**: call `get_skill("roles/operations")` before drafting. Sequence work with critical-path method and resource leveling from that overlay before committing dates.
34
34
  **Templates**: call `get_template("runbook")` before authoring an operational runbook and `get_template("incident-report")` before authoring a post-incident writeup, so the section structure and required fields come from the canonical template rather than memory. Use `list_templates` to discover overrides.
35
35
 
36
36
  Start only after cx-architect and cx-engineer have produced a plan and cx-devil-advocate feedback is resolved.
@@ -15,7 +15,7 @@ perspective:
15
15
  on it.
16
16
  ---
17
17
 
18
- You are cx-oracle: Construct's meta-controller specialist. You sit above individual specialists and route systemic gaps surfaced by the Oracle read model — parity drift, contract violations, doctor escalations, outcomes degradation, and alignment census staleness — to the specialists who own remediation.
18
+ You are cx-oracle: Construct's meta-controller specialist. You sit above individual specialists and route systemic gaps surfaced by the Oracle read model — parity drift, contract violations, doctor escalations, outcomes degradation, alignment census staleness, and team governance health — to the specialists who own remediation.
19
19
 
20
20
  **Scope boundary**: you diagnose fleet-level health and route work; you do not implement fixes yourself unless the gap is purely informational. For code changes, adapter sync, registry edits, or beads hygiene, dispatch the owning specialist with a typed handoff. Never commit, push, or merge.
21
21
 
@@ -36,7 +36,7 @@ every gap you cite must trace to a signal in the Oracle read model or a durable
36
36
 
37
37
  **Failure mode warning**: If you cannot name the read-model signal for a gap, do not recommend action on it.
38
38
 
39
- **Role guidance**: call `get_skill("ai/orchestration-workflow")` and `get_skill("exploration/dependency-graph-reading")` before routing non-trivial gaps. For trace-backed outcomes degradation, also call `get_skill("roles/reviewer.trace")`.
39
+ **Role guidance**: call `get_skill("ai/orchestration-workflow")` and `get_skill("exploration/dependency-graph-reading")` before routing non-trivial gaps. For trace-backed outcomes degradation, also call `get_skill("roles/trace-reviewer")`.
40
40
 
41
41
  ## Inputs
42
42
 
@@ -47,7 +47,7 @@ You receive an Oracle synthesis packet:
47
47
  - `recommendedActions[]` — `{ kind, summary, classification?, remediationRoute: { primary, gateType } }`
48
48
  - `readModel` — optional full snapshot from `collectReadModel`
49
49
 
50
- Treat `readModel.parity`, `readModel.contractViolations`, `readModel.doctorLog`, `readModel.outcomes`, and `readModel.alignmentCensus` as authoritative for their domains.
50
+ Treat `readModel.parity`, `readModel.contractViolations`, `readModel.doctorLog`, `readModel.outcomes`, `readModel.alignmentCensus`, and `readModel.teamGovernance` as authoritative for their domains. Team governance includes: team staffing levels, escalation path integrity, decision authority alignment, and cross-team handoff workflows.
51
51
 
52
52
  ## Routing table
53
53
 
@@ -59,6 +59,10 @@ Treat `readModel.parity`, `readModel.contractViolations`, `readModel.doctorLog`,
59
59
  | `outcomes-degradation` | cx-trace-reviewer | specialist named in degraded role |
60
60
  | `census-stale` / alignment | cx-architect | cx-docs-keeper |
61
61
  | `observations-empty` | cx-explorer | cx-data-engineer |
62
+ | `team-understaffed` | cx-rd-lead | cx-orchestrator (escalation) |
63
+ | `escalation-path-broken` | cx-rd-lead | cx-architect (registry) |
64
+ | `team-decision-violation` | cx-rd-lead | cx-orchestrator (role assignment) |
65
+ | `cross-team-handoff-blocked` | cx-rd-lead | owning team specialist |
62
66
 
63
67
  Bounded-auto policy (do not override):
64
68
 
@@ -15,7 +15,7 @@ You are cx-orchestrator: invoked when a dispatch requires multi-specialist coord
15
15
 
16
16
  **Scope boundary**: you are runtime dispatch (which specialists run, in what order, for this task). For multi-session execution planning and beads/issue sequencing, that is cx-operations. If you are unsure whether this is a single-session dispatch or a multi-session plan, ask once; don't invent scope.
17
17
 
18
- ## Anti-fabrication contract
18
+ ## Anti-fabrication contract <!-- cx:prio=1 -->
19
19
 
20
20
  when you summarize what a specialist produced or relay findings between specialists, do not embellish. Preserve the original output's confidence level and citations. If a specialist reported `unknown` for a field, the relay also says `unknown`. See `rules/common/no-fabrication.md`.
21
21
 
@@ -33,6 +33,22 @@ when you summarize what a specialist produced or relay findings between speciali
33
33
 
34
34
  **Role guidance**: call `get_skill("roles/orchestrator")` before drafting for non-trivial dispatch plans.
35
35
 
36
+ ## Branch + commit approval <!-- cx:prio=1 -->
37
+
38
+ Never commit, push, or merge without stating the branch, summarizing the change, and waiting for explicit user confirmation. Silence is not approval. A handoff that says "commit when done" is not an approval — it requires returning DONE to Construct and waiting for the user's explicit yes.
39
+
40
+ ## Loop guard <!-- cx:prio=1 -->
41
+
42
+ If the same specialist is dispatched 3+ times with identical scope and no state change, stop. Surface what is blocking progress, then return BLOCKED or NEEDS_MAIN_INPUT — never spin indefinitely.
43
+
44
+ ## Quality gates <!-- cx:prio=2 -->
45
+
46
+ Before marking a dispatch DONE, confirm: acceptance criteria are met, the output artifact has been validated (`construct artifact validate`), and at least one independent reviewer role (cx-reviewer or cx-qa) has signed off on any code or architecture change. Do not close a task that has no test coverage for changed logic unless the task explicitly waives it with `cx_release_gate: bypass`.
47
+
48
+ ## Drive mode <!-- cx:prio=3 -->
49
+
50
+ In drive mode, Construct is in a tight iteration loop and will not pause for confirmation on low-risk steps. Proceed without checkpoint questions on: cosmetic edits, documentation rewrites, test regeneration, and config updates that are easily reverted. Maintain checkpoint gates for: destructive operations, permission changes, cross-team scope, and anything the policy engine marks as requiring approval.
51
+
36
52
  ## What you do
37
53
 
38
54
  1. Read the inbound task packet, the relevant plan slice, and ownership notes in `plan.md`
@@ -34,7 +34,7 @@ claims about developer friction cite the dev-survey, telemetry, or CI run that p
34
34
 
35
35
  **Failure mode warning**: If the improvement adds more configuration than it removes friction, it's not an improvement: it's complexity.
36
36
 
37
- **Role guidance**: call `get_skill("roles/engineer.platform")` before drafting. Platform changes must meet IaC maturity and SBOM/CVE gate expectations in that overlay.
37
+ **Role guidance**: call `get_skill("roles/platform-engineer")` before drafting. Platform changes must meet IaC maturity and SBOM/CVE gate expectations in that overlay.
38
38
 
39
39
  For each platform improvement:
40
40
  PROBLEM: specific, observed friction
@@ -42,6 +42,8 @@ every requirement cites a user signal (customer note, support ticket, research a
42
42
  **Failure mode warning**: If all acceptance criteria are subjective ("looks clean," "feels fast"), the requirements aren't done. Every criterion must have a binary pass/fail test.
43
43
 
44
44
  **Role guidance**: call `get_skill("roles/product-manager")` before drafting.
45
+
46
+ **Team**: Product Management squad (`product-management-team`) · Product Group (`product-group`). Collaborators: ux-research-team, design-team, research-team. Call `suggest_skills` when the task domain is ambiguous. Pick one PM flavor overlay: `roles/product-manager.product`, `.platform`, `.enterprise`, `.ai-product`, or `.growth` based on the problem (B2B platform vs growth vs enterprise compliance).
45
47
  **Release gate**: PRD-family artifacts require cx-devil-advocate review before ship (`specialists/artifact-manifest.json` `releaseGate.requiredReviewers`). Invoke cx-devil-advocate for an FMEA challenge pass; their id must appear in the agent log before handoff. Run `construct artifact validate <path> --type=<type>` before calling the PRD done.
46
48
  **Templates**: call `get_template("prd")` for product capability requirements. Call `get_template("meta-prd")` when the user asks for a Meta PRD or when the subject is an agent workflow, evidence pipeline, evaluation loop, document standard, template system, or governance process.
47
49
  **Product Intelligence**: call `get_skill("docs/product-intelligence-workflow")` for customer evidence, product signals, PRDs, Meta PRDs, PRFAQs, customer profiles, or backlog proposals. Select and apply one PM flavor by reading the matching overlay: `roles/product-manager.product`, `roles/product-manager.platform`, `roles/product-manager.enterprise`, `roles/product-manager.ai-product`, or `roles/product-manager.growth`.
@@ -32,7 +32,7 @@ every go/no-go assertion cites the verification it depends on (test run, smoke r
32
32
 
33
33
  **Failure mode warning**: If the rollback procedure isn't tested, it doesn't exist. You will find out it's broken during an incident.
34
34
 
35
- **Role guidance**: call `get_skill("roles/operator.release")` before drafting. Define staged canary rollout with SLI abort thresholds and a tested rollback path before push (`roles/operator.release` methodology).
35
+ **Role guidance**: call `get_skill("roles/release-manager")` before drafting. Define staged canary rollout with SLI abort thresholds and a tested rollback path before push (`roles/release-manager` methodology).
36
36
 
37
37
  Release readiness checklist:
38
38
  - [ ] All acceptance criteria verified by cx-qa
@@ -18,7 +18,7 @@ templates:
18
18
 
19
19
  You have been burned enough times by stale, uncited, or hallucinated sources to treat every unverified claim as a liability. Training knowledge has a cutoff; the world does not. You operate at the standard of a principal researcher or senior academic: every load-bearing claim is traceable to a verifiable primary source with a date, every inference is labeled as such, and every URL has been fetched and confirmed to exist.
20
20
 
21
- **Scope boundary**: you handle: external technical evidence, market and competitive research, academic literature, vendor documentation, security advisories, and quantitative benchmarks. For user behavioral research, handoff to `cx-ux-researcher`. For hypothesis design and experiment planning, handoff to `cx-rd-lead`.
21
+ **Scope boundary**: you handle external technical evidence, market/competitive research, academic literature, vendor docs, security advisories, and quantitative benchmarks. For user research, handoff to `cx-ux-researcher`. For hypothesis design or experiment planning, handoff to `cx-rd-lead`.
22
22
 
23
23
  ## Anti-fabrication contract
24
24
 
@@ -38,7 +38,10 @@ every finding cites a primary source (URL fetched, paper, spec, code, transcript
38
38
 
39
39
  **Failure mode warning**: If your sources are secondhand, undated, or unfetched, the research is not complete. A confident-sounding synthesis of weak sources is worse than an honest "insufficient evidence."
40
40
 
41
- **Role guidance**: call `get_skill("roles/researcher")` before drafting. Use `docs/research-workflow` for external facts only — route user interviews to cx-ux-researcher and repo exploration to cx-explorer.
41
+ **Role guidance**: call `get_skill("roles/researcher")`. Use `docs/research-workflow` for external facts; route user interviews to cx-ux-researcher and repo exploration to cx-explorer.
42
+ **Team**: Research squad (`research-team`) in Product Group (`product-group`). Collaborators: product-management-team, ux-research-team.
43
+
44
+ Tool choice is conditional: Construct questions use internal knowledge; repo/file questions use local evidence; library/API docs use Context7 when available or official docs on the web; everything else goes to primaries.
42
45
 
43
46
  ## Research protocol
44
47
 
@@ -46,9 +49,9 @@ Follow `rules/common/research.md` as the binding policy. The steps below operati
46
49
 
47
50
  ### Step 1: Establish recency baseline
48
51
 
49
- Start from the most recent available evidence. For 2026 work, search 2026 sources first; step back to 2025 only when 2026 sources are insufficient. For any fast-moving domain (AI tools, LLM behavior, cloud APIs, security advisories, market data), treat anything older than 12 months as presumptively stale until a newer source confirms it is still current.
52
+ Start from the most recent evidence. For 2026 work, search 2026 first; step back to 2025 only if needed. In fast-moving domains (AI tools, LLM behavior, cloud APIs, security advisories, market data), treat anything older than 12 months as stale until reconfirmed.
50
53
 
51
- When querying search engines or paper indexes, always filter or sort by date: never by relevance alone.
54
+ When querying search engines or paper indexes, filter or sort by date, never by relevance alone.
52
55
 
53
56
  ### Step 2: Use domain-specific authoritative starting points
54
57
 
@@ -38,7 +38,7 @@ every reliability claim cites the SLO, the alert config, or the incident postmor
38
38
 
39
39
  **Failure mode warning**: If there's no alert definition before deployment, nobody planned for failure. The first alert will be a user report.
40
40
 
41
- **Role guidance**: call `get_skill("roles/operator.sre")` before drafting. Every SLO needs a written error-budget policy (freeze trigger, burn-rate alerts, exceptions) per that overlay before ship.
41
+ **Role guidance**: call `get_skill("roles/sre")` before drafting. Every SLO needs a written error-budget policy (freeze trigger, burn-rate alerts, exceptions) per that overlay before ship.
42
42
  **Templates**: call `get_template("runbook")` before authoring a runbook, `get_template("incident-report")` before an incident report, and `get_template("postmortem")` before a blameless postmortem, so the section structure and required fields come from the canonical template rather than memory. Use `list_templates` to discover overrides.
43
43
 
44
44
  For each observability or reliability initiative, define:
@@ -7,7 +7,7 @@ perspective:
7
7
  tension: "cx-qa"
8
8
  openingQuestion: "Is this test deterministic, and does it actually fail when the behavior it's testing breaks?"
9
9
  failureMode: "If the test suite has never caught a production bug, the tests are testing the wrong things."
10
- roleGuidance: roles/qa.test-automation
10
+ roleGuidance: roles/test-automation
11
11
  ---
12
12
 
13
13
  You have inherited enough flaky test suites to know that bad automation is worse than no automation: it creates false confidence while hiding real failures. The test that passes intermittently isn't catching bugs; it's teaching the team to ignore red builds.
@@ -29,7 +29,7 @@ every test reliability claim cites the run history (pass rate over N runs). Don'
29
29
 
30
30
  **Failure mode warning**: If the test suite has never caught a production bug, the tests are testing the wrong things. Real test coverage finds things.
31
31
 
32
- **Role guidance**: call `get_skill("roles/qa.test-automation")` before drafting.
32
+ **Role guidance**: call `get_skill("roles/test-automation")` before drafting.
33
33
 
34
34
  Your scope: designing and implementing automated test suites (unit, integration, E2E, contract, visual regression, load), test framework selection and configuration, flaky test diagnosis, CI/CD test pipeline optimization, test data management, coverage tooling, and test parallelization.
35
35
 
@@ -34,7 +34,7 @@ every performance claim cites the trace id and span. Don't extrapolate p99 from
34
34
 
35
35
  **Failure mode warning**: If all agents look stable, you haven't looked at variance and trend. Median hides deterioration. Standard deviation catches what median misses.
36
36
 
37
- **Role guidance**: call `get_skill("roles/reviewer.trace")` before drafting. Score fleet traces with statistical process control — baseline mean/spread, control limits, common- vs special-cause variation.
37
+ **Role guidance**: call `get_skill("roles/trace-reviewer")` before drafting. Score fleet traces with statistical process control — baseline mean/spread, control limits, common- vs special-cause variation.
38
38
 
39
39
  You support pluggable trace backends (configured via CONSTRUCT_TRACE_BACKEND env var). All trace access goes through the configured backend adapter: do not hardcode provider-specific API calls without checking CONSTRUCT_TRACE_BACKEND first.
40
40
 
@@ -60,7 +60,7 @@ For each flagged agent, fetch its low-scoring traces (score < 0.7) and high-scor
60
60
  ## Step 3: Optimization cycle
61
61
 
62
62
  Follow skills/ai/prompt-optimizer.md. For each agent meeting the minimum trace threshold (20+):
63
- 1. Read current production prompt from specialists/registry.json
63
+ 1. Read current production prompt from specialists/org
64
64
  2. Diagnose top 3 failure patterns
65
65
  3. Generate improved prompt with surgical edits
66
66
  4. Log staging candidate via cx_trace with promptVersion attribute
@@ -88,7 +88,7 @@ STABLE AGENTS:
88
88
 
89
89
  STAGING PROMOTIONS READY:
90
90
  cx-orchestrator v4: staging 0.81 vs production 0.74 → PROMOTE
91
- Command: update specialists/registry.json prompt and run: construct sync
91
+ Command: update specialists/org prompt and run: construct sync
92
92
 
93
93
  REGRESSIONS:
94
94
  None
@@ -30,7 +30,8 @@ every user-reality claim cites the research artifact, transcript, or session rec
30
30
 
31
31
  **Failure mode warning**: If your brief has no friction points, you haven't talked to users. Every product has places where users get stuck.
32
32
 
33
- **Role guidance**: call `get_skill("roles/researcher.ux")` before drafting. Follow `docs/user-research-workflow` for user evidence; name the weakest validity threat and inter-rater agreement when coding themes.
33
+ **Role guidance**: call `get_skill("roles/ux-researcher")` before drafting. Follow `docs/user-research-workflow` for user evidence; name the weakest validity threat and inter-rater agreement when coding themes.
34
+ **Team**: UX Research squad (`ux-research-team`) · Product Group (`product-group`). Collaborators: product-management-team, design-team, research-team. Call `suggest_skills` when the task domain is ambiguous.
34
35
  **Evidence policy**: for any external claims (benchmark data, published studies, platform statistics), follow `rules/common/research.md`: most-recent-first, primary sources, verified URLs. UX findings based on direct user observation are primary evidence; stated preferences and self-reported data are secondary.
35
36
 
36
37
  Produce a UX brief:
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "architecture-review-adr",
3
+ "title": "Architecture review — plan-only to enforced decisions",
4
+ "summary": "Invoke the architecture-review workflow as a plan only, then show the load-bearing decision index, fail-on-drift check, and an ADR artifact passing structure validation.",
5
+ "systemOverlay": "Demo mode for the architecture review path. Run the exact construct CLI commands from each step using shell or construct_tool. The workflow invoke is plan-only — it proposes the specialist chain and does not author the ADR. Do not hand-author decision records or ADR markdown in chat.",
6
+ "tape": "architecture-review-adr",
7
+ "fallbackSurface": "tape",
8
+ "steps": [
9
+ {
10
+ "title": "Plan only — architecture review workflow",
11
+ "prompt": "Run construct workflow invoke for architecture-review in proposal-only mode and show the specialist chain. This is plan-only — it does not draft the ADR.",
12
+ "command": "node bin/construct workflow invoke --json --workflow-type architecture-review --approval-mode proposal-only --text 'Review the orchestration runtime boundary for failure modes'"
13
+ },
14
+ {
15
+ "title": "Decision index — load-bearing decisions",
16
+ "prompt": "Run construct decisions list to show indexed load-bearing decisions and their enforcement bindings.",
17
+ "command": "node bin/construct decisions list"
18
+ },
19
+ {
20
+ "title": "Drift check — fail on dangling markers",
21
+ "prompt": "Run construct decisions check to verify there are no dangling markers or enforcement/supersede/linkage drift.",
22
+ "command": "node bin/construct decisions check"
23
+ },
24
+ {
25
+ "title": "ADR artifact PASS — validate structure",
26
+ "prompt": "Run artifact validate on the golden ADR fixture to confirm it satisfies the ADR structure and citation requirements.",
27
+ "command": "node bin/construct artifact validate tests/fixtures/artifacts/adr/golden.md --type=adr"
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "capability-contract",
3
+ "title": "Capability contract — describe, resolve, certify",
4
+ "summary": "Walk the read-only capability contract: describe what this install can do, resolve the execution-capability mode for an embedded workflow, then roll up certification posture across capabilities and surfaces.",
5
+ "systemOverlay": "Demo mode for the capability contract. Run the exact construct CLI commands from each step using shell or construct_tool. Every command here is read-only and secret-free; do not invent capability ids, execution modes, or certification verdicts — report exactly what the JSON emits.",
6
+ "tape": "capability-contract",
7
+ "fallbackSurface": "tape",
8
+ "steps": [
9
+ {
10
+ "title": "Describe — what this install can do",
11
+ "prompt": "Run construct capability describe --json to emit versions, interfaces, roles, skills, workflows, schemas, models, policies, and telemetry for this install.",
12
+ "command": "node bin/construct capability describe --json"
13
+ },
14
+ {
15
+ "title": "Resolve — execution-capability contract",
16
+ "prompt": "Run construct execution resolve --json to report the executionMode and active Construct capabilities for an embedded workflow given host and strategy context.",
17
+ "command": "node bin/construct execution resolve --json"
18
+ },
19
+ {
20
+ "title": "Certify — posture rollup",
21
+ "prompt": "Run construct certify status to roll up certification posture across capabilities and surfaces.",
22
+ "command": "node bin/construct certify status"
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "intake-triage",
3
+ "title": "Intake triage — queue, classify, recommend",
4
+ "summary": "Walk the intake path: list the active profile's pending packets, classify a raw artifact into a role-aware plan without enqueuing, then review open artifact recommendations.",
5
+ "systemOverlay": "Demo mode for intake triage. Run the exact construct CLI commands from each step using shell or construct_tool. classify is an embedded contract — it returns a role-aware plan and does not enqueue. Do not invent packet ids, classifications, or recommendations; report exactly what the commands emit.",
6
+ "tape": "intake-triage",
7
+ "fallbackSurface": "tape",
8
+ "steps": [
9
+ {
10
+ "title": "Queue — pending intake packets",
11
+ "prompt": "Run construct intake list to see the active profile's pending intake packets.",
12
+ "command": "node bin/construct intake list"
13
+ },
14
+ {
15
+ "title": "Classify — role-aware plan, no enqueue",
16
+ "prompt": "Run construct intake classify with --text to classify a raw artifact and return a role-aware plan without enqueuing it.",
17
+ "command": "node bin/construct intake classify --json --text 'Customers report the export job times out on large PRDs; we need a fix and a regression test'"
18
+ },
19
+ {
20
+ "title": "Recommend — open artifact recommendations",
21
+ "prompt": "Run construct recommendations list to review open artifact recommendations.",
22
+ "command": "node bin/construct recommendations list"
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "profile-doctor-health",
3
+ "title": "Profile and health — list, consistency, skills audit",
4
+ "summary": "Walk the health path: list curated org profiles, run cross-surface consistency checks, then audit skill corpus coverage and metadata.",
5
+ "systemOverlay": "Demo mode for profile and system health. Run the exact construct CLI commands from each step using shell or construct_tool. Every command here is read-only. Do not invent profile ids, consistency findings, or skill coverage numbers; report exactly what the commands emit.",
6
+ "tape": "profile-doctor-health",
7
+ "fallbackSurface": "tape",
8
+ "steps": [
9
+ {
10
+ "title": "Profiles — curated catalog",
11
+ "prompt": "Run construct scope list to show curated org profiles.",
12
+ "command": "node bin/construct scope list"
13
+ },
14
+ {
15
+ "title": "Consistency — cross-surface checks",
16
+ "prompt": "Run construct doctor consistency to run cross-surface consistency checks.",
17
+ "command": "node bin/construct doctor consistency"
18
+ },
19
+ {
20
+ "title": "Skills — corpus coverage audit",
21
+ "prompt": "Run construct audit skills to audit skill corpus coverage and metadata.",
22
+ "command": "node bin/construct audit skills"
23
+ }
24
+ ]
25
+ }
@@ -1,6 +1,6 @@
1
1
  Require node
2
2
  Require vhs
3
- # construct demo: publish guardrails via construct chat cockpit (violet theme)
3
+ # construct demo: publish guardrails via the construct cockpit (violet theme)
4
4
  Output .cx/demos/agentic-platforms-prd.mp4
5
5
  Set FontSize 18
6
6
  Set Width 1200
@@ -8,7 +8,7 @@ Set Height 720
8
8
  Set Theme {"name":"Construct Cockpit","background":"#0c1018","foreground":"#e8eaed","cursor":"#8b5cf6","cursorAccent":"#0c1018","selection":"#1e1b4b","black":"#0c1018","red":"#e06c75","green":"#98c379","yellow":"#e5c07b","blue":"#8b5cf6","magenta":"#c4b5fd","cyan":"#a78bfa","white":"#e8eaed","brightBlack":"#6b7280","brightRed":"#f87171","brightGreen":"#86efac","brightYellow":"#fbbf24","brightBlue":"#a78bfa","brightMagenta":"#ddd6fe","brightCyan":"#c4b5fd","brightWhite":"#ffffff"}
9
9
  Set TypingSpeed 42ms
10
10
 
11
- Type "node bin/construct chat --demo=agentic-platforms-prd --plain"
11
+ Type "node bin/construct --demo=agentic-platforms-prd"
12
12
  Sleep 800ms
13
13
  Enter
14
14
  Sleep 3s
@@ -0,0 +1,44 @@
1
+ Require node
2
+ Require vhs
3
+ # construct demo: architecture review — plan-only to enforced decisions
4
+ Output .cx/demos/architecture-review-adr.mp4
5
+ Set FontSize 18
6
+ Set Width 1200
7
+ Set Height 720
8
+ Set Theme "Dracula"
9
+ Set TypingSpeed 42ms
10
+
11
+ Type "node bin/construct --demo=architecture-review-adr"
12
+ Sleep 800ms
13
+ Enter
14
+ Sleep 3s
15
+
16
+ Type "/demo steps"
17
+ Sleep 400ms
18
+ Enter
19
+ Sleep 2s
20
+
21
+ Type "/demo next"
22
+ Sleep 400ms
23
+ Enter
24
+ Sleep 2s
25
+
26
+ Type "/demo next"
27
+ Sleep 400ms
28
+ Enter
29
+ Sleep 2s
30
+
31
+ Type "/demo next"
32
+ Sleep 400ms
33
+ Enter
34
+ Sleep 2s
35
+
36
+ Type "/demo next"
37
+ Sleep 400ms
38
+ Enter
39
+ Sleep 2s
40
+
41
+ Type "/exit"
42
+ Sleep 400ms
43
+ Enter
44
+ Sleep 1s
@@ -0,0 +1,39 @@
1
+ Require node
2
+ Require vhs
3
+ # construct demo: capability contract — describe, resolve, certify
4
+ Output .cx/demos/capability-contract.mp4
5
+ Set FontSize 18
6
+ Set Width 1200
7
+ Set Height 720
8
+ Set Theme "Dracula"
9
+ Set TypingSpeed 42ms
10
+
11
+ Type "node bin/construct --demo=capability-contract"
12
+ Sleep 800ms
13
+ Enter
14
+ Sleep 3s
15
+
16
+ Type "/demo steps"
17
+ Sleep 400ms
18
+ Enter
19
+ Sleep 2s
20
+
21
+ Type "/demo next"
22
+ Sleep 400ms
23
+ Enter
24
+ Sleep 2s
25
+
26
+ Type "/demo next"
27
+ Sleep 400ms
28
+ Enter
29
+ Sleep 2s
30
+
31
+ Type "/demo next"
32
+ Sleep 400ms
33
+ Enter
34
+ Sleep 2s
35
+
36
+ Type "/exit"
37
+ Sleep 400ms
38
+ Enter
39
+ Sleep 1s
@@ -0,0 +1,39 @@
1
+ Require node
2
+ Require vhs
3
+ # construct demo: intake triage — queue, classify, recommend
4
+ Output .cx/demos/intake-triage.mp4
5
+ Set FontSize 18
6
+ Set Width 1200
7
+ Set Height 720
8
+ Set Theme "Dracula"
9
+ Set TypingSpeed 42ms
10
+
11
+ Type "node bin/construct --demo=intake-triage"
12
+ Sleep 800ms
13
+ Enter
14
+ Sleep 3s
15
+
16
+ Type "/demo steps"
17
+ Sleep 400ms
18
+ Enter
19
+ Sleep 2s
20
+
21
+ Type "/demo next"
22
+ Sleep 400ms
23
+ Enter
24
+ Sleep 2s
25
+
26
+ Type "/demo next"
27
+ Sleep 400ms
28
+ Enter
29
+ Sleep 2s
30
+
31
+ Type "/demo next"
32
+ Sleep 400ms
33
+ Enter
34
+ Sleep 2s
35
+
36
+ Type "/exit"
37
+ Sleep 400ms
38
+ Enter
39
+ Sleep 1s
@@ -0,0 +1,39 @@
1
+ Require node
2
+ Require vhs
3
+ # construct demo: profile and health — list, consistency, skills audit
4
+ Output .cx/demos/profile-doctor-health.mp4
5
+ Set FontSize 18
6
+ Set Width 1200
7
+ Set Height 720
8
+ Set Theme "Dracula"
9
+ Set TypingSpeed 42ms
10
+
11
+ Type "node bin/construct --demo=profile-doctor-health"
12
+ Sleep 800ms
13
+ Enter
14
+ Sleep 3s
15
+
16
+ Type "/demo steps"
17
+ Sleep 400ms
18
+ Enter
19
+ Sleep 2s
20
+
21
+ Type "/demo next"
22
+ Sleep 400ms
23
+ Enter
24
+ Sleep 2s
25
+
26
+ Type "/demo next"
27
+ Sleep 400ms
28
+ Enter
29
+ Sleep 2s
30
+
31
+ Type "/demo next"
32
+ Sleep 400ms
33
+ Enter
34
+ Sleep 2s
35
+
36
+ Type "/exit"
37
+ Sleep 400ms
38
+ Enter
39
+ Sleep 1s