@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.
- package/package.json +1 -1
- package/skills/_shared/manifest-operations.md +1 -2
- package/skills/_shared/skill-chaining-patterns.md +3 -7
- package/skills/_shared/subagent-protocol-base.cant +113 -0
- package/skills/ct-cleo/SKILL.md +56 -65
- package/skills/ct-cleo/references/orchestrator-constraints.md +0 -13
- package/skills/ct-cleo/references/session-protocol.md +3 -12
- package/skills/ct-codebase-mapper/SKILL.md +7 -7
- package/skills/ct-grade/SKILL.md +12 -46
- package/skills/ct-grade/agents/scenario-runner.md +11 -21
- package/skills/ct-grade/references/ab-test-methodology.md +14 -14
- package/skills/ct-grade/references/domains.md +72 -74
- package/skills/ct-grade/references/grade-spec.md +8 -11
- package/skills/ct-grade/references/scenario-playbook.md +77 -106
- package/skills/ct-grade-v2-1/SKILL.md +30 -32
- package/skills/ct-grade-v2-1/agents/scenario-runner.md +14 -34
- package/skills/ct-grade-v2-1/grade-viewer/eval-report.md +4 -1
- package/skills/ct-grade-v2-1/references/ab-testing.md +28 -88
- package/skills/ct-grade-v2-1/references/grade-spec-v2.md +5 -5
- package/skills/ct-grade-v2-1/references/playbook-v2.md +115 -183
- package/skills/ct-grade-v2-1/references/token-tracking.md +7 -9
- package/skills/ct-memory/SKILL.md +16 -35
- package/skills/ct-orchestrator/SKILL.md +58 -68
- package/skills/ct-skill-validator/SKILL.md +1 -1
- package/skills/ct-skill-validator/agents/ecosystem-checker.md +2 -2
- package/skills/ct-skill-validator/references/cleo-ecosystem-rules.md +19 -20
- package/skills/manifest.json +1 -1
- package/skills/signaldock-connect/SKILL.md +132 -0
- package/skills/signaldock-connect/assets/agent-card.json +48 -0
- package/skills/signaldock-connect/references/api-endpoints.md +131 -0
- package/skills.json +1 -1
package/package.json
CHANGED
|
@@ -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
|
|
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
|
-
#
|
|
43
|
+
# Generate fully-resolved spawn prompt
|
|
44
44
|
cleo orchestrator spawn T1234 --json
|
|
45
45
|
|
|
46
|
-
#
|
|
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
|
-
- [ ]
|
|
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"
|
package/skills/ct-cleo/SKILL.md
CHANGED
|
@@ -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
|
|
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 **
|
|
14
|
+
CLI (`cleo` / `ct`) is the **only** dispatch method. All operations use `cleo <command>` syntax.
|
|
15
15
|
|
|
16
|
-
### Tier-0 Read Operations
|
|
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
|
|
37
|
+
### Tier-1 Read Operations — After Session Init
|
|
38
38
|
|
|
39
39
|
| Domain | Operation | Description |
|
|
40
40
|
|--------|-----------|-------------|
|
|
41
|
-
| `tasks` | `list` | List direct children (
|
|
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
|
|
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
|
|
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:
|
|
145
|
+
├── STEP 1: cleo session status
|
|
146
146
|
│ ├── Active session exists
|
|
147
|
-
│ │ └──
|
|
147
|
+
│ │ └── cleo briefing → resume prior context, then STEP 2
|
|
148
148
|
│ └── No active session
|
|
149
|
-
│ └──
|
|
149
|
+
│ └── cleo session start --scope task:TXXX (or epic:TXXX)
|
|
150
150
|
│
|
|
151
|
-
├── STEP 2:
|
|
151
|
+
├── STEP 2: cleo dash → project overview, active epic, blockers
|
|
152
152
|
│
|
|
153
|
-
├── STEP 3:
|
|
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:
|
|
158
|
-
└──
|
|
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
|
-
│ └──
|
|
172
|
-
│ └──
|
|
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
|
-
│ └──
|
|
176
|
-
│ ├── Found one match →
|
|
175
|
+
│ └── cleo find "..." [tier 0]
|
|
176
|
+
│ ├── Found one match → cleo show {taskId}
|
|
177
177
|
│ └── Need to browse children of a known parent
|
|
178
|
-
│ └──
|
|
179
|
-
│ ANTI-PATTERN:
|
|
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
|
-
│ └──
|
|
182
|
+
│ └── cleo plan [tier 0]
|
|
183
183
|
│
|
|
184
184
|
├── I need the full task hierarchy under a parent
|
|
185
|
-
│ └── (discover via
|
|
186
|
-
│ └──
|
|
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
|
-
│ └──
|
|
189
|
+
│ └── cleo blockers {taskId} [tier 1]
|
|
190
190
|
│
|
|
191
191
|
└── I need leverage-sorted discovery (highest-impact tasks first)
|
|
192
|
-
└──
|
|
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
|
-
│ └──
|
|
203
|
+
│ └── cleo observe "text" --title "title" [tier 0]
|
|
204
204
|
│
|
|
205
205
|
├── Search for something I or a prior agent observed
|
|
206
|
-
│ └──
|
|
207
|
-
│ └── Found interesting IDs →
|
|
208
|
-
│ └── Need full content →
|
|
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
|
-
│ └──
|
|
213
|
-
│ └── Recall:
|
|
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
|
-
└──
|
|
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
|
-
│ └──
|
|
230
|
-
│ └──
|
|
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)
|
|
234
|
-
│ (2)
|
|
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
|
-
└──
|
|
238
|
-
|
|
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
|
-
│ └──
|
|
251
|
+
│ └── cleo session status [tier 0] ← FIRST, always
|
|
252
252
|
│
|
|
253
253
|
├── Resume prior context after a restart
|
|
254
|
-
│ └──
|
|
254
|
+
│ └── cleo briefing [tier 0]
|
|
255
255
|
│
|
|
256
256
|
├── Get a composite cold-start briefing (combines status + handoff)
|
|
257
|
-
│ └──
|
|
257
|
+
│ └── cleo briefing [tier 0]
|
|
258
258
|
│
|
|
259
259
|
├── Start a new session
|
|
260
|
-
│ └──
|
|
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
|
-
│ └──
|
|
264
|
+
│ └── cleo session end [tier 0]
|
|
265
265
|
│
|
|
266
266
|
└── Browse past sessions
|
|
267
|
-
└──
|
|
268
|
-
└── Full session record:
|
|
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
|
-
│ └──
|
|
280
|
-
│ └── Detail on a specific skill:
|
|
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
|
-
└──
|
|
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
|
-
│ └──
|
|
294
|
+
│ └── cleo dash [tier 0] ← mandatory efficiency sequence step 2
|
|
295
295
|
│
|
|
296
296
|
├── What operations are available at this tier?
|
|
297
|
-
│ └──
|
|
298
|
-
│ └──
|
|
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
|
-
└──
|
|
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
|
|
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`
|
|
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 `
|
|
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 `
|
|
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
|
-
|
|
126
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 `
|
|
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
|
package/skills/ct-grade/SKILL.md
CHANGED
|
@@ -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
|
|
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,
|
|
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,
|
|
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 |
|
|
125
|
+
| 10 | Progressive disclosure used for programmatic access |
|
|
149
126
|
|
|
150
|
-
**What it measures**: Does the agent use progressive disclosure (help/skills)
|
|
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
|
|
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
|
-
|
|
|
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
|
-
##
|
|
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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
193
|
+
| Command | Description |
|
|
194
|
+
|---------|-------------|
|
|
195
|
+
| `ct grade <sessionId>` | Grade a specific session |
|
|
196
|
+
| `ct grade --list` | List past grade results |
|