@cleocode/skills 2026.4.110 → 2026.4.112

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 (32) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/skills/_shared/manifest-operations.md +16 -19
  4. package/skills/_shared/placeholders.json +4 -4
  5. package/skills/_shared/skill-chaining-patterns.md +4 -4
  6. package/skills/_shared/subagent-protocol-base.cant +3 -3
  7. package/skills/_shared/subagent-protocol-base.md +8 -9
  8. package/skills/_shared/task-system-integration.md +1 -1
  9. package/skills/ct-cleo/references/loom-lifecycle.md +4 -4
  10. package/skills/ct-cleo/references/session-protocol.md +1 -1
  11. package/skills/ct-dev-workflow/SKILL.md +1 -1
  12. package/skills/ct-documentor/SKILL.md +1 -1
  13. package/skills/ct-epic-architect/SKILL.md +1 -1
  14. package/skills/ct-epic-architect/references/commands.md +1 -1
  15. package/skills/ct-epic-architect/references/skill-aware-execution.md +1 -1
  16. package/skills/ct-master-tac/bundled/protocols/implementation.cant +1 -1
  17. package/skills/ct-master-tac/bundled/protocols/release.cant +1 -1
  18. package/skills/ct-master-tac/bundled/protocols/research.cant +2 -2
  19. package/skills/ct-master-tac/bundled/protocols/testing.cant +1 -1
  20. package/skills/ct-orchestrator/INSTALL.md +1 -1
  21. package/skills/ct-orchestrator/SKILL.md +6 -6
  22. package/skills/ct-orchestrator/orchestrator-prompt.txt +1 -1
  23. package/skills/ct-orchestrator/references/SUBAGENT-PROTOCOL-BLOCK.md +4 -4
  24. package/skills/ct-orchestrator/references/orchestrator-compliance.md +5 -5
  25. package/skills/ct-orchestrator/references/orchestrator-handoffs.md +1 -1
  26. package/skills/ct-orchestrator/references/orchestrator-patterns.md +1 -1
  27. package/skills/ct-orchestrator/references/orchestrator-spawning.md +1 -1
  28. package/skills/ct-orchestrator/references/orchestrator-tokens.md +6 -6
  29. package/skills/ct-research-agent/SKILL.md +4 -4
  30. package/skills/ct-spec-writer/SKILL.md +1 -1
  31. package/skills/ct-task-executor/SKILL.md +4 -4
  32. package/skills/ct-validator/SKILL.md +1 -1
package/README.md CHANGED
@@ -400,7 +400,7 @@ cleo skills apply-profile backend-developer --task T1234
400
400
 
401
401
  Common patterns and utilities in `skills/_shared/`:
402
402
 
403
- - `manifest-operations.md` - Working with MANIFEST.jsonl
403
+ - `manifest-operations.md` - Working with pipeline_manifest via cleo manifest CLI
404
404
  - `subagent-protocol-base.md` - Base subagent protocols
405
405
  - `skill-chaining-patterns.md` - Chaining best practices
406
406
  - `testing-framework-config.md` - Test configuration
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/skills",
3
- "version": "2026.4.110",
3
+ "version": "2026.4.112",
4
4
  "description": "CLEO skill definitions - bundled with CLEO monorepo",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -4,7 +4,7 @@
4
4
  **Status**: ACTIVE
5
5
  **Version**: 1.0.0
6
6
 
7
- This reference defines all CLI operations for managing the agent outputs manifest (`MANIFEST.jsonl`). Skills and protocols SHOULD reference this file instead of duplicating JSONL instructions.
7
+ This reference defines all CLI operations for managing the agent outputs manifest (`pipeline_manifest` SQLite table via `cleo manifest` CLI). Skills and protocols SHOULD reference this file instead of duplicating manifest instructions.
8
8
 
9
9
  ---
10
10
 
@@ -14,8 +14,8 @@ The manifest system provides O(1) append operations and race-condition-free conc
14
14
 
15
15
  **Default Paths**:
16
16
  - Output directory: `.cleo/agent-outputs/` (configurable via `agentOutputs.directory`)
17
- - Manifest file: `MANIFEST.jsonl` (configurable via `agentOutputs.manifestFile`)
18
- - Full path: `{{OUTPUT_DIR}}/MANIFEST.jsonl` (i.e., `.cleo/agent-outputs/MANIFEST.jsonl`)
17
+ - Manifest store: `pipeline_manifest` SQLite table (canonical per ADR-027)
18
+ - CLI: `cleo manifest append <json>` — the only supported write path
19
19
 
20
20
  **Design Principles**:
21
21
  - Append-only writes preserve audit trail
@@ -72,7 +72,7 @@ cleo research add \
72
72
  {
73
73
  "success": true,
74
74
  "entryId": "jwt-authentication-2026-02-07",
75
- "manifestPath": ".cleo/agent-outputs/MANIFEST.jsonl"
75
+ "store": "pipeline_manifest"
76
76
  }
77
77
  ```
78
78
 
@@ -455,7 +455,7 @@ When present, the `audit` field provides operational metadata:
455
455
  | `{{DATE}}` | Current date | `2026-02-07` |
456
456
  | `{{TOPIC_SLUG}}` | URL-safe topic name | `jwt-authentication` |
457
457
  | `{{OUTPUT_DIR}}` | Output directory | `.cleo/agent-outputs` |
458
- | `{{MANIFEST_PATH}}` | Manifest filename | `MANIFEST.jsonl` |
458
+
459
459
 
460
460
  ### Command Tokens (CLEO Defaults)
461
461
 
@@ -518,18 +518,15 @@ cleo research add \
518
518
  ### ❌ Pretty-Printed JSON
519
519
 
520
520
  ```bash
521
- # WRONG - Creates multiple lines
522
- echo '{
523
- "id": "test",
524
- "title": "Test"
525
- }' >> MANIFEST.jsonl
521
+ # WRONG - Bypasses pipeline_manifest table
522
+ echo '{"id": "test", "title": "Test"}' >> .cleo/agent-outputs/legacy-manifest.jsonl
526
523
  ```
527
524
 
528
- **Problem**: Breaks JSONL format (one object per line)
525
+ **Problem**: Legacy file migrated to SQLite per ADR-027. Race conditions and no validation.
529
526
 
530
- **Solution**: Use `jq -c` for compact output
527
+ **Solution**: Use `cleo manifest append`
531
528
  ```bash
532
- jq -nc '{id: "test", title: "Test"}' >> MANIFEST.jsonl
529
+ cleo manifest append '{"id":"test","task_id":"T###","type":"research","status":"complete","output":"path/to/output.md","summary":"brief","key_findings":["..."]}'
533
530
  ```
534
531
 
535
532
  ---
@@ -537,15 +534,15 @@ jq -nc '{id: "test", title: "Test"}' >> MANIFEST.jsonl
537
534
  ### ❌ Direct File Writes
538
535
 
539
536
  ```bash
540
- # WRONG - Bypasses validation
541
- echo "$json" >> .cleo/agent-outputs/MANIFEST.jsonl
537
+ # WRONG - Legacy file path; SQLite is now the store
538
+ echo "$json" >> .cleo/agent-outputs/legacy-manifest.jsonl
542
539
  ```
543
540
 
544
- **Problem**: No validation, no atomic operation, no audit trail
541
+ **Problem**: The legacy flat-file is retired per ADR-027. Use the manifest CLI.
545
542
 
546
- **Solution**: Use CLI commands
543
+ **Solution**: Use `cleo manifest append`
547
544
  ```bash
548
- cleo research add --task T#### --topic "..." --findings "..."
545
+ cleo manifest append '{"id":"...","task_id":"T####","type":"...","status":"complete","output":"...","summary":"...","key_findings":["..."]}'
549
546
  ```
550
547
 
551
548
  ---
@@ -582,7 +579,7 @@ Here is my research:
582
579
 
583
580
  **Solution**: Return ONLY summary message
584
581
  ```markdown
585
- [Type] complete. See MANIFEST.jsonl for summary.
582
+ [Type] complete. Manifest appended to pipeline_manifest.
586
583
  ```
587
584
 
588
585
  ---
@@ -71,9 +71,9 @@
71
71
  {
72
72
  "token": "MANIFEST_PATH",
73
73
  "type": "path",
74
- "example": ".cleo/agent-outputs/MANIFEST.jsonl",
75
- "description": "Path to MANIFEST.jsonl file",
76
- "default": ".cleo/agent-outputs/MANIFEST.jsonl"
74
+ "example": "pipeline_manifest (use cleo manifest append)",
75
+ "description": "Manifest CLI: use `cleo manifest append`",
76
+ "default": "pipeline_manifest (use cleo manifest append)"
77
77
  }
78
78
  ],
79
79
  "taskCommands": {
@@ -182,7 +182,7 @@
182
182
  ]
183
183
  },
184
184
  "manifest": {
185
- "_comment": "Tokens used when constructing MANIFEST.jsonl entries",
185
+ "_comment": "Tokens used when constructing pipeline_manifest entries (via cleo manifest append)",
186
186
  "tokens": [
187
187
  {
188
188
  "token": "MANIFEST_ID",
@@ -54,7 +54,7 @@ cleo orchestrator spawn T1234 --json
54
54
 
55
55
  - **Input**: Task ID, skill template, previous manifest key_findings
56
56
  - **Output**: Manifest entry with key_findings for next agent
57
- - **Response**: "[Type] complete. See MANIFEST.jsonl for summary."
57
+ - **Response**: "[Type] complete. Manifest appended to pipeline_manifest."
58
58
 
59
59
  ---
60
60
 
@@ -164,7 +164,7 @@ A subagent can itself become an orchestrator, spawning further subagents for com
164
164
  ### Rule 1: Manifest for Handoffs (MUST)
165
165
 
166
166
  ```json
167
- // Subagent appends ONE line to MANIFEST.jsonl
167
+ // Subagent appends ONE entry via cleo manifest append
168
168
  {"id":"topic-2026-01-20","key_findings":["Finding 1","Finding 2"],"needs_followup":["T1235"]}
169
169
  ```
170
170
 
@@ -173,7 +173,7 @@ Parent reads only key_findings, not full research files.
173
173
  ### Rule 2: Minimal Response (MUST)
174
174
 
175
175
  ```
176
- Subagent MUST return ONLY: "[Type] complete/partial/blocked. See MANIFEST.jsonl for summary/details/blocker details."
176
+ Subagent MUST return ONLY: "[Type] complete/partial/blocked. Manifest appended to pipeline_manifest."
177
177
  Subagent MUST NOT return output content in response.
178
178
  ```
179
179
 
@@ -181,7 +181,7 @@ Subagent MUST NOT return output content in response.
181
181
 
182
182
  Detailed findings go to output files, not manifest or response:
183
183
  - Full analysis → `{{OUTPUT_DIR}}/YYYY-MM-DD_topic.md`
184
- - Summary only → `MANIFEST.jsonl` key_findings array
184
+ - Summary only → pipeline_manifest key_findings (via `cleo manifest append`)
185
185
 
186
186
  ### Rule 4: Token Injection (SHOULD)
187
187
 
@@ -21,7 +21,7 @@ protocol subagent-base:
21
21
  EPIC_ID: pattern("^T[0-9]+$") = ""
22
22
  SESSION_ID: string = ""
23
23
  OUTPUT_DIR: path = ".cleo/agent-outputs"
24
- MANIFEST_PATH: path = "${OUTPUT_DIR}/MANIFEST.jsonl"
24
+ # MANIFEST_PATH token retired — use pipeline.manifest.append instead (ADR-027)
25
25
  computed:
26
26
  OUTPUT_PATH: path = "${OUTPUT_DIR}/${DATE}_${TOPIC_SLUG}.md"
27
27
  RESEARCH_ID: string = "${TOPIC_SLUG}-${DATE}"
@@ -55,7 +55,7 @@ protocol subagent-base:
55
55
  MAN-001: MUST write output file before appending manifest entry
56
56
  MAN-002: MUST set manifest status to enum("complete", "partial", "blocked")
57
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
58
+ MAN-004: MUST use pipeline.manifest.append — flat-file sink retired per ADR-027
59
59
 
60
60
  # --- Lifecycle Phases ---
61
61
 
@@ -102,7 +102,7 @@ protocol subagent-base:
102
102
  - pattern: "Calling tasks.list without filters"
103
103
  problem: "Returns all tasks with notes — huge token cost"
104
104
  solution: "Use tasks.find for discovery"
105
- - pattern: "Appending to MANIFEST.jsonl directly"
105
+ - pattern: "Appending to legacy flat-file directly"
106
106
  problem: "Legacy file — migrated to SQLite per ADR-027"
107
107
  solution: "Use pipeline.manifest.append operation"
108
108
  - pattern: "Loading skills via @ at runtime"
@@ -16,14 +16,14 @@ All subagents operating under an orchestrator MUST follow this protocol.
16
16
  | ID | Rule | Compliance |
17
17
  |----|------|------------|
18
18
  | OUT-001 | MUST write findings to `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md` | Required |
19
- | OUT-002 | MUST append ONE line to `{{MANIFEST_PATH}}` | Required |
20
- | OUT-003 | MUST return ONLY: "[Type] complete. See MANIFEST.jsonl for summary." | Required |
19
+ | OUT-002 | MUST append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027/T1093) | Required |
20
+ | OUT-003 | MUST return ONLY: "[Type] complete. Manifest appended to pipeline_manifest." | Required |
21
21
  | OUT-004 | MUST NOT return output content in response | Required |
22
22
 
23
23
  Valid return messages:
24
- - `"[Type] complete. See MANIFEST.jsonl for summary."`
25
- - `"[Type] partial. See MANIFEST.jsonl for details."`
26
- - `"[Type] blocked. See MANIFEST.jsonl for blocker details."`
24
+ - `"[Type] complete. Manifest appended to pipeline_manifest."`
25
+ - `"[Type] partial. Manifest appended to pipeline_manifest."`
26
+ - `"[Type] blocked. Manifest appended to pipeline_manifest."`
27
27
 
28
28
  ### Rationale
29
29
 
@@ -110,7 +110,7 @@ Reference: @skills/_shared/task-system-integration.md
110
110
  4. Write output: {{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md
111
111
  5. Create manifest entry: cleo research add [flags]
112
112
  6. Complete: {{TASK_COMPLETE_CMD}} {{TASK_ID}}
113
- 7. Return: "[Type] complete. See MANIFEST.jsonl for summary."
113
+ 7. Return: "[Type] complete. Manifest appended to pipeline_manifest."
114
114
  ```
115
115
 
116
116
  ---
@@ -178,7 +178,6 @@ Before returning, verify:
178
178
  | `{{EPIC_ID}}` | `""` | Parent epic ID |
179
179
  | `{{SESSION_ID}}` | `""` | Session identifier |
180
180
  | `{{OUTPUT_DIR}}` | `.cleo/agent-outputs` | Output directory |
181
- | `{{MANIFEST_PATH}}` | `{{OUTPUT_DIR}}/MANIFEST.jsonl` | Manifest location |
182
181
 
183
182
  ### Task System Tokens (CLEO defaults)
184
183
 
@@ -201,7 +200,7 @@ If work cannot complete fully:
201
200
  2. Set manifest `"status": "partial"`
202
201
  3. Add blocking reason to `needs_followup`
203
202
  4. Complete task (partial work is still progress)
204
- 5. Return: "[Type] partial. See MANIFEST.jsonl for details."
203
+ 5. Return: "[Type] partial. Manifest appended to pipeline_manifest."
205
204
 
206
205
  ### Blocked Status
207
206
 
@@ -211,7 +210,7 @@ If work cannot proceed:
211
210
  2. Set manifest `"status": "blocked"`
212
211
  3. Add blocker details to `needs_followup`
213
212
  4. Do NOT complete task (leave for orchestrator decision)
214
- 5. Return: "[Type] blocked. See MANIFEST.jsonl for blocker details."
213
+ 5. Return: "[Type] blocked. Manifest appended to pipeline_manifest."
215
214
 
216
215
  ---
217
216
 
@@ -169,7 +169,7 @@ When tokens are not explicitly configured, assume CLEO defaults:
169
169
  | `{{TASK_FIND_CMD}}` | `cleo find` |
170
170
  | `{{TASK_ADD_CMD}}` | `cleo add` |
171
171
  | `{{OUTPUT_DIR}}` | `.cleo/agent-outputs` |
172
- | `{{MANIFEST_PATH}}` | `{{OUTPUT_DIR}}/MANIFEST.jsonl` |
172
+
173
173
 
174
174
  ---
175
175
 
@@ -107,7 +107,7 @@ Every spawn combines two layers:
107
107
 
108
108
  | ID | Rule | Enforcement |
109
109
  |----|------|-------------|
110
- | BASE-001 | MUST append ONE line to MANIFEST.jsonl | Required |
110
+ | BASE-001 | MUST append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027/T1093) | Required |
111
111
  | BASE-002 | MUST NOT return content in response | Required |
112
112
  | BASE-003 | MUST complete task via `cleo complete` | Required |
113
113
  | BASE-004 | MUST write output file before manifest | Required |
@@ -131,6 +131,6 @@ SPAWN -> INJECT -> EXECUTE -> OUTPUT -> RETURN
131
131
 
132
132
  | Status | Message |
133
133
  |--------|---------|
134
- | Complete | `[Type] complete. See MANIFEST.jsonl for summary.` |
135
- | Partial | `[Type] partial. See MANIFEST.jsonl for details.` |
136
- | Blocked | `[Type] blocked. See MANIFEST.jsonl for blocker details.` |
134
+ | Complete | `[Type] complete. Manifest appended to pipeline_manifest.` |
135
+ | Partial | `[Type] partial. Manifest appended to pipeline_manifest.` |
136
+ | Blocked | `[Type] blocked. Manifest appended to pipeline_manifest.` |
@@ -64,7 +64,7 @@ Subagent output files follow this structure:
64
64
  <main deliverable>
65
65
  ```
66
66
 
67
- ### Manifest Entry (MANIFEST.jsonl)
67
+ ### Manifest Entry (pipeline_manifest)
68
68
 
69
69
  Append ONE line (no pretty-printing):
70
70
 
@@ -328,7 +328,7 @@ cleo session end --note "Completed X, Y, Z"
328
328
 
329
329
  1. MUST write workflow summary to: `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`
330
330
  2. MUST append ONE line to: `{{MANIFEST_PATH}}`
331
- 3. MUST return ONLY: "Workflow complete. See MANIFEST.jsonl for summary."
331
+ 3. MUST return ONLY: "Workflow complete. Manifest appended to pipeline_manifest."
332
332
  4. MUST NOT return full commit/release details in response
333
333
 
334
334
  ---
@@ -172,7 +172,7 @@ cleo research link {TASK_ID} {RESEARCH_ID}
172
172
 
173
173
  1. MUST write documentation output to: `{{OUTPUT_DIR}}/`
174
174
  2. MUST append ONE line to: `{{MANIFEST_PATH}}`
175
- 3. MUST return ONLY: "Documentation complete. See MANIFEST.jsonl for summary."
175
+ 3. MUST return ONLY: "Documentation complete. Manifest appended to pipeline_manifest."
176
176
  4. MUST NOT return documentation content in response
177
177
 
178
178
  ### Output File Format
@@ -249,7 +249,7 @@ Recommendation: [Your recommendation]
249
249
 
250
250
  1. MUST write decomposition to: `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`
251
251
  2. MUST append ONE line to: `{{MANIFEST_PATH}}`
252
- 3. MUST return ONLY: "Decomposition complete. See MANIFEST.jsonl for summary."
252
+ 3. MUST return ONLY: "Decomposition complete. Manifest appended to pipeline_manifest."
253
253
  4. MUST NOT return full decomposition in response
254
254
 
255
255
  ---
@@ -198,4 +198,4 @@ cleo list --tree --parent {{EPIC_ID}} # Show epic subtree
198
198
  | Token | Default |
199
199
  |-------|---------|
200
200
  | `{{OUTPUT_DIR}}` | `.cleo/agent-outputs` |
201
- | `{{MANIFEST_PATH}}` | `{{OUTPUT_DIR}}/MANIFEST.jsonl` |
201
+
@@ -119,7 +119,7 @@ When ct-epic-architect creates an epic, it follows the subagent protocol:
119
119
 
120
120
  1. **Write output file**: `{{OUTPUT_DIR}}/{{DATE}}_epic-{{FEATURE_SLUG}}.md`
121
121
  2. **Append manifest entry**: Single line JSON to `{{MANIFEST_PATH}}`
122
- 3. **Return summary only**: "Epic created. See MANIFEST.jsonl for summary."
122
+ 3. **Return summary only**: "Epic created. Manifest appended to pipeline_manifest."
123
123
 
124
124
  ### Querying Prior Research
125
125
 
@@ -19,7 +19,7 @@ input:
19
19
  output:
20
20
  files_changed: "string[] — list of modified/created files"
21
21
  tests_added: "string[] — new test files or test names"
22
- manifest_entry: "object — implementation summary for MANIFEST.jsonl"
22
+ manifest_entry: "object — implementation summary for pipeline_manifest via cleo manifest append"
23
23
  ---
24
24
 
25
25
  # Implementation Protocol
@@ -20,7 +20,7 @@ output:
20
20
  release_tag: "string — git tag created (e.g. v2026.4.5)"
21
21
  changelog_path: "string — path to updated CHANGELOG file"
22
22
  artifacts_published: "boolean — true when artifact phase ran"
23
- release_manifest: "object — release summary for MANIFEST.jsonl"
23
+ release_manifest: "object — release summary for pipeline_manifest via cleo manifest append"
24
24
  ---
25
25
 
26
26
  # Release Protocol
@@ -18,7 +18,7 @@ input:
18
18
  output_dir: "string — directory for findings (default: .cleo/agent-outputs/)"
19
19
  output:
20
20
  findings_path: "string — path to the research output markdown file"
21
- manifest_entry: "object — 3–7 key findings for MANIFEST.jsonl"
21
+ manifest_entry: "object — 3–7 key findings for pipeline_manifest via cleo manifest append"
22
22
  confidence_levels: "object — per-finding confidence 0.0–1.0"
23
23
  sources: "string[] — cited URLs or file paths"
24
24
  ---
@@ -45,7 +45,7 @@ output:
45
45
  # RSCH-001: MUST NOT implement code or make changes to codebase
46
46
  # RSCH-002: MUST document all sources with citations
47
47
  # RSCH-003: MUST write findings to claudedocs/agent-outputs/
48
- # RSCH-004: MUST append entry to MANIFEST.jsonl
48
+ # RSCH-004: MUST append entry via `cleo manifest append`
49
49
  # RSCH-005: MUST return only completion message (no content in response)
50
50
  # RSCH-006: MUST include 3-7 key findings in manifest entry
51
51
  # RSCH-007: MUST set agent_type: "research" in manifest
@@ -20,7 +20,7 @@ output:
20
20
  test_framework: "vitest | jest | mocha | pytest | cargo-test | go-test | rspec | phpunit | bats | other"
21
21
  convergence_iterations: "number — IVT loop iterations to convergence"
22
22
  test_results: "object — {passed, failed, skipped} counts"
23
- manifest_entry: "object — convergence metrics for MANIFEST.jsonl"
23
+ manifest_entry: "object — convergence metrics for pipeline_manifest via cleo manifest append"
24
24
  ---
25
25
 
26
26
  # Testing Protocol - Project-Agnostic IVT Loop
@@ -57,5 +57,5 @@ skills/
57
57
  ## Dependencies
58
58
 
59
59
  - CLEO task management (`cleo` CLI)
60
- - Agent manifest system (`.cleo/agent-outputs/MANIFEST.jsonl`)
60
+ - Agent manifest system (pipeline_manifest SQLite table, accessed via `cleo manifest` CLI)
61
61
  - Task tool for subagent spawning
@@ -26,7 +26,7 @@ You are the **Orchestrator** — a conductor, never a musician. You coordinate c
26
26
  | ORC-006 | Max 3 files per subagent | Cross-file reasoning degrades beyond this scope |
27
27
  | ORC-007 | All work traced to epic | No orphaned tasks — every task has a parent epic |
28
28
  | ORC-008 | Zero architectural decisions | Architecture MUST be pre-decided via RCASD consensus or HITL |
29
- | ORC-009 | Manifest-mediated handoffs | Read only `key_findings` from MANIFEST.jsonl; subagents read full files |
29
+ | ORC-009 | Manifest-mediated handoffs | Read only `key_findings` from pipeline_manifest; subagents read full files |
30
30
  | ORC-010 | Continuous dispatch | While ready tasks exist, orchestrator MUST be spawning — never idle while work remains |
31
31
  | ORC-011 | Pre-release verification gate | NEVER `git push --tags` without full pipeline green: biome ci packages/, build, test, changelog, version |
32
32
  | ORC-012 | Honest reporting | "Shipped" ≠ "designed" ≠ "in progress" — distinguish always; never claim CI green without seeing the green |
@@ -110,14 +110,14 @@ Agent({
110
110
  })
111
111
  ```
112
112
 
113
- **Other harnesses**: Pass the resolved prompt to whatever "give this prompt to an agent" mechanism the runtime provides. Results flow back through MANIFEST.jsonl — the universal handoff medium.
113
+ **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.
114
114
 
115
115
  ### Valid Return Messages
116
116
 
117
117
  Subagents MUST return exactly one of:
118
- - `"[Type] complete. See MANIFEST.jsonl for summary."`
119
- - `"[Type] partial. See MANIFEST.jsonl for details."`
120
- - `"[Type] blocked. See MANIFEST.jsonl for blocker details."`
118
+ - `"[Type] complete. Manifest appended to pipeline_manifest."`
119
+ - `"[Type] partial. Manifest appended to pipeline_manifest."`
120
+ - `"[Type] blocked. Manifest appended to pipeline_manifest."`
121
121
 
122
122
  > Detailed spawn workflow, manual protocol injection, skill dispatch matrix: `references/orchestrator-spawning.md`
123
123
 
@@ -168,7 +168,7 @@ After each wave or on request: what completed, blockers needing HITL, next actio
168
168
  Content flows between subagents via **manifest-mediated handoffs**, NOT through orchestrator context:
169
169
 
170
170
  ```
171
- Agent A completes → writes output file + MANIFEST.jsonl entry
171
+ Agent A completes → writes output file + pipeline_manifest entry (via `cleo manifest append`)
172
172
 
173
173
  Orchestrator reads manifest key_findings (3-7 items) + file path
174
174
 
@@ -17,7 +17,7 @@ of LLM provider or harness. Model assignment (opus/sonnet/haiku) is
17
17
  preferred when available, never a blocker.
18
18
 
19
19
  Read only manifests, never full subagent outputs. Subagents write
20
- to MANIFEST.jsonl; you read key_findings from manifest entries.
20
+ to pipeline_manifest (via `cleo manifest append`); you read key_findings from manifest entries.
21
21
 
22
22
  Each subagent MUST stay under 185,000 tokens. If approaching that
23
23
  limit, the subagent MUST create a handoff and a new agent carries
@@ -9,8 +9,8 @@ Copy and include this block in EVERY subagent prompt spawned via Task tool.
9
9
 
10
10
  OUTPUT REQUIREMENTS:
11
11
  1. MUST write findings to: {{OUTPUT_DIR}}/YYYY-MM-DD_{topic}.md
12
- 2. MUST append ONE line to: {{OUTPUT_DIR}}/MANIFEST.jsonl
13
- 3. MUST return ONLY: "Research complete. See MANIFEST.jsonl for summary."
12
+ 2. MUST append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027/T1093)
13
+ 3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
14
14
  4. MUST NOT return research content in response.
15
15
 
16
16
  MANIFEST ENTRY FORMAT:
@@ -34,8 +34,8 @@ You are the {ROLE} subagent. Your job is to complete CLEO task {TASK_ID}.
34
34
  ## SUBAGENT PROTOCOL (RFC 2119 - MANDATORY)
35
35
  OUTPUT REQUIREMENTS:
36
36
  1. MUST write findings to: {{OUTPUT_DIR}}/YYYY-MM-DD_{topic}.md
37
- 2. MUST append ONE line to: {{OUTPUT_DIR}}/MANIFEST.jsonl
38
- 3. MUST return ONLY: "Research complete. See MANIFEST.jsonl for summary."
37
+ 2. MUST append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027/T1093)
38
+ 3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
39
39
  4. MUST NOT return research content in response.
40
40
 
41
41
  ## CONTEXT
@@ -20,9 +20,9 @@ Only accept these return message formats from subagents:
20
20
 
21
21
  | Status | Valid Return Message |
22
22
  |--------|---------------------|
23
- | Complete | "Research complete. See MANIFEST.jsonl for summary." |
24
- | Partial | "Research partial. See MANIFEST.jsonl for details." |
25
- | Blocked | "Research blocked. See MANIFEST.jsonl for blocker details." |
23
+ | Complete | "Research complete. Manifest appended to pipeline_manifest." |
24
+ | Partial | "Research partial. Manifest appended to pipeline_manifest." |
25
+ | Blocked | "Research blocked. Manifest appended to pipeline_manifest." |
26
26
 
27
27
  Any other return format indicates protocol violation.
28
28
 
@@ -241,8 +241,8 @@ if (( $(echo "$compliance_pass_rate < $COMPLIANCE_THRESHOLD" | bc -l) )); then
241
241
 
242
242
  ## COMPLIANCE CHECKLIST (VERIFY BEFORE RETURNING)
243
243
  - [ ] Output file exists at {{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md
244
- - [ ] MANIFEST.jsonl entry appended with all required fields
245
- - [ ] Return message is EXACTLY: 'Research complete. See MANIFEST.jsonl for summary.'
244
+ - [ ] pipeline_manifest entry appended via `cleo manifest append`
245
+ - [ ] Return message is EXACTLY: 'Research complete. Manifest appended to pipeline_manifest.'
246
246
  - [ ] Task linked via: {{TASK_LINK_CMD}} {{TASK_ID}} <research-id>
247
247
  - [ ] Task completed via: {{TASK_COMPLETE_CMD}} {{TASK_ID}}
248
248
  "
@@ -15,7 +15,7 @@ Orchestrator (Tier 0)
15
15
  ├─ Spawns Agent A with task instructions
16
16
  │ └─ A completes → writes output file + manifest entry
17
17
 
18
- ├─ Reads MANIFEST.jsonl → extracts key_findings (3-7 items)
18
+ ├─ Reads pipeline_manifest → extracts key_findings (3-7 items)
19
19
  │ └─ Does NOT read full output file
20
20
  │ └─ Does NOT use TaskOutput tool
21
21
 
@@ -98,7 +98,7 @@ cleo phase advance # Move to testing phase
98
98
 
99
99
  ```bash
100
100
  # 1. Subagent completes implementation
101
- # Returns: "Implementation complete. See MANIFEST.jsonl for summary."
101
+ # Returns: "Implementation complete. Manifest appended to pipeline_manifest."
102
102
 
103
103
  # 2. Orchestrator verifies output
104
104
  cleo research show <research-id>
@@ -50,7 +50,7 @@ Agent({
50
50
  })
51
51
  ```
52
52
 
53
- **Other harnesses** (Cursor, OpenCode, Codex, etc.): Pass the resolved prompt to whatever "give this prompt to an agent" mechanism the runtime provides. Results flow back through MANIFEST.jsonl.
53
+ **Other harnesses** (Cursor, OpenCode, Codex, etc.): 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`).
54
54
 
55
55
  ### Fallback Spawn (when CLI spawn unavailable)
56
56
 
@@ -71,7 +71,7 @@ template=$(ti_load_template "skills/ct-research-agent/SKILL.md")
71
71
  | Token | Default Value |
72
72
  |-------|---------------|
73
73
  | `{{OUTPUT_DIR}}` | `.cleo/agent-outputs` |
74
- | `{{MANIFEST_PATH}}` | `.cleo/agent-outputs/MANIFEST.jsonl` |
74
+
75
75
 
76
76
  ### Task Context Tokens (populated from CLEO task data)
77
77
 
@@ -83,7 +83,7 @@ template=$(ti_load_template "skills/ct-research-agent/SKILL.md")
83
83
  | `{{DELIVERABLES_LIST}}` | `task.deliverables` | Expected outputs |
84
84
  | `{{ACCEPTANCE_CRITERIA}}` | Extracted | Completion criteria |
85
85
  | `{{DEPENDS_LIST}}` | `task.depends` | Completed dependencies |
86
- | `{{MANIFEST_SUMMARIES}}` | MANIFEST.jsonl | Key findings from previous agents |
86
+ | `{{MANIFEST_SUMMARIES}}` | pipeline_manifest | Key findings from previous agents |
87
87
  | `{{NEXT_TASK_IDS}}` | Dependency analysis | Tasks unblocked after completion |
88
88
 
89
89
  ---
@@ -115,7 +115,7 @@ For fine-grained control over token injection, use `lib/token-inject.sh` directl
115
115
  | **Task Commands** | `{{TASK_SHOW_CMD}}`, `{{TASK_START_CMD}}`, `{{TASK_COMPLETE_CMD}}`, etc. | CLEO defaults |
116
116
  | **Output Paths** | `{{OUTPUT_DIR}}`, `{{MANIFEST_PATH}}` | CLEO defaults |
117
117
  | **Task Context** | `{{TASK_TITLE}}`, `{{TASK_DESCRIPTION}}`, `{{DEPENDS_LIST}}`, etc. | From CLEO task data |
118
- | **Manifest Context** | `{{MANIFEST_SUMMARIES}}` | From recent MANIFEST.jsonl entries |
118
+ | **Manifest Context** | `{{MANIFEST_SUMMARIES}}` | From recent pipeline_manifest entries |
119
119
 
120
120
  ### Manual Token Injection Example
121
121
 
@@ -156,7 +156,7 @@ echo "$template" | grep -c '{{' && echo "WARNING: Uninjected tokens remain"
156
156
 
157
157
  Token defaults (from `skills/_shared/placeholders.json`):
158
158
  - `{{OUTPUT_DIR}}` -> `.cleo/agent-outputs`
159
- - `{{MANIFEST_PATH}}` -> `.cleo/agent-outputs/MANIFEST.jsonl`
159
+ - `{{MANIFEST_PATH}}` -> retired (ADR-027) — use `cleo manifest append`
160
160
 
161
161
  ### Inline Protocol Block (when CLI unavailable)
162
162
 
@@ -165,8 +165,8 @@ Token defaults (from `skills/_shared/placeholders.json`):
165
165
 
166
166
  OUTPUT REQUIREMENTS:
167
167
  1. MUST write findings to: {{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md
168
- 2. MUST append ONE line to: {{MANIFEST_PATH}}
169
- 3. MUST return ONLY: "Research complete. See MANIFEST.jsonl for summary."
168
+ 2. MUST append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027/T1093)
169
+ 3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
170
170
  4. MUST NOT return research content in response.
171
171
 
172
172
  CLEO INTEGRATION:
@@ -107,7 +107,7 @@ Context injection for research and investigation tasks spawned via cleo-subagent
107
107
 
108
108
  1. MUST write findings to: `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`
109
109
  2. MUST append ONE line to: `{{MANIFEST_PATH}}`
110
- 3. MUST return ONLY: "Research complete. See MANIFEST.jsonl for summary."
110
+ 3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
111
111
  4. MUST NOT return research content in response
112
112
 
113
113
  ---
@@ -155,7 +155,7 @@ Write to `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`:
155
155
 
156
156
  ## Manifest Entry Format
157
157
 
158
- Append ONE line (no pretty-printing) to `{{MANIFEST_PATH}}`:
158
+ Append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027):
159
159
 
160
160
  ```json
161
161
  {"id":"{{TOPIC_SLUG}}-{{DATE}}","file":"{{DATE}}_{{TOPIC_SLUG}}.md","title":"{{RESEARCH_TITLE}}","date":"{{DATE}}","status":"complete","agent_type":"research","topics":{{TOPICS_JSON}},"key_findings":["Finding 1","Finding 2","Finding 3"],"actionable":true,"needs_followup":[],"linked_tasks":["{{EPIC_ID}}","{{TASK_ID}}"]}
@@ -195,7 +195,7 @@ If complete answers cannot be found:
195
195
  3. Set manifest `"status": "partial"`
196
196
  4. Add suggestions for followup to `needs_followup`
197
197
  5. Complete task
198
- 6. Return: "Research partial. See MANIFEST.jsonl for details."
198
+ 6. Return: "Research partial. Manifest appended to pipeline_manifest."
199
199
 
200
200
  ### Blocked Research
201
201
 
@@ -205,7 +205,7 @@ If research cannot proceed (access denied, topic too broad, etc.):
205
205
  2. Set manifest `"status": "blocked"`
206
206
  3. Add blocker details to `needs_followup`
207
207
  4. Do NOT complete task
208
- 5. Return: "Research blocked. See MANIFEST.jsonl for blocker details."
208
+ 5. Return: "Research blocked. Manifest appended to pipeline_manifest."
209
209
 
210
210
  ---
211
211
 
@@ -165,7 +165,7 @@ Specifications go in: `docs/specs/{{SPEC_NAME}}.md`
165
165
 
166
166
  1. MUST write specification to: `docs/specs/{{SPEC_NAME}}.md`
167
167
  2. MUST append ONE line to: `{{MANIFEST_PATH}}`
168
- 3. MUST return ONLY: "Specification complete. See MANIFEST.jsonl for summary."
168
+ 3. MUST return ONLY: "Specification complete. Manifest appended to pipeline_manifest."
169
169
  4. MUST NOT return specification content in response
170
170
 
171
171
  ### Manifest Entry Format
@@ -110,7 +110,7 @@ Context injection for implementation tasks spawned via cleo-subagent. Provides d
110
110
 
111
111
  1. MUST write findings to: `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`
112
112
  2. MUST append ONE line to: `{{MANIFEST_PATH}}`
113
- 3. MUST return ONLY: "Implementation complete. See MANIFEST.jsonl for summary."
113
+ 3. MUST return ONLY: "Implementation complete. Manifest appended to pipeline_manifest."
114
114
  4. MUST NOT return implementation details in response
115
115
 
116
116
  ---
@@ -162,7 +162,7 @@ Write to `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`:
162
162
 
163
163
  ## Manifest Entry Format
164
164
 
165
- Append ONE line (no pretty-printing) to `{{MANIFEST_PATH}}`:
165
+ Append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027):
166
166
 
167
167
  ```json
168
168
  {"id":"{{TOPIC_SLUG}}-{{DATE}}","file":"{{DATE}}_{{TOPIC_SLUG}}.md","title":"{{TASK_NAME}}","date":"{{DATE}}","status":"complete","agent_type":"implementation","topics":{{TOPICS_JSON}},"key_findings":["Completed: deliverable 1","Completed: deliverable 2","All acceptance criteria passed"],"actionable":false,"needs_followup":[],"linked_tasks":["{{EPIC_ID}}","{{TASK_ID}}"]}
@@ -205,7 +205,7 @@ If all deliverables cannot be produced:
205
205
  3. Set manifest `"status": "partial"`
206
206
  4. Add blocking items to `needs_followup`
207
207
  5. Complete task (partial work is progress)
208
- 6. Return: "Implementation partial. See MANIFEST.jsonl for details."
208
+ 6. Return: "Implementation partial. Manifest appended to pipeline_manifest."
209
209
 
210
210
  ### Blocked Execution
211
211
 
@@ -215,7 +215,7 @@ If work cannot proceed (missing dependencies, access issues, unclear requirement
215
215
  2. Set manifest `"status": "blocked"`
216
216
  3. Add blocker details to `needs_followup`
217
217
  4. Do NOT complete task
218
- 5. Return: "Implementation blocked. See MANIFEST.jsonl for blocker details."
218
+ 5. Return: "Implementation blocked. Manifest appended to pipeline_manifest."
219
219
 
220
220
  ### Acceptance Criteria Failure
221
221
 
@@ -125,7 +125,7 @@ Context injection for compliance validation tasks spawned via cleo-subagent. Pro
125
125
 
126
126
  1. MUST write validation report to: `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`
127
127
  2. MUST append ONE line to: `{{MANIFEST_PATH}}`
128
- 3. MUST return ONLY: "Validation complete. See MANIFEST.jsonl for summary."
128
+ 3. MUST return ONLY: "Validation complete. Manifest appended to pipeline_manifest."
129
129
  4. MUST NOT return validation content in response
130
130
 
131
131
  ### Manifest Entry Format