@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/skills",
3
- "version": "2026.9.23",
3
+ "version": "2026.9.25",
4
4
  "description": "CLEO skill definitions - bundled with CLEO monorepo",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -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.23.0
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-28
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-id`
52
- (tracked, write-once; ADR-094). A path is only a per-device hint, so a moved or
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.1
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.1
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-28
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.3
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.3
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-28
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
@@ -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.6
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-28
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.4
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-28
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
- Capture exactly one `cleo manifest append` receipt (shorthand OR rich entry). Verify that same receipt has `success: true`, `data.appended: true`, and a nonempty `entryId`, then read it with `cleo manifest show <entryId>`. Never append again merely to capture or verify the receipt. On append or readback failure, report the failure; do not claim "Manifest appended". Static prompt checks do not prove storage or provider workflow success.
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
- After successful verification, subagents MUST return exactly one of:
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
- Copy and include this block in EVERY subagent prompt spawned via Task tool.
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 REQUIREMENTS:
11
- 1. MUST record findings with `cleo docs add {{TASK_ID}} --content - --type <kind> --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
12
- 2. MUST append ONE entry via `cleo manifest append --entry '<json>'` (writes to pipeline_manifest table per ADR-027/T1093)
13
- 3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
14
- 4. MUST NOT return research content in response.
15
-
16
- MANIFEST ENTRY FORMAT:
17
- {"id":"YYYY-MM-DD_{topic}","timestamp":"ISO8601","task_id":"TXXXX","agent":"agent-name","status":"complete","key_findings":["finding1","finding2"],"needs_followup":["next-task-id"],"file":"YYYY-MM-DD_{topic}.md"}
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
- OUTPUT REQUIREMENTS:
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 Schema
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 identifier (YYYY-MM-DD_{topic}) |
60
- | timestamp | string | Yes | ISO 8601 timestamp |
61
- | task_id | string | Yes | CLEO task ID (e.g., T1599) |
62
- | agent | string | Yes | Agent identifier |
63
- | status | string | Yes | "complete" or "partial" |
64
- | key_findings | array | Yes | Summary points (max 5) |
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
- | file | string | Yes | Output filename |
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
- | Status | Valid Return Message |
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.3
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.3
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-28
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: "Implementation partial. Manifest appended to pipeline_manifest."
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: "Implementation blocked. Manifest appended to pipeline_manifest."
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
@@ -226,7 +226,7 @@
226
226
  },
227
227
  {
228
228
  "name": "ct-cleo",
229
- "version": "2.23.0",
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.1",
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.3",
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.6",
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.4",
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.3",
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,