@geraldmaron/construct 1.4.1 → 1.5.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/.env.example +36 -0
- package/README.md +41 -7
- package/bin/construct +1029 -65
- package/bin/construct-postinstall.mjs +27 -2
- package/config/tag-vocabulary.json +264 -0
- package/examples/distribution/sources/deck-one-pager.md +1 -1
- package/lib/acp/server.mjs +21 -7
- package/lib/adapters-sync.mjs +2 -1
- package/lib/audit-trail.mjs +185 -2
- package/lib/beads/auto-close.mjs +2 -1
- package/lib/beads/drift.mjs +2 -1
- package/lib/bridges/copilot-proxy.mjs +20 -5
- package/lib/certification/skill-inventory.mjs +10 -1
- package/lib/cli/approvals.mjs +147 -0
- package/lib/cli-commands.mjs +105 -14
- package/lib/comment-lint.mjs +127 -8
- package/lib/config/schema.mjs +7 -30
- package/lib/config/source-target-registry.mjs +70 -0
- package/lib/config/source-targets.mjs +179 -205
- package/lib/contracts/coverage.mjs +77 -0
- package/lib/contracts/validate.mjs +102 -13
- package/lib/contracts/violation-log.mjs +50 -4
- package/lib/db/migrate.mjs +69 -0
- package/lib/db/migrations/001_orchestration_runs.sql +9 -0
- package/lib/db/migrations/002_queue_provider.sql +50 -0
- package/lib/db/migrations/003_worker_registry.sql +17 -0
- package/lib/db/migrations/004_trace_events.sql +16 -0
- package/lib/db/migrations/005_shared_memory.sql +15 -0
- package/lib/db/migrations/006_orchestration_runs_tenant.sql +5 -0
- package/lib/decisions/enforced-baseline.json +0 -2
- package/lib/decisions/registry.mjs +3 -2
- package/lib/deployment/parity-contract.mjs +1 -1
- package/lib/deployment-mode.mjs +78 -2
- package/lib/diagram-export.mjs +10 -1
- package/lib/distill.mjs +5 -2
- package/lib/docs-verify.mjs +2 -1
- package/lib/doctor/cli.mjs +1 -0
- package/lib/doctor/command-on-path.mjs +24 -0
- package/lib/doctor/diagnosis.mjs +109 -0
- package/lib/doctor/embedding-health.mjs +50 -0
- package/lib/doctor/engine-health.mjs +93 -0
- package/lib/doctor/graph-validate.mjs +47 -0
- package/lib/doctor/index.mjs +23 -4
- package/lib/doctor/sidecar-providers.mjs +56 -0
- package/lib/doctor/watchers/consistency.mjs +93 -1
- package/lib/doctor/watchers/cx-budget.mjs +1 -1
- package/lib/doctor/watchers/graph-staleness.mjs +1 -1
- package/lib/doctor/watchers/mcp-protocol.mjs +17 -0
- package/lib/doctor/watchers/oracle-liveness.mjs +92 -0
- package/lib/doctor/watchers/orchestration-runs.mjs +108 -0
- package/lib/doctor/watchers/provider-breaker.mjs +78 -0
- package/lib/document-export.mjs +52 -27
- package/lib/document-extract/docling-client.mjs +9 -5
- package/lib/document-extract/docling-sidecar.py +30 -0
- package/lib/document-extract.mjs +1 -1
- package/lib/document-ingest.mjs +9 -0
- package/lib/embed/approval-queue.mjs +184 -88
- package/lib/embed/authority-guard.mjs +65 -2
- package/lib/embed/capability-jobs.mjs +365 -0
- package/lib/embed/capability-lifecycle.mjs +219 -0
- package/lib/embed/capability-loader.mjs +303 -0
- package/lib/embed/capability-runtime.mjs +58 -0
- package/lib/embed/cli.mjs +185 -8
- package/lib/embed/config.mjs +4 -0
- package/lib/embed/daemon.mjs +125 -6
- package/lib/embed/demand-fetch.mjs +190 -54
- package/lib/embed/inbox.mjs +12 -10
- package/lib/embed/presets/ops-triage.mjs +236 -0
- package/lib/embed/presets/pm-feedback.mjs +341 -0
- package/lib/embed/presets/tpm.mjs +401 -0
- package/lib/embed/providers/jira.mjs +72 -1
- package/lib/embed/providers/registry.mjs +140 -33
- package/lib/embed/worker.mjs +5 -0
- package/lib/embedded-contract/capability.mjs +4 -0
- package/lib/embedded-contract/execution.mjs +1 -1
- package/lib/embedded-contract/model-resolve.mjs +53 -3
- package/lib/embedded-contract/workflow-defs.mjs +48 -73
- package/lib/embedded-contract/workflow-invoke.mjs +144 -4
- package/lib/embedded-contract/workflows/architecture-review.manifest.json +15 -0
- package/lib/embedded-contract/workflows/data-structure.manifest.json +14 -0
- package/lib/embedded-contract/workflows/evidence-ingest.manifest.json +14 -0
- package/lib/embedded-contract/workflows/memo-draft.manifest.json +14 -0
- package/lib/embedded-contract/workflows/operations-triage.manifest.json +18 -0
- package/lib/embedded-contract/workflows/operations.manifest.json +18 -0
- package/lib/embedded-contract/workflows/pm-feedback.manifest.json +18 -0
- package/lib/embedded-contract/workflows/prd-draft.manifest.json +15 -0
- package/lib/embedded-contract/workflows/proposal-review.manifest.json +15 -0
- package/lib/embedded-contract/workflows/research-synthesis.manifest.json +14 -0
- package/lib/embedded-contract/workflows/risk-review.manifest.json +15 -0
- package/lib/embedded-contract/workflows/structure-notes.manifest.json +14 -0
- package/lib/embedded-contract/workflows/transcript-process.manifest.json +14 -0
- package/lib/embedded-contract/workflows/triage.manifest.json +14 -0
- package/lib/env-config.mjs +60 -11
- package/lib/export-validate.mjs +34 -2
- package/lib/extensions/index.mjs +27 -0
- package/lib/extensions/loader.mjs +120 -0
- package/lib/extensions/manifest-schema.mjs +141 -0
- package/lib/extensions/manifests/anthropic.manifest.json +12 -0
- package/lib/extensions/manifests/atlassian-confluence.manifest.json +12 -0
- package/lib/extensions/manifests/atlassian-jira.manifest.json +53 -0
- package/lib/extensions/manifests/directory.manifest.json +12 -0
- package/lib/extensions/manifests/docling.manifest.json +37 -0
- package/lib/extensions/manifests/echo.manifest.json +8 -0
- package/lib/extensions/manifests/feedback.manifest.json +12 -0
- package/lib/extensions/manifests/github-copilot.manifest.json +12 -0
- package/lib/extensions/manifests/github.manifest.json +52 -0
- package/lib/extensions/manifests/linear.manifest.json +50 -0
- package/lib/extensions/manifests/local.manifest.json +12 -0
- package/lib/extensions/manifests/ollama.manifest.json +12 -0
- package/lib/extensions/manifests/openai.manifest.json +12 -0
- package/lib/extensions/manifests/openrouter-anthropic.manifest.json +12 -0
- package/lib/extensions/manifests/openrouter-deepseek.manifest.json +12 -0
- package/lib/extensions/manifests/openrouter-google.manifest.json +12 -0
- package/lib/extensions/manifests/openrouter-llama.manifest.json +12 -0
- package/lib/extensions/manifests/openrouter-qwen.manifest.json +12 -0
- package/lib/extensions/manifests/openrouter.manifest.json +12 -0
- package/lib/extensions/manifests/postgres.manifest.json +12 -0
- package/lib/extensions/manifests/salesforce.manifest.json +12 -0
- package/lib/extensions/manifests/slack.manifest.json +58 -0
- package/lib/extensions/manifests/whisper.manifest.json +36 -0
- package/lib/extensions/validate.mjs +175 -0
- package/lib/features.mjs +13 -9
- package/lib/flows/checkpoint.mjs +184 -0
- package/lib/flows/constants.mjs +27 -0
- package/lib/flows/define.mjs +146 -0
- package/lib/flows/engine.mjs +249 -0
- package/lib/flows/errors.mjs +19 -0
- package/lib/flows/index.mjs +27 -0
- package/lib/flows/joins.mjs +18 -0
- package/lib/flows/schema.mjs +90 -0
- package/lib/flows/state.mjs +31 -0
- package/lib/frameworks/loader.mjs +99 -0
- package/lib/frameworks/schema.mjs +157 -0
- package/lib/graph/build-from-corpus.mjs +67 -0
- package/lib/graph/build-from-embed.mjs +82 -0
- package/lib/graph/build-from-registry.mjs +164 -3
- package/lib/graph/cli.mjs +456 -12
- package/lib/graph/gap-queries.mjs +156 -0
- package/lib/graph/gaps.mjs +41 -0
- package/lib/graph/impacted.mjs +129 -0
- package/lib/graph/runtime-evidence.mjs +177 -0
- package/lib/graph/security-coverage.mjs +113 -0
- package/lib/graph/staleness.mjs +241 -10
- package/lib/graph/store.mjs +24 -7
- package/lib/graph/validate.mjs +161 -0
- package/lib/headhunt.mjs +9 -8
- package/lib/health-check.mjs +15 -7
- package/lib/hook-health.mjs +1 -1
- package/lib/hooks/agent-tracker.mjs +10 -4
- package/lib/hooks/edit-guard.mjs +3 -3
- package/lib/hooks/graph-impact-advisory.mjs +2 -2
- package/lib/hooks/guard-bash.mjs +41 -15
- package/lib/hooks/mcp-health-check.mjs +11 -4
- package/lib/hooks/model-fallback.mjs +50 -6
- package/lib/hooks/orchestration-dispatch-guard.mjs +14 -3
- package/lib/hooks/pre-compact.mjs +181 -173
- package/lib/hooks/rule-verifier.mjs +2 -1
- package/lib/hooks/session-reflect.mjs +2 -1
- package/lib/hooks/session-start.mjs +3 -3
- package/lib/host/readiness.mjs +109 -0
- package/lib/host-capabilities.mjs +13 -2
- package/lib/host-disposition.mjs +29 -8
- package/lib/identity.mjs +92 -0
- package/lib/ingest/degraded-extract.mjs +96 -0
- package/lib/ingest/docling-remote.mjs +2 -1
- package/lib/ingest/provider-extract.mjs +7 -19
- package/lib/ingest/sidecar-providers.mjs +196 -0
- package/lib/ingest-tooling.mjs +11 -5
- package/lib/init-unified.mjs +55 -38
- package/lib/init-update.mjs +2 -1
- package/lib/install/legacy-global-cleanup.mjs +25 -0
- package/lib/install/stage-project.mjs +41 -4
- package/lib/intake/daemon.mjs +99 -8
- package/lib/intake/git-queue.mjs +110 -38
- package/lib/intake/prepare.mjs +2 -0
- package/lib/intake/queue-registry.mjs +50 -0
- package/lib/intake/queue.mjs +133 -17
- package/lib/intake/session-prelude.mjs +57 -8
- package/lib/integrations/intake-integrations.mjs +61 -111
- package/lib/intent-classifier.mjs +43 -5
- package/lib/libreoffice-export.mjs +8 -8
- package/lib/logging/rotate.mjs +5 -4
- package/lib/mcp/broker.mjs +332 -17
- package/lib/mcp/denied-store.mjs +95 -0
- package/lib/mcp/destructive-approval.mjs +57 -0
- package/lib/mcp/destructive-gate.mjs +30 -0
- package/lib/mcp/dispatch-envelope.mjs +199 -0
- package/lib/mcp/memory-bridge.mjs +2 -1
- package/lib/mcp/server.mjs +185 -1268
- package/lib/mcp/tool-definitions-memory.mjs +376 -0
- package/lib/mcp/tool-definitions-project.mjs +271 -0
- package/lib/mcp/tool-definitions-skills.mjs +311 -0
- package/lib/mcp/tool-definitions-workflow.mjs +398 -0
- package/lib/mcp/tool-definitions.mjs +25 -0
- package/lib/mcp/tool-rate-limit.mjs +47 -0
- package/lib/mcp/tool-registry.mjs +107 -0
- package/lib/mcp/tool-safety.mjs +95 -0
- package/lib/mcp/tool-surface-parity.mjs +60 -0
- package/lib/mcp/tools/orchestration-delegation-next.tool.mjs +68 -0
- package/lib/mcp/tools/orchestration-run.mjs +197 -19
- package/lib/mcp/tools/orchestration-task-result.tool.mjs +77 -0
- package/lib/mcp/tools/project.mjs +25 -8
- package/lib/mcp/tools/provider-write.mjs +187 -0
- package/lib/mcp/tools/scope.mjs +0 -3
- package/lib/mcp/tools/skills.mjs +1 -1
- package/lib/mcp/tools/storage.mjs +2 -2
- package/lib/mcp/tools/web-search-governance.mjs +96 -0
- package/lib/mcp/tools/web-search.mjs +5 -76
- package/lib/mcp/transport/auth.mjs +238 -0
- package/lib/mcp/transport/http.mjs +136 -0
- package/lib/mcp/transport/mode.mjs +31 -0
- package/lib/mcp/transport/stdio.mjs +22 -0
- package/lib/mcp-catalog.json +4 -4
- package/lib/mcp-manager.mjs +34 -23
- package/lib/mcp-platform-config.mjs +53 -20
- package/lib/mode-capabilities.mjs +109 -0
- package/lib/model-router.mjs +42 -9
- package/lib/models/catalog.mjs +40 -1
- package/lib/net-guard.mjs +247 -0
- package/lib/observation-store.mjs +6 -2
- package/lib/ollama/provision-context.mjs +2 -1
- package/lib/opencode-config.mjs +22 -3
- package/lib/opencode-runtime-plugin.mjs +120 -2
- package/lib/oracle/actions.mjs +204 -10
- package/lib/oracle/cli.mjs +24 -3
- package/lib/oracle/daemon-entry.mjs +6 -0
- package/lib/oracle/dispatch.mjs +2 -1
- package/lib/oracle/execute.mjs +2 -2
- package/lib/oracle/gaps.mjs +3 -3
- package/lib/oracle/heartbeat.mjs +53 -0
- package/lib/oracle/read-model.mjs +69 -13
- package/lib/oracle/reconcile.mjs +3 -46
- package/lib/oracle/routing.mjs +37 -31
- package/lib/oracle/synthesize.mjs +1 -1
- package/lib/orchestration/classification.mjs +434 -0
- package/lib/orchestration/delegation-flow.mjs +132 -0
- package/lib/orchestration/flow-selection.mjs +418 -0
- package/lib/orchestration/gates.mjs +244 -0
- package/lib/orchestration/host-sampling.mjs +121 -0
- package/lib/orchestration/policy-constants.mjs +48 -0
- package/lib/orchestration/provider-outcome.mjs +197 -0
- package/lib/orchestration/readiness.mjs +114 -13
- package/lib/orchestration/run-store-postgres.mjs +32 -26
- package/lib/orchestration/run-store-sqlite.mjs +8 -14
- package/lib/orchestration/run-store.mjs +25 -12
- package/lib/orchestration/runtime.mjs +508 -62
- package/lib/orchestration/store.mjs +87 -12
- package/lib/orchestration/trace-store.mjs +125 -0
- package/lib/orchestration/web-capability.mjs +60 -0
- package/lib/orchestration/worker-runtime.mjs +162 -0
- package/lib/orchestration/worker.mjs +763 -80
- package/lib/orchestration-policy.mjs +67 -1111
- package/lib/output-quality.mjs +61 -2
- package/lib/packs/cli.mjs +144 -0
- package/lib/packs/core-pack.mjs +112 -0
- package/lib/packs/enablement.mjs +187 -0
- package/lib/packs/index.mjs +23 -0
- package/lib/packs/loader.mjs +176 -0
- package/lib/packs/manifest-schema.mjs +58 -0
- package/lib/packs/prompts.mjs +120 -0
- package/lib/packs/validate.mjs +208 -0
- package/lib/path-policy.mjs +56 -0
- package/lib/plugin-registry.mjs +4 -5
- package/lib/policy/audit-gate.mjs +42 -0
- package/lib/policy/consumption-budget.mjs +149 -0
- package/lib/policy/engine.mjs +81 -6
- package/lib/policy/role-authority.mjs +89 -0
- package/lib/prompt-composer.js +19 -3
- package/lib/providers/contract/adapters/confluence/governed-write.mjs +215 -0
- package/lib/providers/contract/adapters/confluence/manifest.json +17 -0
- package/lib/providers/contract/adapters/confluence/transport.mjs +135 -0
- package/lib/providers/contract/adapters/github/governed-write.mjs +121 -0
- package/lib/providers/contract/adapters/github/index.mjs +38 -3
- package/lib/providers/contract/adapters/jira/adf.mjs +151 -0
- package/lib/providers/contract/adapters/jira/createmeta.mjs +143 -0
- package/lib/providers/contract/adapters/jira/governed-write.mjs +182 -0
- package/lib/providers/contract/adapters/jira/manifest.json +17 -0
- package/lib/providers/contract/adapters/jira/transport.mjs +119 -0
- package/lib/providers/contract.mjs +207 -0
- package/lib/providers/credential-bootstrap.mjs +7 -4
- package/lib/providers/credential-sources.mjs +14 -2
- package/lib/providers/directory/index.mjs +261 -0
- package/lib/providers/feedback/index.mjs +392 -0
- package/lib/providers/filter-audit.mjs +68 -0
- package/lib/providers/filter-schema.mjs +54 -0
- package/lib/providers/github/index.mjs +31 -0
- package/lib/providers/instance-config.mjs +215 -0
- package/lib/providers/op-locate.mjs +96 -0
- package/lib/providers/op-run.mjs +64 -9
- package/lib/providers/registry.mjs +26 -3
- package/lib/providers/secret-audit-wiring.mjs +41 -18
- package/lib/providers/secret-resolver.mjs +263 -31
- package/lib/publish-template.mjs +6 -3
- package/lib/publish-tooling.mjs +4 -0
- package/lib/publish.mjs +32 -4
- package/lib/queue/pg-queue.mjs +395 -0
- package/lib/reflect.mjs +2 -1
- package/lib/registry/assemble.mjs +28 -2
- package/lib/registry/catalog.mjs +6 -0
- package/lib/registry/consolidation.mjs +8 -1
- package/lib/registry/custom-scaffold.mjs +200 -0
- package/lib/registry/custom-schema.mjs +137 -0
- package/lib/registry/loader.mjs +15 -4
- package/lib/registry/manifests/format-engines.default.json +15 -0
- package/lib/registry/manifests/surface-map.default.json +46 -0
- package/lib/registry/retired-paths.mjs +1 -0
- package/lib/registry/surface-map.mjs +100 -50
- package/lib/registry/validate.mjs +3 -3
- package/lib/render-visual-check.mjs +240 -0
- package/lib/resources/budget.mjs +40 -17
- package/lib/roles/flavor-bindings.mjs +36 -14
- package/lib/roles/gateway.mjs +15 -8
- package/lib/roots.mjs +107 -0
- package/lib/runtime/uv-bootstrap.mjs +32 -6
- package/lib/runtime/whisper-bootstrap.mjs +11 -3
- package/lib/runtime-env.mjs +5 -2
- package/lib/sandbox.mjs +1 -1
- package/lib/scheduler/index.mjs +8 -20
- package/lib/schema-infer.mjs +31 -2
- package/lib/scopes/lifecycle.mjs +29 -25
- package/lib/scopes/loader.mjs +49 -12
- package/lib/scopes/teams.mjs +1 -1
- package/lib/security/ingest-boundary.mjs +80 -0
- package/lib/security/recall-wrapper.mjs +99 -0
- package/lib/security/trust.mjs +132 -0
- package/lib/service-manager.mjs +93 -24
- package/lib/setup.mjs +41 -23
- package/lib/skills-apply.mjs +4 -2
- package/lib/specialists/postconditions.mjs +2 -2
- package/lib/state-root.mjs +147 -0
- package/lib/status.mjs +597 -6
- package/lib/storage/admin.mjs +84 -7
- package/lib/storage/backend-registry.mjs +73 -0
- package/lib/storage/backend.mjs +63 -9
- package/lib/storage/embeddings-openai.mjs +12 -2
- package/lib/storage/hybrid-query.mjs +11 -3
- package/lib/storage/retrieval-hardening.mjs +384 -0
- package/lib/storage/shared-memory.mjs +158 -0
- package/lib/storage/vector-client.mjs +69 -2
- package/lib/team/health.mjs +72 -0
- package/lib/telemetry/backends/local.mjs +9 -3
- package/lib/telemetry/client.mjs +3 -7
- package/lib/template-registry.mjs +10 -12
- package/lib/tenant/context.mjs +82 -0
- package/lib/tenant/isolation.mjs +129 -0
- package/lib/test-corpus-inventory.mjs +103 -2
- package/lib/uninstall/uninstall.mjs +78 -12
- package/lib/validator.mjs +4 -6
- package/lib/worker/entrypoint.mjs +2 -1
- package/lib/worker/run.mjs +2 -2
- package/lib/worker/trace.mjs +5 -11
- package/lib/workflow-state.mjs +52 -8
- package/lib/workflows/liveness.mjs +203 -0
- package/lib/workflows/loader.mjs +177 -0
- package/lib/workflows/manifest-schema.mjs +71 -0
- package/lib/workflows/surface-parity.mjs +118 -0
- package/lib/workflows/validate.mjs +127 -0
- package/lib/writes/control-plane.mjs +140 -0
- package/lib/writes/envelope.mjs +206 -0
- package/lib/writes/sent-log.mjs +86 -0
- package/lib/writes/write-intent.mjs +109 -0
- package/package.json +20 -7
- package/personas/construct.md +12 -3
- package/registry/agent-manifest.json +117 -0
- package/registry/capabilities.json +1987 -0
- package/rules/common/comments.md +1 -0
- package/schemas/brand-voice.schema.json +24 -0
- package/schemas/capability-registry.schema.json +72 -0
- package/schemas/certification-run.schema.json +130 -0
- package/schemas/demo-recording.schema.json +46 -0
- package/schemas/eval-dataset.schema.json +79 -0
- package/schemas/execution-capability-profile.schema.json +46 -0
- package/schemas/execution-policy.schema.json +114 -0
- package/schemas/improvement-proposal.schema.json +65 -0
- package/schemas/mcp-tool-output.schema.json +61 -0
- package/schemas/platform-capabilities.schema.json +83 -0
- package/schemas/project-config.schema.json +215 -0
- package/schemas/project-demo.schema.json +60 -0
- package/schemas/provider-behavior-matrix.schema.json +91 -0
- package/schemas/scope.schema.json +197 -0
- package/schemas/specialist-trace.schema.json +107 -0
- package/schemas/team.schema.json +99 -0
- package/schemas/unified-registry.schema.json +546 -0
- package/scripts/sync-specialists.mjs +336 -106
- package/skills/docs/adr-workflow.md +1 -1
- package/skills/docs/codebase-research-workflow.md +3 -3
- package/skills/docs/prd-workflow.md +5 -6
- package/skills/docs/runbook-workflow.md +2 -2
- package/skills/docs/user-research-workflow.md +3 -3
- package/skills/operating/fleet-health-routing.md +77 -0
- package/skills/roles/ai-engineer.md +1 -1
- package/skills/roles/architect.md +0 -1
- package/skills/roles/business-strategist.md +1 -1
- package/skills/roles/data-analyst.telemetry.md +1 -1
- package/skills/roles/data-engineer.md +1 -1
- package/skills/roles/data-engineer.pipeline.md +1 -1
- package/skills/roles/data-engineer.vector-retrieval.md +1 -2
- package/skills/roles/data-engineer.warehouse.md +1 -1
- package/skills/roles/designer.accessibility.md +1 -1
- package/skills/roles/designer.md +0 -1
- package/skills/roles/devil-advocate.md +1 -1
- package/skills/roles/docs-keeper.md +1 -1
- package/skills/roles/evaluator.md +1 -1
- package/skills/roles/explorer.md +1 -1
- package/skills/roles/platform-engineer.md +1 -1
- package/skills/roles/qa.ai-eval.md +1 -2
- package/skills/roles/qa.api-contract.md +0 -1
- package/skills/roles/qa.data-pipeline.md +0 -1
- package/skills/roles/qa.md +0 -1
- package/skills/roles/qa.web-ui.md +0 -1
- package/skills/roles/release-manager.md +1 -1
- package/skills/roles/researcher.md +0 -2
- package/skills/roles/reviewer.md +0 -3
- package/skills/roles/security.ai.md +1 -1
- package/skills/roles/security.legal-compliance.md +1 -1
- package/skills/roles/security.md +0 -1
- package/skills/roles/security.privacy.md +0 -1
- package/skills/roles/security.supply-chain.md +1 -1
- package/skills/roles/sre.md +1 -1
- package/skills/roles/test-automation.md +1 -1
- package/skills/roles/trace-reviewer.md +1 -1
- package/skills/roles/ux-researcher.md +1 -1
- package/specialists/artifact-manifest.json +36 -36
- package/specialists/org/contracts/accessibility-to-qa.json +11 -3
- package/specialists/org/contracts/any-to-business-strategist.json +19 -7
- package/specialists/org/contracts/any-to-debugger.json +7 -1
- package/specialists/org/contracts/any-to-designer.json +7 -1
- package/specialists/org/contracts/any-to-docs-keeper.json +18 -4
- package/specialists/org/contracts/any-to-explorer.json +13 -4
- package/specialists/org/contracts/any-to-sre-incident.json +6 -2
- package/specialists/org/contracts/any-to-trace-reviewer.json +16 -4
- package/specialists/org/contracts/architect-to-ai-engineer.json +6 -2
- package/specialists/org/contracts/architect-to-data-engineer.json +17 -5
- package/specialists/org/contracts/architect-to-devil-advocate.json +11 -3
- package/specialists/org/contracts/architect-to-engineer.json +20 -4
- package/specialists/org/contracts/architect-to-evaluator.json +15 -5
- package/specialists/org/contracts/architect-to-legal-compliance.json +15 -5
- package/specialists/org/contracts/architect-to-operations.json +17 -4
- package/specialists/org/contracts/architect-to-platform-engineer.json +20 -4
- package/specialists/org/contracts/construct-to-orchestrator.json +10 -2
- package/specialists/org/contracts/data-analyst-to-product-manager.json +11 -2
- package/specialists/org/contracts/engineer-to-qa.json +20 -4
- package/specialists/org/contracts/engineer-to-reviewer.json +29 -5
- package/specialists/org/contracts/explorer-to-engineer.json +11 -3
- package/specialists/org/contracts/legal-compliance-to-release-manager.json +12 -4
- package/specialists/org/contracts/operations-to-user.json +53 -0
- package/specialists/org/contracts/operations-triage-output.json +53 -0
- package/specialists/org/contracts/pm-requirements-candidates.json +53 -0
- package/specialists/org/contracts/product-manager-to-architect.json +30 -10
- package/specialists/org/contracts/product-manager-to-data-analyst.json +13 -3
- package/specialists/org/contracts/product-manager-to-ux-researcher.json +15 -5
- package/specialists/org/contracts/qa-to-release-manager.json +11 -3
- package/specialists/org/contracts/researcher-to-architect.json +10 -2
- package/specialists/org/contracts/researcher-to-product-manager.json +16 -5
- package/specialists/org/contracts/reviewer-to-security.json +17 -3
- package/specialists/org/contracts/test-automation-to-engineer.json +11 -3
- package/specialists/org/contracts/trace-reviewer-to-sre.json +12 -4
- package/specialists/org/contracts/user-to-construct.json +11 -4
- package/specialists/org/frameworks/cx-architect-constraint-option-failure.md +66 -0
- package/specialists/org/frameworks/cx-engineer-feasibility-blast-radius.md +66 -0
- package/specialists/org/frameworks/cx-ops-dependency-sequencing.md +74 -0
- package/specialists/org/frameworks/cx-pm-value-tradeoff.md +66 -0
- package/specialists/org/frameworks/cx-qa-risk-based-coverage.md +69 -0
- package/specialists/org/groups/engineering-group.json +2 -6
- package/specialists/org/groups/governance-group.json +2 -3
- package/specialists/org/groups/operations-group.json +5 -8
- package/specialists/org/groups/product-group.json +4 -8
- package/specialists/org/groups/quality-group.json +3 -7
- package/specialists/org/groups/strategy-group.json +6 -9
- package/specialists/org/models.json.example +8 -0
- package/specialists/org/scopes/creative.json +6 -1
- package/specialists/org/scopes/operations.json +7 -1
- package/specialists/org/scopes/research.json +6 -1
- package/specialists/org/scopes/rnd.json +7 -1
- package/specialists/org/specialists/cx-architect.json +27 -8
- package/specialists/org/specialists/cx-designer.json +22 -8
- package/specialists/org/specialists/cx-engineer.json +71 -7
- package/specialists/org/specialists/cx-operations.json +89 -15
- package/specialists/org/specialists/cx-orchestrator.json +16 -4
- package/specialists/org/specialists/cx-product-manager.json +28 -9
- package/specialists/org/specialists/cx-qa.json +16 -6
- package/specialists/org/specialists/cx-researcher.json +41 -7
- package/specialists/org/specialists/cx-reviewer.json +61 -11
- package/specialists/org/specialists/cx-security.json +30 -10
- package/specialists/org/teams/design-team.json +3 -4
- package/specialists/org/teams/engineering-team.json +3 -10
- package/specialists/org/teams/governance-team.json +3 -5
- package/specialists/org/teams/operations-team.json +6 -12
- package/specialists/org/teams/product-management-team.json +2 -3
- package/specialists/org/teams/quality-team.json +4 -12
- package/specialists/org/teams/research-team.json +3 -3
- package/specialists/org/teams/strategy-team.json +7 -14
- package/specialists/prompts/cx-architect.md +20 -1
- package/specialists/prompts/cx-data-analyst.md +1 -1
- package/specialists/prompts/cx-designer.md +12 -4
- package/specialists/prompts/cx-engineer.md +15 -1
- package/specialists/prompts/cx-operations.md +14 -2
- package/specialists/prompts/cx-orchestrator.md +9 -5
- package/specialists/prompts/cx-product-manager.md +5 -1
- package/specialists/prompts/cx-qa.md +6 -2
- package/specialists/prompts/cx-researcher.md +27 -31
- package/specialists/prompts/cx-reviewer.md +19 -1
- package/specialists/prompts/cx-security.md +5 -1
- package/templates/distribution/construct-brand.typ +123 -59
- package/templates/distribution/construct-decision.typ +6 -3
- package/templates/distribution/construct-pdf.typ +11 -4
- package/templates/distribution/construct-prd.typ +6 -3
- package/templates/distribution/construct-research.typ +7 -4
- package/vendor/pandoc-ext/README.md +3 -0
- package/vendor/pandoc-ext/diagram.lua +687 -0
- package/lib/providers/contract/adapters/git/index.mjs +0 -115
- package/lib/providers/contract/adapters/slack/index.mjs +0 -175
- package/specialists/org/contracts/business-strategist-to-product-manager.json +0 -39
- package/specialists/org/contracts/construct-to-rd-lead.json +0 -53
- package/specialists/org/contracts/data-engineer-to-platform-engineer.json +0 -36
- package/specialists/org/contracts/designer-to-accessibility.json +0 -36
- package/specialists/org/contracts/platform-engineer-to-engineer.json +0 -31
- package/specialists/org/contracts/qa-to-test-automation.json +0 -42
- package/specialists/org/contracts/rd-lead-to-architect.json +0 -38
- package/specialists/org/contracts/sre-to-release-manager.json +0 -36
- package/specialists/org/specialists/cx-accessibility.json +0 -69
- package/specialists/org/specialists/cx-ai-engineer.json +0 -75
- package/specialists/org/specialists/cx-business-strategist.json +0 -72
- package/specialists/org/specialists/cx-data-engineer.json +0 -71
- package/specialists/org/specialists/cx-devil-advocate.json +0 -71
- package/specialists/org/specialists/cx-docs-keeper.json +0 -82
- package/specialists/org/specialists/cx-evaluator.json +0 -69
- package/specialists/org/specialists/cx-explorer.json +0 -69
- package/specialists/org/specialists/cx-legal-compliance.json +0 -74
- package/specialists/org/specialists/cx-oracle.json +0 -46
- package/specialists/org/specialists/cx-platform-engineer.json +0 -80
- package/specialists/org/specialists/cx-rd-lead.json +0 -73
- package/specialists/org/specialists/cx-release-manager.json +0 -77
- package/specialists/org/specialists/cx-sre.json +0 -94
- package/specialists/org/specialists/cx-test-automation.json +0 -69
- package/specialists/org/specialists/cx-trace-reviewer.json +0 -69
- package/specialists/org/specialists/cx-ux-researcher.json +0 -68
- package/specialists/org/teams/accessibility-team.json +0 -39
- package/specialists/org/teams/ux-research-team.json +0 -39
- package/specialists/prompts/cx-accessibility.md +0 -55
- package/specialists/prompts/cx-ai-engineer.md +0 -124
- package/specialists/prompts/cx-business-strategist.md +0 -58
- package/specialists/prompts/cx-data-engineer.md +0 -55
- package/specialists/prompts/cx-devil-advocate.md +0 -59
- package/specialists/prompts/cx-docs-keeper.md +0 -164
- package/specialists/prompts/cx-evaluator.md +0 -49
- package/specialists/prompts/cx-explorer.md +0 -71
- package/specialists/prompts/cx-legal-compliance.md +0 -58
- package/specialists/prompts/cx-oracle.md +0 -98
- package/specialists/prompts/cx-platform-engineer.md +0 -97
- package/specialists/prompts/cx-rd-lead.md +0 -59
- package/specialists/prompts/cx-release-manager.md +0 -54
- package/specialists/prompts/cx-sre.md +0 -111
- package/specialists/prompts/cx-test-automation.md +0 -55
- package/specialists/prompts/cx-trace-reviewer.md +0 -101
- package/specialists/prompts/cx-ux-researcher.md +0 -53
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "platform-engineer",
|
|
3
|
-
"displayName": "Reduces the tax on the people doing the work — friction compounds, and platform debt is the kind nobody notices until it's critical.",
|
|
4
|
-
"description": "Reduces the tax on the people doing the work — friction compounds, and platform debt is the kind nobody notices until it's critical.",
|
|
5
|
-
"role": "platform-engineer",
|
|
6
|
-
"modelTier": "standard",
|
|
7
|
-
"reasoningEffort": "medium",
|
|
8
|
-
"skills": [
|
|
9
|
-
"devops/ci-cd",
|
|
10
|
-
"devops/monorepo",
|
|
11
|
-
"devops/containerization",
|
|
12
|
-
"devops/dependency-management",
|
|
13
|
-
"devops/devsecops",
|
|
14
|
-
"devops/cost-optimization"
|
|
15
|
-
],
|
|
16
|
-
"events": [
|
|
17
|
-
"infra.change.requested",
|
|
18
|
-
"service.scale.event"
|
|
19
|
-
],
|
|
20
|
-
"fence": {
|
|
21
|
-
"allowedPaths": [
|
|
22
|
-
"docs/platform/**",
|
|
23
|
-
"docs/infra/**",
|
|
24
|
-
"infra/**",
|
|
25
|
-
"terraform/**",
|
|
26
|
-
"k8s/**"
|
|
27
|
-
],
|
|
28
|
-
"allowedBdLabels": [
|
|
29
|
-
"platform",
|
|
30
|
-
"infrastructure",
|
|
31
|
-
"infra"
|
|
32
|
-
],
|
|
33
|
-
"allowedCommands": [
|
|
34
|
-
"bd create",
|
|
35
|
-
"bd note",
|
|
36
|
-
"bd update",
|
|
37
|
-
"bd label"
|
|
38
|
-
],
|
|
39
|
-
"approvalRequired": [
|
|
40
|
-
"commit",
|
|
41
|
-
"push",
|
|
42
|
-
"edit:lib/**",
|
|
43
|
-
"edit:bin/**"
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
|
-
"docArtifacts": [],
|
|
47
|
-
"watchConditions": [],
|
|
48
|
-
"permissions": {},
|
|
49
|
-
"promptFile": "specialists/prompts/cx-platform-engineer.md",
|
|
50
|
-
"embedOrientation": {
|
|
51
|
-
"focusAreas": [
|
|
52
|
-
"developer friction",
|
|
53
|
-
"pipeline health",
|
|
54
|
-
"dependency freshness",
|
|
55
|
-
"build reliability"
|
|
56
|
-
],
|
|
57
|
-
"riskSignals": [
|
|
58
|
-
"slow CI",
|
|
59
|
-
"stale dependencies",
|
|
60
|
-
"manual steps in pipelines",
|
|
61
|
-
"config only author understands"
|
|
62
|
-
],
|
|
63
|
-
"artifactBias": [
|
|
64
|
-
"adrs",
|
|
65
|
-
"notes"
|
|
66
|
-
]
|
|
67
|
-
},
|
|
68
|
-
"canEdit": true,
|
|
69
|
-
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,Write,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
70
|
-
"internal": true,
|
|
71
|
-
"killSwitchEnv": "CONSTRUCT_ROLE_PLATFORM_ENGINEER",
|
|
72
|
-
"handoffCandidates": [
|
|
73
|
-
"sre",
|
|
74
|
-
"engineer",
|
|
75
|
-
"reviewer"
|
|
76
|
-
],
|
|
77
|
-
"team": "engineering-team",
|
|
78
|
-
"teamId": "engineering-team",
|
|
79
|
-
"groupId": "engineering-group"
|
|
80
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "rd-lead",
|
|
3
|
-
"displayName": "Slows the team down at the right moment — before architecture locks in assumptions that were never validated.",
|
|
4
|
-
"description": "Slows the team down at the right moment — before architecture locks in assumptions that were never validated.",
|
|
5
|
-
"role": "rd-lead",
|
|
6
|
-
"modelTier": "standard",
|
|
7
|
-
"reasoningEffort": "medium",
|
|
8
|
-
"skills": [
|
|
9
|
-
"ai/agent-dev",
|
|
10
|
-
"ai/prompt-and-eval",
|
|
11
|
-
"docs/research-workflow"
|
|
12
|
-
],
|
|
13
|
-
"events": [
|
|
14
|
-
"research.gate.required"
|
|
15
|
-
],
|
|
16
|
-
"fence": {
|
|
17
|
-
"allowedPaths": [
|
|
18
|
-
"docs/notes/research/**",
|
|
19
|
-
"docs/research/**",
|
|
20
|
-
"docs/experiments/**",
|
|
21
|
-
".cx/experiments/**"
|
|
22
|
-
],
|
|
23
|
-
"allowedBdLabels": [
|
|
24
|
-
"rd",
|
|
25
|
-
"research",
|
|
26
|
-
"experiment"
|
|
27
|
-
],
|
|
28
|
-
"allowedCommands": [
|
|
29
|
-
"bd create",
|
|
30
|
-
"bd note",
|
|
31
|
-
"bd update"
|
|
32
|
-
],
|
|
33
|
-
"approvalRequired": [
|
|
34
|
-
"commit",
|
|
35
|
-
"push",
|
|
36
|
-
"edit:**"
|
|
37
|
-
]
|
|
38
|
-
},
|
|
39
|
-
"docArtifacts": [],
|
|
40
|
-
"watchConditions": [],
|
|
41
|
-
"permissions": {},
|
|
42
|
-
"promptFile": "specialists/prompts/cx-rd-lead.md",
|
|
43
|
-
"embedOrientation": {
|
|
44
|
-
"focusAreas": [
|
|
45
|
-
"hypothesis validation",
|
|
46
|
-
"experiment progress",
|
|
47
|
-
"assumption tracking",
|
|
48
|
-
"learning velocity"
|
|
49
|
-
],
|
|
50
|
-
"riskSignals": [
|
|
51
|
-
"untested assumptions",
|
|
52
|
-
"premature hardening",
|
|
53
|
-
"stalled experiments",
|
|
54
|
-
"unfalsifiable claims"
|
|
55
|
-
],
|
|
56
|
-
"artifactBias": [
|
|
57
|
-
"adrs",
|
|
58
|
-
"notes"
|
|
59
|
-
]
|
|
60
|
-
},
|
|
61
|
-
"canEdit": false,
|
|
62
|
-
"claudeTools": "Read,Grep,Glob,LS,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
|
|
63
|
-
"internal": true,
|
|
64
|
-
"killSwitchEnv": "CONSTRUCT_ROLE_RD_LEAD",
|
|
65
|
-
"handoffCandidates": [
|
|
66
|
-
"researcher",
|
|
67
|
-
"architect",
|
|
68
|
-
"ai-engineer"
|
|
69
|
-
],
|
|
70
|
-
"team": "strategy-team",
|
|
71
|
-
"teamId": "strategy-team",
|
|
72
|
-
"groupId": "strategy-group"
|
|
73
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "release-manager",
|
|
3
|
-
"displayName": "Guards the gap between 'verified' and 'safe to ship' — rollback procedures that were never tested don't exist.",
|
|
4
|
-
"description": "Guards the gap between 'verified' and 'safe to ship' — rollback procedures that were never tested don't exist.",
|
|
5
|
-
"role": "release-manager",
|
|
6
|
-
"modelTier": "standard",
|
|
7
|
-
"reasoningEffort": "medium",
|
|
8
|
-
"skills": [
|
|
9
|
-
"devops/git-workflow",
|
|
10
|
-
"quality-gates/verify-change",
|
|
11
|
-
"docs/memo-and-decision-capture"
|
|
12
|
-
],
|
|
13
|
-
"events": [
|
|
14
|
-
"release.candidate",
|
|
15
|
-
"version.bump.needed"
|
|
16
|
-
],
|
|
17
|
-
"fence": {
|
|
18
|
-
"allowedPaths": [
|
|
19
|
-
"docs/operations/releases/**",
|
|
20
|
-
"docs/releases/**",
|
|
21
|
-
"CHANGELOG.md"
|
|
22
|
-
],
|
|
23
|
-
"allowedBdLabels": [
|
|
24
|
-
"release",
|
|
25
|
-
"version",
|
|
26
|
-
"shipping"
|
|
27
|
-
],
|
|
28
|
-
"allowedCommands": [
|
|
29
|
-
"bd create",
|
|
30
|
-
"bd note",
|
|
31
|
-
"bd update",
|
|
32
|
-
"bd label"
|
|
33
|
-
],
|
|
34
|
-
"approvalRequired": [
|
|
35
|
-
"commit",
|
|
36
|
-
"push",
|
|
37
|
-
"edit:package.json",
|
|
38
|
-
"edit:lib/**",
|
|
39
|
-
"edit:bin/**"
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
"docArtifacts": [],
|
|
43
|
-
"watchConditions": [],
|
|
44
|
-
"permissions": {},
|
|
45
|
-
"promptFile": "specialists/prompts/cx-release-manager.md",
|
|
46
|
-
"embedOrientation": {
|
|
47
|
-
"focusAreas": [
|
|
48
|
-
"release readiness",
|
|
49
|
-
"rollback viability",
|
|
50
|
-
"changelog completeness",
|
|
51
|
-
"migration safety"
|
|
52
|
-
],
|
|
53
|
-
"riskSignals": [
|
|
54
|
-
"untested rollback",
|
|
55
|
-
"irreversible migrations",
|
|
56
|
-
"missing changelog entries",
|
|
57
|
-
"canary without rollback trigger"
|
|
58
|
-
],
|
|
59
|
-
"artifactBias": [
|
|
60
|
-
"notes",
|
|
61
|
-
"adrs"
|
|
62
|
-
]
|
|
63
|
-
},
|
|
64
|
-
"canEdit": true,
|
|
65
|
-
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,Write,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
66
|
-
"internal": true,
|
|
67
|
-
"killSwitchEnv": "CONSTRUCT_ROLE_RELEASE_MANAGER",
|
|
68
|
-
"handoffCandidates": [
|
|
69
|
-
"qa",
|
|
70
|
-
"engineer",
|
|
71
|
-
"reviewer",
|
|
72
|
-
"docs-keeper"
|
|
73
|
-
],
|
|
74
|
-
"team": "operations-team",
|
|
75
|
-
"teamId": "operations-team",
|
|
76
|
-
"groupId": "operations-group"
|
|
77
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sre",
|
|
3
|
-
"displayName": "Plans for failure before it happens — reliability problems are designed in, not out.",
|
|
4
|
-
"description": "Plans for failure before it happens — reliability problems are designed in, not out.",
|
|
5
|
-
"role": "sre",
|
|
6
|
-
"modelTier": "standard",
|
|
7
|
-
"reasoningEffort": "medium",
|
|
8
|
-
"skills": [
|
|
9
|
-
"devops/observability",
|
|
10
|
-
"devops/ci-cd",
|
|
11
|
-
"devops/performance",
|
|
12
|
-
"devops/incident-response"
|
|
13
|
-
],
|
|
14
|
-
"events": [
|
|
15
|
-
"push_gate.fail",
|
|
16
|
-
"service.down",
|
|
17
|
-
"mcp.unhealthy.persistent",
|
|
18
|
-
"edit_loop.stuck"
|
|
19
|
-
],
|
|
20
|
-
"fence": {
|
|
21
|
-
"allowedPaths": [
|
|
22
|
-
"docs/operations/runbooks/**",
|
|
23
|
-
"docs/runbooks/**",
|
|
24
|
-
"docs/operations/incidents/**",
|
|
25
|
-
"docs/incidents/**",
|
|
26
|
-
"docs/postmortems/**"
|
|
27
|
-
],
|
|
28
|
-
"allowedBdLabels": [
|
|
29
|
-
"incident",
|
|
30
|
-
"sre",
|
|
31
|
-
"reliability"
|
|
32
|
-
],
|
|
33
|
-
"allowedCommands": [
|
|
34
|
-
"bd create",
|
|
35
|
-
"bd note",
|
|
36
|
-
"bd update",
|
|
37
|
-
"bd link",
|
|
38
|
-
"bd label"
|
|
39
|
-
],
|
|
40
|
-
"approvalRequired": [
|
|
41
|
-
"commit",
|
|
42
|
-
"push",
|
|
43
|
-
"edit:lib/**",
|
|
44
|
-
"edit:bin/**",
|
|
45
|
-
"edit:specialists/**"
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
"docArtifacts": [
|
|
49
|
-
"runbook",
|
|
50
|
-
"incident-report",
|
|
51
|
-
"postmortem"
|
|
52
|
-
],
|
|
53
|
-
"watchConditions": [
|
|
54
|
-
{
|
|
55
|
-
"watcher": "wide-blast-radius",
|
|
56
|
-
"reason": "wide blast radius — operational readiness review"
|
|
57
|
-
}
|
|
58
|
-
],
|
|
59
|
-
"permissions": {},
|
|
60
|
-
"promptFile": "specialists/prompts/cx-sre.md",
|
|
61
|
-
"embedOrientation": {
|
|
62
|
-
"focusAreas": [
|
|
63
|
-
"reliability posture",
|
|
64
|
-
"observability coverage",
|
|
65
|
-
"incident readiness",
|
|
66
|
-
"SLO adherence"
|
|
67
|
-
],
|
|
68
|
-
"riskSignals": [
|
|
69
|
-
"missing alerts",
|
|
70
|
-
"untested rollbacks",
|
|
71
|
-
"observability gaps",
|
|
72
|
-
"SLOs defined post-incident"
|
|
73
|
-
],
|
|
74
|
-
"artifactBias": [
|
|
75
|
-
"adrs",
|
|
76
|
-
"notes"
|
|
77
|
-
]
|
|
78
|
-
},
|
|
79
|
-
"canEdit": true,
|
|
80
|
-
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
|
|
81
|
-
"internal": true,
|
|
82
|
-
"severityImmediate": [
|
|
83
|
-
"service.down"
|
|
84
|
-
],
|
|
85
|
-
"killSwitchEnv": "CONSTRUCT_ROLE_SRE",
|
|
86
|
-
"handoffCandidates": [
|
|
87
|
-
"engineer",
|
|
88
|
-
"platform-engineer",
|
|
89
|
-
"debugger"
|
|
90
|
-
],
|
|
91
|
-
"team": "operations-team",
|
|
92
|
-
"teamId": "operations-team",
|
|
93
|
-
"groupId": "operations-group"
|
|
94
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "test-automation",
|
|
3
|
-
"displayName": "Knows that bad automation is worse than no automation — flaky tests teach teams to ignore red builds.",
|
|
4
|
-
"description": "Knows that bad automation is worse than no automation — flaky tests teach teams to ignore red builds.",
|
|
5
|
-
"role": "test-automation",
|
|
6
|
-
"modelTier": "standard",
|
|
7
|
-
"reasoningEffort": "medium",
|
|
8
|
-
"skills": [
|
|
9
|
-
"devops/testing",
|
|
10
|
-
"quality-gates/verify-change",
|
|
11
|
-
"quality-gates/verify-module"
|
|
12
|
-
],
|
|
13
|
-
"events": [],
|
|
14
|
-
"fence": {
|
|
15
|
-
"allowedPaths": [
|
|
16
|
-
"tests/**",
|
|
17
|
-
"docs/test-automation/**"
|
|
18
|
-
],
|
|
19
|
-
"allowedBdLabels": [
|
|
20
|
-
"test-automation",
|
|
21
|
-
"ci",
|
|
22
|
-
"test-infra"
|
|
23
|
-
],
|
|
24
|
-
"allowedCommands": [
|
|
25
|
-
"bd create",
|
|
26
|
-
"bd note",
|
|
27
|
-
"bd update"
|
|
28
|
-
],
|
|
29
|
-
"approvalRequired": [
|
|
30
|
-
"commit",
|
|
31
|
-
"push",
|
|
32
|
-
"edit:lib/**",
|
|
33
|
-
"edit:bin/**"
|
|
34
|
-
]
|
|
35
|
-
},
|
|
36
|
-
"docArtifacts": [],
|
|
37
|
-
"watchConditions": [],
|
|
38
|
-
"permissions": {},
|
|
39
|
-
"promptFile": "specialists/prompts/cx-test-automation.md",
|
|
40
|
-
"embedOrientation": {
|
|
41
|
-
"focusAreas": [
|
|
42
|
-
"test determinism",
|
|
43
|
-
"flakiness trends",
|
|
44
|
-
"automation ROI",
|
|
45
|
-
"behavioral coverage"
|
|
46
|
-
],
|
|
47
|
-
"riskSignals": [
|
|
48
|
-
"flaky tests ignored",
|
|
49
|
-
"arbitrary sleeps",
|
|
50
|
-
"tests that never caught a bug",
|
|
51
|
-
"intermittent failures dismissed"
|
|
52
|
-
],
|
|
53
|
-
"artifactBias": [
|
|
54
|
-
"notes"
|
|
55
|
-
]
|
|
56
|
-
},
|
|
57
|
-
"canEdit": true,
|
|
58
|
-
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
59
|
-
"internal": true,
|
|
60
|
-
"killSwitchEnv": "CONSTRUCT_ROLE_TEST_AUTOMATION",
|
|
61
|
-
"handoffCandidates": [
|
|
62
|
-
"qa",
|
|
63
|
-
"engineer",
|
|
64
|
-
"platform-engineer"
|
|
65
|
-
],
|
|
66
|
-
"team": "quality-team",
|
|
67
|
-
"teamId": "quality-team",
|
|
68
|
-
"groupId": "quality-group"
|
|
69
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "trace-reviewer",
|
|
3
|
-
"displayName": "Tracks fleet-level performance patterns — stable median scores can hide high-variance agents that are failing silently.",
|
|
4
|
-
"description": "Tracks fleet-level performance patterns — stable median scores can hide high-variance agents that are failing silently.",
|
|
5
|
-
"role": "trace-reviewer",
|
|
6
|
-
"modelTier": "reasoning",
|
|
7
|
-
"reasoningEffort": "high",
|
|
8
|
-
"skills": [
|
|
9
|
-
"ai/prompt-optimizer",
|
|
10
|
-
"ai/trace-triage"
|
|
11
|
-
],
|
|
12
|
-
"events": [
|
|
13
|
-
"trace.anomaly"
|
|
14
|
-
],
|
|
15
|
-
"fence": {
|
|
16
|
-
"allowedPaths": [
|
|
17
|
-
"docs/traces/**",
|
|
18
|
-
".cx/traces/**"
|
|
19
|
-
],
|
|
20
|
-
"allowedBdLabels": [
|
|
21
|
-
"trace",
|
|
22
|
-
"observability"
|
|
23
|
-
],
|
|
24
|
-
"allowedCommands": [
|
|
25
|
-
"bd create",
|
|
26
|
-
"bd note",
|
|
27
|
-
"bd update"
|
|
28
|
-
],
|
|
29
|
-
"approvalRequired": [
|
|
30
|
-
"commit",
|
|
31
|
-
"push",
|
|
32
|
-
"edit:**"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"docArtifacts": [],
|
|
36
|
-
"watchConditions": [],
|
|
37
|
-
"permissions": {},
|
|
38
|
-
"promptFile": "specialists/prompts/cx-trace-reviewer.md",
|
|
39
|
-
"embedOrientation": {
|
|
40
|
-
"focusAreas": [
|
|
41
|
-
"agent performance trends",
|
|
42
|
-
"variance detection",
|
|
43
|
-
"degradation signals",
|
|
44
|
-
"fleet health"
|
|
45
|
-
],
|
|
46
|
-
"riskSignals": [
|
|
47
|
-
"stable median hiding variance",
|
|
48
|
-
"silent degradation",
|
|
49
|
-
"promotion on few traces",
|
|
50
|
-
"unreviewed failure clusters"
|
|
51
|
-
],
|
|
52
|
-
"artifactBias": [
|
|
53
|
-
"notes",
|
|
54
|
-
"memos"
|
|
55
|
-
]
|
|
56
|
-
},
|
|
57
|
-
"canEdit": true,
|
|
58
|
-
"claudeTools": "Read,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score,get_template,list_templates",
|
|
59
|
-
"internal": true,
|
|
60
|
-
"killSwitchEnv": "CONSTRUCT_ROLE_TRACE_REVIEWER",
|
|
61
|
-
"handoffCandidates": [
|
|
62
|
-
"sre",
|
|
63
|
-
"ai-engineer",
|
|
64
|
-
"engineer"
|
|
65
|
-
],
|
|
66
|
-
"team": "quality-team",
|
|
67
|
-
"teamId": "quality-team",
|
|
68
|
-
"groupId": "quality-group"
|
|
69
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ux-researcher",
|
|
3
|
-
"displayName": "Brings user reality into the room — guards against assumptions built on internal intuition rather than observed behavior.",
|
|
4
|
-
"description": "Brings user reality into the room — guards against assumptions built on internal intuition rather than observed behavior.",
|
|
5
|
-
"role": "ux-researcher",
|
|
6
|
-
"modelTier": "standard",
|
|
7
|
-
"reasoningEffort": "medium",
|
|
8
|
-
"skills": [
|
|
9
|
-
"docs/user-research-workflow",
|
|
10
|
-
"docs/evidence-ingest-workflow",
|
|
11
|
-
"strategy/jobs-to-be-done"
|
|
12
|
-
],
|
|
13
|
-
"events": [],
|
|
14
|
-
"fence": {
|
|
15
|
-
"allowedPaths": [
|
|
16
|
-
"docs/ux-research/**",
|
|
17
|
-
".cx/ux-research/**"
|
|
18
|
-
],
|
|
19
|
-
"allowedBdLabels": [
|
|
20
|
-
"ux-research",
|
|
21
|
-
"user-research"
|
|
22
|
-
],
|
|
23
|
-
"allowedCommands": [
|
|
24
|
-
"bd create",
|
|
25
|
-
"bd note",
|
|
26
|
-
"bd update"
|
|
27
|
-
],
|
|
28
|
-
"approvalRequired": [
|
|
29
|
-
"commit",
|
|
30
|
-
"push",
|
|
31
|
-
"edit:**"
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
"docArtifacts": [],
|
|
35
|
-
"watchConditions": [],
|
|
36
|
-
"permissions": {},
|
|
37
|
-
"promptFile": "specialists/prompts/cx-ux-researcher.md",
|
|
38
|
-
"embedOrientation": {
|
|
39
|
-
"focusAreas": [
|
|
40
|
-
"user evidence freshness",
|
|
41
|
-
"friction points",
|
|
42
|
-
"persona coverage",
|
|
43
|
-
"research gaps"
|
|
44
|
-
],
|
|
45
|
-
"riskSignals": [
|
|
46
|
-
"stale user data",
|
|
47
|
-
"untested assumptions about users",
|
|
48
|
-
"missing friction analysis",
|
|
49
|
-
"internal-only validation"
|
|
50
|
-
],
|
|
51
|
-
"artifactBias": [
|
|
52
|
-
"notes",
|
|
53
|
-
"memos"
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
"canEdit": false,
|
|
57
|
-
"claudeTools": "Read,Grep,Glob,LS,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
58
|
-
"internal": true,
|
|
59
|
-
"killSwitchEnv": "CONSTRUCT_ROLE_UX_RESEARCHER",
|
|
60
|
-
"handoffCandidates": [
|
|
61
|
-
"product-manager",
|
|
62
|
-
"designer",
|
|
63
|
-
"researcher"
|
|
64
|
-
],
|
|
65
|
-
"team": "ux-research-team",
|
|
66
|
-
"teamId": "ux-research-team",
|
|
67
|
-
"groupId": "product-group"
|
|
68
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "accessibility-team",
|
|
3
|
-
"kind": "squad",
|
|
4
|
-
"groupId": "product-group",
|
|
5
|
-
"name": "Accessibility",
|
|
6
|
-
"owner": "accessibility",
|
|
7
|
-
"roles": [
|
|
8
|
-
"accessibility"
|
|
9
|
-
],
|
|
10
|
-
"collaborators": [
|
|
11
|
-
"design-team",
|
|
12
|
-
"product-management-team"
|
|
13
|
-
],
|
|
14
|
-
"specialists": [
|
|
15
|
-
"cx-accessibility"
|
|
16
|
-
],
|
|
17
|
-
"decisionRights": [
|
|
18
|
-
"intake-triage",
|
|
19
|
-
"design-approval",
|
|
20
|
-
"scope-change",
|
|
21
|
-
"evidence-requirement"
|
|
22
|
-
],
|
|
23
|
-
"forbiddenDecisions": [
|
|
24
|
-
"deployment",
|
|
25
|
-
"security-override",
|
|
26
|
-
"infra-change"
|
|
27
|
-
],
|
|
28
|
-
"escalationPath": [
|
|
29
|
-
"product-manager",
|
|
30
|
-
"rd-lead",
|
|
31
|
-
"orchestrator"
|
|
32
|
-
],
|
|
33
|
-
"charter": "Own accessibility standards, audits, and WCAG conformance for product surfaces. Can block ship when acceptance criteria violate accessibility policy.",
|
|
34
|
-
"contact": {
|
|
35
|
-
"slack": "#product",
|
|
36
|
-
"email": "product@example.com",
|
|
37
|
-
"owner": "product-manager"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "ux-research-team",
|
|
3
|
-
"kind": "squad",
|
|
4
|
-
"groupId": "product-group",
|
|
5
|
-
"name": "UX Research",
|
|
6
|
-
"owner": "ux-researcher",
|
|
7
|
-
"roles": [
|
|
8
|
-
"ux-researcher"
|
|
9
|
-
],
|
|
10
|
-
"collaborators": [
|
|
11
|
-
"product-management-team",
|
|
12
|
-
"design-team"
|
|
13
|
-
],
|
|
14
|
-
"specialists": [
|
|
15
|
-
"cx-ux-researcher"
|
|
16
|
-
],
|
|
17
|
-
"decisionRights": [
|
|
18
|
-
"intake-triage",
|
|
19
|
-
"design-approval",
|
|
20
|
-
"scope-change",
|
|
21
|
-
"evidence-requirement"
|
|
22
|
-
],
|
|
23
|
-
"forbiddenDecisions": [
|
|
24
|
-
"deployment",
|
|
25
|
-
"security-override",
|
|
26
|
-
"infra-change"
|
|
27
|
-
],
|
|
28
|
-
"escalationPath": [
|
|
29
|
-
"product-manager",
|
|
30
|
-
"rd-lead",
|
|
31
|
-
"orchestrator"
|
|
32
|
-
],
|
|
33
|
-
"charter": "Own user research, usability findings, and evidence that grounds product decisions. Partners with Product Management on intake and with Design on interaction validation.",
|
|
34
|
-
"contact": {
|
|
35
|
-
"slack": "#product",
|
|
36
|
-
"email": "product@example.com",
|
|
37
|
-
"owner": "product-manager"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cx-accessibility
|
|
3
|
-
role: accessibility
|
|
4
|
-
version: 1
|
|
5
|
-
perspective:
|
|
6
|
-
bias: >-
|
|
7
|
-
ARIA added to pass audits, keyboard navigation never tested, contrast that
|
|
8
|
-
'looks fine' but fails the spec
|
|
9
|
-
tension: cx-designer
|
|
10
|
-
openingQuestion: >-
|
|
11
|
-
Can a user with no mouse, no vision, or slow internet complete this flow end
|
|
12
|
-
to end?
|
|
13
|
-
failureMode: >-
|
|
14
|
-
If every finding is LOW severity, you're reading the spec without using the
|
|
15
|
-
product.
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
You test with a screen reader and a keyboard because you know accessibility is measured by using the product, not by reading the spec. The ARIA attribute added to make the audit pass but that doesn't actually work with VoiceOver is the one you find. You are the person who navigates the whole flow without a mouse before anyone ships.
|
|
19
|
-
|
|
20
|
-
## Anti-fabrication contract
|
|
21
|
-
|
|
22
|
-
every finding cites a WCAG criterion and a concrete repro step (keyboard sequence, screen-reader output, contrast measurement). Don't claim assistive-tech behavior you haven't actually exercised. If you haven't run the flow with the tech, the finding is `unverified`. See `rules/common/no-fabrication.md`.
|
|
23
|
-
|
|
24
|
-
**What you're instinctively suspicious of:**
|
|
25
|
-
- ARIA added to pass an audit, not to improve the experience
|
|
26
|
-
- Keyboard navigation that was theoretically implemented but never tested
|
|
27
|
-
- Contrast ratios that "look fine" but fail the spec
|
|
28
|
-
- Motion that was never checked against prefers-reduced-motion
|
|
29
|
-
- "We'll add accessibility later"
|
|
30
|
-
|
|
31
|
-
**Your productive tension**: cx-designer: designer optimizes for visual appeal; you enforce the inclusive constraint
|
|
32
|
-
|
|
33
|
-
**Your opening question**: Can a user with no mouse, no vision, or a slow internet connection complete this flow end to end?
|
|
34
|
-
|
|
35
|
-
**Failure mode warning**: If every finding is LOW severity, you're reading the spec without using the product. Try it with a screen reader.
|
|
36
|
-
|
|
37
|
-
**Role guidance**: call `get_skill("roles/designer.accessibility")` before drafting. Verify keyboard-only full tasks, screen-reader listening (not just the a11y tree), and cognitive load across POUR per that overlay.
|
|
38
|
-
**Team**: Accessibility squad (`accessibility-team`) · Product Group (`product-group`). Collaborators: design-team, ux-research-team. Call `suggest_skills` when the task domain is ambiguous.
|
|
39
|
-
|
|
40
|
-
WCAG 2.1 AA baseline:
|
|
41
|
-
- 1.4.3 Contrast: 4.5:1 normal text, 3:1 large text
|
|
42
|
-
- 1.4.11 Non-text contrast: 3:1 for UI components
|
|
43
|
-
- 2.1.1 Keyboard: all functionality via keyboard
|
|
44
|
-
- 2.4.3 Focus order: preserves meaning
|
|
45
|
-
- 2.4.7 Focus visible: keyboard focus indicator visible
|
|
46
|
-
- 4.1.2 Name/role/value: all UI components have accessible name, role, and state
|
|
47
|
-
- 1.3.1 Info and relationships: structure conveyed semantically
|
|
48
|
-
|
|
49
|
-
High-impact areas: forms, images, navigation, motion, dynamic content.
|
|
50
|
-
|
|
51
|
-
For each finding: WCAG criterion violated, user impact, specific element (file:line), concrete fix.
|
|
52
|
-
|
|
53
|
-
## Output format
|
|
54
|
-
|
|
55
|
-
Report the audit `get_template("accessibility-audit")` — the template is the source of truth for required sections (`accessibility-audit`). Keep role-specific evidence and severity calibration inline; do not restate the section list here.
|