@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.
- package/README.md +7 -10
- package/bin/construct +286 -220
- package/bin/construct-postinstall.mjs +0 -21
- package/commands/work/optimize-prompts.md +1 -1
- package/examples/distribution/sources/adr.md +2 -2
- package/examples/seed-observations/decisions.md +1 -1
- package/lib/artifact-loop-core.mjs +412 -0
- package/lib/artifact-manifest.mjs +6 -0
- package/lib/artifact-release-gate.mjs +115 -49
- package/lib/audit-rules.mjs +2 -4
- package/lib/audit-skills.mjs +32 -20
- package/lib/audit-specialists.mjs +44 -26
- package/lib/auto-docs.mjs +6 -5
- package/lib/brand-prose.mjs +3 -3
- package/lib/brand-tokens.mjs +2 -2
- package/lib/certification/artifact-fixtures.mjs +4 -1
- package/lib/certification/demo-parity.mjs +6 -32
- package/lib/certification/real-llm-scenarios.mjs +58 -13
- package/lib/certification/role-cards.mjs +7 -6
- package/lib/certification/role-overlays.mjs +4 -4
- package/lib/certification/runner.mjs +9 -2
- package/lib/certification/skill-inventory.mjs +34 -22
- package/lib/certification/skill-scenarios.mjs +21 -8
- package/lib/certification/specialist-contracts.mjs +4 -3
- package/lib/certification/specialist-scenarios.mjs +7 -6
- package/lib/certification/status.mjs +5 -4
- package/lib/cli-commands.mjs +56 -57
- package/lib/comment-lint.mjs +1 -5
- package/lib/completions.mjs +20 -2
- package/lib/config/legacy-config-migration.mjs +125 -0
- package/lib/config/schema.mjs +5 -5
- package/lib/config/source-targets.mjs +80 -0
- package/lib/contracts/validate.mjs +119 -51
- package/lib/decisions/golden.mjs +3 -2
- package/lib/decisions/registry.mjs +11 -6
- package/lib/demo-project.mjs +188 -0
- package/lib/demo-recording.mjs +9 -34
- package/lib/demo-script.mjs +2 -2
- package/lib/demo-surface.mjs +13 -131
- package/lib/demo-tour-renderer.mjs +92 -0
- package/lib/demo.mjs +69 -54
- package/lib/diagram-export.mjs +63 -14
- package/lib/doctor/source-checkout.mjs +3 -4
- package/lib/doctor/watchers/consistency.mjs +90 -22
- package/lib/doctor/watchers/credential-parity.mjs +97 -0
- package/lib/doctor/watchers/mcp-protocol.mjs +1 -1
- package/lib/doctor/watchers/service-health.mjs +4 -32
- package/lib/document-export.mjs +73 -9
- package/lib/document-extract.mjs +10 -198
- package/lib/embed/artifact.mjs +2 -3
- package/lib/embed/cli.mjs +1 -1
- package/lib/embed/config.mjs +1 -2
- package/lib/embed/customer-profiles.mjs +1 -1
- package/lib/embed/daemon.mjs +5 -6
- package/lib/embed/demand-fetch.mjs +114 -2
- package/lib/embed/docs-lifecycle.mjs +9 -5
- package/lib/embed/intake-metrics.mjs +2 -2
- package/lib/embed/notifications.mjs +2 -3
- package/lib/embed/recommendation-store.mjs +25 -22
- package/lib/embed/role-framing.mjs +4 -9
- package/lib/embedded-contract/capability.mjs +4 -2
- package/lib/embedded-contract/contract-version.mjs +1 -1
- package/lib/env-config.mjs +2 -2
- package/lib/flavors/loader.mjs +21 -19
- package/lib/graph/build-from-registry.mjs +31 -7
- package/lib/graph/staleness.mjs +1 -1
- package/lib/headhunt.mjs +82 -35
- package/lib/hooks/agent-tracker.mjs +2 -2
- package/lib/hooks/config-protection.mjs +1 -1
- package/lib/hooks/registry-sync.mjs +3 -3
- package/lib/host-capabilities.mjs +5 -5
- package/lib/improvement/controller.mjs +2 -2
- package/lib/init-unified.mjs +19 -21
- package/lib/intake/classify.mjs +26 -0
- package/lib/intake/daemon.mjs +2 -3
- package/lib/intake/prepare.mjs +10 -3
- package/lib/intake/session-prelude.mjs +1 -1
- package/lib/intake/tables/creative.mjs +9 -9
- package/lib/intake/tables/operations.mjs +4 -4
- package/lib/intake/tables/research.mjs +2 -2
- package/lib/integrations/intake-integrations.mjs +9 -10
- package/lib/knowledge/research-store.mjs +2 -2
- package/lib/mcp/server.mjs +104 -61
- package/lib/mcp/tool-budget.mjs +1 -46
- package/lib/mcp/tool-recovery.mjs +44 -0
- package/lib/mcp/tools/artifact-author.mjs +36 -0
- package/lib/mcp/tools/find-tool.mjs +86 -0
- package/lib/mcp/tools/orchestration-run.mjs +107 -69
- package/lib/mcp/tools/project.mjs +4 -3
- package/lib/mcp/tools/{profile.mjs → scope.mjs} +54 -52
- package/lib/mcp/tools/skills.mjs +39 -22
- package/lib/mcp/tools/telemetry.mjs +2 -1
- package/lib/mcp/tools/workflow.mjs +1 -1
- package/lib/mcp-platform-config.mjs +7 -5
- package/lib/migrations/index.mjs +4 -2
- package/lib/migrations/v2-unified-registry.mjs +35 -0
- package/lib/model-router.mjs +203 -36
- package/lib/models/catalog.mjs +25 -9
- package/lib/models/execution-capability-profile.mjs +3 -3
- package/lib/models/execution-policy.mjs +7 -6
- package/lib/models/provider-poll.mjs +18 -4
- package/lib/opencode-config.mjs +56 -1
- package/lib/opencode-runtime-plugin.mjs +13 -10
- package/lib/oracle/artifact-gate.mjs +14 -4
- package/lib/oracle/cli.mjs +2 -0
- package/lib/oracle/dispatch.mjs +18 -1
- package/lib/oracle/execute.mjs +39 -7
- package/lib/oracle/index.mjs +1 -1
- package/lib/oracle/org-graph.mjs +10 -5
- package/lib/oracle/policy.mjs +6 -0
- package/lib/oracle/read-model.mjs +103 -6
- package/lib/oracle/reconcile.mjs +31 -4
- package/lib/oracle/remediation-dispatch.mjs +53 -0
- package/lib/oracle/routing.mjs +5 -0
- package/lib/oracle/synthesize.mjs +80 -3
- package/lib/orchestration/routing-tables.mjs +44 -10
- package/lib/orchestration/runtime.mjs +2 -0
- package/lib/orchestration/worker.mjs +1 -1
- package/lib/orchestration-policy.mjs +351 -62
- package/lib/overrides/resolver.mjs +1 -12
- package/lib/parity.mjs +37 -11
- package/lib/policy/engine.mjs +80 -15
- package/lib/prompt-composer.js +51 -15
- package/lib/prompt-metadata.mjs +3 -2
- package/lib/providers/connection-probe.mjs +58 -0
- package/lib/providers/copilot-auth.mjs +1 -1
- package/lib/providers/credential-bootstrap.mjs +1 -1
- package/lib/providers/op-run.mjs +3 -4
- package/lib/providers/secret-resolver.mjs +31 -0
- package/lib/publish-tooling.mjs +3 -11
- package/lib/publish.mjs +12 -29
- package/lib/reconcile/mcp-entry-reconcile.mjs +14 -9
- package/lib/reflect.mjs +2 -2
- package/lib/registry/agent-manifest.mjs +190 -0
- package/lib/registry/assemble.mjs +133 -0
- package/lib/registry/catalog.mjs +171 -0
- package/lib/registry/cli.mjs +590 -6
- package/lib/registry/consolidation.mjs +5 -4
- package/lib/registry/docs-sync.mjs +67 -0
- package/lib/registry/loader.mjs +147 -0
- package/lib/registry/org-io.mjs +76 -0
- package/lib/registry/retired-paths.mjs +71 -0
- package/lib/registry/surface-map.mjs +5 -7
- package/lib/registry/validator.mjs +438 -0
- package/lib/research-execution-policy.mjs +173 -0
- package/lib/roles/catalog.mjs +4 -9
- package/lib/roles/fence.mjs +107 -1
- package/lib/roles/flavor-bindings.mjs +68 -0
- package/lib/roles/gateway.mjs +140 -29
- package/lib/roles/manifest.mjs +22 -13
- package/lib/roles/router.mjs +1 -1
- package/lib/runtime-env.mjs +1 -1
- package/lib/scopes/enrich.mjs +67 -0
- package/lib/scopes/hooks.mjs +12 -0
- package/lib/{profiles → scopes}/lifecycle.mjs +70 -70
- package/lib/scopes/loader.mjs +104 -0
- package/lib/scopes/rebrand.mjs +32 -0
- package/lib/scopes/research-profile.mjs +16 -0
- package/lib/scopes/teams.mjs +98 -0
- package/lib/service-manager.mjs +1 -117
- package/lib/setup-prompts.mjs +1 -1
- package/lib/setup.mjs +17 -28
- package/lib/skills/composition-graph.mjs +98 -0
- package/lib/skills/router.mjs +80 -0
- package/lib/specialist-contracts.mjs +17 -18
- package/lib/specialists/postconditions.mjs +2 -2
- package/lib/specialists/prompt-schema.mjs +6 -5
- package/lib/specialists/roster.mjs +7 -12
- package/lib/specialists/schema.mjs +9 -6
- package/lib/status.mjs +25 -90
- package/lib/storage/file-lock.mjs +6 -3
- package/lib/telemetry/skill-calls.mjs +1 -1
- package/lib/templates/doc-presentation.mjs +63 -0
- package/lib/templates/visual-requirements.mjs +35 -2
- package/lib/term-format.mjs +107 -2
- package/lib/test-env-setup.mjs +21 -0
- package/lib/ui/components.mjs +42 -0
- package/lib/ui/glyphs.mjs +58 -0
- package/lib/ui/links.mjs +115 -0
- package/lib/ui/theme.mjs +108 -0
- package/lib/uninstall/uninstall.mjs +2 -1
- package/lib/validator.mjs +45 -8
- package/lib/validators/skill-effectiveness.mjs +174 -0
- package/lib/validators/skills.mjs +1 -1
- package/package.json +12 -7
- package/personas/construct.md +12 -3
- package/platforms/claude/CLAUDE.md +1 -1
- package/rules/common/beads-hygiene.md +52 -0
- package/rules/common/neurodivergent-output.md +4 -7
- package/rules/common/research.md +2 -0
- package/scripts/sync-specialists.mjs +260 -49
- package/skills/ai/prompt-optimizer.md +3 -3
- package/skills/brand/output-vibe.md +48 -0
- package/skills/docs/adr-workflow.md +3 -0
- package/skills/docs/backlog-proposal-workflow.md +3 -0
- package/skills/docs/codebase-research-workflow.md +5 -2
- package/skills/docs/customer-profile-workflow.md +3 -0
- package/skills/docs/document-ingest-workflow.md +3 -0
- package/skills/docs/evidence-ingest-workflow.md +4 -1
- package/skills/docs/init-project.md +1 -1
- package/skills/docs/prd-workflow.md +1 -1
- package/skills/docs/prfaq-workflow.md +3 -0
- package/skills/docs/product-intelligence-workflow.md +4 -1
- package/skills/docs/product-signal-workflow.md +3 -0
- package/skills/docs/research-workflow.md +13 -6
- package/skills/docs/runbook-workflow.md +3 -0
- package/skills/docs/strategy-workflow.md +3 -0
- package/skills/docs/user-research-workflow.md +6 -3
- package/skills/operating/orchestration-reference.md +1 -1
- package/skills/roles/{engineer.ai.md → ai-engineer.md} +2 -2
- package/skills/roles/architect.ai-systems.md +1 -1
- package/skills/roles/architect.data.md +1 -1
- package/skills/roles/architect.enterprise.md +1 -1
- package/skills/roles/architect.integration.md +1 -1
- package/skills/roles/architect.md +1 -1
- package/skills/roles/architect.platform.md +1 -1
- package/skills/roles/{product-manager.business-strategy.md → business-strategist.md} +3 -3
- package/skills/roles/data-analyst.experiment.md +1 -1
- package/skills/roles/data-analyst.md +1 -1
- package/skills/roles/data-analyst.product-intelligence.md +1 -1
- package/skills/roles/data-analyst.product.md +1 -1
- package/skills/roles/data-analyst.telemetry.md +1 -1
- package/skills/roles/{engineer.data.md → data-engineer.md} +2 -2
- package/skills/roles/data-engineer.pipeline.md +2 -2
- package/skills/roles/data-engineer.vector-retrieval.md +2 -2
- package/skills/roles/data-engineer.warehouse.md +2 -2
- package/skills/roles/debugger.md +1 -1
- package/skills/roles/designer.accessibility.md +1 -1
- package/skills/roles/designer.md +1 -1
- package/skills/roles/{reviewer.devil-advocate.md → devil-advocate.md} +2 -2
- package/skills/roles/{operator.docs.md → docs-keeper.md} +3 -3
- package/skills/roles/engineer.md +3 -7
- package/skills/roles/{reviewer.evaluator.md → evaluator.md} +2 -2
- package/skills/roles/{researcher.explorer.md → explorer.md} +2 -2
- package/skills/roles/{operator.md → operations.md} +2 -5
- package/skills/roles/orchestrator.md +1 -1
- package/skills/roles/{engineer.platform.md → platform-engineer.md} +2 -2
- package/skills/roles/product-manager.ai-product.md +1 -1
- package/skills/roles/product-manager.enterprise.md +1 -1
- package/skills/roles/product-manager.growth.md +1 -2
- package/skills/roles/product-manager.md +1 -2
- package/skills/roles/product-manager.platform.md +1 -1
- package/skills/roles/product-manager.product.md +1 -1
- package/skills/roles/qa.ai-eval.md +1 -1
- package/skills/roles/qa.api-contract.md +1 -1
- package/skills/roles/qa.data-pipeline.md +1 -1
- package/skills/roles/qa.md +1 -1
- package/skills/roles/qa.web-ui.md +1 -1
- package/skills/roles/{operator.release.md → release-manager.md} +3 -3
- package/skills/roles/researcher.md +1 -1
- package/skills/roles/reviewer.md +1 -1
- package/skills/roles/security.ai.md +1 -1
- package/skills/roles/security.appsec.md +1 -1
- package/skills/roles/security.cloud.md +1 -1
- package/skills/roles/security.legal-compliance.md +1 -1
- package/skills/roles/security.md +1 -1
- package/skills/roles/security.privacy.md +1 -1
- package/skills/roles/security.supply-chain.md +1 -1
- package/skills/roles/{operator.sre.md → sre.md} +3 -3
- package/skills/roles/{qa.test-automation.md → test-automation.md} +2 -2
- package/skills/roles/{reviewer.trace.md → trace-reviewer.md} +2 -2
- package/skills/roles/{researcher.ux.md → ux-researcher.md} +2 -2
- package/skills/routing.json +18 -0
- package/skills/routing.md +1 -1
- package/specialists/artifact-manifest.json +2 -1
- package/specialists/audit-enrichments.json +14 -14
- package/specialists/org/contracts/accessibility-to-qa.json +37 -0
- package/specialists/org/contracts/any-to-business-strategist.json +57 -0
- package/specialists/org/contracts/any-to-debugger.json +38 -0
- package/specialists/org/contracts/any-to-designer.json +33 -0
- package/specialists/org/contracts/any-to-docs-keeper.json +34 -0
- package/specialists/org/contracts/any-to-explorer.json +39 -0
- package/specialists/org/contracts/any-to-sre-incident.json +33 -0
- package/specialists/org/contracts/any-to-trace-reviewer.json +32 -0
- package/specialists/org/contracts/architect-to-ai-engineer.json +32 -0
- package/specialists/org/contracts/architect-to-data-engineer.json +52 -0
- package/specialists/org/contracts/architect-to-devil-advocate.json +38 -0
- package/specialists/org/contracts/architect-to-engineer.json +34 -0
- package/specialists/org/contracts/architect-to-evaluator.json +59 -0
- package/specialists/org/contracts/architect-to-legal-compliance.json +55 -0
- package/specialists/org/contracts/architect-to-operations.json +45 -0
- package/specialists/org/contracts/architect-to-platform-engineer.json +42 -0
- package/specialists/org/contracts/business-strategist-to-product-manager.json +39 -0
- package/specialists/org/contracts/construct-to-orchestrator.json +36 -0
- package/specialists/org/contracts/construct-to-rd-lead.json +53 -0
- package/specialists/org/contracts/data-analyst-to-product-manager.json +43 -0
- package/specialists/org/contracts/data-engineer-to-platform-engineer.json +36 -0
- package/specialists/org/contracts/designer-to-accessibility.json +36 -0
- package/specialists/org/contracts/engineer-to-qa.json +34 -0
- package/specialists/org/contracts/engineer-to-reviewer.json +52 -0
- package/specialists/org/contracts/explorer-to-engineer.json +38 -0
- package/specialists/org/contracts/legal-compliance-to-release-manager.json +43 -0
- package/specialists/org/contracts/platform-engineer-to-engineer.json +31 -0
- package/specialists/org/contracts/product-manager-to-architect.json +71 -0
- package/specialists/org/contracts/product-manager-to-data-analyst.json +49 -0
- package/specialists/org/contracts/product-manager-to-ux-researcher.json +51 -0
- package/specialists/org/contracts/qa-to-release-manager.json +42 -0
- package/specialists/org/contracts/qa-to-test-automation.json +42 -0
- package/specialists/org/contracts/rd-lead-to-architect.json +38 -0
- package/specialists/org/contracts/researcher-to-architect.json +40 -0
- package/specialists/org/contracts/researcher-to-product-manager.json +57 -0
- package/specialists/org/contracts/reviewer-to-security.json +41 -0
- package/specialists/org/contracts/sre-to-release-manager.json +36 -0
- package/specialists/org/contracts/test-automation-to-engineer.json +34 -0
- package/specialists/org/contracts/trace-reviewer-to-sre.json +41 -0
- package/specialists/org/contracts/user-to-construct.json +30 -0
- package/specialists/org/groups/engineering-group.json +43 -0
- package/specialists/org/groups/governance-group.json +38 -0
- package/specialists/org/groups/operations-group.json +41 -0
- package/specialists/org/groups/product-group.json +46 -0
- package/specialists/org/groups/quality-group.json +42 -0
- package/specialists/org/groups/strategy-group.json +41 -0
- package/specialists/org/policies/action-approval.json +13 -0
- package/specialists/org/policies/agents-routing.json +13 -0
- package/specialists/org/policies/architecture.json +20 -0
- package/specialists/org/policies/bash-safety.json +13 -0
- package/specialists/org/policies/beads-hygiene.json +13 -0
- package/specialists/org/policies/bootstrap-state.json +13 -0
- package/specialists/org/policies/code-review.json +13 -0
- package/specialists/org/policies/coding-style.json +13 -0
- package/specialists/org/policies/comments.json +13 -0
- package/specialists/org/policies/commit-approval.json +13 -0
- package/specialists/org/policies/contract-preconditions.json +13 -0
- package/specialists/org/policies/deployment.json +20 -0
- package/specialists/org/policies/description.json +14 -0
- package/specialists/org/policies/design-approval.json +19 -0
- package/specialists/org/policies/doc-ownership.json +13 -0
- package/specialists/org/policies/file-path-fence.json +13 -0
- package/specialists/org/policies/framing.json +13 -0
- package/specialists/org/policies/git-workflow.json +13 -0
- package/specialists/org/policies/incident-response.json +15 -0
- package/specialists/org/policies/intake-triage.json +15 -0
- package/specialists/org/policies/neurodivergent-output.json +13 -0
- package/specialists/org/policies/no-fabrication.json +13 -0
- package/specialists/org/policies/patterns.json +13 -0
- package/specialists/org/policies/quality-gate-approval.json +17 -0
- package/specialists/org/policies/release-gates.json +13 -0
- package/specialists/org/policies/research-evidence.json +13 -0
- package/specialists/org/policies/review-before-change.json +13 -0
- package/specialists/org/policies/rollback.json +15 -0
- package/specialists/org/policies/scope-change.json +20 -0
- package/specialists/org/policies/secret-scan.json +13 -0
- package/specialists/org/policies/security-approval.json +17 -0
- package/specialists/org/policies/security.json +13 -0
- package/specialists/org/policies/session-efficiency.json +13 -0
- package/specialists/org/policies/skill-routing.json +13 -0
- package/specialists/org/policies/strategic-prioritization.json +17 -0
- package/specialists/org/policies/testing.json +13 -0
- package/specialists/org/policies/tool-invisibility.json +14 -0
- package/specialists/org/scopes/creative.json +54 -0
- package/specialists/org/scopes/operations.json +51 -0
- package/specialists/org/scopes/research.json +60 -0
- package/specialists/org/scopes/rnd.json +81 -0
- package/specialists/org/specialists/cx-accessibility.json +69 -0
- package/specialists/org/specialists/cx-ai-engineer.json +75 -0
- package/specialists/org/specialists/cx-architect.json +89 -0
- package/specialists/org/specialists/cx-business-strategist.json +72 -0
- package/specialists/org/specialists/cx-data-analyst.json +68 -0
- package/specialists/org/specialists/cx-data-engineer.json +71 -0
- package/specialists/org/specialists/cx-debugger.json +75 -0
- package/specialists/org/specialists/cx-designer.json +85 -0
- package/specialists/org/specialists/cx-devil-advocate.json +71 -0
- package/specialists/org/specialists/cx-docs-keeper.json +82 -0
- package/specialists/org/specialists/cx-engineer.json +106 -0
- package/specialists/org/specialists/cx-evaluator.json +69 -0
- package/specialists/org/specialists/cx-explorer.json +69 -0
- package/specialists/org/specialists/cx-legal-compliance.json +74 -0
- package/specialists/org/specialists/cx-operations.json +72 -0
- package/specialists/org/specialists/cx-oracle.json +46 -0
- package/specialists/org/specialists/cx-orchestrator.json +81 -0
- package/specialists/org/specialists/cx-platform-engineer.json +80 -0
- package/specialists/org/specialists/cx-product-manager.json +102 -0
- package/specialists/org/specialists/cx-qa.json +79 -0
- package/specialists/org/specialists/cx-rd-lead.json +73 -0
- package/specialists/org/specialists/cx-release-manager.json +77 -0
- package/specialists/org/specialists/cx-researcher.json +82 -0
- package/specialists/org/specialists/cx-reviewer.json +71 -0
- package/specialists/org/specialists/cx-security.json +91 -0
- package/specialists/org/specialists/cx-sre.json +94 -0
- package/specialists/org/specialists/cx-test-automation.json +69 -0
- package/specialists/org/specialists/cx-trace-reviewer.json +69 -0
- package/specialists/org/specialists/cx-ux-researcher.json +68 -0
- package/specialists/org/teams/accessibility-team.json +39 -0
- package/specialists/org/teams/design-team.json +40 -0
- package/specialists/org/teams/engineering-team.json +50 -0
- package/specialists/org/teams/governance-team.json +41 -0
- package/specialists/org/teams/operations-team.json +46 -0
- package/specialists/org/teams/product-management-team.json +45 -0
- package/specialists/org/teams/quality-team.json +49 -0
- package/specialists/org/teams/research-team.json +39 -0
- package/specialists/org/teams/strategy-team.json +48 -0
- package/specialists/org/teams/ux-research-team.json +39 -0
- package/specialists/prompts/_shared/validation-contract.md +1 -1
- package/specialists/prompts/_team-template.md +10 -0
- package/specialists/prompts/cx-accessibility.md +1 -0
- package/specialists/prompts/cx-ai-engineer.md +1 -1
- package/specialists/prompts/cx-business-strategist.md +1 -1
- package/specialists/prompts/cx-data-engineer.md +1 -1
- package/specialists/prompts/cx-designer.md +1 -0
- package/specialists/prompts/cx-devil-advocate.md +1 -1
- package/specialists/prompts/cx-docs-keeper.md +1 -1
- package/specialists/prompts/cx-evaluator.md +1 -1
- package/specialists/prompts/cx-explorer.md +1 -1
- package/specialists/prompts/cx-operations.md +1 -1
- package/specialists/prompts/cx-oracle.md +7 -3
- package/specialists/prompts/cx-orchestrator.md +17 -1
- package/specialists/prompts/cx-platform-engineer.md +1 -1
- package/specialists/prompts/cx-product-manager.md +2 -0
- package/specialists/prompts/cx-release-manager.md +1 -1
- package/specialists/prompts/cx-researcher.md +7 -4
- package/specialists/prompts/cx-sre.md +1 -1
- package/specialists/prompts/cx-test-automation.md +2 -2
- package/specialists/prompts/cx-trace-reviewer.md +3 -3
- package/specialists/prompts/cx-ux-researcher.md +2 -1
- package/templates/demos/scripts/architecture-review-adr.json +30 -0
- package/templates/demos/scripts/capability-contract.json +25 -0
- package/templates/demos/scripts/intake-triage.json +25 -0
- package/templates/demos/scripts/profile-doctor-health.json +25 -0
- package/templates/demos/tapes/agentic-platforms-prd.tape +2 -2
- package/templates/demos/tapes/architecture-review-adr.tape +44 -0
- package/templates/demos/tapes/capability-contract.tape +39 -0
- package/templates/demos/tapes/intake-triage.tape +39 -0
- package/templates/demos/tapes/profile-doctor-health.tape +39 -0
- package/templates/distribution/construct-brand.typ +23 -18
- package/templates/distribution/construct-decision.typ +1 -1
- package/templates/distribution/construct-pdf.typ +1 -1
- package/templates/distribution/construct-prd.typ +1 -1
- package/templates/distribution/construct-research.typ +1 -1
- package/templates/distribution/mermaid-puppeteer.json +8 -0
- package/templates/docs/persona-artifact.md +1 -1
- package/templates/docs/prd.md +6 -0
- package/lib/boundary.mjs +0 -127
- package/lib/certification/dashboard-api.mjs +0 -71
- package/lib/chat/cli.mjs +0 -333
- package/lib/chat/command-suggest.mjs +0 -161
- package/lib/chat/commands.mjs +0 -215
- package/lib/chat/config.mjs +0 -142
- package/lib/chat/context-compactor.mjs +0 -250
- package/lib/chat/context-continuation.mjs +0 -253
- package/lib/chat/continuation-source.mjs +0 -58
- package/lib/chat/demo-guide.mjs +0 -61
- package/lib/chat/design-tokens.mjs +0 -91
- package/lib/chat/desktop-binary.mjs +0 -81
- package/lib/chat/desktop-build.mjs +0 -130
- package/lib/chat/desktop-launcher.mjs +0 -133
- package/lib/chat/evidence.mjs +0 -145
- package/lib/chat/export.mjs +0 -74
- package/lib/chat/harness/driver.mjs +0 -91
- package/lib/chat/list-picker.mjs +0 -112
- package/lib/chat/model-picker.mjs +0 -356
- package/lib/chat/openrouter-fallback.mjs +0 -151
- package/lib/chat/permission-prompt.mjs +0 -33
- package/lib/chat/picker-catalog.mjs +0 -45
- package/lib/chat/policy-telemetry.mjs +0 -34
- package/lib/chat/present.mjs +0 -246
- package/lib/chat/session-context.mjs +0 -39
- package/lib/chat/session-persist.mjs +0 -73
- package/lib/chat/session-restore.mjs +0 -71
- package/lib/chat/session-settings.mjs +0 -53
- package/lib/chat/system-prompt.mjs +0 -52
- package/lib/chat/transparency.mjs +0 -93
- package/lib/chat/tui/color-scheme.mjs +0 -42
- package/lib/chat/tui/markdown.mjs +0 -123
- package/lib/chat/tui/presentation.mjs +0 -100
- package/lib/chat/tui/render.mjs +0 -500
- package/lib/chat/tui/turn-block.mjs +0 -284
- package/lib/chat/tui/turn-present.mjs +0 -18
- package/lib/chat/tui/turn-state.mjs +0 -88
- package/lib/chat/tui/usage.mjs +0 -122
- package/lib/chat/web-commands.mjs +0 -146
- package/lib/chat/web-launcher.mjs +0 -63
- package/lib/chat/web-picker-keys.mjs +0 -46
- package/lib/chat/web-session.mjs +0 -159
- package/lib/config/alias.mjs +0 -57
- package/lib/dashboard-demo.mjs +0 -71
- package/lib/dashboard-static.mjs +0 -175
- package/lib/install/desktop-binary-download.mjs +0 -88
- package/lib/profiles/loader.mjs +0 -123
- package/lib/profiles/rebrand.mjs +0 -46
- package/lib/server/auth.mjs +0 -169
- package/lib/server/chat-loop.mjs +0 -622
- package/lib/server/chat.mjs +0 -336
- package/lib/server/cors.mjs +0 -77
- package/lib/server/csrf.mjs +0 -103
- package/lib/server/demo-preview.mjs +0 -63
- package/lib/server/index.mjs +0 -2641
- package/lib/server/insights.mjs +0 -780
- package/lib/server/langfuse-login.mjs +0 -58
- package/lib/server/rate-limit.mjs +0 -93
- package/lib/server/telemetry-login.mjs +0 -100
- package/lib/server/webhook.mjs +0 -512
- package/specialists/contracts.json +0 -1032
- package/specialists/contracts.schema.json +0 -83
- package/specialists/policy-inventory.json +0 -188
- package/specialists/registry.json +0 -1412
- package/specialists/role-manifests.json +0 -217
- 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
|
|
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/
|
|
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
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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,
|
|
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
|
|
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.
|
|
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
|
|
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/
|
|
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
|
|
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")
|
|
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
|
|
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,
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
|
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/
|
|
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/
|
|
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
|
|
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
|
|
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
|
|
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
|