@geraldmaron/construct 1.0.7 → 1.0.8
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 +20 -17
- package/bin/construct +1199 -69
- package/commands/work/optimize-prompts.md +1 -1
- package/db/schema/007_tags.sql +30 -0
- package/db/schema/008_skill_usage.sql +24 -0
- package/db/schema/009_scheduler.sql +14 -0
- package/examples/internal/roles/architect/bad/clever-plan-without-contracts.md +1 -1
- package/examples/internal/roles/architect/golden/explicit-tradeoff-before-plan.md +1 -1
- package/examples/internal/roles/engineer/bad/speculative-abstraction.md +1 -1
- package/examples/internal/roles/engineer/golden/read-before-write.md +1 -1
- package/examples/internal/roles/qa/bad/coverage-theater.md +1 -1
- package/examples/internal/roles/qa/golden/regression-gate.md +1 -1
- package/examples/seed-observations/decisions.md +1 -1
- package/lib/audit-skills.mjs +3 -3
- package/lib/auto-docs.mjs +2 -2
- package/lib/cli-commands.mjs +276 -122
- package/lib/comment-lint.mjs +5 -1
- package/lib/completions.mjs +1 -1
- package/lib/config/schema.mjs +15 -1
- package/lib/contracts/validate.mjs +65 -17
- package/lib/distill.mjs +22 -4
- package/lib/doc-stamp.mjs +48 -0
- package/lib/doctor/watchers/consistency.mjs +62 -12
- package/lib/document-extract.mjs +221 -28
- package/lib/document-ingest.mjs +2 -0
- package/lib/embed/inbox.mjs +48 -3
- package/lib/embed/role-framing.mjs +3 -3
- package/lib/env-config.mjs +9 -3
- package/lib/extractors/calendar.mjs +173 -0
- package/lib/extractors/shared/drop-info.mjs +22 -0
- package/lib/extractors/transcript.mjs +0 -0
- package/lib/gates-audit.mjs +8 -2
- package/lib/git-hooks/prepare-commit-msg +1 -1
- package/lib/headhunt.mjs +2 -2
- package/lib/hooks/agent-tracker.mjs +6 -11
- package/lib/hooks/guard-bash.mjs +35 -14
- package/lib/hooks/mcp-audit.mjs +12 -0
- package/lib/hooks/pre-compact.mjs +92 -5
- package/lib/hooks/pre-push-gate.mjs +41 -8
- package/lib/hooks/registry-sync.mjs +2 -2
- package/lib/hooks/stop-notify.mjs +7 -6
- package/lib/host-capabilities.mjs +10 -1
- package/lib/hygiene/scan.mjs +141 -0
- package/lib/init-unified.mjs +18 -0
- package/lib/install/stage-project.mjs +4 -4
- package/lib/intake/classify.mjs +222 -55
- package/lib/intake/filesystem-queue.mjs +25 -5
- package/lib/intake/postgres-queue.mjs +45 -3
- package/lib/intake/prepare.mjs +3 -0
- package/lib/intake/quarantine.mjs +205 -0
- package/lib/knowledge/postgres-search.mjs +132 -0
- package/lib/knowledge/search.mjs +14 -4
- package/lib/mcp/server.mjs +9 -3
- package/lib/mcp/tools/skills.mjs +32 -11
- package/lib/mcp/tools/workflow.mjs +1 -1
- package/lib/migrations/index.mjs +1 -1
- package/lib/model-registry.mjs +1 -1
- package/lib/opencode-runtime-plugin.mjs +1 -1
- package/lib/orchestration-policy.mjs +4 -4
- package/lib/overrides/resolver.mjs +3 -3
- package/lib/parity.mjs +4 -4
- package/lib/policy/engine.mjs +2 -2
- package/lib/profiles/lifecycle.mjs +1 -1
- package/lib/prompt-metadata.mjs +4 -4
- package/lib/providers/circuit-breaker.mjs +14 -0
- package/lib/providers/contract.mjs +67 -3
- package/lib/providers/creds.mjs +219 -0
- package/lib/providers/scaffold.mjs +107 -0
- package/lib/role-preload.mjs +5 -0
- package/lib/roles/catalog.mjs +1 -1
- package/lib/roles/manifest.mjs +2 -2
- package/lib/scheduler/index.mjs +112 -0
- package/lib/scheduler/solo.mjs +183 -0
- package/lib/server/index.mjs +7 -1
- package/lib/server/insights.mjs +14 -12
- package/lib/server/langfuse-login.mjs +58 -0
- package/lib/server/static/assets/index-ab25c707.js +1 -1
- package/lib/{agent-contracts-enforce.mjs → specialist-contracts-enforce.mjs} +4 -4
- package/lib/{agent-contracts.mjs → specialist-contracts.mjs} +9 -8
- package/lib/{agents → specialists}/postconditions.mjs +3 -3
- package/lib/{agents → specialists}/schema.mjs +6 -6
- package/lib/status.mjs +13 -11
- package/lib/storage/backup.mjs +2 -2
- package/lib/tags/lifecycle.mjs +278 -0
- package/lib/tags/vocabulary.mjs +140 -0
- package/lib/telemetry/otel-tracer.mjs +184 -0
- package/lib/telemetry/skill-calls.mjs +73 -12
- package/lib/uninstall/uninstall.mjs +1 -1
- package/lib/update.mjs +1 -1
- package/lib/validator.mjs +57 -56
- package/lib/workflows/instantiate.mjs +320 -0
- package/package.json +13 -3
- package/personas/construct.md +2 -2
- package/platforms/claude/CLAUDE.md +1 -1
- package/rules/common/no-fabrication.md +1 -1
- package/scripts/{sync-agents.mjs → sync-specialists.mjs} +126 -54
- package/skills/ai/prompt-optimizer.md +3 -3
- package/skills/exploration/dependency-graph-reading.md +98 -0
- package/skills/exploration/tracer-bullet-method.md +71 -0
- package/skills/exploration/unknown-codebase-onboarding.md +91 -0
- package/skills/operating/change-management.md +91 -0
- package/skills/operating/incident-response.md +75 -0
- package/skills/operating/oncall-rotation.md +95 -0
- package/skills/operating/orchestration-reference.md +2 -2
- package/skills/strategy/competitive-landscape.md +75 -0
- package/skills/strategy/market-research-methods.md +87 -0
- package/skills/strategy/narrative-arc.md +77 -0
- package/skills/strategy/pricing-positioning.md +94 -0
- package/{agents → specialists}/contracts.schema.json +1 -1
- package/specialists/policy-inventory.json +160 -0
- package/{agents → specialists}/prompts/cx-accessibility.md +1 -1
- package/{agents → specialists}/prompts/cx-ai-engineer.md +1 -1
- package/{agents → specialists}/prompts/cx-architect.md +1 -1
- package/{agents → specialists}/prompts/cx-business-strategist.md +1 -1
- package/{agents → specialists}/prompts/cx-data-analyst.md +1 -1
- package/{agents → specialists}/prompts/cx-data-engineer.md +1 -1
- package/{agents → specialists}/prompts/cx-debugger.md +1 -1
- package/{agents → specialists}/prompts/cx-designer.md +1 -1
- package/{agents → specialists}/prompts/cx-devil-advocate.md +1 -1
- package/{agents → specialists}/prompts/cx-docs-keeper.md +2 -2
- package/{agents → specialists}/prompts/cx-engineer.md +2 -2
- package/{agents → specialists}/prompts/cx-evaluator.md +1 -1
- package/{agents → specialists}/prompts/cx-explorer.md +1 -1
- package/{agents → specialists}/prompts/cx-legal-compliance.md +1 -1
- package/{agents → specialists}/prompts/cx-operations.md +1 -1
- package/{agents → specialists}/prompts/cx-orchestrator.md +2 -2
- package/{agents → specialists}/prompts/cx-platform-engineer.md +1 -1
- package/{agents → specialists}/prompts/cx-product-manager.md +1 -1
- package/{agents → specialists}/prompts/cx-qa.md +1 -1
- package/{agents → specialists}/prompts/cx-rd-lead.md +1 -1
- package/{agents → specialists}/prompts/cx-release-manager.md +1 -1
- package/{agents → specialists}/prompts/cx-researcher.md +1 -1
- package/{agents → specialists}/prompts/cx-reviewer.md +2 -2
- package/{agents → specialists}/prompts/cx-security.md +1 -1
- package/{agents → specialists}/prompts/cx-sre.md +2 -2
- package/{agents → specialists}/prompts/cx-test-automation.md +1 -1
- package/{agents → specialists}/prompts/cx-trace-reviewer.md +3 -3
- package/{agents → specialists}/prompts/cx-ux-researcher.md +1 -1
- package/{agents → specialists}/registry.json +651 -423
- package/{agents → specialists}/role-manifests.json +8 -8
- package/templates/provider-scaffold/health.test.mjs +30 -0
- package/templates/provider-scaffold/index.mjs +48 -0
- package/templates/workflows/cross-team-handoff.yml +85 -0
- package/templates/workflows/engineering-onboarding.yml +77 -0
- package/templates/workflows/new-feature.yml +53 -0
- /package/{agents → specialists}/contracts.json +0 -0
- /package/{agents → specialists}/teams.json +0 -0
|
@@ -2,174 +2,23 @@
|
|
|
2
2
|
"version": 1,
|
|
3
3
|
"system": "construct",
|
|
4
4
|
"prefix": "cx",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"openai": {
|
|
17
|
-
"provider": "openai",
|
|
18
|
-
"model": "text-embedding-3-small",
|
|
19
|
-
"dimensions": 1536,
|
|
20
|
-
"description": "Best quality, requires OPENAI_API_KEY"
|
|
21
|
-
},
|
|
22
|
-
"ollama": {
|
|
23
|
-
"provider": "ollama",
|
|
24
|
-
"model": "nomic-embed-text",
|
|
25
|
-
"dimensions": 768,
|
|
26
|
-
"description": "Local Ollama server, requires OLLAMA_BASE_URL"
|
|
27
|
-
},
|
|
28
|
-
"hashing": {
|
|
29
|
-
"provider": "local",
|
|
30
|
-
"model": "hashing-bow-v1",
|
|
31
|
-
"dimensions": 256,
|
|
32
|
-
"description": "Legacy deterministic hash — fast but no semantic understanding"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"providers": {
|
|
37
|
-
"openrouter": {
|
|
38
|
-
"npm": "@ai-sdk/openai-compatible",
|
|
39
|
-
"name": "OpenRouter",
|
|
40
|
-
"options": {
|
|
41
|
-
"baseURL": "https://openrouter.ai/api/v1",
|
|
42
|
-
"headers": {
|
|
43
|
-
"HTTP-Referer": "__OPENROUTER_REFERER__",
|
|
44
|
-
"X-Title": "__OPENROUTER_TITLE__"
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
"models": {
|
|
48
|
-
"google/gemma-3-27b-it:free": {
|
|
49
|
-
"name": "Google: Gemma 3 27B (free)"
|
|
50
|
-
},
|
|
51
|
-
"meta-llama/llama-3.3-70b-instruct:free": {
|
|
52
|
-
"name": "Meta: Llama 3.3 70B Instruct (free)"
|
|
53
|
-
},
|
|
54
|
-
"mistralai/mistral-7b-instruct:free": {
|
|
55
|
-
"name": "Mistral: Mistral 7B Instruct (free)"
|
|
56
|
-
},
|
|
57
|
-
"qwen/qwen3-coder:free": {
|
|
58
|
-
"name": "Qwen: Qwen3 Coder 480B A35B (free)"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"mcpServers": {
|
|
64
|
-
"memory": {
|
|
65
|
-
"command": "node",
|
|
66
|
-
"args": [
|
|
67
|
-
"__CX_TOOLKIT_DIR__/lib/mcp/memory-bridge.mjs"
|
|
68
|
-
],
|
|
69
|
-
"env": {
|
|
70
|
-
"CONSTRUCT_MEMORY_BRIDGE_URL": "http://127.0.0.1:__MEMORY_PORT__/"
|
|
71
|
-
},
|
|
72
|
-
"description": "Stdio MCP bridge for cass-memory: persistent cross-session knowledge graph for agent memory and handoffs"
|
|
73
|
-
},
|
|
74
|
-
"context7": {
|
|
75
|
-
"command": "npx",
|
|
76
|
-
"args": [
|
|
77
|
-
"-y",
|
|
78
|
-
"@upstash/context7-mcp@latest"
|
|
79
|
-
],
|
|
80
|
-
"description": "Library and framework documentation lookup"
|
|
81
|
-
},
|
|
82
|
-
"playwright": {
|
|
83
|
-
"command": "npx",
|
|
84
|
-
"args": [
|
|
85
|
-
"-y",
|
|
86
|
-
"@playwright/mcp@latest"
|
|
87
|
-
],
|
|
88
|
-
"description": "Browser automation and E2E testing"
|
|
89
|
-
},
|
|
90
|
-
"github": {
|
|
91
|
-
"type": "url",
|
|
92
|
-
"url": "https://api.githubcopilot.com/mcp/",
|
|
93
|
-
"headers": {
|
|
94
|
-
"Authorization": "Bearer __GITHUB_TOKEN__"
|
|
95
|
-
},
|
|
96
|
-
"description": "GitHub API: issues, PRs, code search"
|
|
97
|
-
},
|
|
98
|
-
"sequential-thinking": {
|
|
99
|
-
"command": "npx",
|
|
100
|
-
"args": [
|
|
101
|
-
"-y",
|
|
102
|
-
"@modelcontextprotocol/server-sequential-thinking"
|
|
103
|
-
],
|
|
104
|
-
"description": "Complex multi-step reasoning chains"
|
|
5
|
+
"orchestrator": {
|
|
6
|
+
"name": "construct",
|
|
7
|
+
"displayName": "Construct",
|
|
8
|
+
"role": "Your AI co-pilot",
|
|
9
|
+
"description": "Single entry point for all work — plans, builds, validates, and ships. Route everything through Construct.",
|
|
10
|
+
"modelTier": "standard",
|
|
11
|
+
"reasoningEffort": "medium",
|
|
12
|
+
"permissions": {
|
|
13
|
+
"edit": "allow",
|
|
14
|
+
"bash": "allow",
|
|
15
|
+
"webfetch": "allow"
|
|
105
16
|
},
|
|
106
|
-
"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"__CX_TOOLKIT_DIR__/lib/mcp/server.mjs"
|
|
110
|
-
],
|
|
111
|
-
"description": "Agent health, diff summary, file scanner, project context, telemetry trace write"
|
|
112
|
-
}
|
|
17
|
+
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,WebSearch,WebFetch,summarize_diff,scan_file,project_context,memory_create_entities,list_skills,get_skill,search_skills,list_teams,get_team,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
18
|
+
"promptFile": "personas/construct.md",
|
|
19
|
+
"injectAgentRoster": true
|
|
113
20
|
},
|
|
114
|
-
"
|
|
115
|
-
"Session Resumption: start every new chat by grounding in project_context, memory_search, AGENTS.md, plan.md, and the relevant repo docs. Apply results silently — never ask the user to repeat information that memory already holds.",
|
|
116
|
-
"Memory recording: after completing meaningful work, call memory_add_observations to record what you learned. Record: patterns discovered (category: pattern), decisions made with rationale (category: decision), anti-patterns found (category: anti-pattern), and open questions (category: insight). Summaries must be ≥30 characters and specific — avoid placeholders like 'task done' or 'completed'.",
|
|
117
|
-
"Project Identification: identify the current project from the workspace (basename of CWD) or memory MCP. Focus your expertise on the target repository you are currently in.",
|
|
118
|
-
"Loop guard: if you observe the same command or tool call being attempted more than 3 times with identical arguments and no state change, stop immediately and surface what blocked progress and what decision is needed.",
|
|
119
|
-
"Circuit breaker: after 3 failed attempts at the same approach, stop all edits. Revert to last known working state. Document what was tried and escalate to the user with full context.",
|
|
120
|
-
"Worker task contract: specialists return exactly one terminal state: DONE (with files changed and verification evidence), BLOCKED (with concrete blocker and attempted steps), or NEEDS_MAIN_INPUT ({ taskKey, worker, blocker, question, safeDefault, context }). Never conduct user interviews from child sessions.",
|
|
121
|
-
"Tool naming contract: use the exact tool names exposed by the current host — never emit names from other vendors catalogs. Claude-trained models map edits→edit, writes→write, shell→bash. OpenAI-trained models map python/code interpreter→unavailable, shell→bash, apply_patch→edit/write. The bash tool requires both command and description string fields: {\"command\":\"...\",\"description\":\"why this command is needed\"}. Prefer rg over find/grep. If a needed tool is not listed, use the closest available primitive.",
|
|
122
|
-
"Observability: you MUST call cx_trace at the start of every new task using your agent name as the name field and the user goal as input. Construct attaches promptName/promptFile/promptHash automatically. If the tool is unavailable, log the failure and continue — telemetry must never block execution.",
|
|
123
|
-
"Quality scoring: after producing a significant deliverable, you MUST call cx_score with name=quality, value 0.0-1.0, and a brief comment explaining the score. Use the trace_id returned by cx_trace.",
|
|
124
|
-
"Model failover: if you hit a rate-limit error (HTTP 429), provider quota message, or model unavailability, the PostToolUseFailure hook may run construct models --apply. Surface whether fallback ran, then retry only after the model assignment changed.",
|
|
125
|
-
"Detailed orchestration reference (execution contract, handoff template, intent/category classification, parallel dispatch, horizontal routing, efficiency discipline) is in skills/operating/orchestration-reference.md — call get_skill(\"operating/orchestration-reference\") when you need it.",
|
|
126
|
-
"Agent contracts: explicit producer→consumer service contracts live in agents/contracts.json (loaded via lib/agent-contracts.mjs). Call the agent_contract MCP tool at handoff time to look up input.mustContain, preconditions, output shape, and postconditions for the current pair. routeRequest returns contractChain alongside specialists."
|
|
127
|
-
],
|
|
128
|
-
"platformGuidance": {
|
|
129
|
-
"opencode": [
|
|
130
|
-
"You are running inside OpenCode. Construct is the primary entry point. Internal workflow roles and cx-* specialists are implementation details used behind the scenes or by advanced contributors.",
|
|
131
|
-
"Construct routes to internal specialists automatically based on intent. If you are operating as an internal workflow role, dispatch independent specialists in parallel where tasks are independent.",
|
|
132
|
-
"OpenCode subagents are not primary chat surfaces. If you are running as a subagent and you need user input, do not prompt the user from the child session. Return a concise NEEDS_MAIN_INPUT packet containing the blocker, exact question, safe default, and current task/session context so the primary persona can ask the user and resume.",
|
|
133
|
-
"If a subagent returns NEEDS_MAIN_INPUT, the primary persona must ask the user in the main session, update the tracker or plan with the blocker, then resume or re-dispatch the specialist with the answer.",
|
|
134
|
-
"Provider fallback is not guaranteed inside OpenCode provider/session failures. If you see a provider quota or usage-limit error, run or ask the main session to run `construct models --apply` after confirming an OpenRouter key is available, then retry after sync changes model assignments.",
|
|
135
|
-
"Use OpenCode's native plugin, agent, command, and hook surfaces as the orchestration substrate. Visible handoff blocks are fallback/debug artifacts, not the workflow itself.",
|
|
136
|
-
"Loop guard: if you observe the same command or tool call being attempted more than 3 times with identical arguments and no state change, stop immediately and surface what blocked progress.",
|
|
137
|
-
"If the memory MCP is available, call search_nodes with the current project name before starting work to retrieve prior session context."
|
|
138
|
-
],
|
|
139
|
-
"claude": [
|
|
140
|
-
"Follow workspace instructions, project-level CLAUDE.md, agent definitions in ~/.claude/agents/, slash commands, and hooks. Project-level instructions override global ones.",
|
|
141
|
-
"At session start, check for .cx/context.md in the project root and incorporate prior context.",
|
|
142
|
-
"Construct is the primary entry point. Internal cx-* agents and workflow roles are implementation details used behind the scenes."
|
|
143
|
-
],
|
|
144
|
-
"codex": [
|
|
145
|
-
"Construct is the primary Codex profile for normal use. Internal planning, implementation, validation, research, and deployment roles remain available for contributors when needed.",
|
|
146
|
-
"Codex profile switching is not automatic. The Construct contract still applies: route internally, use available skills/MCP/tools, maintain tracker + plan alignment, and continue in the current session when native agent dispatch is unavailable. If the user asks to build, fix, implement, or says 'do it', proceed with implementation; do not stop at a visible handoff block.",
|
|
147
|
-
"Keep orchestration internals internal. Do not expose chain-of-thought, meta commentary, provisional TODO narration, or large handoff templates to the user. Summarize only decisions, next action, blockers, and verification results.",
|
|
148
|
-
"Follow the relevant session skill before inventing process."
|
|
149
|
-
],
|
|
150
|
-
"copilot": [
|
|
151
|
-
"Copilot has no spawnable subagents. Use the Construct prompt/profile for normal use; internal role-specific profiles are contributor-facing implementation details."
|
|
152
|
-
]
|
|
153
|
-
},
|
|
154
|
-
"personas": [
|
|
155
|
-
{
|
|
156
|
-
"name": "construct",
|
|
157
|
-
"displayName": "Construct",
|
|
158
|
-
"role": "Your AI co-pilot",
|
|
159
|
-
"description": "Single entry point for all work — plans, builds, validates, and ships. Route everything through Construct.",
|
|
160
|
-
"modelTier": "standard",
|
|
161
|
-
"reasoningEffort": "medium",
|
|
162
|
-
"permissions": {
|
|
163
|
-
"edit": "allow",
|
|
164
|
-
"bash": "allow",
|
|
165
|
-
"webfetch": "allow"
|
|
166
|
-
},
|
|
167
|
-
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,WebSearch,WebFetch,summarize_diff,scan_file,project_context,memory_create_entities,list_skills,get_skill,search_skills,list_teams,get_team,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
168
|
-
"promptFile": "personas/construct.md",
|
|
169
|
-
"injectAgentRoster": true
|
|
170
|
-
}
|
|
171
|
-
],
|
|
172
|
-
"agents": [
|
|
21
|
+
"specialists": [
|
|
173
22
|
{
|
|
174
23
|
"internal": true,
|
|
175
24
|
"name": "orchestrator",
|
|
@@ -179,14 +28,29 @@
|
|
|
179
28
|
"codexSandbox": "read-only",
|
|
180
29
|
"claudeTools": "Read,Grep,Glob,LS,list_skills,get_skill,search_skills,list_teams,get_team,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
181
30
|
"injectAgentRoster": true,
|
|
182
|
-
"promptFile": "
|
|
31
|
+
"promptFile": "specialists/prompts/cx-orchestrator.md",
|
|
183
32
|
"embedOrientation": {
|
|
184
|
-
"focusAreas": [
|
|
185
|
-
|
|
186
|
-
|
|
33
|
+
"focusAreas": [
|
|
34
|
+
"routing accuracy",
|
|
35
|
+
"workload balance",
|
|
36
|
+
"handoff completeness",
|
|
37
|
+
"specialist utilization"
|
|
38
|
+
],
|
|
39
|
+
"riskSignals": [
|
|
40
|
+
"misrouted tasks",
|
|
41
|
+
"overloaded specialists",
|
|
42
|
+
"dropped handoffs",
|
|
43
|
+
"stale queued work"
|
|
44
|
+
],
|
|
45
|
+
"artifactBias": [
|
|
46
|
+
"notes",
|
|
47
|
+
"memos"
|
|
48
|
+
]
|
|
187
49
|
},
|
|
188
50
|
"skills": [
|
|
189
|
-
"ai/orchestration-workflow"
|
|
51
|
+
"ai/orchestration-workflow",
|
|
52
|
+
"operating/orchestration-reference",
|
|
53
|
+
"operating/change-management"
|
|
190
54
|
],
|
|
191
55
|
"perspective": {
|
|
192
56
|
"bias": "Over-routing to cx-engineer, false simplicity, plans where every task runs in parallel",
|
|
@@ -205,11 +69,24 @@
|
|
|
205
69
|
"reasoningEffort": "medium",
|
|
206
70
|
"codexSandbox": "read-only",
|
|
207
71
|
"claudeTools": "Read,Grep,Glob,LS,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
|
|
208
|
-
"promptFile": "
|
|
72
|
+
"promptFile": "specialists/prompts/cx-rd-lead.md",
|
|
209
73
|
"embedOrientation": {
|
|
210
|
-
"focusAreas": [
|
|
211
|
-
|
|
212
|
-
|
|
74
|
+
"focusAreas": [
|
|
75
|
+
"hypothesis validation",
|
|
76
|
+
"experiment progress",
|
|
77
|
+
"assumption tracking",
|
|
78
|
+
"learning velocity"
|
|
79
|
+
],
|
|
80
|
+
"riskSignals": [
|
|
81
|
+
"untested assumptions",
|
|
82
|
+
"premature hardening",
|
|
83
|
+
"stalled experiments",
|
|
84
|
+
"unfalsifiable claims"
|
|
85
|
+
],
|
|
86
|
+
"artifactBias": [
|
|
87
|
+
"adrs",
|
|
88
|
+
"notes"
|
|
89
|
+
]
|
|
213
90
|
},
|
|
214
91
|
"skills": [
|
|
215
92
|
"ai/agent-dev",
|
|
@@ -231,11 +108,25 @@
|
|
|
231
108
|
"reasoningEffort": "high",
|
|
232
109
|
"codexSandbox": "read-only",
|
|
233
110
|
"claudeTools": "Read,Grep,Glob,LS,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
|
|
234
|
-
"promptFile": "
|
|
111
|
+
"promptFile": "specialists/prompts/cx-product-manager.md",
|
|
235
112
|
"embedOrientation": {
|
|
236
|
-
"focusAreas": [
|
|
237
|
-
|
|
238
|
-
|
|
113
|
+
"focusAreas": [
|
|
114
|
+
"requirements coverage",
|
|
115
|
+
"delivery risk",
|
|
116
|
+
"user-facing gaps",
|
|
117
|
+
"scope clarity"
|
|
118
|
+
],
|
|
119
|
+
"riskSignals": [
|
|
120
|
+
"untraced requirements",
|
|
121
|
+
"scope creep",
|
|
122
|
+
"blocked dependencies",
|
|
123
|
+
"missing acceptance criteria"
|
|
124
|
+
],
|
|
125
|
+
"artifactBias": [
|
|
126
|
+
"prds",
|
|
127
|
+
"intake",
|
|
128
|
+
"memos"
|
|
129
|
+
]
|
|
239
130
|
},
|
|
240
131
|
"skills": [
|
|
241
132
|
"docs/product-intelligence-workflow",
|
|
@@ -266,11 +157,24 @@
|
|
|
266
157
|
"reasoningEffort": "medium",
|
|
267
158
|
"codexSandbox": "read-only",
|
|
268
159
|
"claudeTools": "Read,Grep,Glob,LS,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
269
|
-
"promptFile": "
|
|
160
|
+
"promptFile": "specialists/prompts/cx-ux-researcher.md",
|
|
270
161
|
"embedOrientation": {
|
|
271
|
-
"focusAreas": [
|
|
272
|
-
|
|
273
|
-
|
|
162
|
+
"focusAreas": [
|
|
163
|
+
"user evidence freshness",
|
|
164
|
+
"friction points",
|
|
165
|
+
"persona coverage",
|
|
166
|
+
"research gaps"
|
|
167
|
+
],
|
|
168
|
+
"riskSignals": [
|
|
169
|
+
"stale user data",
|
|
170
|
+
"untested assumptions about users",
|
|
171
|
+
"missing friction analysis",
|
|
172
|
+
"internal-only validation"
|
|
173
|
+
],
|
|
174
|
+
"artifactBias": [
|
|
175
|
+
"notes",
|
|
176
|
+
"memos"
|
|
177
|
+
]
|
|
274
178
|
},
|
|
275
179
|
"skills": [
|
|
276
180
|
"docs/research-workflow"
|
|
@@ -299,14 +203,30 @@
|
|
|
299
203
|
"reasoningEffort": "medium",
|
|
300
204
|
"codexSandbox": "workspace-write",
|
|
301
205
|
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,Write,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
|
|
302
|
-
"promptFile": "
|
|
206
|
+
"promptFile": "specialists/prompts/cx-operations.md",
|
|
303
207
|
"embedOrientation": {
|
|
304
|
-
"focusAreas": [
|
|
305
|
-
|
|
306
|
-
|
|
208
|
+
"focusAreas": [
|
|
209
|
+
"dependency sequencing",
|
|
210
|
+
"ownership clarity",
|
|
211
|
+
"blocker resolution",
|
|
212
|
+
"delivery cadence"
|
|
213
|
+
],
|
|
214
|
+
"riskSignals": [
|
|
215
|
+
"hidden dependencies",
|
|
216
|
+
"unowned tasks",
|
|
217
|
+
"blocked work aging",
|
|
218
|
+
"parallel plans with serial reality"
|
|
219
|
+
],
|
|
220
|
+
"artifactBias": [
|
|
221
|
+
"notes",
|
|
222
|
+
"memos"
|
|
223
|
+
]
|
|
307
224
|
},
|
|
308
225
|
"skills": [
|
|
309
|
-
"docs/init-project"
|
|
226
|
+
"docs/init-project",
|
|
227
|
+
"operating/incident-response",
|
|
228
|
+
"operating/oncall-rotation",
|
|
229
|
+
"operating/change-management"
|
|
310
230
|
],
|
|
311
231
|
"perspective": {
|
|
312
232
|
"bias": "Plans where every task runs in parallel, tasks that sound atomic but aren't, work starting before blockers clear",
|
|
@@ -324,11 +244,24 @@
|
|
|
324
244
|
"reasoningEffort": "medium",
|
|
325
245
|
"codexSandbox": "read-only",
|
|
326
246
|
"claudeTools": "Read,Grep,Glob,LS,WebSearch,WebFetch,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
327
|
-
"promptFile": "
|
|
247
|
+
"promptFile": "specialists/prompts/cx-researcher.md",
|
|
328
248
|
"embedOrientation": {
|
|
329
|
-
"focusAreas": [
|
|
330
|
-
|
|
331
|
-
|
|
249
|
+
"focusAreas": [
|
|
250
|
+
"source freshness",
|
|
251
|
+
"citation coverage",
|
|
252
|
+
"dependency versions",
|
|
253
|
+
"conflicting evidence"
|
|
254
|
+
],
|
|
255
|
+
"riskSignals": [
|
|
256
|
+
"undated sources",
|
|
257
|
+
"unverified claims",
|
|
258
|
+
"outdated dependencies",
|
|
259
|
+
"single-source conclusions"
|
|
260
|
+
],
|
|
261
|
+
"artifactBias": [
|
|
262
|
+
"notes",
|
|
263
|
+
"memos"
|
|
264
|
+
]
|
|
332
265
|
},
|
|
333
266
|
"skills": [
|
|
334
267
|
"docs/research-workflow",
|
|
@@ -350,14 +283,30 @@
|
|
|
350
283
|
"reasoningEffort": "medium",
|
|
351
284
|
"codexSandbox": "read-only",
|
|
352
285
|
"claudeTools": "Read,Grep,Glob,LS,WebSearch,WebFetch,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
353
|
-
"promptFile": "
|
|
286
|
+
"promptFile": "specialists/prompts/cx-business-strategist.md",
|
|
354
287
|
"embedOrientation": {
|
|
355
|
-
"focusAreas": [
|
|
356
|
-
|
|
357
|
-
|
|
288
|
+
"focusAreas": [
|
|
289
|
+
"market positioning",
|
|
290
|
+
"competitive shifts",
|
|
291
|
+
"timing relevance",
|
|
292
|
+
"strategic coherence"
|
|
293
|
+
],
|
|
294
|
+
"riskSignals": [
|
|
295
|
+
"tactics dressed as strategy",
|
|
296
|
+
"ignored competitive moves",
|
|
297
|
+
"undifferentiated positioning",
|
|
298
|
+
"missing market timing"
|
|
299
|
+
],
|
|
300
|
+
"artifactBias": [
|
|
301
|
+
"memos",
|
|
302
|
+
"notes"
|
|
303
|
+
]
|
|
358
304
|
},
|
|
359
305
|
"skills": [
|
|
360
|
-
"
|
|
306
|
+
"strategy/competitive-landscape",
|
|
307
|
+
"strategy/market-research-methods",
|
|
308
|
+
"strategy/pricing-positioning",
|
|
309
|
+
"strategy/narrative-arc"
|
|
361
310
|
],
|
|
362
311
|
"perspective": {
|
|
363
312
|
"bias": "Tactical decisions dressed as strategy, ignoring competitive dynamics, 'build it and they will come'",
|
|
@@ -380,11 +329,24 @@
|
|
|
380
329
|
"reasoningEffort": "medium",
|
|
381
330
|
"codexSandbox": "read-only",
|
|
382
331
|
"claudeTools": "Read,Grep,Glob,LS,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
383
|
-
"promptFile": "
|
|
332
|
+
"promptFile": "specialists/prompts/cx-data-analyst.md",
|
|
384
333
|
"embedOrientation": {
|
|
385
|
-
"focusAreas": [
|
|
386
|
-
|
|
387
|
-
|
|
334
|
+
"focusAreas": [
|
|
335
|
+
"metric validity",
|
|
336
|
+
"measurement coverage",
|
|
337
|
+
"behavioral indicators",
|
|
338
|
+
"distribution analysis"
|
|
339
|
+
],
|
|
340
|
+
"riskSignals": [
|
|
341
|
+
"vanity metrics",
|
|
342
|
+
"averages hiding variance",
|
|
343
|
+
"post-hoc success definitions",
|
|
344
|
+
"ungamed metrics becoming gamed"
|
|
345
|
+
],
|
|
346
|
+
"artifactBias": [
|
|
347
|
+
"notes",
|
|
348
|
+
"memos"
|
|
349
|
+
]
|
|
388
350
|
},
|
|
389
351
|
"skills": [
|
|
390
352
|
"devops/observability",
|
|
@@ -413,11 +375,24 @@
|
|
|
413
375
|
"reasoningEffort": "medium",
|
|
414
376
|
"codexSandbox": "read-only",
|
|
415
377
|
"claudeTools": "Read,Grep,Glob,LS,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
416
|
-
"promptFile": "
|
|
378
|
+
"promptFile": "specialists/prompts/cx-evaluator.md",
|
|
417
379
|
"embedOrientation": {
|
|
418
|
-
"focusAreas": [
|
|
419
|
-
|
|
420
|
-
|
|
380
|
+
"focusAreas": [
|
|
381
|
+
"eval coverage",
|
|
382
|
+
"regression detection",
|
|
383
|
+
"baseline drift",
|
|
384
|
+
"failure case representation"
|
|
385
|
+
],
|
|
386
|
+
"riskSignals": [
|
|
387
|
+
"eval sets matching known outputs",
|
|
388
|
+
"cherry-picked baselines",
|
|
389
|
+
"missing failure cases",
|
|
390
|
+
"promotion on too few traces"
|
|
391
|
+
],
|
|
392
|
+
"artifactBias": [
|
|
393
|
+
"notes",
|
|
394
|
+
"adrs"
|
|
395
|
+
]
|
|
421
396
|
},
|
|
422
397
|
"skills": [
|
|
423
398
|
"ai/prompt-and-eval",
|
|
@@ -444,11 +419,24 @@
|
|
|
444
419
|
"reasoningEffort": "high",
|
|
445
420
|
"codexSandbox": "workspace-write",
|
|
446
421
|
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
447
|
-
"promptFile": "
|
|
422
|
+
"promptFile": "specialists/prompts/cx-ai-engineer.md",
|
|
448
423
|
"embedOrientation": {
|
|
449
|
-
"focusAreas": [
|
|
450
|
-
|
|
451
|
-
|
|
424
|
+
"focusAreas": [
|
|
425
|
+
"model reliability",
|
|
426
|
+
"failure mode coverage",
|
|
427
|
+
"prompt stability",
|
|
428
|
+
"eval health"
|
|
429
|
+
],
|
|
430
|
+
"riskSignals": [
|
|
431
|
+
"untested failure paths",
|
|
432
|
+
"hallucination risk dismissed",
|
|
433
|
+
"prompt drift",
|
|
434
|
+
"demo-only validation"
|
|
435
|
+
],
|
|
436
|
+
"artifactBias": [
|
|
437
|
+
"adrs",
|
|
438
|
+
"notes"
|
|
439
|
+
]
|
|
452
440
|
},
|
|
453
441
|
"skills": [
|
|
454
442
|
"ai/agent-dev",
|
|
@@ -481,11 +469,24 @@
|
|
|
481
469
|
"reasoningEffort": "high",
|
|
482
470
|
"codexSandbox": "read-only",
|
|
483
471
|
"claudeTools": "Read,Grep,Glob,LS,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
|
|
484
|
-
"promptFile": "
|
|
472
|
+
"promptFile": "specialists/prompts/cx-architect.md",
|
|
485
473
|
"embedOrientation": {
|
|
486
|
-
"focusAreas": [
|
|
487
|
-
|
|
488
|
-
|
|
474
|
+
"focusAreas": [
|
|
475
|
+
"coupling and cohesion",
|
|
476
|
+
"unvalidated assumptions",
|
|
477
|
+
"interface contracts",
|
|
478
|
+
"tech debt accumulation"
|
|
479
|
+
],
|
|
480
|
+
"riskSignals": [
|
|
481
|
+
"missing ADRs",
|
|
482
|
+
"implicit contracts",
|
|
483
|
+
"data model drift",
|
|
484
|
+
"undocumented invariants"
|
|
485
|
+
],
|
|
486
|
+
"artifactBias": [
|
|
487
|
+
"adrs",
|
|
488
|
+
"notes"
|
|
489
|
+
]
|
|
489
490
|
},
|
|
490
491
|
"skills": [
|
|
491
492
|
"architecture/api-design",
|
|
@@ -514,13 +515,26 @@
|
|
|
514
515
|
"modelTier": "standard",
|
|
515
516
|
"reasoningEffort": "medium",
|
|
516
517
|
"embedOrientation": {
|
|
517
|
-
"focusAreas": [
|
|
518
|
-
|
|
519
|
-
|
|
518
|
+
"focusAreas": [
|
|
519
|
+
"implementation progress",
|
|
520
|
+
"test coverage gaps",
|
|
521
|
+
"build health",
|
|
522
|
+
"PR velocity"
|
|
523
|
+
],
|
|
524
|
+
"riskSignals": [
|
|
525
|
+
"failing CI",
|
|
526
|
+
"stale PRs",
|
|
527
|
+
"untested paths",
|
|
528
|
+
"pattern drift"
|
|
529
|
+
],
|
|
530
|
+
"artifactBias": [
|
|
531
|
+
"notes",
|
|
532
|
+
"adrs"
|
|
533
|
+
]
|
|
520
534
|
},
|
|
521
535
|
"codexSandbox": "workspace-write",
|
|
522
536
|
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,WebSearch,WebFetch,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
523
|
-
"promptFile": "
|
|
537
|
+
"promptFile": "specialists/prompts/cx-engineer.md",
|
|
524
538
|
"skills": [
|
|
525
539
|
"development/typescript",
|
|
526
540
|
"development/python",
|
|
@@ -537,7 +551,10 @@
|
|
|
537
551
|
"frameworks/react",
|
|
538
552
|
"frameworks/nextjs",
|
|
539
553
|
"frameworks/django",
|
|
540
|
-
"frameworks/spring-boot"
|
|
554
|
+
"frameworks/spring-boot",
|
|
555
|
+
"exploration/unknown-codebase-onboarding",
|
|
556
|
+
"exploration/tracer-bullet-method",
|
|
557
|
+
"exploration/dependency-graph-reading"
|
|
541
558
|
],
|
|
542
559
|
"perspective": {
|
|
543
560
|
"bias": "Implementations that ignore existing conventions, abstractions that complicate the simple case",
|
|
@@ -555,11 +572,24 @@
|
|
|
555
572
|
"reasoningEffort": "high",
|
|
556
573
|
"codexSandbox": "read-only",
|
|
557
574
|
"claudeTools": "Read,Grep,Glob,LS,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
558
|
-
"promptFile": "
|
|
575
|
+
"promptFile": "specialists/prompts/cx-devil-advocate.md",
|
|
559
576
|
"embedOrientation": {
|
|
560
|
-
"focusAreas": [
|
|
561
|
-
|
|
562
|
-
|
|
577
|
+
"focusAreas": [
|
|
578
|
+
"plan survivability",
|
|
579
|
+
"hidden failure modes",
|
|
580
|
+
"scope stability",
|
|
581
|
+
"assumption stress-testing"
|
|
582
|
+
],
|
|
583
|
+
"riskSignals": [
|
|
584
|
+
"plans too elegant to survive contact",
|
|
585
|
+
"unlikely failures unaddressed",
|
|
586
|
+
"scope drift",
|
|
587
|
+
"unanimous agreement without challenge"
|
|
588
|
+
],
|
|
589
|
+
"artifactBias": [
|
|
590
|
+
"notes",
|
|
591
|
+
"memos"
|
|
592
|
+
]
|
|
563
593
|
},
|
|
564
594
|
"skills": [
|
|
565
595
|
"quality-gates/review-work"
|
|
@@ -580,11 +610,23 @@
|
|
|
580
610
|
"reasoningEffort": "high",
|
|
581
611
|
"codexSandbox": "read-only",
|
|
582
612
|
"claudeTools": "Read,Grep,Glob,LS,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
583
|
-
"promptFile": "
|
|
613
|
+
"promptFile": "specialists/prompts/cx-reviewer.md",
|
|
584
614
|
"embedOrientation": {
|
|
585
|
-
"focusAreas": [
|
|
586
|
-
|
|
587
|
-
|
|
615
|
+
"focusAreas": [
|
|
616
|
+
"edge case coverage",
|
|
617
|
+
"error handling completeness",
|
|
618
|
+
"test fidelity",
|
|
619
|
+
"code quality trends"
|
|
620
|
+
],
|
|
621
|
+
"riskSignals": [
|
|
622
|
+
"happy-path-only reviews",
|
|
623
|
+
"excessive mocking",
|
|
624
|
+
"missing error handlers",
|
|
625
|
+
"review without reproduction"
|
|
626
|
+
],
|
|
627
|
+
"artifactBias": [
|
|
628
|
+
"notes"
|
|
629
|
+
]
|
|
588
630
|
},
|
|
589
631
|
"skills": [
|
|
590
632
|
"quality-gates/verify-quality",
|
|
@@ -607,11 +649,24 @@
|
|
|
607
649
|
"reasoningEffort": "high",
|
|
608
650
|
"codexSandbox": "read-only",
|
|
609
651
|
"claudeTools": "Read,Grep,Glob,LS,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
610
|
-
"promptFile": "
|
|
652
|
+
"promptFile": "specialists/prompts/cx-security.md",
|
|
611
653
|
"embedOrientation": {
|
|
612
|
-
"focusAreas": [
|
|
613
|
-
|
|
614
|
-
|
|
654
|
+
"focusAreas": [
|
|
655
|
+
"attack surface changes",
|
|
656
|
+
"dependency vulnerabilities",
|
|
657
|
+
"auth boundary integrity",
|
|
658
|
+
"secret exposure"
|
|
659
|
+
],
|
|
660
|
+
"riskSignals": [
|
|
661
|
+
"new unauthed endpoints",
|
|
662
|
+
"unaudited dependencies",
|
|
663
|
+
"implicit trust boundaries",
|
|
664
|
+
"hardcoded credentials"
|
|
665
|
+
],
|
|
666
|
+
"artifactBias": [
|
|
667
|
+
"adrs",
|
|
668
|
+
"notes"
|
|
669
|
+
]
|
|
615
670
|
},
|
|
616
671
|
"skills": [
|
|
617
672
|
"security/red-team",
|
|
@@ -639,11 +694,23 @@
|
|
|
639
694
|
"reasoningEffort": "medium",
|
|
640
695
|
"codexSandbox": "workspace-write",
|
|
641
696
|
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
642
|
-
"promptFile": "
|
|
697
|
+
"promptFile": "specialists/prompts/cx-qa.md",
|
|
643
698
|
"embedOrientation": {
|
|
644
|
-
"focusAreas": [
|
|
645
|
-
|
|
646
|
-
|
|
699
|
+
"focusAreas": [
|
|
700
|
+
"test effectiveness",
|
|
701
|
+
"behavioral coverage",
|
|
702
|
+
"regression risk",
|
|
703
|
+
"acceptance criteria traceability"
|
|
704
|
+
],
|
|
705
|
+
"riskSignals": [
|
|
706
|
+
"tests that never fail",
|
|
707
|
+
"coverage without behavioral assertions",
|
|
708
|
+
"untested acceptance criteria",
|
|
709
|
+
"flaky tests ignored"
|
|
710
|
+
],
|
|
711
|
+
"artifactBias": [
|
|
712
|
+
"notes"
|
|
713
|
+
]
|
|
647
714
|
},
|
|
648
715
|
"skills": [
|
|
649
716
|
"devops/testing",
|
|
@@ -666,11 +733,23 @@
|
|
|
666
733
|
"reasoningEffort": "high",
|
|
667
734
|
"codexSandbox": "workspace-write",
|
|
668
735
|
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,WebSearch,WebFetch,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
669
|
-
"promptFile": "
|
|
736
|
+
"promptFile": "specialists/prompts/cx-debugger.md",
|
|
670
737
|
"embedOrientation": {
|
|
671
|
-
"focusAreas": [
|
|
672
|
-
|
|
673
|
-
|
|
738
|
+
"focusAreas": [
|
|
739
|
+
"root cause identification",
|
|
740
|
+
"reproduction reliability",
|
|
741
|
+
"fix verification",
|
|
742
|
+
"regression prevention"
|
|
743
|
+
],
|
|
744
|
+
"riskSignals": [
|
|
745
|
+
"symptom fixes without root cause",
|
|
746
|
+
"non-reproducible bugs closed",
|
|
747
|
+
"missing regression tests",
|
|
748
|
+
"repeated failure patterns"
|
|
749
|
+
],
|
|
750
|
+
"artifactBias": [
|
|
751
|
+
"notes"
|
|
752
|
+
]
|
|
674
753
|
},
|
|
675
754
|
"skills": [
|
|
676
755
|
"quality-gates/verify-change",
|
|
@@ -693,11 +772,24 @@
|
|
|
693
772
|
"reasoningEffort": "medium",
|
|
694
773
|
"codexSandbox": "workspace-write",
|
|
695
774
|
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
|
|
696
|
-
"promptFile": "
|
|
775
|
+
"promptFile": "specialists/prompts/cx-sre.md",
|
|
697
776
|
"embedOrientation": {
|
|
698
|
-
"focusAreas": [
|
|
699
|
-
|
|
700
|
-
|
|
777
|
+
"focusAreas": [
|
|
778
|
+
"reliability posture",
|
|
779
|
+
"observability coverage",
|
|
780
|
+
"incident readiness",
|
|
781
|
+
"SLO adherence"
|
|
782
|
+
],
|
|
783
|
+
"riskSignals": [
|
|
784
|
+
"missing alerts",
|
|
785
|
+
"untested rollbacks",
|
|
786
|
+
"observability gaps",
|
|
787
|
+
"SLOs defined post-incident"
|
|
788
|
+
],
|
|
789
|
+
"artifactBias": [
|
|
790
|
+
"adrs",
|
|
791
|
+
"notes"
|
|
792
|
+
]
|
|
701
793
|
},
|
|
702
794
|
"skills": [
|
|
703
795
|
"devops/observability",
|
|
@@ -729,11 +821,24 @@
|
|
|
729
821
|
"reasoningEffort": "medium",
|
|
730
822
|
"codexSandbox": "workspace-write",
|
|
731
823
|
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,Write,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
732
|
-
"promptFile": "
|
|
824
|
+
"promptFile": "specialists/prompts/cx-platform-engineer.md",
|
|
733
825
|
"embedOrientation": {
|
|
734
|
-
"focusAreas": [
|
|
735
|
-
|
|
736
|
-
|
|
826
|
+
"focusAreas": [
|
|
827
|
+
"developer friction",
|
|
828
|
+
"pipeline health",
|
|
829
|
+
"dependency freshness",
|
|
830
|
+
"build reliability"
|
|
831
|
+
],
|
|
832
|
+
"riskSignals": [
|
|
833
|
+
"slow CI",
|
|
834
|
+
"stale dependencies",
|
|
835
|
+
"manual steps in pipelines",
|
|
836
|
+
"config only author understands"
|
|
837
|
+
],
|
|
838
|
+
"artifactBias": [
|
|
839
|
+
"adrs",
|
|
840
|
+
"notes"
|
|
841
|
+
]
|
|
737
842
|
},
|
|
738
843
|
"skills": [
|
|
739
844
|
"devops/ci-cd",
|
|
@@ -766,11 +871,24 @@
|
|
|
766
871
|
"reasoningEffort": "medium",
|
|
767
872
|
"codexSandbox": "read-only",
|
|
768
873
|
"claudeTools": "Read,Grep,Glob,LS,WebSearch,WebFetch,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
769
|
-
"promptFile": "
|
|
874
|
+
"promptFile": "specialists/prompts/cx-legal-compliance.md",
|
|
770
875
|
"embedOrientation": {
|
|
771
|
-
"focusAreas": [
|
|
772
|
-
|
|
773
|
-
|
|
876
|
+
"focusAreas": [
|
|
877
|
+
"license compliance",
|
|
878
|
+
"data privacy posture",
|
|
879
|
+
"AI disclosure obligations",
|
|
880
|
+
"regulatory changes"
|
|
881
|
+
],
|
|
882
|
+
"riskSignals": [
|
|
883
|
+
"unreviewed dependency licenses",
|
|
884
|
+
"undisclosed AI processing",
|
|
885
|
+
"missing data basis documentation",
|
|
886
|
+
"new jurisdiction exposure"
|
|
887
|
+
],
|
|
888
|
+
"artifactBias": [
|
|
889
|
+
"adrs",
|
|
890
|
+
"memos"
|
|
891
|
+
]
|
|
774
892
|
},
|
|
775
893
|
"skills": [
|
|
776
894
|
"compliance/license-audit",
|
|
@@ -794,11 +912,24 @@
|
|
|
794
912
|
"reasoningEffort": "medium",
|
|
795
913
|
"codexSandbox": "workspace-write",
|
|
796
914
|
"claudeTools": "Read,Grep,Glob,LS,Bash,Edit,Write,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
797
|
-
"promptFile": "
|
|
915
|
+
"promptFile": "specialists/prompts/cx-release-manager.md",
|
|
798
916
|
"embedOrientation": {
|
|
799
|
-
"focusAreas": [
|
|
800
|
-
|
|
801
|
-
|
|
917
|
+
"focusAreas": [
|
|
918
|
+
"release readiness",
|
|
919
|
+
"rollback viability",
|
|
920
|
+
"changelog completeness",
|
|
921
|
+
"migration safety"
|
|
922
|
+
],
|
|
923
|
+
"riskSignals": [
|
|
924
|
+
"untested rollback",
|
|
925
|
+
"irreversible migrations",
|
|
926
|
+
"missing changelog entries",
|
|
927
|
+
"canary without rollback trigger"
|
|
928
|
+
],
|
|
929
|
+
"artifactBias": [
|
|
930
|
+
"notes",
|
|
931
|
+
"adrs"
|
|
932
|
+
]
|
|
802
933
|
},
|
|
803
934
|
"skills": [
|
|
804
935
|
"devops/git-workflow",
|
|
@@ -820,11 +951,25 @@
|
|
|
820
951
|
"reasoningEffort": "medium",
|
|
821
952
|
"codexSandbox": "workspace-write",
|
|
822
953
|
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
823
|
-
"promptFile": "
|
|
954
|
+
"promptFile": "specialists/prompts/cx-docs-keeper.md",
|
|
824
955
|
"embedOrientation": {
|
|
825
|
-
"focusAreas": [
|
|
826
|
-
|
|
827
|
-
|
|
956
|
+
"focusAreas": [
|
|
957
|
+
"documentation freshness",
|
|
958
|
+
"decision traceability",
|
|
959
|
+
"context completeness",
|
|
960
|
+
"onboarding clarity"
|
|
961
|
+
],
|
|
962
|
+
"riskSignals": [
|
|
963
|
+
"stale docs",
|
|
964
|
+
"undocumented decisions",
|
|
965
|
+
"missing context updates",
|
|
966
|
+
"tribal knowledge growing"
|
|
967
|
+
],
|
|
968
|
+
"artifactBias": [
|
|
969
|
+
"adrs",
|
|
970
|
+
"notes",
|
|
971
|
+
"memos"
|
|
972
|
+
]
|
|
828
973
|
},
|
|
829
974
|
"skills": [
|
|
830
975
|
"docs/adr-workflow",
|
|
@@ -847,11 +992,24 @@
|
|
|
847
992
|
"reasoningEffort": "medium",
|
|
848
993
|
"codexSandbox": "workspace-write",
|
|
849
994
|
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
850
|
-
"promptFile": "
|
|
995
|
+
"promptFile": "specialists/prompts/cx-designer.md",
|
|
851
996
|
"embedOrientation": {
|
|
852
|
-
"focusAreas": [
|
|
853
|
-
|
|
854
|
-
|
|
997
|
+
"focusAreas": [
|
|
998
|
+
"interaction completeness",
|
|
999
|
+
"state coverage",
|
|
1000
|
+
"design consistency",
|
|
1001
|
+
"accessibility compliance"
|
|
1002
|
+
],
|
|
1003
|
+
"riskSignals": [
|
|
1004
|
+
"missing error states",
|
|
1005
|
+
"no empty states",
|
|
1006
|
+
"inconsistent patterns",
|
|
1007
|
+
"untested responsive breakpoints"
|
|
1008
|
+
],
|
|
1009
|
+
"artifactBias": [
|
|
1010
|
+
"notes",
|
|
1011
|
+
"memos"
|
|
1012
|
+
]
|
|
855
1013
|
},
|
|
856
1014
|
"skills": [
|
|
857
1015
|
"frontend-design/ui-aesthetics",
|
|
@@ -877,11 +1035,23 @@
|
|
|
877
1035
|
"reasoningEffort": "medium",
|
|
878
1036
|
"codexSandbox": "read-only",
|
|
879
1037
|
"claudeTools": "Read,Grep,Glob,LS,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
880
|
-
"promptFile": "
|
|
1038
|
+
"promptFile": "specialists/prompts/cx-accessibility.md",
|
|
881
1039
|
"embedOrientation": {
|
|
882
|
-
"focusAreas": [
|
|
883
|
-
|
|
884
|
-
|
|
1040
|
+
"focusAreas": [
|
|
1041
|
+
"keyboard navigability",
|
|
1042
|
+
"screen reader compatibility",
|
|
1043
|
+
"contrast compliance",
|
|
1044
|
+
"ARIA correctness"
|
|
1045
|
+
],
|
|
1046
|
+
"riskSignals": [
|
|
1047
|
+
"ARIA added without testing",
|
|
1048
|
+
"keyboard traps",
|
|
1049
|
+
"contrast failures",
|
|
1050
|
+
"missing focus indicators"
|
|
1051
|
+
],
|
|
1052
|
+
"artifactBias": [
|
|
1053
|
+
"notes"
|
|
1054
|
+
]
|
|
885
1055
|
},
|
|
886
1056
|
"skills": [
|
|
887
1057
|
"frontend-design/accessibility"
|
|
@@ -909,14 +1079,29 @@
|
|
|
909
1079
|
"reasoningEffort": "medium",
|
|
910
1080
|
"codexSandbox": "read-only",
|
|
911
1081
|
"claudeTools": "Read,Grep,Glob,LS,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
|
|
912
|
-
"promptFile": "
|
|
1082
|
+
"promptFile": "specialists/prompts/cx-explorer.md",
|
|
913
1083
|
"embedOrientation": {
|
|
914
|
-
"focusAreas": [
|
|
915
|
-
|
|
916
|
-
|
|
1084
|
+
"focusAreas": [
|
|
1085
|
+
"codebase understanding",
|
|
1086
|
+
"pattern discovery",
|
|
1087
|
+
"dependency mapping",
|
|
1088
|
+
"drift detection"
|
|
1089
|
+
],
|
|
1090
|
+
"riskSignals": [
|
|
1091
|
+
"assumptions without verification",
|
|
1092
|
+
"incomplete investigation",
|
|
1093
|
+
"outdated mental models",
|
|
1094
|
+
"undiscovered code paths"
|
|
1095
|
+
],
|
|
1096
|
+
"artifactBias": [
|
|
1097
|
+
"notes"
|
|
1098
|
+
]
|
|
917
1099
|
},
|
|
918
1100
|
"skills": [
|
|
919
|
-
"exploration/repo-map"
|
|
1101
|
+
"exploration/repo-map",
|
|
1102
|
+
"exploration/unknown-codebase-onboarding",
|
|
1103
|
+
"exploration/tracer-bullet-method",
|
|
1104
|
+
"exploration/dependency-graph-reading"
|
|
920
1105
|
],
|
|
921
1106
|
"perspective": {
|
|
922
1107
|
"bias": "'I know where this is' without verifying, grep results without context, 5-minute investigations",
|
|
@@ -933,11 +1118,24 @@
|
|
|
933
1118
|
"modelTier": "reasoning",
|
|
934
1119
|
"reasoningEffort": "high",
|
|
935
1120
|
"claudeTools": "Read,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
936
|
-
"promptFile": "
|
|
1121
|
+
"promptFile": "specialists/prompts/cx-trace-reviewer.md",
|
|
937
1122
|
"embedOrientation": {
|
|
938
|
-
"focusAreas": [
|
|
939
|
-
|
|
940
|
-
|
|
1123
|
+
"focusAreas": [
|
|
1124
|
+
"agent performance trends",
|
|
1125
|
+
"variance detection",
|
|
1126
|
+
"degradation signals",
|
|
1127
|
+
"fleet health"
|
|
1128
|
+
],
|
|
1129
|
+
"riskSignals": [
|
|
1130
|
+
"stable median hiding variance",
|
|
1131
|
+
"silent degradation",
|
|
1132
|
+
"promotion on few traces",
|
|
1133
|
+
"unreviewed failure clusters"
|
|
1134
|
+
],
|
|
1135
|
+
"artifactBias": [
|
|
1136
|
+
"notes",
|
|
1137
|
+
"memos"
|
|
1138
|
+
]
|
|
941
1139
|
},
|
|
942
1140
|
"skills": [
|
|
943
1141
|
"ai/prompt-optimizer"
|
|
@@ -957,11 +1155,24 @@
|
|
|
957
1155
|
"modelTier": "standard",
|
|
958
1156
|
"codexSandbox": "read-only",
|
|
959
1157
|
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
960
|
-
"promptFile": "
|
|
1158
|
+
"promptFile": "specialists/prompts/cx-data-engineer.md",
|
|
961
1159
|
"embedOrientation": {
|
|
962
|
-
"focusAreas": [
|
|
963
|
-
|
|
964
|
-
|
|
1160
|
+
"focusAreas": [
|
|
1161
|
+
"pipeline reliability",
|
|
1162
|
+
"data quality",
|
|
1163
|
+
"schema contract adherence",
|
|
1164
|
+
"idempotency"
|
|
1165
|
+
],
|
|
1166
|
+
"riskSignals": [
|
|
1167
|
+
"non-idempotent pipelines",
|
|
1168
|
+
"missing data quality tests",
|
|
1169
|
+
"schema drift",
|
|
1170
|
+
"uncontracted outputs"
|
|
1171
|
+
],
|
|
1172
|
+
"artifactBias": [
|
|
1173
|
+
"adrs",
|
|
1174
|
+
"notes"
|
|
1175
|
+
]
|
|
965
1176
|
},
|
|
966
1177
|
"skills": [
|
|
967
1178
|
"devops/data-engineering",
|
|
@@ -983,11 +1194,23 @@
|
|
|
983
1194
|
"modelTier": "standard",
|
|
984
1195
|
"codexSandbox": "read-only",
|
|
985
1196
|
"claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations,cx_trace,cx_score",
|
|
986
|
-
"promptFile": "
|
|
1197
|
+
"promptFile": "specialists/prompts/cx-test-automation.md",
|
|
987
1198
|
"embedOrientation": {
|
|
988
|
-
"focusAreas": [
|
|
989
|
-
|
|
990
|
-
|
|
1199
|
+
"focusAreas": [
|
|
1200
|
+
"test determinism",
|
|
1201
|
+
"flakiness trends",
|
|
1202
|
+
"automation ROI",
|
|
1203
|
+
"behavioral coverage"
|
|
1204
|
+
],
|
|
1205
|
+
"riskSignals": [
|
|
1206
|
+
"flaky tests ignored",
|
|
1207
|
+
"arbitrary sleeps",
|
|
1208
|
+
"tests that never caught a bug",
|
|
1209
|
+
"intermittent failures dismissed"
|
|
1210
|
+
],
|
|
1211
|
+
"artifactBias": [
|
|
1212
|
+
"notes"
|
|
1213
|
+
]
|
|
991
1214
|
},
|
|
992
1215
|
"skills": [
|
|
993
1216
|
"devops/testing",
|
|
@@ -1003,157 +1226,162 @@
|
|
|
1003
1226
|
"canEdit": true
|
|
1004
1227
|
}
|
|
1005
1228
|
],
|
|
1006
|
-
"
|
|
1007
|
-
"
|
|
1008
|
-
"
|
|
1009
|
-
"
|
|
1010
|
-
"subDepartments": {
|
|
1011
|
-
"product": {
|
|
1012
|
-
"name": "Product Department",
|
|
1013
|
-
"mission": "Define what to build and why. Own the user outcome.",
|
|
1014
|
-
"roles": ["product-manager", "designer", "ux-researcher", "accessibility"]
|
|
1015
|
-
},
|
|
1016
|
-
"engineering": {
|
|
1017
|
-
"name": "Engineering Department",
|
|
1018
|
-
"mission": "Build it right. Own the implementation.",
|
|
1019
|
-
"roles": ["architect", "engineer", "debugger", "qa", "sre", "platform-engineer"]
|
|
1020
|
-
},
|
|
1021
|
-
"intelligence": {
|
|
1022
|
-
"name": "Intelligence Department",
|
|
1023
|
-
"mission": "Discover what's possible and what's broken. Own the learning loop.",
|
|
1024
|
-
"roles": ["researcher", "data-analyst", "ai-engineer", "evaluator", "trace-reviewer"]
|
|
1025
|
-
}
|
|
1026
|
-
}
|
|
1229
|
+
"models": {
|
|
1230
|
+
"reasoning": {
|
|
1231
|
+
"primary": null,
|
|
1232
|
+
"fallback": []
|
|
1027
1233
|
},
|
|
1028
|
-
"
|
|
1029
|
-
"
|
|
1030
|
-
"
|
|
1031
|
-
"subDepartments": {
|
|
1032
|
-
"security": {
|
|
1033
|
-
"name": "Security",
|
|
1034
|
-
"mission": "Keep it safe. Own the threat surface.",
|
|
1035
|
-
"roles": ["security", "legal-compliance"]
|
|
1036
|
-
},
|
|
1037
|
-
"quality": {
|
|
1038
|
-
"name": "Quality Assurance",
|
|
1039
|
-
"mission": "Challenge assumptions. Own the critical eye.",
|
|
1040
|
-
"roles": ["reviewer", "devil-advocate"]
|
|
1041
|
-
}
|
|
1042
|
-
}
|
|
1234
|
+
"standard": {
|
|
1235
|
+
"primary": null,
|
|
1236
|
+
"fallback": []
|
|
1043
1237
|
},
|
|
1044
|
-
"
|
|
1045
|
-
"
|
|
1046
|
-
"
|
|
1047
|
-
"subDepartments": {
|
|
1048
|
-
"release": {
|
|
1049
|
-
"name": "Release Management",
|
|
1050
|
-
"mission": "Ship smoothly. Own the release process.",
|
|
1051
|
-
"roles": ["release-manager"]
|
|
1052
|
-
},
|
|
1053
|
-
"documentation": {
|
|
1054
|
-
"name": "Documentation",
|
|
1055
|
-
"mission": "Maintain institutional knowledge. Own the record.",
|
|
1056
|
-
"roles": ["docs-keeper"]
|
|
1057
|
-
}
|
|
1058
|
-
}
|
|
1238
|
+
"fast": {
|
|
1239
|
+
"primary": null,
|
|
1240
|
+
"fallback": []
|
|
1059
1241
|
},
|
|
1060
|
-
"
|
|
1061
|
-
"
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
"
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1242
|
+
"embeddings": {
|
|
1243
|
+
"local": {
|
|
1244
|
+
"provider": "onnx",
|
|
1245
|
+
"model": "Xenova/all-MiniLM-L6-v2",
|
|
1246
|
+
"dimensions": 384,
|
|
1247
|
+
"description": "Free, offline, runs locally via ONNX Runtime"
|
|
1248
|
+
},
|
|
1249
|
+
"openai": {
|
|
1250
|
+
"provider": "openai",
|
|
1251
|
+
"model": "text-embedding-3-small",
|
|
1252
|
+
"dimensions": 1536,
|
|
1253
|
+
"description": "Best quality, requires OPENAI_API_KEY"
|
|
1254
|
+
},
|
|
1255
|
+
"ollama": {
|
|
1256
|
+
"provider": "ollama",
|
|
1257
|
+
"model": "nomic-embed-text",
|
|
1258
|
+
"dimensions": 768,
|
|
1259
|
+
"description": "Local Ollama server, requires OLLAMA_BASE_URL"
|
|
1260
|
+
},
|
|
1261
|
+
"hashing": {
|
|
1262
|
+
"provider": "local",
|
|
1263
|
+
"model": "hashing-bow-v1",
|
|
1264
|
+
"dimensions": 256,
|
|
1265
|
+
"description": "Legacy deterministic hash — fast but no semantic understanding"
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
},
|
|
1269
|
+
"providers": {
|
|
1270
|
+
"openrouter": {
|
|
1271
|
+
"npm": "@ai-sdk/openai-compatible",
|
|
1272
|
+
"name": "OpenRouter",
|
|
1273
|
+
"options": {
|
|
1274
|
+
"baseURL": "https://openrouter.ai/api/v1",
|
|
1275
|
+
"headers": {
|
|
1276
|
+
"HTTP-Referer": "__OPENROUTER_REFERER__",
|
|
1277
|
+
"X-Title": "__OPENROUTER_TITLE__"
|
|
1278
|
+
}
|
|
1279
|
+
},
|
|
1280
|
+
"models": {
|
|
1281
|
+
"google/gemma-3-27b-it:free": {
|
|
1282
|
+
"name": "Google: Gemma 3 27B (free)"
|
|
1068
1283
|
},
|
|
1069
|
-
"
|
|
1070
|
-
"name": "
|
|
1071
|
-
|
|
1072
|
-
|
|
1284
|
+
"meta-llama/llama-3.3-70b-instruct:free": {
|
|
1285
|
+
"name": "Meta: Llama 3.3 70B Instruct (free)"
|
|
1286
|
+
},
|
|
1287
|
+
"mistralai/mistral-7b-instruct:free": {
|
|
1288
|
+
"name": "Mistral: Mistral 7B Instruct (free)"
|
|
1289
|
+
},
|
|
1290
|
+
"qwen/qwen3-coder:free": {
|
|
1291
|
+
"name": "Qwen: Qwen3 Coder 480B A35B (free)"
|
|
1073
1292
|
}
|
|
1074
1293
|
}
|
|
1075
1294
|
}
|
|
1076
1295
|
},
|
|
1077
|
-
"
|
|
1078
|
-
"
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
"
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
{
|
|
1086
|
-
"id": "tech-lead",
|
|
1087
|
-
"absorbs": ["architect", "engineer", "debugger"],
|
|
1088
|
-
"whenToUse": "Startups, MVP development"
|
|
1089
|
-
},
|
|
1090
|
-
{
|
|
1091
|
-
"id": "quality-lead",
|
|
1092
|
-
"absorbs": ["qa", "accessibility", "reviewer"],
|
|
1093
|
-
"whenToUse": "Projects with compliance needs"
|
|
1094
|
-
},
|
|
1095
|
-
{
|
|
1096
|
-
"id": "reliability-lead",
|
|
1097
|
-
"absorbs": ["sre", "platform-engineer", "release-manager"],
|
|
1098
|
-
"whenToUse": "Production systems"
|
|
1099
|
-
},
|
|
1100
|
-
{
|
|
1101
|
-
"id": "research-lead",
|
|
1102
|
-
"absorbs": ["researcher", "data-analyst", "evaluator"],
|
|
1103
|
-
"whenToUse": "Data-driven products"
|
|
1104
|
-
},
|
|
1105
|
-
{
|
|
1106
|
-
"id": "ai-lead",
|
|
1107
|
-
"absorbs": ["ai-engineer", "trace-reviewer"],
|
|
1108
|
-
"whenToUse": "AI/ML products"
|
|
1109
|
-
},
|
|
1110
|
-
{
|
|
1111
|
-
"id": "security-lead",
|
|
1112
|
-
"absorbs": ["security", "legal-compliance"],
|
|
1113
|
-
"whenToUse": "Regulated industries"
|
|
1114
|
-
},
|
|
1115
|
-
{
|
|
1116
|
-
"id": "strategy-lead",
|
|
1117
|
-
"absorbs": ["business-strategist", "operations"],
|
|
1118
|
-
"whenToUse": "Growth-stage companies"
|
|
1119
|
-
},
|
|
1120
|
-
{
|
|
1121
|
-
"id": "docs-lead",
|
|
1122
|
-
"absorbs": ["docs-keeper"],
|
|
1123
|
-
"whenToUse": "Documentation-heavy projects"
|
|
1124
|
-
},
|
|
1125
|
-
{
|
|
1126
|
-
"id": "orchestrator",
|
|
1127
|
-
"absorbs": ["orchestrator", "rd-lead"],
|
|
1128
|
-
"whenToUse": "Complex multi-team initiatives"
|
|
1296
|
+
"mcpServers": {
|
|
1297
|
+
"memory": {
|
|
1298
|
+
"command": "node",
|
|
1299
|
+
"args": [
|
|
1300
|
+
"__CX_TOOLKIT_DIR__/lib/mcp/memory-bridge.mjs"
|
|
1301
|
+
],
|
|
1302
|
+
"env": {
|
|
1303
|
+
"CONSTRUCT_MEMORY_BRIDGE_URL": "http://127.0.0.1:__MEMORY_PORT__/"
|
|
1129
1304
|
},
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1305
|
+
"description": "Stdio MCP bridge for cass-memory: persistent cross-session knowledge graph for agent memory and handoffs"
|
|
1306
|
+
},
|
|
1307
|
+
"context7": {
|
|
1308
|
+
"command": "npx",
|
|
1309
|
+
"args": [
|
|
1310
|
+
"-y",
|
|
1311
|
+
"@upstash/context7-mcp@latest"
|
|
1312
|
+
],
|
|
1313
|
+
"description": "Library and framework documentation lookup"
|
|
1314
|
+
},
|
|
1315
|
+
"playwright": {
|
|
1316
|
+
"command": "npx",
|
|
1317
|
+
"args": [
|
|
1318
|
+
"-y",
|
|
1319
|
+
"@playwright/mcp@latest"
|
|
1320
|
+
],
|
|
1321
|
+
"description": "Browser automation and E2E testing"
|
|
1322
|
+
},
|
|
1323
|
+
"github": {
|
|
1324
|
+
"type": "url",
|
|
1325
|
+
"url": "https://api.githubcopilot.com/mcp/",
|
|
1326
|
+
"headers": {
|
|
1327
|
+
"Authorization": "Bearer __GITHUB_TOKEN__"
|
|
1134
1328
|
},
|
|
1135
|
-
|
|
1136
|
-
"id": "generalist",
|
|
1137
|
-
"absorbs": ["engineer"],
|
|
1138
|
-
"whenToUse": "General purpose, default role"
|
|
1139
|
-
}
|
|
1140
|
-
]
|
|
1141
|
-
},
|
|
1142
|
-
"roleSelection": {
|
|
1143
|
-
"description": "User-configurable primary/secondary role preferences. Set via dashboard or CLI.",
|
|
1144
|
-
"defaults": {
|
|
1145
|
-
"primary": null,
|
|
1146
|
-
"secondary": null
|
|
1329
|
+
"description": "GitHub API: issues, PRs, code search"
|
|
1147
1330
|
},
|
|
1148
|
-
"
|
|
1149
|
-
|
|
1331
|
+
"sequential-thinking": {
|
|
1332
|
+
"command": "npx",
|
|
1333
|
+
"args": [
|
|
1334
|
+
"-y",
|
|
1335
|
+
"@modelcontextprotocol/server-sequential-thinking"
|
|
1336
|
+
],
|
|
1337
|
+
"description": "Complex multi-step reasoning chains"
|
|
1338
|
+
},
|
|
1339
|
+
"construct-mcp": {
|
|
1340
|
+
"command": "node",
|
|
1341
|
+
"args": [
|
|
1342
|
+
"__CX_TOOLKIT_DIR__/lib/mcp/server.mjs"
|
|
1343
|
+
],
|
|
1344
|
+
"description": "Agent health, diff summary, file scanner, project context, telemetry trace write"
|
|
1345
|
+
}
|
|
1150
1346
|
},
|
|
1151
|
-
"
|
|
1152
|
-
"
|
|
1153
|
-
"
|
|
1154
|
-
"
|
|
1155
|
-
"
|
|
1156
|
-
"
|
|
1157
|
-
"
|
|
1347
|
+
"sharedGuidance": [
|
|
1348
|
+
"Session Resumption: start every new chat by grounding in project_context, memory_search, AGENTS.md, plan.md, and the relevant repo docs. Apply results silently — never ask the user to repeat information that memory already holds.",
|
|
1349
|
+
"Memory recording: after completing meaningful work, call memory_add_observations to record what you learned. Record: patterns discovered (category: pattern), decisions made with rationale (category: decision), anti-patterns found (category: anti-pattern), and open questions (category: insight). Summaries must be ≥30 characters and specific — avoid placeholders like 'task done' or 'completed'.",
|
|
1350
|
+
"Project Identification: identify the current project from the workspace (basename of CWD) or memory MCP. Focus your expertise on the target repository you are currently in.",
|
|
1351
|
+
"Loop guard: if you observe the same command or tool call being attempted more than 3 times with identical arguments and no state change, stop immediately and surface what blocked progress and what decision is needed.",
|
|
1352
|
+
"Circuit breaker: after 3 failed attempts at the same approach, stop all edits. Revert to last known working state. Document what was tried and escalate to the user with full context.",
|
|
1353
|
+
"Worker task contract: specialists return exactly one terminal state: DONE (with files changed and verification evidence), BLOCKED (with concrete blocker and attempted steps), or NEEDS_MAIN_INPUT ({ taskKey, worker, blocker, question, safeDefault, context }). Never conduct user interviews from child sessions.",
|
|
1354
|
+
"Tool naming contract: use the exact tool names exposed by the current host — never emit names from other vendors catalogs. Claude-trained models map edits→edit, writes→write, shell→bash. OpenAI-trained models map python/code interpreter→unavailable, shell→bash, apply_patch→edit/write. The bash tool requires both command and description string fields: {\"command\":\"...\",\"description\":\"why this command is needed\"}. Prefer rg over find/grep. If a needed tool is not listed, use the closest available primitive.",
|
|
1355
|
+
"Observability: you MUST call cx_trace at the start of every new task using your agent name as the name field and the user goal as input. Construct attaches promptName/promptFile/promptHash automatically. If the tool is unavailable, log the failure and continue — telemetry must never block execution.",
|
|
1356
|
+
"Quality scoring: after producing a significant deliverable, you MUST call cx_score with name=quality, value 0.0-1.0, and a brief comment explaining the score. Use the trace_id returned by cx_trace.",
|
|
1357
|
+
"Model failover: if you hit a rate-limit error (HTTP 429), provider quota message, or model unavailability, the PostToolUseFailure hook may run construct models --apply. Surface whether fallback ran, then retry only after the model assignment changed.",
|
|
1358
|
+
"Detailed orchestration reference (execution contract, handoff template, intent/category classification, parallel dispatch, horizontal routing, efficiency discipline) is in skills/operating/orchestration-reference.md — call get_skill(\"operating/orchestration-reference\") when you need it.",
|
|
1359
|
+
"Agent contracts: explicit producer→consumer service contracts live in specialists/contracts.json (loaded via lib/specialist-contracts.mjs). Call the agent_contract MCP tool at handoff time to look up input.mustContain, preconditions, output shape, and postconditions for the current pair. routeRequest returns contractChain alongside specialists."
|
|
1360
|
+
],
|
|
1361
|
+
"platformGuidance": {
|
|
1362
|
+
"opencode": [
|
|
1363
|
+
"You are running inside OpenCode. Construct is the primary entry point. Internal workflow roles and cx-* specialists are implementation details used behind the scenes or by advanced contributors.",
|
|
1364
|
+
"Construct routes to internal specialists automatically based on intent. If you are operating as an internal workflow role, dispatch independent specialists in parallel where tasks are independent.",
|
|
1365
|
+
"OpenCode subagents are not primary chat surfaces. If you are running as a subagent and you need user input, do not prompt the user from the child session. Return a concise NEEDS_MAIN_INPUT packet containing the blocker, exact question, safe default, and current task/session context so the primary persona can ask the user and resume.",
|
|
1366
|
+
"If a subagent returns NEEDS_MAIN_INPUT, the primary persona must ask the user in the main session, update the tracker or plan with the blocker, then resume or re-dispatch the specialist with the answer.",
|
|
1367
|
+
"Provider fallback is not guaranteed inside OpenCode provider/session failures. If you see a provider quota or usage-limit error, run or ask the main session to run `construct models --apply` after confirming an OpenRouter key is available, then retry after sync changes model assignments.",
|
|
1368
|
+
"Use OpenCode's native plugin, agent, command, and hook surfaces as the orchestration substrate. Visible handoff blocks are fallback/debug artifacts, not the workflow itself.",
|
|
1369
|
+
"Loop guard: if you observe the same command or tool call being attempted more than 3 times with identical arguments and no state change, stop immediately and surface what blocked progress.",
|
|
1370
|
+
"If the memory MCP is available, call search_nodes with the current project name before starting work to retrieve prior session context."
|
|
1371
|
+
],
|
|
1372
|
+
"claude": [
|
|
1373
|
+
"Follow workspace instructions, project-level CLAUDE.md, agent definitions in ~/.claude/specialists/, slash commands, and hooks. Project-level instructions override global ones.",
|
|
1374
|
+
"At session start, check for .cx/context.md in the project root and incorporate prior context.",
|
|
1375
|
+
"Construct is the primary entry point. Internal cx-* agents and workflow roles are implementation details used behind the scenes."
|
|
1376
|
+
],
|
|
1377
|
+
"codex": [
|
|
1378
|
+
"Construct is the primary Codex profile for normal use. Internal planning, implementation, validation, research, and deployment roles remain available for contributors when needed.",
|
|
1379
|
+
"Codex profile switching is not automatic. The Construct contract still applies: route internally, use available skills/MCP/tools, maintain tracker + plan alignment, and continue in the current session when native agent dispatch is unavailable. If the user asks to build, fix, implement, or says 'do it', proceed with implementation; do not stop at a visible handoff block.",
|
|
1380
|
+
"Keep orchestration internals internal. Do not expose chain-of-thought, meta commentary, provisional TODO narration, or large handoff templates to the user. Summarize only decisions, next action, blockers, and verification results.",
|
|
1381
|
+
"Follow the relevant session skill before inventing process."
|
|
1382
|
+
],
|
|
1383
|
+
"copilot": [
|
|
1384
|
+
"Copilot has no spawnable subagents. Use the Construct prompt/profile for normal use; internal role-specific profiles are contributor-facing implementation details."
|
|
1385
|
+
]
|
|
1158
1386
|
}
|
|
1159
1387
|
}
|