@cleocode/skills 2026.9.23 → 2026.9.25
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/ct-cleo/SKILL.md +6 -6
- package/skills/ct-codebase-mapper/SKILL.md +18 -3
- package/skills/ct-dev-workflow/SKILL.md +17 -3
- package/skills/ct-lead/SKILL.md +10 -2
- package/skills/ct-orchestrator/SKILL.md +23 -7
- package/skills/ct-orchestrator/references/SUBAGENT-PROTOCOL-BLOCK.md +51 -25
- package/skills/ct-orchestrator/references/orchestrator-compliance.md +11 -2
- package/skills/ct-task-executor/SKILL.md +43 -6
- package/skills/manifest.json +6 -6
package/package.json
CHANGED
package/skills/ct-cleo/SKILL.md
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
name: ct-cleo
|
|
3
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
|
metadata:
|
|
5
|
-
version: 2.
|
|
5
|
+
version: 2.24.1
|
|
6
6
|
tier: core
|
|
7
7
|
install: harness
|
|
8
8
|
covers:
|
|
9
9
|
- packages/cleo/src/cli/commands/session.ts
|
|
10
10
|
- packages/cleo/src/cli/commands/focus.ts
|
|
11
11
|
- packages/cleo/src/cli/commands/sticky.ts
|
|
12
|
-
lastReviewed: 2026-09-
|
|
12
|
+
lastReviewed: 2026-09-29
|
|
13
13
|
stability: stable
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -48,8 +48,8 @@ send routine status chatter: report only when done or when a decision is needed.
|
|
|
48
48
|
|
|
49
49
|
## Project identity and moving between devices
|
|
50
50
|
|
|
51
|
-
A project is identified by its portable `project_id` in `.cleo/project
|
|
52
|
-
(tracked, write-once; ADR-
|
|
51
|
+
A project is identified by its portable `project_id` in `.cleo/project.json`
|
|
52
|
+
(tracked, id write-once, plus its name; ADR-096; legacy mirror `.cleo/project-id`). A path is only a per-device hint, so a moved or
|
|
53
53
|
restored checkout keeps its identity. After a new device, restore or migration,
|
|
54
54
|
or when a known repo reports "Not inside a CLEO project", registry paths are
|
|
55
55
|
unreachable, or nexus hits `ENOENT` on an old path, run and report:
|
|
@@ -57,7 +57,7 @@ unreachable, or nexus hits `ENOENT` on an old path, run and report:
|
|
|
57
57
|
1. `cleo doctor projects` — machine-wide: moved, missing, split and temp rows with
|
|
58
58
|
remedies. Dry-run by default; `--apply` rebinds only on nonce proof and writes a
|
|
59
59
|
receipt; `--rollback <id>` restores.
|
|
60
|
-
2. `cleo doctor project-identity` — missing, conflicting or uncommitted id.
|
|
60
|
+
2. `cleo doctor project-identity` — legacy, missing, conflicting or uncommitted id, name drift; `--resolve --dry-run` then `--resolve` is the only migration.
|
|
61
61
|
3. `cleo doctor --all-projects` — unreachable registered projects.
|
|
62
62
|
4. `cleo nexus projects clean --orphans --dry-run` — NEVER without `--dry-run`;
|
|
63
63
|
it deletes rows for projects that merely moved.
|
|
@@ -213,7 +213,7 @@ Dry-run creates no committed attestation; failed writes leave no committed recei
|
|
|
213
213
|
|
|
214
214
|
Use `cleo show <id> --full` to inspect task fields before editing them. Compact
|
|
215
215
|
records name every omitted field in `_withheld`, including empty or null values;
|
|
216
|
-
the size is UTF-8 content bytes for strings and serialized JSON bytes otherwise.
|
|
216
|
+
the size is UTF-8 content bytes for strings and serialized JSON bytes otherwise. A `list/*/field` key (`acRows/*/id`) names a field omitted from every element, summed.
|
|
217
217
|
Repeated projection retains earlier omissions. A record without `_withheld` is
|
|
218
218
|
complete at the record projection boundary; an envelope can separately report
|
|
219
219
|
omitted records or fields. Never overwrite a field because a compact read omitted it.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-codebase-mapper
|
|
3
|
-
version: 2.0
|
|
3
|
+
version: 2.1.0
|
|
4
4
|
description: Orient in an unfamiliar or large codebase with CLEO's code-intelligence graph (cleo nexus) and project map (cleo map). Use before planning or editing unfamiliar code, for brownfield onboarding, to find what a change would break, or to map a project's structure, communities and execution flows. Triggers on "map the codebase", "understand this project", "what calls X", "what would break", "brownfield analysis", "project structure".
|
|
5
5
|
protocol: null
|
|
6
6
|
dependencies: []
|
|
@@ -17,13 +17,13 @@ triggers:
|
|
|
17
17
|
- project structure
|
|
18
18
|
- blast radius
|
|
19
19
|
metadata:
|
|
20
|
-
version: 2.0
|
|
20
|
+
version: 2.1.0
|
|
21
21
|
tier: on-demand
|
|
22
22
|
install: harness
|
|
23
23
|
covers:
|
|
24
24
|
- packages/cleo/src/cli/commands/nexus.ts
|
|
25
25
|
- packages/cleo/src/cli/commands/map.ts
|
|
26
|
-
lastReviewed: 2026-09-
|
|
26
|
+
lastReviewed: 2026-09-29
|
|
27
27
|
stability: stable
|
|
28
28
|
---
|
|
29
29
|
|
|
@@ -83,6 +83,20 @@ caller, so an empty footprint alone never establishes that a change is safe.
|
|
|
83
83
|
When a symbol name is ambiguous, pass the qualified candidate the command
|
|
84
84
|
returns and confirm against the source.
|
|
85
85
|
|
|
86
|
+
## 5. Across projects: where each one lives, and its state
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
cleo nexus projects status # every project, per device: path, branch, dirty, ahead/behind
|
|
90
|
+
cleo nexus projects status --dirty --behind # filters: --missing --dirty --behind --ahead --stale --errored
|
|
91
|
+
cleo nexus projects status --device current # one machine (device id, hostname or current)
|
|
92
|
+
cleo nexus projects status --refresh # re-probe this device first (bounded; --fetch also fetches)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The output lists counts first, then one page (`--limit`, `--offset`). It reads
|
|
96
|
+
recorded probes. `ahead`/`behind` are as of `remote.fetchedAt`, and `stale`
|
|
97
|
+
flags an old or missing probe or fetch. Read `matched` and `hasMore` before
|
|
98
|
+
concluding "none".
|
|
99
|
+
|
|
86
100
|
## When to use
|
|
87
101
|
|
|
88
102
|
| Situation | Start with |
|
|
@@ -92,6 +106,7 @@ returns and confirm against the source.
|
|
|
92
106
|
| About to change a function or type | `cleo nexus impact <symbol>` |
|
|
93
107
|
| "Who calls this / what does this call?" | `cleo nexus context <symbol>` |
|
|
94
108
|
| Tech-debt review | `cleo map --focus concerns` |
|
|
109
|
+
| "Which machines hold this project, and is it pushed?" | `cleo nexus projects status` |
|
|
95
110
|
|
|
96
111
|
## `cleo map` output
|
|
97
112
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-dev-workflow
|
|
3
3
|
description: Development workflow orchestration for task-driven development with atomic commits, conventional commit messages, and systematic release processes. Enforces task traceability, branch discipline, smart test scope selection, and GitHub Actions integration. Use when committing code, creating releases, managing branches, or following contribution protocols. Triggers on commit operations, release preparation, or workflow compliance needs.
|
|
4
|
-
version: 3.1.
|
|
4
|
+
version: 3.1.4
|
|
5
5
|
protocol: contribution
|
|
6
6
|
dependencies: []
|
|
7
7
|
sharedResources:
|
|
@@ -14,12 +14,12 @@ compatibility:
|
|
|
14
14
|
- gemini-cli
|
|
15
15
|
license: MIT
|
|
16
16
|
metadata:
|
|
17
|
-
version: 3.1.
|
|
17
|
+
version: 3.1.4
|
|
18
18
|
tier: core
|
|
19
19
|
install: harness
|
|
20
20
|
covers:
|
|
21
21
|
- .github/workflows/release-prepare.yml
|
|
22
|
-
lastReviewed: 2026-09-
|
|
22
|
+
lastReviewed: 2026-09-29
|
|
23
23
|
stability: stable
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -276,6 +276,20 @@ git push origin HEAD
|
|
|
276
276
|
# - Uploads artifacts
|
|
277
277
|
```
|
|
278
278
|
|
|
279
|
+
**Release preflight (`release-prepare.yml`).** `cleo release open <version>`
|
|
280
|
+
checks main's HEAD SHA and dispatches with `skip-tests=true` when the `ci.yml`
|
|
281
|
+
push run for that SHA is green AND ran every Linux `Unit Tests` shard green (a
|
|
282
|
+
docs-only push that skipped the tests does not count), and
|
|
283
|
+
`skip-macos-tests=true` when the nightly macOS jobs for that SHA are green; the
|
|
284
|
+
SHA travels as `verified-sha`, and the workflow ignores the skips if it checks
|
|
285
|
+
out another commit or `verified-sha` is empty. Otherwise the 4
|
|
286
|
+
Linux and 4 macOS test shards run. The decision is in the run summary.
|
|
287
|
+
|
|
288
|
+
**Bump-PR merge.** Its `pull_request` runs stay `action_required` (no GitHub
|
|
289
|
+
App), so the orchestrator admin-merges once the dispatched `CI` run on the PR
|
|
290
|
+
head SHA is green: `gh pr merge <n> --admin --merge` — see
|
|
291
|
+
`docs/release/merge-queue-runbook.md`.
|
|
292
|
+
|
|
279
293
|
---
|
|
280
294
|
|
|
281
295
|
## Quick Decision Matrix
|
package/skills/ct-lead/SKILL.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
name: ct-lead
|
|
3
3
|
description: "Phase Lead orchestration playbook for spawning and supervising a parallel worker swarm in one wave. Use when spawned by ct-orchestrator with role=orchestrator to fan out N leaf workers via delegate_task, drain the epic-{TID}.wave-{n} conduit topic plus pipeline_manifest, await rollupWaveStatus convergence, and return ONE rolled-up contract string to the parent Orchestrator. Triggers: 'phase lead', 'wave lead', 'supervise wave', 'fan out workers', 'aggregate worker results', 'rollup wave', any task with role=orchestrator that is itself a child of another orchestrator. Implements ADR-070 hierarchical orchestration."
|
|
4
4
|
metadata:
|
|
5
|
-
version: 1.0.
|
|
5
|
+
version: 1.0.7
|
|
6
6
|
tier: core
|
|
7
7
|
install: harness
|
|
8
8
|
covers:
|
|
9
9
|
- packages/core/src/orchestration/lead-rollup.ts
|
|
10
10
|
- packages/core/src/orchestration/waves.ts
|
|
11
|
-
lastReviewed: 2026-09-
|
|
11
|
+
lastReviewed: 2026-09-29
|
|
12
12
|
stability: stable
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -126,6 +126,14 @@ cleo orchestrate roll-up "${EPIC}" --wave "${WAVE}" --json \
|
|
|
126
126
|
>
|
|
127
127
|
> `orchestrate ready`, `plan` and `parallel start --wave <n>` never re-run
|
|
128
128
|
> finished tasks.
|
|
129
|
+
>
|
|
130
|
+
> **Order within a wave (T12692).** Members of a wave, the `orchestrate
|
|
131
|
+
> ready` list and the focus ready wave are in the SAME order as `cleo next`
|
|
132
|
+
> (D11161): priority band, then attested severity (unset is unknown and never
|
|
133
|
+
> outranks an attested P1 of the same band), then a bounded tiebreak (deps,
|
|
134
|
+
> phase, leverage, age), then `createdAt`, then id. Spawn in that order when
|
|
135
|
+
> the wave is wider than `maxConcurrent`. Only the order moves; the wave
|
|
136
|
+
> number is still structural depth.
|
|
129
137
|
|
|
130
138
|
`rollupWaveStatus` (T9082, `packages/core/src/orchestration/lead-rollup.ts`)
|
|
131
139
|
returns `{ wave, total, complete, partial, blocked, failed, workers: [...] }`.
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
name: ct-orchestrator
|
|
3
3
|
description: "Pipeline-aware orchestration skill for managing complex workflows through subagent delegation. Use when the user asks to \"orchestrate\", \"orchestrator mode\", \"run as orchestrator\", \"delegate to subagents\", \"coordinate agents\", \"spawn subagents\", \"multi-agent workflow\", \"context-protected workflow\", \"agent farm\", \"HITL orchestration\", \"pipeline management\", or needs to manage complex workflows by delegating work to subagents while protecting the main context window. Enforces ORC-001 through ORC-009 constraints. Provider-neutral — works with any AI agent runtime."
|
|
4
4
|
metadata:
|
|
5
|
-
version: 4.0.
|
|
5
|
+
version: 4.0.7
|
|
6
6
|
tier: core
|
|
7
7
|
install: harness
|
|
8
8
|
covers:
|
|
9
9
|
- packages/cleo/src/cli/commands/orchestrate.ts
|
|
10
10
|
- packages/core/src/orchestration/spawn-prompt.ts
|
|
11
|
-
lastReviewed: 2026-09-
|
|
11
|
+
lastReviewed: 2026-09-29
|
|
12
12
|
stability: stable
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -160,16 +160,32 @@ Agent({
|
|
|
160
160
|
})
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
+
**Task claims (T12502)**: spawn gives the task's claim lease to the worker's own
|
|
164
|
+
session and records your session as its spawner (`spawnedBySessionId`, written
|
|
165
|
+
only by the spawn — a self-declared `CLEO_PARENT_SESSION_ID` does not count), so
|
|
166
|
+
the lease moves between you and your worker without an override. A task another session holds refuses the
|
|
167
|
+
spawn with `E_TASK_CLAIMED`; a failed spawn hands the lease back to you. The
|
|
168
|
+
prompt tells the worker to begin every Bash call with
|
|
169
|
+
`cd <worktree> && export CLEO_SESSION_ID=… CLEO_AGENT_ID=… CLEO_AGENT_ROLE=… || exit 1`,
|
|
170
|
+
since harness shells keep neither cwd nor env between calls (the git shim reads
|
|
171
|
+
`CLEO_AGENT_ROLE`). Do not strip that line.
|
|
172
|
+
|
|
163
173
|
**Other harnesses**: Pass the resolved prompt to whatever "give this prompt to an agent" mechanism the runtime provides. Results flow back through pipeline_manifest (via `cleo manifest append`) — the universal handoff medium.
|
|
164
174
|
|
|
165
175
|
### Valid Return Messages
|
|
166
176
|
|
|
167
|
-
|
|
177
|
+
Append exactly once and capture the id with `--field /data/entryId` (ADR-086: never pipe the receipt through `python3`/`jq`). A nonempty `ENTRY_ID` must then read back with `cleo manifest show "$ENTRY_ID"`. Never append again merely to verify. On append or readback failure, return `blocked` with `manifest:none`; do not claim an entry. Static prompt checks do not prove storage or provider workflow success. The manifest `--type` is the protocol's own type (`consensus`, `specification`, `architecture_decision`, ... — T12521).
|
|
178
|
+
|
|
179
|
+
After verification, subagents MUST return exactly this compressed block (T12521):
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
[Type] <complete|partial|blocked>. manifest:<entryId>
|
|
183
|
+
commits: <sha7,sha7|none>
|
|
184
|
+
gates: <gate>=<pass|fail|skip> ...
|
|
185
|
+
blocker: <≤12 words|none>
|
|
186
|
+
```
|
|
168
187
|
|
|
169
|
-
|
|
170
|
-
- `"[Type] complete. Manifest appended to pipeline_manifest."`
|
|
171
|
-
- `"[Type] partial. Manifest appended to pipeline_manifest."`
|
|
172
|
-
- `"[Type] blocked. Manifest appended to pipeline_manifest."`
|
|
188
|
+
blocker: none when complete; required when partial/blocked. `manifest:none` only for `partial`/`blocked`; fill every `<...>` placeholder (validators reject `<`/`>` in the entry id). Validators (`checkReturnMessageFormat`, `checkReturnFormat`, `validateReturnMessage`) still accept the legacy one-liner `"[Type] <complete|partial|blocked>. Manifest appended to pipeline_manifest."`.
|
|
173
189
|
|
|
174
190
|
> Detailed spawn workflow, manual protocol injection, skill dispatch matrix: `references/orchestrator-spawning.md`
|
|
175
191
|
|
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
# Subagent Protocol Block
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Include this block in EVERY subagent prompt spawned via Task tool. It matches the
|
|
4
|
+
spawn prompt's Return Format Contract and Manifest Protocol blocks (T12521).
|
|
4
5
|
|
|
5
6
|
## Standard Protocol Block
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
````
|
|
8
9
|
## SUBAGENT PROTOCOL (RFC 2119 - MANDATORY)
|
|
9
10
|
|
|
10
|
-
OUTPUT
|
|
11
|
-
1. MUST record findings
|
|
12
|
-
2. MUST append ONE entry
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
OUTPUT:
|
|
12
|
+
1. MUST record findings: `cleo docs add {{TASK_ID}} --content - --type <kind> --slug {{TOPIC_SLUG}}`. Never a raw file under `.cleo/agent-outputs/`.
|
|
13
|
+
2. MUST append ONE entry to SQLite `pipeline_manifest` (ADR-027/T1093) and read it back:
|
|
14
|
+
ENTRY_ID=$(cleo manifest append --task {{TASK_ID}} --type <protocol> \
|
|
15
|
+
--content "<work, commits, gates>" --status completed \
|
|
16
|
+
--field /data/entryId) || exit 1
|
|
17
|
+
[ -n "$ENTRY_ID" ] || exit 1
|
|
18
|
+
cleo manifest show "$ENTRY_ID" >/dev/null || exit 1
|
|
19
|
+
`--status`: completed, partial or blocked (actual progress). Do not append again to verify.
|
|
20
|
+
3. MUST NOT return research content, findings, diffs or prose.
|
|
21
|
+
4. MUST return EXACTLY this block, nothing else:
|
|
22
|
+
<Type> <complete|partial|blocked>. manifest:<entryId>
|
|
23
|
+
commits: <sha7,sha7|none>
|
|
24
|
+
gates: <gate>=<pass|fail|skip> ...
|
|
25
|
+
blocker: <≤12 words|none>
|
|
26
|
+
blocker: none when complete; required when partial/blocked.
|
|
27
|
+
Append or readback failed → `<Type> blocked. manifest:none` + `blocker: manifest append failed`. Never claim an entry you did not read back.
|
|
28
|
+
|
|
29
|
+
HITL: never ask the human. Return `<Type> blocked. manifest:<entryId>` + blocker: with {question, options[{label,description}], recommended} in the manifest; the orchestrator asks via the ask tool.
|
|
30
|
+
````
|
|
19
31
|
|
|
20
32
|
## Usage
|
|
21
33
|
|
|
@@ -28,15 +40,11 @@ When spawning a subagent via Task tool:
|
|
|
28
40
|
|
|
29
41
|
## Example Subagent Prompt
|
|
30
42
|
|
|
31
|
-
|
|
43
|
+
````
|
|
32
44
|
You are the {ROLE} subagent. Your job is to complete CLEO task {TASK_ID}.
|
|
33
45
|
|
|
34
46
|
## SUBAGENT PROTOCOL (RFC 2119 - MANDATORY)
|
|
35
|
-
|
|
36
|
-
1. MUST record findings with `cleo docs add {{TASK_ID}} --content - --type <kind> --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
|
|
37
|
-
2. MUST append ONE entry via `cleo manifest append --entry '<json>'` (writes to pipeline_manifest table per ADR-027/T1093)
|
|
38
|
-
3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
|
|
39
|
-
4. MUST NOT return research content in response.
|
|
47
|
+
<Standard Protocol Block above, with {{TASK_ID}} and --type filled in>
|
|
40
48
|
|
|
41
49
|
## CONTEXT
|
|
42
50
|
- Epic: {EPIC_ID} ({EPIC_TITLE})
|
|
@@ -50,17 +58,35 @@ OUTPUT REQUIREMENTS:
|
|
|
50
58
|
{DETAILED_INSTRUCTIONS}
|
|
51
59
|
|
|
52
60
|
BEGIN EXECUTION.
|
|
61
|
+
````
|
|
62
|
+
|
|
63
|
+
Example return:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Research complete. manifest:T1599-research-20260929
|
|
67
|
+
commits: none
|
|
68
|
+
gates: implemented=pass
|
|
69
|
+
blocker: none
|
|
53
70
|
```
|
|
54
71
|
|
|
55
|
-
## Manifest Entry
|
|
72
|
+
## Rich Manifest Entry
|
|
73
|
+
|
|
74
|
+
The shorthand above is preferred. The rich form is
|
|
75
|
+
`cleo manifest append --entry '<json>'`, captured and read back the same way
|
|
76
|
+
(`ENTRY_ID=$(cleo manifest append --entry '<json>' --field /data/entryId)`, same guard).
|
|
56
77
|
|
|
57
78
|
| Field | Type | Required | Description |
|
|
58
79
|
|-------|------|----------|-------------|
|
|
59
|
-
| id | string | Yes | Unique
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
| status | string | Yes |
|
|
64
|
-
|
|
|
80
|
+
| id | string | Yes | Unique id, e.g. `T1599-research-<YYYYMMDDHHMMSS>` |
|
|
81
|
+
| file | string | Yes | Output path |
|
|
82
|
+
| title | string | Yes | Headline, max 120 chars |
|
|
83
|
+
| date | string | Yes | `YYYY-MM-DD` |
|
|
84
|
+
| status | string | Yes | `completed`, `partial` or `blocked` |
|
|
85
|
+
| agent_type | string | Yes | Protocol type (`research`, `consensus`, ...) |
|
|
86
|
+
| topics | array | Yes | Topic tags |
|
|
87
|
+
| actionable | boolean | Yes | Needs follow-up action |
|
|
88
|
+
| key_findings | array | No | Summary points (max 5) |
|
|
65
89
|
| needs_followup | array | No | Task IDs requiring followup |
|
|
66
|
-
|
|
|
90
|
+
| linked_tasks | array | No | Task IDs; the first becomes the manifest task id |
|
|
91
|
+
|
|
92
|
+
Missing required fields → `E_VALIDATION_FAILED`. Link tasks via `linked_tasks[]`, not `task_id`.
|
|
@@ -16,9 +16,18 @@ echo "$prompt" | grep -q "SUBAGENT PROTOCOL" || echo "ERROR: Missing protocol bl
|
|
|
16
16
|
|
|
17
17
|
### MUST Validate Return Messages
|
|
18
18
|
|
|
19
|
-
Only accept these return message formats from subagents:
|
|
19
|
+
Only accept these return message formats from subagents. The compressed block (T12521) is what spawn prompts ask for:
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
```
|
|
22
|
+
Research <complete|partial|blocked>. manifest:<entryId>
|
|
23
|
+
commits: <sha7,sha7|none>
|
|
24
|
+
gates: <gate>=<pass|fail|skip> ...
|
|
25
|
+
blocker: <≤12 words|none>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Line 1 is required; `commits:`, `gates:` and `blocker:` may each appear once, and `blocker` is not `none` only for `partial`/`blocked`. The legacy one-liner stays valid:
|
|
29
|
+
|
|
30
|
+
| Status | Legacy Return Message |
|
|
22
31
|
|--------|---------------------|
|
|
23
32
|
| Complete | "Research complete. Manifest appended to pipeline_manifest." |
|
|
24
33
|
| Partial | "Research partial. Manifest appended to pipeline_manifest." |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-task-executor
|
|
3
3
|
description: General implementation task execution for completing assigned CLEO tasks by following instructions and producing concrete deliverables. Handles coding, configuration, documentation work with quality verification against acceptance criteria and progress reporting. Use when executing implementation tasks, completing assigned work, or producing task deliverables. Triggers on implementation tasks, general execution needs, or task completion work.
|
|
4
|
-
version: 2.7.
|
|
4
|
+
version: 2.7.6
|
|
5
5
|
protocol: implementation
|
|
6
6
|
adrRefs:
|
|
7
7
|
- ADR-070
|
|
@@ -17,16 +17,18 @@ compatibility:
|
|
|
17
17
|
- gemini-cli
|
|
18
18
|
license: MIT
|
|
19
19
|
metadata:
|
|
20
|
-
version: 2.7.
|
|
20
|
+
version: 2.7.6
|
|
21
21
|
tier: core
|
|
22
22
|
install: harness
|
|
23
23
|
covers:
|
|
24
24
|
- packages/cleo/src/cli/commands/verify.ts
|
|
25
25
|
- packages/cleo/src/cli/commands/complete.ts
|
|
26
|
+
- packages/cleo/src/cli/commands/start.ts
|
|
27
|
+
- packages/cleo/src/cli/commands/claim.ts
|
|
26
28
|
- packages/core/src/validation/protocols/cant/implementation.cant
|
|
27
29
|
- packages/core/src/validation/protocols/protocols-markdown/implementation.md
|
|
28
30
|
loomStage: implementation
|
|
29
|
-
lastReviewed: 2026-09-
|
|
31
|
+
lastReviewed: 2026-09-29
|
|
30
32
|
stability: stable
|
|
31
33
|
---
|
|
32
34
|
|
|
@@ -161,7 +163,7 @@ The routing prints a one-line info message to stderr (suppress with
|
|
|
161
163
|
|
|
162
164
|
1. MUST record findings with `cleo docs add {{TASK_ID}} --content - --type note --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
|
|
163
165
|
2. MUST record ONE manifest entry: `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027)
|
|
164
|
-
3. MUST return ONLY: "Implementation complete. Manifest appended to pipeline_manifest."
|
|
166
|
+
3. MUST return ONLY the compressed block: `Implementation complete. manifest:<entryId>` then `commits:`, `gates:` and `blocker: none` lines (T12521; the legacy one-liner "Implementation complete. Manifest appended to pipeline_manifest." is still accepted)
|
|
165
167
|
4. MUST NOT return implementation details in response
|
|
166
168
|
|
|
167
169
|
---
|
|
@@ -259,7 +261,7 @@ If all deliverables cannot be produced:
|
|
|
259
261
|
3. Set manifest `"status": "partial"`
|
|
260
262
|
4. Add blocking items to `needs_followup`
|
|
261
263
|
5. Complete task (partial work is progress)
|
|
262
|
-
6. Return
|
|
264
|
+
6. Return the compressed block with `Implementation partial. manifest:<entryId>` and a `blocker:` line (≤12 words)
|
|
263
265
|
|
|
264
266
|
### Blocked Execution
|
|
265
267
|
|
|
@@ -269,7 +271,7 @@ If work cannot proceed (missing dependencies, access issues, unclear requirement
|
|
|
269
271
|
2. Set manifest `"status": "blocked"`
|
|
270
272
|
3. Add blocker details to `needs_followup`
|
|
271
273
|
4. Do NOT complete task
|
|
272
|
-
5. Return
|
|
274
|
+
5. Return the compressed block with `Implementation blocked. manifest:<entryId>` and a `blocker:` line (≤12 words)
|
|
273
275
|
|
|
274
276
|
### Acceptance Criteria Failure
|
|
275
277
|
|
|
@@ -281,6 +283,41 @@ If deliverables don't pass acceptance criteria:
|
|
|
281
283
|
4. Complete task only if failure is documented and understood
|
|
282
284
|
5. Return appropriate status message
|
|
283
285
|
|
|
286
|
+
### Concurrent Edits (`E_CONFLICT`, exit 23)
|
|
287
|
+
|
|
288
|
+
Another agent may edit the same task while you work. `cleo update` and
|
|
289
|
+
`cleo complete` refuse a write based on a stale read with `E_CONFLICT`; nothing
|
|
290
|
+
was written. `error.details` carries `currentVersion`, `changedFields`,
|
|
291
|
+
per-field `changes` (`was`/`now`) and the stored `current` values. Re-read the
|
|
292
|
+
task, merge your change onto it, then retry. To guard a write explicitly, pass
|
|
293
|
+
the version you read:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
cleo show T1234 --field /data/task/updatedAt # the version you read
|
|
297
|
+
cleo update T1234 --title "New title" --if-match <updatedAt>
|
|
298
|
+
cleo complete T1234 --if-match <updatedAt>
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
`--add-labels`, `--add-depends` and `--add-files` merge with concurrent writers and never need a retry.
|
|
302
|
+
|
|
303
|
+
### Claimed Tasks (`E_TASK_CLAIMED`, exit 35)
|
|
304
|
+
|
|
305
|
+
`cleo start` (and spawn) takes your session's time-limited claim lease on the
|
|
306
|
+
task. If another session holds it, the start is refused with `E_TASK_CLAIMED`
|
|
307
|
+
and nothing is written; `error.details` names the `holder` (session, agent,
|
|
308
|
+
`leaseExpiresAt`), whether the lease has `expired`, and the `override` flag.
|
|
309
|
+
Your mutations renew your leases; `cleo stop`, `cleo complete` and ending your
|
|
310
|
+
session release them. The human `assignee` is a separate field.
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
cleo claim T1234 --renew # extend your lease during a long step
|
|
314
|
+
cleo start T1234 --take-over # holder's lease EXPIRED (audited)
|
|
315
|
+
cleo start T1234 --force-claim # holder is LIVE: only with a clear reason (audited)
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Never force a live claim to get unblocked: pick another task (`cleo next`) or
|
|
319
|
+
report the conflict to your orchestrator.
|
|
320
|
+
|
|
284
321
|
---
|
|
285
322
|
|
|
286
323
|
## Session Management
|
package/skills/manifest.json
CHANGED
|
@@ -226,7 +226,7 @@
|
|
|
226
226
|
},
|
|
227
227
|
{
|
|
228
228
|
"name": "ct-cleo",
|
|
229
|
-
"version": "2.
|
|
229
|
+
"version": "2.24.1",
|
|
230
230
|
"description": "CLEO task management protocol - session, task, and workflow guidance. Use when managing tasks, sessions, or multi-agent workflows with the CLEO CLI protocol.",
|
|
231
231
|
"path": "skills/ct-cleo",
|
|
232
232
|
"tier": 0,
|
|
@@ -302,7 +302,7 @@
|
|
|
302
302
|
},
|
|
303
303
|
{
|
|
304
304
|
"name": "ct-codebase-mapper",
|
|
305
|
-
"version": "2.0
|
|
305
|
+
"version": "2.1.0",
|
|
306
306
|
"description": "Orient in an unfamiliar or large codebase with CLEO's code-intelligence graph (cleo nexus) and project map (cleo map). Use before planning or editing unfamiliar code, for brownfield onboarding, to find what a change would break, or to map a project's structure, communities and execution flows. Triggers on \"map the codebase\", \"understand this project\", \"what calls X\", \"what would break\", \"brownfield analysis\", \"project structure\".",
|
|
307
307
|
"path": "skills/ct-codebase-mapper",
|
|
308
308
|
"tier": 1,
|
|
@@ -566,7 +566,7 @@
|
|
|
566
566
|
},
|
|
567
567
|
{
|
|
568
568
|
"name": "ct-dev-workflow",
|
|
569
|
-
"version": "3.1.
|
|
569
|
+
"version": "3.1.4",
|
|
570
570
|
"description": "Development workflow orchestration for task-driven development with atomic commits, conventional commit messages, and systematic release processes. Enforces task traceability, branch discipline, smart test scope selection, and GitHub Actions integration. Use when committing code, creating releases, managing branches, or following contribution protocols. Triggers on commit operations, release preparation, or workflow compliance needs.",
|
|
571
571
|
"path": "skills/ct-dev-workflow",
|
|
572
572
|
"tier": 0,
|
|
@@ -965,7 +965,7 @@
|
|
|
965
965
|
},
|
|
966
966
|
{
|
|
967
967
|
"name": "ct-lead",
|
|
968
|
-
"version": "1.0.
|
|
968
|
+
"version": "1.0.7",
|
|
969
969
|
"description": "Phase Lead orchestration playbook for spawning and supervising a parallel worker swarm in one wave. Use when spawned by ct-orchestrator with role=orchestrator to fan out N leaf workers via delegate_task, drain the epic-{TID}.wave-{n} conduit topic plus pipeline_manifest, await rollupWaveStatus convergence, and return ONE rolled-up contract string to the parent Orchestrator. Triggers: 'phase lead', 'wave lead', 'supervise wave', 'fan out workers', 'aggregate worker results', 'rollup wave', any task with role=orchestrator that is itself a child of another orchestrator. Implements ADR-070 hierarchical orchestration.",
|
|
970
970
|
"path": "skills/ct-lead",
|
|
971
971
|
"tier": 0,
|
|
@@ -983,7 +983,7 @@
|
|
|
983
983
|
},
|
|
984
984
|
{
|
|
985
985
|
"name": "ct-orchestrator",
|
|
986
|
-
"version": "4.0.
|
|
986
|
+
"version": "4.0.7",
|
|
987
987
|
"description": "Pipeline-aware orchestration skill for managing complex workflows through subagent delegation. Use when the user asks to \\\"orchestrate\\\", \\\"orchestrator mode\\\", \\\"run as orchestrator\\\", \\\"delegate to subagents\\\", \\\"coordinate agents\\\", \\\"spawn subagents\\\", \\\"multi-agent workflow\\\", \\\"context-protected workflow\\\", \\\"agent farm\\\", \\\"HITL orchestration\\\", \\\"pipeline management\\\", or needs to manage complex workflows by delegating work to subagents while protecting the main context window. Enforces ORC-001 through ORC-009 constraints. Provider-neutral — works with any AI agent runtime.",
|
|
988
988
|
"path": "skills/ct-orchestrator",
|
|
989
989
|
"tier": 0,
|
|
@@ -1472,7 +1472,7 @@
|
|
|
1472
1472
|
},
|
|
1473
1473
|
{
|
|
1474
1474
|
"name": "ct-task-executor",
|
|
1475
|
-
"version": "2.7.
|
|
1475
|
+
"version": "2.7.6",
|
|
1476
1476
|
"description": "General implementation task execution for completing assigned CLEO tasks by following instructions and producing concrete deliverables. Handles coding, configuration, documentation work with quality verification against acceptance criteria and progress reporting. Use when executing implementation tasks, completing assigned work, or producing task deliverables. Triggers on implementation tasks, general execution needs, or task completion work.",
|
|
1477
1477
|
"path": "skills/ct-task-executor",
|
|
1478
1478
|
"tier": 0,
|