@cleocode/skills 2026.3.76 → 2026.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/package.json +1 -1
  2. package/skills/_shared/manifest-operations.md +1 -2
  3. package/skills/_shared/skill-chaining-patterns.md +3 -7
  4. package/skills/_shared/subagent-protocol-base.cant +113 -0
  5. package/skills/ct-cleo/SKILL.md +56 -65
  6. package/skills/ct-cleo/references/orchestrator-constraints.md +0 -13
  7. package/skills/ct-cleo/references/session-protocol.md +3 -12
  8. package/skills/ct-codebase-mapper/SKILL.md +7 -7
  9. package/skills/ct-grade/SKILL.md +12 -46
  10. package/skills/ct-grade/agents/scenario-runner.md +11 -21
  11. package/skills/ct-grade/references/ab-test-methodology.md +14 -14
  12. package/skills/ct-grade/references/domains.md +72 -74
  13. package/skills/ct-grade/references/grade-spec.md +8 -11
  14. package/skills/ct-grade/references/scenario-playbook.md +77 -106
  15. package/skills/ct-grade-v2-1/SKILL.md +30 -32
  16. package/skills/ct-grade-v2-1/agents/scenario-runner.md +14 -34
  17. package/skills/ct-grade-v2-1/grade-viewer/eval-report.md +4 -1
  18. package/skills/ct-grade-v2-1/references/ab-testing.md +28 -88
  19. package/skills/ct-grade-v2-1/references/grade-spec-v2.md +5 -5
  20. package/skills/ct-grade-v2-1/references/playbook-v2.md +115 -183
  21. package/skills/ct-grade-v2-1/references/token-tracking.md +7 -9
  22. package/skills/ct-memory/SKILL.md +16 -35
  23. package/skills/ct-orchestrator/SKILL.md +58 -68
  24. package/skills/ct-skill-validator/SKILL.md +1 -1
  25. package/skills/ct-skill-validator/agents/ecosystem-checker.md +2 -2
  26. package/skills/ct-skill-validator/references/cleo-ecosystem-rules.md +19 -20
  27. package/skills/manifest.json +1 -1
  28. package/skills/signaldock-connect/SKILL.md +132 -0
  29. package/skills/signaldock-connect/assets/agent-card.json +48 -0
  30. package/skills/signaldock-connect/references/api-endpoints.md +131 -0
  31. package/skills.json +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/skills",
3
- "version": "2026.3.76",
3
+ "version": "2026.4.2",
4
4
  "description": "CLEO skill definitions - bundled with CLEO monorepo",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -393,8 +393,7 @@ cleo research stats
393
393
  ### cleo research inject
394
394
 
395
395
  > **Note**: Not currently implemented in the CLI. The orchestrator generates fully-resolved
396
- > subagent prompts via `cleo orchestrator spawn <taskId>` or
397
- > `mutate({ domain: "orchestrate", operation: "spawn", params: { taskId } })`.
396
+ > subagent prompts via `cleo orchestrator spawn <taskId>`.
398
397
 
399
398
  ---
400
399
 
@@ -40,14 +40,10 @@ The orchestrator delegates work to a subagent via `orchestrate.spawn` with skill
40
40
  ### Implementation
41
41
 
42
42
  ```bash
43
- # CLI (Primary)
43
+ # Generate fully-resolved spawn prompt
44
44
  cleo orchestrator spawn T1234 --json
45
45
 
46
- # MCP (Fallback)
47
- # 1. Generate fully-resolved spawn prompt
48
- mutate({ domain: "orchestrate", operation: "spawn", params: { taskId: "T1234" }})
49
-
50
- # 2. Provider adapter executes the prompt using its native mechanism
46
+ # Provider adapter executes the prompt using its native mechanism
51
47
  # - Claude Code: Task tool with cleo-subagent type
52
48
  # - OpenCode: config-driven agent spawn
53
49
  # - Codex: SDK agent creation
@@ -217,7 +213,7 @@ TOPIC_SLUG # URL-safe topic name
217
213
  Before spawning subagent:
218
214
  - [ ] Identify appropriate skill for task type
219
215
  - [ ] Prepare token context (TASK_ID, DATE, TOPIC_SLUG)
220
- - [ ] CLI: `cleo orchestrator spawn <taskId> --json` or MCP: `orchestrate.spawn`
216
+ - [ ] `cleo orchestrator spawn <taskId> --json`
221
217
  - [ ] Verify token resolution is complete (`tokenResolution.fullyResolved`)
222
218
 
223
219
  Before chaining to another skill:
@@ -0,0 +1,113 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1
4
+ ---
5
+
6
+ # CANT equivalent of subagent-protocol-base.md
7
+ # T198 prototype: Structured protocol definition with typed constraints.
8
+
9
+ protocol subagent-base:
10
+ description: "RFC 2119 protocol for all CLEO subagents"
11
+ version: "1.2.0"
12
+
13
+ # --- Required Tokens ---
14
+
15
+ tokens:
16
+ required:
17
+ TASK_ID: pattern("^T[0-9]+$")
18
+ DATE: date
19
+ TOPIC_SLUG: pattern("^[a-z0-9-]+$")
20
+ optional:
21
+ EPIC_ID: pattern("^T[0-9]+$") = ""
22
+ SESSION_ID: string = ""
23
+ OUTPUT_DIR: path = ".cleo/agent-outputs"
24
+ MANIFEST_PATH: path = "${OUTPUT_DIR}/MANIFEST.jsonl"
25
+ computed:
26
+ OUTPUT_PATH: path = "${OUTPUT_DIR}/${DATE}_${TOPIC_SLUG}.md"
27
+ RESEARCH_ID: string = "${TOPIC_SLUG}-${DATE}"
28
+
29
+ # --- Output Requirements ---
30
+
31
+ constraints [output]:
32
+ OUT-001: MUST write findings to "${OUTPUT_PATH}"
33
+ OUT-002: MUST append ONE entry to pipeline manifest via pipeline.manifest.append
34
+ OUT-003: MUST return ONLY one of: "[Type] complete/partial/blocked. See pipeline manifest."
35
+ OUT-004: MUST NOT return output content in response body
36
+
37
+ # --- Lifecycle Requirements ---
38
+
39
+ constraints [lifecycle]:
40
+ LIFE-001: MUST call tasks.start before beginning any work
41
+ LIFE-002: MUST call tasks.complete after writing output and manifest
42
+ LIFE-003: MUST NOT call tasks.complete without having written an output file
43
+
44
+ # --- Behavior Requirements ---
45
+
46
+ constraints [behavior]:
47
+ BEH-001: MUST NOT fabricate information — use memory.find first
48
+ BEH-002: MUST check success field on every LAFS response before proceeding
49
+ BEH-003: SHOULD link memory observations to task via memory.link
50
+ BEH-004: MUST NOT use deprecated operations (memory.brain.*, tasks.exists)
51
+
52
+ # --- Manifest Requirements ---
53
+
54
+ constraints [manifest]:
55
+ MAN-001: MUST write output file before appending manifest entry
56
+ MAN-002: MUST set manifest status to enum("complete", "partial", "blocked")
57
+ MAN-003: SHOULD include needs_followup array when status is "partial"
58
+ MAN-004: MUST use pipeline.manifest.append — MUST NOT write MANIFEST.jsonl directly
59
+
60
+ # --- Lifecycle Phases ---
61
+
62
+ phase initialize:
63
+ step 1: "Read task details via tasks.show ${TASK_ID}"
64
+ step 2: "Start task via tasks.start ${TASK_ID}"
65
+ LIFE-001: MUST call tasks.start before beginning any work
66
+
67
+ phase execute:
68
+ step 1: "Follow injected skill protocol for current RCASD-IVTR+C stage"
69
+ step 2: "Write output to ${OUTPUT_PATH}"
70
+ BEH-001: MUST NOT fabricate information
71
+
72
+ phase output:
73
+ step 1: "Write output file to ${OUTPUT_PATH}"
74
+ step 2: "Append manifest entry via pipeline.manifest.append"
75
+ step 3: "Complete task via tasks.complete ${TASK_ID}"
76
+ MAN-001: MUST write output file before appending manifest entry
77
+ LIFE-002: MUST call tasks.complete after writing output
78
+
79
+ phase return:
80
+ step 1: "Return one-line summary message only"
81
+ OUT-003: MUST return "summary message only"
82
+ OUT-004: MUST NOT return content in response body
83
+
84
+ # --- Error Handling ---
85
+
86
+ anti_patterns:
87
+ - pattern: "Returning full content in response"
88
+ problem: "Bloats orchestrator context window"
89
+ solution: "Write to output file, return one-line summary"
90
+ - pattern: "Writing pretty-printed JSON to manifest"
91
+ problem: "Multiple lines break JSONL parsers"
92
+ solution: "Use cleo manifest append CLI command"
93
+ - pattern: "Skipping tasks.start"
94
+ problem: "Protocol violation — LIFE-001"
95
+ solution: "Always call tasks.start before beginning work"
96
+ - pattern: "Using memory.brain.* prefix"
97
+ problem: "Removed in ADR-021 — returns E_INVALID_OPERATION"
98
+ solution: "Use memory.find, memory.observe, memory.link"
99
+ - pattern: "Using tasks.exists"
100
+ problem: "Removed from registry"
101
+ solution: "Use tasks.find with exact: true, check results.length"
102
+ - pattern: "Calling tasks.list without filters"
103
+ problem: "Returns all tasks with notes — huge token cost"
104
+ solution: "Use tasks.find for discovery"
105
+ - pattern: "Appending to MANIFEST.jsonl directly"
106
+ problem: "Legacy file — migrated to SQLite per ADR-027"
107
+ solution: "Use pipeline.manifest.append operation"
108
+ - pattern: "Loading skills via @ at runtime"
109
+ problem: "Cannot resolve outside orchestrator spawn"
110
+ solution: "Skills are injected by orchestrator at spawn time"
111
+ - pattern: "Fabricating data when memory is empty"
112
+ problem: "Hallucination — violates BEH-001"
113
+ solution: "Use memory.find first; if truly unknown, state uncertainty"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ct-cleo
3
- description: CLEO task management protocol - session, task, and workflow guidance. Use when managing tasks, sessions, or multi-agent workflows with the CLEO MCP protocol.
3
+ description: CLEO task management protocol - session, task, and workflow guidance. Use when managing tasks, sessions, or multi-agent workflows with the CLEO CLI protocol.
4
4
  ---
5
5
 
6
6
  # CLEO Protocol Guide
@@ -11,9 +11,9 @@ CLEO is the task management protocol for AI coding agents. It provides structure
11
11
 
12
12
  ## CLI-First Workflow
13
13
 
14
- CLI (`cleo` / `ct`) is the **primary** entry point. MCP (`query` / `mutate`) is the fallback when CLI is unavailable.
14
+ CLI (`cleo` / `ct`) is the **only** dispatch method. All operations use `cleo <command>` syntax.
15
15
 
16
- ### Tier-0 Read Operations (`query`) — Always Available
16
+ ### Tier-0 Read Operations — Always Available
17
17
 
18
18
  | Domain | Operation | Description |
19
19
  |--------|-----------|-------------|
@@ -34,11 +34,11 @@ CLI (`cleo` / `ct`) is the **primary** entry point. MCP (`query` / `mutate`) is
34
34
  | `tools` | `provider.list` | List all known LLM/agent providers |
35
35
  | `tools` | `provider.detect` | Detect currently active provider |
36
36
 
37
- ### Tier-1 Read Operations (`query`) — After Session Init
37
+ ### Tier-1 Read Operations — After Session Init
38
38
 
39
39
  | Domain | Operation | Description |
40
40
  |--------|-----------|-------------|
41
- | `tasks` | `list` | List direct children (`params: { parentId }`) — **requires parentId filter; prefer tasks.find for discovery** |
41
+ | `tasks` | `list` | List direct children (`--parent <id>`) — **requires parent filter; prefer `cleo find` for discovery** |
42
42
  | `tasks` | `tree` | Full subtask hierarchy (`params: { taskId }`) |
43
43
  | `tasks` | `analyze` | Leverage-sorted task discovery |
44
44
  | `tasks` | `blockers` | Tasks blocking a specific task (`params: { taskId }`) |
@@ -76,7 +76,7 @@ CLI (`cleo` / `ct`) is the **primary** entry point. MCP (`query` / `mutate`) is
76
76
  | `sticky` | `list` | List sticky notes (`params: { status?, tag? }`) |
77
77
  | `sticky` | `show` | Show sticky details (`params: { stickyId }`) |
78
78
 
79
- ### Tier-0 Write Operations (`mutate`) — Always Available
79
+ ### Tier-0 Write Operations — Always Available
80
80
 
81
81
  | Domain | Operation | Description |
82
82
  |--------|-----------|-------------|
@@ -89,7 +89,7 @@ CLI (`cleo` / `ct`) is the **primary** entry point. MCP (`query` / `mutate`) is
89
89
  | `session` | `end` | End session (`params: { note? }`) |
90
90
  | `memory` | `observe` | Save observation to brain (`params: { text, title? }`) |
91
91
 
92
- ### Tier-1 Write Operations (`mutate`) — After Session Init
92
+ ### Tier-1 Write Operations — After Session Init
93
93
 
94
94
  | Domain | Operation | Description |
95
95
  |--------|-----------|-------------|
@@ -142,20 +142,20 @@ Every agent MUST use this tree to select the minimum-cost operation path.
142
142
  ```
143
143
  Agent starts work
144
144
 
145
- ├── STEP 1: query session.status
145
+ ├── STEP 1: cleo session status
146
146
  │ ├── Active session exists
147
- │ │ └── query session.handoff.show → resume prior context, then STEP 2
147
+ │ │ └── cleo briefing → resume prior context, then STEP 2
148
148
  │ └── No active session
149
- │ └── mutate session.start {scope: "task:TXXX" | "epic:TXXX"}
149
+ │ └── cleo session start --scope task:TXXX (or epic:TXXX)
150
150
 
151
- ├── STEP 2: query admin.dash → project overview, active epic, blockers
151
+ ├── STEP 2: cleo dash → project overview, active epic, blockers
152
152
 
153
- ├── STEP 3: query tasks.current → is a task already in progress?
153
+ ├── STEP 3: cleo current → is a task already in progress?
154
154
  │ ├── Yes → continue that task (skip STEP 4)
155
155
  │ └── No → STEP 4
156
156
 
157
- └── STEP 4: query tasks.next → what to work on next
158
- └── query tasks.show {taskId} → full task requirements
157
+ └── STEP 4: cleo next → what to work on next
158
+ └── cleo show {taskId} → full task requirements
159
159
  ```
160
160
 
161
161
  **Anti-pattern blocked**: Never skip `session.status`. Resuming without `handoff.show` loses prior context and causes duplicate work.
@@ -168,28 +168,28 @@ Agent starts work
168
168
  I need to find what to work on
169
169
 
170
170
  ├── What should I do next (auto-selected)?
171
- │ └── query tasks.next [tier 0]
172
- │ └── query tasks.show {taskId} [tier 0] → full details
171
+ │ └── cleo next [tier 0]
172
+ │ └── cleo show {taskId} [tier 0] → full details
173
173
 
174
174
  ├── I know keywords — search for a specific task
175
- │ └── query tasks.find {query: "..."} [tier 0]
176
- │ ├── Found one match → query tasks.show {taskId}
175
+ │ └── cleo find "..." [tier 0]
176
+ │ ├── Found one match → cleo show {taskId}
177
177
  │ └── Need to browse children of a known parent
178
- │ └── query tasks.list {parentId: "TXXX"} [tier 1] ← ONLY with parentId filter
179
- │ ANTI-PATTERN: tasks.list with no parentId = full dump, never do this
178
+ │ └── cleo list --parent TXXX [tier 1] ← ONLY with parent filter
179
+ │ ANTI-PATTERN: cleo list with no parent = full dump, never do this
180
180
 
181
181
  ├── I need a prioritized planning view (upcoming tasks, blockers, dependencies)
182
- │ └── query tasks.plan [tier 0]
182
+ │ └── cleo plan [tier 0]
183
183
 
184
184
  ├── I need the full task hierarchy under a parent
185
- │ └── (discover via tasks.find first, then)
186
- │ └── query tasks.tree {taskId} [tier 1] → subtask hierarchy
185
+ │ └── (discover via cleo find first, then)
186
+ │ └── cleo tree {taskId} [tier 1] → subtask hierarchy
187
187
 
188
188
  ├── I need to see what's blocking a task
189
- │ └── query tasks.blockers {taskId} [tier 1]
189
+ │ └── cleo blockers {taskId} [tier 1]
190
190
 
191
191
  └── I need leverage-sorted discovery (highest-impact tasks first)
192
- └── query tasks.analyze [tier 1]
192
+ └── cleo analyze [tier 1]
193
193
  ```
194
194
 
195
195
  ---
@@ -200,20 +200,20 @@ I need to find what to work on
200
200
  I need to save or recall information across sessions
201
201
 
202
202
  ├── Save an observation right now (free-form)
203
- │ └── mutate memory.observe {text, title?} [tier 0]
203
+ │ └── cleo observe "text" --title "title" [tier 0]
204
204
 
205
205
  ├── Search for something I or a prior agent observed
206
- │ └── query memory.find {query: "..."} [tier 0] ← ALWAYS start here (cheap)
207
- │ └── Found interesting IDs → query memory.timeline {anchorId} [tier 1]
208
- │ └── Need full content → query memory.fetch {ids: [...]} [tier 1]
206
+ │ └── cleo memory find "..." [tier 0] ← ALWAYS start here (cheap)
207
+ │ └── Found interesting IDs → cleo memory timeline {anchorId} [tier 1]
208
+ │ └── Need full content → cleo memory fetch {ids} [tier 1]
209
209
  │ 3-LAYER PATTERN: find → timeline → fetch (never skip to fetch directly)
210
210
 
211
211
  ├── Save a structured decision (with rationale, alternatives, taskId)
212
- │ └── mutate memory.decision.store {decision, rationale, taskId, alternatives?} [tier 1]
213
- │ └── Recall: query memory.decision.find {query, taskId?} [tier 1]
212
+ │ └── cleo memory decision store "decision" --rationale "..." --task TXXX [tier 1]
213
+ │ └── Recall: cleo memory decision find "query" [tier 1]
214
214
 
215
215
  └── Associate a memory entry with a task (research linking protocol)
216
- └── mutate memory.link {memoryId, taskId} [tier 1]
216
+ └── cleo memory link {memoryId} {taskId} [tier 1]
217
217
  ```
218
218
 
219
219
  **Anti-pattern blocked**: Never call `memory.fetch` without first calling `memory.find`. Fetching without filtering returns all entries (expensive).
@@ -226,16 +226,16 @@ I need to save or recall information across sessions
226
226
  I need to coordinate agent work (orchestrator role)
227
227
 
228
228
  ├── I am the orchestrator — start coordinating an epic
229
- │ └── mutate orchestrate.start {epicId} [tier 1]
230
- │ └── query orchestrate.status [tier 1] → current orchestration state
229
+ │ └── cleo orchestrator start --epic {epicId} [tier 1]
230
+ │ └── cleo orchestrator status [tier 1] → current orchestration state
231
231
 
232
232
  ├── Spawn a subagent for a task
233
- │ └── (1) mutate orchestrate.validate {taskId} [tier 1] → pre-spawn gate check
234
- │ (2) mutate orchestrate.spawn {taskId, skillIds?} [tier 1] → spawn prep
233
+ │ └── (1) cleo orchestrator validate {taskId} [tier 1] → pre-spawn gate check
234
+ │ (2) cleo orchestrator spawn {taskId} [tier 1] → spawn prep
235
235
 
236
236
  └── I am a subagent — complete my work and report
237
- └── mutate pipeline.manifest.append {entry} [tier 1] ← MANDATORY per BASE protocol
238
- mutate tasks.complete {taskId} [tier 0]
237
+ └── cleo manifest append {entry} [tier 1] ← MANDATORY per BASE protocol
238
+ cleo complete {taskId} [tier 0]
239
239
  ```
240
240
 
241
241
  **Subagent BASE protocol**: Every subagent MUST append one entry to MANIFEST.jsonl via `pipeline.manifest.append` BEFORE calling `tasks.complete`. Omitting this is a protocol violation (exit code 62).
@@ -248,24 +248,24 @@ I need to coordinate agent work (orchestrator role)
248
248
  I need to manage session lifecycle or read session state
249
249
 
250
250
  ├── Check whether a session is active
251
- │ └── query session.status [tier 0] ← FIRST, always
251
+ │ └── cleo session status [tier 0] ← FIRST, always
252
252
 
253
253
  ├── Resume prior context after a restart
254
- │ └── query session.handoff.show [tier 0]
254
+ │ └── cleo briefing [tier 0]
255
255
 
256
256
  ├── Get a composite cold-start briefing (combines status + handoff)
257
- │ └── query session.briefing.show [tier 0]
257
+ │ └── cleo briefing [tier 0]
258
258
 
259
259
  ├── Start a new session
260
- │ └── mutate session.start {scope: "task:TXXX" | "epic:TXXX"} [tier 0]
260
+ │ └── cleo session start --scope task:TXXX (or epic:TXXX) [tier 0]
261
261
  │ RULE: scope is required — no unscoped sessions
262
262
 
263
263
  ├── End the current session (triggers debrief + handoff generation)
264
- │ └── mutate session.end [tier 0]
264
+ │ └── cleo session end [tier 0]
265
265
 
266
266
  └── Browse past sessions
267
- └── query session.find {query: "..."} [tier 1] ← NOT session.list unfiltered
268
- └── Full session record: query session.show {sessionId} [tier 1]
267
+ └── cleo session find "..." [tier 1] ← NOT session list unfiltered
268
+ └── Full session record: cleo session show {sessionId} [tier 1]
269
269
  ```
270
270
 
271
271
  ---
@@ -276,11 +276,11 @@ I need to manage session lifecycle or read session state
276
276
  I need to know what skills or providers are available
277
277
 
278
278
  ├── List all installed skills (cold-start safe)
279
- │ └── query tools.skill.list [tier 0]
280
- │ └── Detail on a specific skill: query tools.skill.show {skillId} [tier 1]
279
+ │ └── cleo skill list [tier 0]
280
+ │ └── Detail on a specific skill: cleo skill show {skillId} [tier 1]
281
281
 
282
282
  └── Detect active provider
283
- └── query tools.provider.detect [tier 0]
283
+ └── cleo provider detect [tier 0]
284
284
  ```
285
285
 
286
286
  ---
@@ -291,21 +291,21 @@ I need to know what skills or providers are available
291
291
  I need system or configuration info
292
292
 
293
293
  ├── What is the overall project state?
294
- │ └── query admin.dash [tier 0] ← mandatory efficiency sequence step 2
294
+ │ └── cleo dash [tier 0] ← mandatory efficiency sequence step 2
295
295
 
296
296
  ├── What operations are available at this tier?
297
- │ └── query admin.help [tier 0] → tier 0 + tier 1 ops
298
- │ └── query admin.help {tier:2} → reveals tier-2 ops + escalation hints
297
+ │ └── cleo help [tier 0] → tier 0 + tier 1 ops
298
+ │ └── cleo help --tier 2 → reveals tier-2 ops + escalation hints
299
299
 
300
300
  └── Inspect configuration
301
- └── query admin.config.show [tier 1]
301
+ └── cleo config show [tier 1]
302
302
  ```
303
303
 
304
304
  ---
305
305
 
306
306
  ## CLI Reference (Primary)
307
307
 
308
- Use `ct` (alias for `cleo`) as the primary interface. MCP (`query` / `mutate`) is the fallback when CLI is unavailable.
308
+ Use `ct` (alias for `cleo`) as the interface. CLI is the only dispatch method.
309
309
 
310
310
  ```bash
311
311
  ct find "query" # Search (99% less context than list)
@@ -350,7 +350,7 @@ ct sticky show SN-001 # Show sticky details
350
350
  |-------------|----------------|-----|
351
351
  | `research.list` | `pipeline.manifest.list` | research domain is defunct |
352
352
  | `research.show` | `pipeline.manifest.show` | research domain is defunct |
353
- | `research.link` / `cleo research link` | `memory.link` (MCP) | research domain is defunct |
353
+ | `research.link` | `cleo memory link` | research domain is defunct |
354
354
  | `system.dash` | `admin.dash` | system domain is defunct |
355
355
  | `system.context` | `admin.context` | system domain is defunct |
356
356
  | `skills.list` | `tools.skill.list` | skills domain is defunct |
@@ -414,15 +414,6 @@ ct complete <id>
414
414
  ct session end
415
415
  ```
416
416
 
417
- ### MCP Session Operations (Fallback)
418
-
419
- ```javascript
420
- query({ domain: "session", operation: "status" })
421
- query({ domain: "session", operation: "handoff.show" })
422
- mutate({ domain: "session", operation: "start", params: { scope: "epic:T001" }})
423
- mutate({ domain: "session", operation: "end", params: { note: "Progress" }})
424
- ```
425
-
426
417
  ---
427
418
 
428
419
  ## Error Handling
@@ -436,9 +427,9 @@ After EVERY command:
436
427
 
437
428
  | Exit | Code | Fix |
438
429
  |:----:|------|-----|
439
- | 4 | `E_NOT_FOUND` | Use `ct find` to verify |
430
+ | 4 | `E_NOT_FOUND` | Use `cleo find` to verify |
440
431
  | 6 | `E_VALIDATION_*` | Check field lengths, escape `$` as `\$` |
441
- | 10 | `E_PARENT_NOT_FOUND` | Verify with `ct find <parent-id>` |
432
+ | 10 | `E_PARENT_NOT_FOUND` | Verify with `cleo find <parent-id>` |
442
433
  | 11 | `E_DEPTH_EXCEEDED` | Max depth 3 (epic->task->subtask) |
443
434
  | 12 | `E_SIBLING_LIMIT` | Max 7 siblings per parent |
444
435
  | 62 | `MANIFEST_ENTRY_MISSING` | Subagent must call `pipeline.manifest.append` before `tasks.complete` |
@@ -15,19 +15,6 @@
15
15
 
16
16
  ## Spawn Pipeline
17
17
 
18
- ### MCP Spawn Operations
19
-
20
- ```
21
- # Analyze dependency waves
22
- query({ domain: "orchestrate", operation: "analyze", params: { epicId: "T001" }})
23
-
24
- # Get ready tasks
25
- query({ domain: "orchestrate", operation: "ready", params: { epicId: "T001" }})
26
-
27
- # Get next task suggestion
28
- query({ domain: "orchestrate", operation: "next", params: { epicId: "T001" }})
29
- ```
30
-
31
18
  ### CLI Spawn Operations
32
19
 
33
20
  ```bash
@@ -11,15 +11,6 @@ ct session start --scope epic:T001 --auto-focus --name "Name"
11
11
  # ^^^^^^^^^^^^^^^^^ REQUIRED ^^^^^^^^^^^^^ REQUIRED
12
12
  ```
13
13
 
14
- ## MCP Session Operations
15
-
16
- ```
17
- mutate({ domain: "session", operation: "start",
18
- params: { scope: "epic:T001", name: "Work", autoStart: true }})
19
- query({ domain: "session", operation: "status" })
20
- mutate({ domain: "session", operation: "end", params: { note: "Progress" }})
21
- ```
22
-
23
14
  ## CLI Session Protocol
24
15
 
25
16
  ### START (ALWAYS first)
@@ -121,9 +112,9 @@ Skills are **context injections, NOT agents**. The orchestrator selects and inje
121
112
 
122
113
  ### Discovery
123
114
 
124
- ```
125
- query({ domain: "tools", operation: "skill.list" })
126
- query({ domain: "tools", operation: "skill.show", params: { name: "ct-orchestrator" }})
115
+ ```bash
116
+ cleo skill list
117
+ cleo skill show ct-orchestrator
127
118
  ```
128
119
 
129
120
  ### Key Skills
@@ -36,31 +36,31 @@ Structured codebase analysis for autonomous agent understanding.
36
36
 
37
37
  ### Tier 0: Quick Analysis
38
38
 
39
- ```
40
- query admin map
39
+ ```bash
40
+ cleo map
41
41
  ```
42
42
 
43
43
  Returns structured `CodebaseMapResult` with stack, architecture, structure, conventions, testing, integrations, and concerns.
44
44
 
45
45
  ### Tier 1: Store to Brain
46
46
 
47
- ```
48
- mutate admin map
47
+ ```bash
48
+ cleo map --store
49
49
  ```
50
50
 
51
51
  Same analysis, but stores patterns, learnings, and observations to brain.db. Tagged with `source: 'codebase-map'` for filtering.
52
52
 
53
53
  ### Tier 2: Focused Analysis
54
54
 
55
- ```
56
- query admin map {focus: "concerns"}
55
+ ```bash
56
+ cleo map --focus concerns
57
57
  ```
58
58
 
59
59
  Focus areas: `stack`, `architecture`, `structure`, `conventions`, `testing`, `integrations`, `concerns`.
60
60
 
61
61
  ## When to Use
62
62
 
63
- - **New project onboarding**: Run `mutate admin map` to build brain.db context
63
+ - **New project onboarding**: Run `cleo map --store` to build brain.db context
64
64
  - **Brownfield init**: `cleo init --map-codebase` runs analysis during initialization
65
65
  - **Before epic planning**: Understand project structure before decomposing work
66
66
  - **Tech debt assessment**: `query admin map {focus: "concerns"}` for TODOs and large files
@@ -39,14 +39,7 @@ Grading requires audit data. Sessions must be started with the `--grade` flag to
39
39
  ct session start --scope epic:T001 --name "Feature work" --grade
40
40
 
41
41
  # The --grade flag enables detailed audit logging
42
- # All MCP and CLI operations are recorded for later analysis
43
- ```
44
-
45
- ### MCP
46
-
47
- ```
48
- mutate({ domain: "session", operation: "start",
49
- params: { scope: "epic:T001", name: "Feature work", grade: true }})
42
+ # All CLI operations are recorded for later analysis
50
43
  ```
51
44
 
52
45
  ## Running Scenarios
@@ -63,10 +56,10 @@ Tests whether task creation follows protocol: descriptions provided, parent exis
63
56
  Tests whether the agent handles errors correctly: follows up `E_NOT_FOUND` with recovery lookups (`tasks.find`), avoids duplicate creates after failures.
64
57
 
65
58
  ### 4. Full Lifecycle
66
- Tests session discipline end-to-end: session listed before task ops, session properly ended, MCP-first usage patterns.
59
+ Tests session discipline end-to-end: session listed before task ops, session properly ended, CLI usage patterns.
67
60
 
68
61
  ### 5. Multi-Domain Analysis
69
- Tests progressive disclosure: use of `admin.help` or skill lookups, preference for `query` (MCP) over CLI for programmatic access.
62
+ Tests progressive disclosure: use of `admin.help` or skill lookups, use of progressive disclosure for programmatic access.
70
63
 
71
64
  ## Evaluating Results
72
65
 
@@ -80,22 +73,6 @@ ct grade <sessionId>
80
73
  ct grade --list
81
74
  ```
82
75
 
83
- ### MCP
84
-
85
- ```
86
- # Grade a session
87
- # Canonical registry surface (preferred)
88
- query({ domain: "check", operation: "grade",
89
- params: { sessionId: "abc-123" }})
90
-
91
- # List past grades
92
- query({ domain: "check", operation: "grade.list" })
93
-
94
- # Use canonical surface (check domain)
95
- query({ domain: "check", operation: "grade",
96
- params: { sessionId: "abc-123" }})
97
- ```
98
-
99
76
  ## Understanding the 5 Dimensions
100
77
 
101
78
  Each dimension scores 0-20 points, totaling 0-100.
@@ -145,9 +122,9 @@ Starts at 20 and deducts for violations:
145
122
  | Points | Criteria |
146
123
  |--------|----------|
147
124
  | 10 | `admin.help` or skill lookup calls made |
148
- | 10 | `query` (MCP gateway) used for programmatic access |
125
+ | 10 | Progressive disclosure used for programmatic access |
149
126
 
150
- **What it measures**: Does the agent use progressive disclosure (help/skills) and prefer MCP over CLI?
127
+ **What it measures**: Does the agent use progressive disclosure (help/skills) for efficient protocol access?
151
128
 
152
129
  ## Interpreting Scores
153
130
 
@@ -182,7 +159,7 @@ Flags are actionable diagnostic messages. Each flag identifies a specific behavi
182
159
  - `Subtasks created without parent existence check` -- Verify parent exists first
183
160
  - `E_NOT_FOUND not followed by recovery lookup` -- Follow errors with `tasks.find`
184
161
  - `No admin.help or skill lookup calls` -- Load `ct-cleo` for protocol guidance
185
- - `No MCP query calls` -- Prefer `query` over CLI
162
+ - `No progressive disclosure calls` -- Use `admin.help` or skill lookups
186
163
 
187
164
  ## Common Anti-patterns
188
165
 
@@ -195,7 +172,7 @@ Flags are actionable diagnostic messages. Each flag identifies a specific behavi
195
172
  | Ignoring `E_NOT_FOUND` errors | -5 each S4 | Follow up with `tasks.find` or `tasks.exists` |
196
173
  | Creating duplicate tasks | -5 S4 | Check for existing tasks before creating new ones |
197
174
  | Never using `admin.help` | -10 S5 | Use progressive disclosure for protocol guidance |
198
- | CLI-only usage (no MCP) | -10 S5 | Prefer `query`/`mutate` for programmatic access |
175
+ | No progressive disclosure calls | -10 S5 | Use `admin.help` or skill lookups for protocol guidance |
199
176
 
200
177
  ## Grade Result Schema
201
178
 
@@ -211,20 +188,9 @@ Grade results are stored in `.cleo/metrics/GRADES.jsonl` as append-only JSONL. E
211
188
  - `entryCount` (number) -- Audit entries analyzed
212
189
  - `evaluator` (`auto` | `manual`) -- How the grade was computed
213
190
 
214
- ## MCP Operations
215
-
216
- | Gateway | Domain | Operation | Description |
217
- |---------|--------|-----------|-------------|
218
- | `query` | `check` | `grade` | Canonical grade read (`params: { sessionId }`) |
219
- | `query` | `check` | `grade.list` | Canonical grade history read |
220
- | `query` | `check` | `grade` | Canonical grade read (preferred) |
221
- | `query` | `check` | `grade.list` | Canonical grade history read (preferred) |
222
- | `query` | `admin` | `token` | Canonical token telemetry read (`action=summary|list|show`) |
223
-
224
-
225
- ## API Update Notes
191
+ ## CLI Grade Operations
226
192
 
227
- - Prefer the canonical registry surface from `docs/specs/CLEO-API.md`: `check.grade`, `check.grade.list`, and `admin.token` with an `action` param.
228
- - Use `check.grade` and `check.grade.list` as the canonical surface; legacy handlers may still appear in existing automation.
229
- - Browser clients should target `POST /api/query` and `POST /api/mutate`; LAFS metadata is carried in `X-Cleo-*` headers by default.
230
- - Treat persisted token transport values `api` and `http` as equivalent during the compatibility window described in `docs/specs/CLEO-WEB-API.md`.
193
+ | Command | Description |
194
+ |---------|-------------|
195
+ | `ct grade <sessionId>` | Grade a specific session |
196
+ | `ct grade --list` | List past grade results |