@cleocode/skills 2.0.0
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/dispatch-config.json +404 -0
- package/index.d.ts +178 -0
- package/index.js +405 -0
- package/package.json +14 -0
- package/profiles/core.json +7 -0
- package/profiles/full.json +10 -0
- package/profiles/minimal.json +7 -0
- package/profiles/recommended.json +7 -0
- package/provider-skills-map.json +97 -0
- package/skills/_shared/cleo-style-guide.md +84 -0
- package/skills/_shared/manifest-operations.md +810 -0
- package/skills/_shared/placeholders.json +433 -0
- package/skills/_shared/skill-chaining-patterns.md +237 -0
- package/skills/_shared/subagent-protocol-base.md +223 -0
- package/skills/_shared/task-system-integration.md +232 -0
- package/skills/_shared/testing-framework-config.md +110 -0
- package/skills/ct-cleo/SKILL.md +490 -0
- package/skills/ct-cleo/references/anti-patterns.md +19 -0
- package/skills/ct-cleo/references/loom-lifecycle.md +136 -0
- package/skills/ct-cleo/references/orchestrator-constraints.md +55 -0
- package/skills/ct-cleo/references/session-protocol.md +162 -0
- package/skills/ct-codebase-mapper/SKILL.md +82 -0
- package/skills/ct-contribution/SKILL.md +521 -0
- package/skills/ct-contribution/templates/contribution-init.json +21 -0
- package/skills/ct-dev-workflow/SKILL.md +423 -0
- package/skills/ct-docs-lookup/SKILL.md +66 -0
- package/skills/ct-docs-review/SKILL.md +175 -0
- package/skills/ct-docs-write/SKILL.md +108 -0
- package/skills/ct-documentor/SKILL.md +231 -0
- package/skills/ct-epic-architect/SKILL.md +305 -0
- package/skills/ct-epic-architect/references/bug-epic-example.md +172 -0
- package/skills/ct-epic-architect/references/commands.md +201 -0
- package/skills/ct-epic-architect/references/feature-epic-example.md +210 -0
- package/skills/ct-epic-architect/references/migration-epic-example.md +244 -0
- package/skills/ct-epic-architect/references/output-format.md +92 -0
- package/skills/ct-epic-architect/references/patterns.md +284 -0
- package/skills/ct-epic-architect/references/refactor-epic-example.md +412 -0
- package/skills/ct-epic-architect/references/research-epic-example.md +226 -0
- package/skills/ct-epic-architect/references/shell-escaping.md +86 -0
- package/skills/ct-epic-architect/references/skill-aware-execution.md +195 -0
- package/skills/ct-grade/SKILL.md +230 -0
- package/skills/ct-grade/agents/analysis-reporter.md +203 -0
- package/skills/ct-grade/agents/blind-comparator.md +157 -0
- package/skills/ct-grade/agents/scenario-runner.md +134 -0
- package/skills/ct-grade/eval-viewer/__pycache__/generate_grade_review.cpython-314.pyc +0 -0
- package/skills/ct-grade/eval-viewer/generate_grade_review.py +1138 -0
- package/skills/ct-grade/eval-viewer/generate_grade_viewer.py +544 -0
- package/skills/ct-grade/eval-viewer/generate_review.py +283 -0
- package/skills/ct-grade/eval-viewer/grade-review.html +1574 -0
- package/skills/ct-grade/eval-viewer/viewer.html +219 -0
- package/skills/ct-grade/evals/evals.json +94 -0
- package/skills/ct-grade/references/ab-test-methodology.md +150 -0
- package/skills/ct-grade/references/domains.md +137 -0
- package/skills/ct-grade/references/grade-spec.md +236 -0
- package/skills/ct-grade/references/scenario-playbook.md +234 -0
- package/skills/ct-grade/references/token-tracking.md +120 -0
- package/skills/ct-grade/scripts/__pycache__/audit_analyzer.cpython-314.pyc +0 -0
- package/skills/ct-grade/scripts/__pycache__/run_ab_test.cpython-314.pyc +0 -0
- package/skills/ct-grade/scripts/__pycache__/run_all.cpython-314.pyc +0 -0
- package/skills/ct-grade/scripts/__pycache__/token_tracker.cpython-314.pyc +0 -0
- package/skills/ct-grade/scripts/audit_analyzer.py +279 -0
- package/skills/ct-grade/scripts/generate_report.py +283 -0
- package/skills/ct-grade/scripts/run_ab_test.py +504 -0
- package/skills/ct-grade/scripts/run_all.py +287 -0
- package/skills/ct-grade/scripts/setup_run.py +183 -0
- package/skills/ct-grade/scripts/token_tracker.py +630 -0
- package/skills/ct-grade-v2-1/SKILL.md +237 -0
- package/skills/ct-grade-v2-1/agents/analysis-reporter.md +203 -0
- package/skills/ct-grade-v2-1/agents/blind-comparator.md +157 -0
- package/skills/ct-grade-v2-1/agents/scenario-runner.md +179 -0
- package/skills/ct-grade-v2-1/evals/evals.json +74 -0
- package/skills/ct-grade-v2-1/grade-viewer/__pycache__/build_op_stats.cpython-314.pyc +0 -0
- package/skills/ct-grade-v2-1/grade-viewer/__pycache__/generate_grade_review.cpython-314.pyc +0 -0
- package/skills/ct-grade-v2-1/grade-viewer/build_op_stats.py +174 -0
- package/skills/ct-grade-v2-1/grade-viewer/eval-analysis.json +41 -0
- package/skills/ct-grade-v2-1/grade-viewer/eval-report.md +34 -0
- package/skills/ct-grade-v2-1/grade-viewer/generate_grade_review.py +1023 -0
- package/skills/ct-grade-v2-1/grade-viewer/generate_grade_viewer.py +548 -0
- package/skills/ct-grade-v2-1/grade-viewer/grade-review-eval.html +613 -0
- package/skills/ct-grade-v2-1/grade-viewer/grade-review.html +1532 -0
- package/skills/ct-grade-v2-1/grade-viewer/viewer.html +620 -0
- package/skills/ct-grade-v2-1/manifest-entry.json +31 -0
- package/skills/ct-grade-v2-1/references/ab-testing.md +233 -0
- package/skills/ct-grade-v2-1/references/domains-ssot.md +156 -0
- package/skills/ct-grade-v2-1/references/grade-spec-v2.md +167 -0
- package/skills/ct-grade-v2-1/references/playbook-v2.md +393 -0
- package/skills/ct-grade-v2-1/references/token-tracking.md +202 -0
- package/skills/ct-grade-v2-1/scripts/generate_report.py +419 -0
- package/skills/ct-grade-v2-1/scripts/run_ab_test.py +493 -0
- package/skills/ct-grade-v2-1/scripts/run_scenario.py +396 -0
- package/skills/ct-grade-v2-1/scripts/setup_run.py +207 -0
- package/skills/ct-grade-v2-1/scripts/token_tracker.py +175 -0
- package/skills/ct-memory/SKILL.md +84 -0
- package/skills/ct-orchestrator/INSTALL.md +61 -0
- package/skills/ct-orchestrator/README.md +69 -0
- package/skills/ct-orchestrator/SKILL.md +380 -0
- package/skills/ct-orchestrator/manifest-entry.json +19 -0
- package/skills/ct-orchestrator/orchestrator-prompt.txt +17 -0
- package/skills/ct-orchestrator/references/SUBAGENT-PROTOCOL-BLOCK.md +66 -0
- package/skills/ct-orchestrator/references/autonomous-operation.md +167 -0
- package/skills/ct-orchestrator/references/lifecycle-gates.md +98 -0
- package/skills/ct-orchestrator/references/orchestrator-compliance.md +271 -0
- package/skills/ct-orchestrator/references/orchestrator-handoffs.md +85 -0
- package/skills/ct-orchestrator/references/orchestrator-patterns.md +164 -0
- package/skills/ct-orchestrator/references/orchestrator-recovery.md +113 -0
- package/skills/ct-orchestrator/references/orchestrator-spawning.md +271 -0
- package/skills/ct-orchestrator/references/orchestrator-tokens.md +180 -0
- package/skills/ct-research-agent/SKILL.md +226 -0
- package/skills/ct-skill-creator/.cleo/.context-state.json +13 -0
- package/skills/ct-skill-creator/.cleo/logs/cleo.2026-03-07.1.log +24 -0
- package/skills/ct-skill-creator/.cleo/tasks.db +0 -0
- package/skills/ct-skill-creator/SKILL.md +356 -0
- package/skills/ct-skill-creator/agents/analyzer.md +276 -0
- package/skills/ct-skill-creator/agents/comparator.md +204 -0
- package/skills/ct-skill-creator/agents/grader.md +225 -0
- package/skills/ct-skill-creator/assets/eval_review.html +146 -0
- package/skills/ct-skill-creator/eval-viewer/__pycache__/generate_review.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/ct-skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/ct-skill-creator/manifest-entry.json +17 -0
- package/skills/ct-skill-creator/references/dynamic-context.md +228 -0
- package/skills/ct-skill-creator/references/frontmatter.md +83 -0
- package/skills/ct-skill-creator/references/invocation-control.md +165 -0
- package/skills/ct-skill-creator/references/output-patterns.md +86 -0
- package/skills/ct-skill-creator/references/provider-deployment.md +175 -0
- package/skills/ct-skill-creator/references/schemas.md +430 -0
- package/skills/ct-skill-creator/references/workflows.md +28 -0
- package/skills/ct-skill-creator/scripts/__init__.py +1 -0
- package/skills/ct-skill-creator/scripts/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/aggregate_benchmark.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/generate_report.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/improve_description.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/init_skill.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/quick_validate.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/run_eval.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/run_loop.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/__pycache__/utils.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/ct-skill-creator/scripts/generate_report.py +326 -0
- package/skills/ct-skill-creator/scripts/improve_description.py +247 -0
- package/skills/ct-skill-creator/scripts/init_skill.py +306 -0
- package/skills/ct-skill-creator/scripts/package_skill.py +110 -0
- package/skills/ct-skill-creator/scripts/quick_validate.py +97 -0
- package/skills/ct-skill-creator/scripts/run_eval.py +310 -0
- package/skills/ct-skill-creator/scripts/run_loop.py +328 -0
- package/skills/ct-skill-creator/scripts/utils.py +47 -0
- package/skills/ct-skill-validator/SKILL.md +178 -0
- package/skills/ct-skill-validator/agents/ecosystem-checker.md +151 -0
- package/skills/ct-skill-validator/assets/valid-skill-example.md +13 -0
- package/skills/ct-skill-validator/evals/eval_set.json +14 -0
- package/skills/ct-skill-validator/evals/evals.json +52 -0
- package/skills/ct-skill-validator/manifest-entry.json +20 -0
- package/skills/ct-skill-validator/references/cleo-ecosystem-rules.md +163 -0
- package/skills/ct-skill-validator/references/validation-rules.md +168 -0
- package/skills/ct-skill-validator/scripts/__init__.py +0 -0
- package/skills/ct-skill-validator/scripts/__pycache__/audit_body.cpython-314.pyc +0 -0
- package/skills/ct-skill-validator/scripts/__pycache__/check_ecosystem.cpython-314.pyc +0 -0
- package/skills/ct-skill-validator/scripts/__pycache__/generate_validation_report.cpython-314.pyc +0 -0
- package/skills/ct-skill-validator/scripts/__pycache__/validate.cpython-314.pyc +0 -0
- package/skills/ct-skill-validator/scripts/audit_body.py +242 -0
- package/skills/ct-skill-validator/scripts/check_ecosystem.py +169 -0
- package/skills/ct-skill-validator/scripts/check_manifest.py +172 -0
- package/skills/ct-skill-validator/scripts/generate_validation_report.py +442 -0
- package/skills/ct-skill-validator/scripts/validate.py +422 -0
- package/skills/ct-spec-writer/SKILL.md +189 -0
- package/skills/ct-stickynote/README.md +14 -0
- package/skills/ct-stickynote/SKILL.md +46 -0
- package/skills/ct-task-executor/SKILL.md +296 -0
- package/skills/ct-validator/SKILL.md +216 -0
- package/skills/manifest.json +469 -0
- package/skills.json +281 -0
|
@@ -0,0 +1,810 @@
|
|
|
1
|
+
# Manifest Operations Reference
|
|
2
|
+
|
|
3
|
+
**Provenance**: T3154 (Epic: T3147) - Single-source reference for all manifest operations
|
|
4
|
+
**Status**: ACTIVE
|
|
5
|
+
**Version**: 1.0.0
|
|
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.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The manifest system provides O(1) append operations and race-condition-free concurrent writes through JSONL format. Each line is a complete JSON object representing one research/output entry.
|
|
14
|
+
|
|
15
|
+
**Default Paths**:
|
|
16
|
+
- Output directory: `claudedocs/agent-outputs/` (configurable via `agentOutputs.directory`)
|
|
17
|
+
- Manifest file: `MANIFEST.jsonl` (configurable via `agentOutputs.manifestFile`)
|
|
18
|
+
- Full path: `{{OUTPUT_DIR}}/{{MANIFEST_PATH}}`
|
|
19
|
+
|
|
20
|
+
**Design Principles**:
|
|
21
|
+
- Append-only writes preserve audit trail
|
|
22
|
+
- Single-line corruption doesn't corrupt entire file
|
|
23
|
+
- Concurrent writes are safe (atomic line appends)
|
|
24
|
+
- Orchestrators read manifest summaries, NOT full files
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## CLI Commands
|
|
29
|
+
|
|
30
|
+
### cleo research add
|
|
31
|
+
|
|
32
|
+
Create a new manifest entry for agent output.
|
|
33
|
+
|
|
34
|
+
**Usage**:
|
|
35
|
+
```bash
|
|
36
|
+
cleo research add \
|
|
37
|
+
--title "Entry Title" \
|
|
38
|
+
--file "path/to/output.md" \
|
|
39
|
+
--topics "topic1,topic2,topic3" \
|
|
40
|
+
--findings "Finding 1,Finding 2,Finding 3" \
|
|
41
|
+
[--status STATUS] \
|
|
42
|
+
[--task T####] \
|
|
43
|
+
[--epic T####] \
|
|
44
|
+
[--actionable | --not-actionable] \
|
|
45
|
+
[--needs-followup T001,T002] \
|
|
46
|
+
[--agent-type TYPE]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Required Flags**:
|
|
50
|
+
| Flag | Description | Example |
|
|
51
|
+
|------|-------------|---------|
|
|
52
|
+
| `--title` | Human-readable title | `"Authentication Research"` |
|
|
53
|
+
| `--file` | Relative path to output file | `"2026-02-07_auth-research.md"` |
|
|
54
|
+
| `--topics` | Comma-separated topic tags | `"authentication,security,jwt"` |
|
|
55
|
+
| `--findings` | Comma-separated key findings (1-7 items) | `"JWT tokens expire after 1h,OAuth2 preferred,PKCE required"` |
|
|
56
|
+
|
|
57
|
+
**Optional Flags**:
|
|
58
|
+
| Flag | Default | Valid Values |
|
|
59
|
+
|------|---------|--------------|
|
|
60
|
+
| `--status` | `complete` | `complete`, `partial`, `blocked` |
|
|
61
|
+
| `--task` | none | Task ID (e.g., `T1234`) |
|
|
62
|
+
| `--epic` | none | Epic ID (e.g., `T1200`) |
|
|
63
|
+
| `--actionable` | `true` | Boolean flag |
|
|
64
|
+
| `--not-actionable` | - | Negates actionable |
|
|
65
|
+
| `--needs-followup` | `[]` | Comma-separated task IDs |
|
|
66
|
+
| `--agent-type` | `research` | See Agent Type Values below |
|
|
67
|
+
|
|
68
|
+
**Agent Type Values** (RCASD-IVTR+C protocol + workflow types):
|
|
69
|
+
- **Protocol types**: `research`, `consensus`, `specification`, `decomposition`, `implementation`, `contribution`, `release`
|
|
70
|
+
- **Workflow types**: `validation`, `documentation`, `analysis`, `testing`, `cleanup`, `design`, `architecture`, `report`
|
|
71
|
+
- **Extended types**: `synthesis`, `orchestrator`, `handoff`, `verification`, `review`
|
|
72
|
+
- **Skill types**: Any `ct-*` prefix (e.g., `ct-orchestrator`)
|
|
73
|
+
|
|
74
|
+
**Example**:
|
|
75
|
+
```bash
|
|
76
|
+
cleo research add \
|
|
77
|
+
--title "JWT Authentication Best Practices" \
|
|
78
|
+
--file "2026-02-07_jwt-auth.md" \
|
|
79
|
+
--topics "authentication,jwt,security" \
|
|
80
|
+
--findings "Use RS256 for asymmetric signing,Tokens expire in 1h,Refresh tokens stored securely" \
|
|
81
|
+
--status complete \
|
|
82
|
+
--task T3154 \
|
|
83
|
+
--actionable \
|
|
84
|
+
--agent-type research
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Output**: JSON with created entry ID
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"success": true,
|
|
91
|
+
"entryId": "jwt-auth-2026-02-07",
|
|
92
|
+
"manifestPath": "claudedocs/agent-outputs/MANIFEST.jsonl"
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### cleo research update
|
|
99
|
+
|
|
100
|
+
Update an existing manifest entry.
|
|
101
|
+
|
|
102
|
+
**Usage**:
|
|
103
|
+
```bash
|
|
104
|
+
cleo research update <entry-id> \
|
|
105
|
+
[--title "New Title"] \
|
|
106
|
+
[--status STATUS] \
|
|
107
|
+
[--findings "F1,F2,F3"] \
|
|
108
|
+
[--topics "T1,T2"] \
|
|
109
|
+
[--actionable | --not-actionable] \
|
|
110
|
+
[--needs-followup T001,T002]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Parameters**:
|
|
114
|
+
- `<entry-id>`: Entry ID from manifest (e.g., `jwt-auth-2026-02-07`)
|
|
115
|
+
|
|
116
|
+
**Flags**: Same as `add` command (all optional for update)
|
|
117
|
+
|
|
118
|
+
**Example**:
|
|
119
|
+
```bash
|
|
120
|
+
cleo research update jwt-auth-2026-02-07 \
|
|
121
|
+
--status partial \
|
|
122
|
+
--needs-followup T3155,T3156
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### cleo research list
|
|
128
|
+
|
|
129
|
+
Query and filter manifest entries.
|
|
130
|
+
|
|
131
|
+
**Usage**:
|
|
132
|
+
```bash
|
|
133
|
+
cleo research list \
|
|
134
|
+
[--status STATUS] \
|
|
135
|
+
[--type TYPE] \
|
|
136
|
+
[--topic TOPIC] \
|
|
137
|
+
[--since DATE] \
|
|
138
|
+
[--limit N] \
|
|
139
|
+
[--actionable]
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Filter Options**:
|
|
143
|
+
| Flag | Description | Example |
|
|
144
|
+
|------|-------------|---------|
|
|
145
|
+
| `--status` | Filter by status | `complete`, `partial`, `blocked`, `archived` |
|
|
146
|
+
| `--type` | Filter by agent type | `research`, `implementation`, `validation` |
|
|
147
|
+
| `--topic` | Filter by topic tag | `authentication` |
|
|
148
|
+
| `--since` | Entries since date | `2026-02-01` (ISO 8601: YYYY-MM-DD) |
|
|
149
|
+
| `--limit` | Max results | `20` (default: 20) |
|
|
150
|
+
| `--actionable` | Only actionable entries | Boolean flag |
|
|
151
|
+
|
|
152
|
+
**Example**:
|
|
153
|
+
```bash
|
|
154
|
+
# Recent research entries
|
|
155
|
+
cleo research list --type research --since 2026-02-01 --limit 10
|
|
156
|
+
|
|
157
|
+
# Actionable partial entries
|
|
158
|
+
cleo research list --status partial --actionable
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Output**: JSON array with manifest entries
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"success": true,
|
|
165
|
+
"count": 3,
|
|
166
|
+
"entries": [
|
|
167
|
+
{
|
|
168
|
+
"id": "jwt-auth-2026-02-07",
|
|
169
|
+
"title": "JWT Authentication Best Practices",
|
|
170
|
+
"status": "complete",
|
|
171
|
+
"topics": ["authentication", "jwt", "security"],
|
|
172
|
+
"key_findings": ["Use RS256...", "Tokens expire...", "Refresh tokens..."]
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
### cleo research show
|
|
181
|
+
|
|
182
|
+
Display details of a specific manifest entry.
|
|
183
|
+
|
|
184
|
+
**Usage**:
|
|
185
|
+
```bash
|
|
186
|
+
cleo research show <entry-id> [--full | --findings-only]
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Parameters**:
|
|
190
|
+
- `<entry-id>`: Entry ID from manifest
|
|
191
|
+
|
|
192
|
+
**Options**:
|
|
193
|
+
| Flag | Description | Default |
|
|
194
|
+
|------|-------------|---------|
|
|
195
|
+
| `--findings-only` | Only show key_findings array | ✓ |
|
|
196
|
+
| `--full` | Include full file content (WARNING: large context) | |
|
|
197
|
+
|
|
198
|
+
**Example**:
|
|
199
|
+
```bash
|
|
200
|
+
# Minimal output (just key findings)
|
|
201
|
+
cleo research show jwt-auth-2026-02-07
|
|
202
|
+
|
|
203
|
+
# Full entry metadata
|
|
204
|
+
cleo research show jwt-auth-2026-02-07 --full
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Output**: JSON with entry details
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"success": true,
|
|
211
|
+
"entry": {
|
|
212
|
+
"id": "jwt-auth-2026-02-07",
|
|
213
|
+
"file": "2026-02-07_jwt-auth.md",
|
|
214
|
+
"title": "JWT Authentication Best Practices",
|
|
215
|
+
"date": "2026-02-07",
|
|
216
|
+
"status": "complete",
|
|
217
|
+
"topics": ["authentication", "jwt", "security"],
|
|
218
|
+
"key_findings": [
|
|
219
|
+
"Use RS256 for asymmetric signing",
|
|
220
|
+
"Tokens expire in 1h",
|
|
221
|
+
"Refresh tokens stored securely"
|
|
222
|
+
],
|
|
223
|
+
"actionable": true,
|
|
224
|
+
"needs_followup": [],
|
|
225
|
+
"linked_tasks": ["T3154"]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
### cleo research link
|
|
233
|
+
|
|
234
|
+
Link a research entry to a task (bidirectional association).
|
|
235
|
+
|
|
236
|
+
**Usage**:
|
|
237
|
+
```bash
|
|
238
|
+
cleo research link <task-id> <research-id> [--notes "Custom note"]
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Parameters**:
|
|
242
|
+
- `<task-id>`: Task ID (e.g., `T3154`)
|
|
243
|
+
- `<research-id>`: Entry ID from manifest
|
|
244
|
+
|
|
245
|
+
**Options**:
|
|
246
|
+
| Flag | Description |
|
|
247
|
+
|------|-------------|
|
|
248
|
+
| `--notes` | Custom note text instead of default |
|
|
249
|
+
|
|
250
|
+
**Example**:
|
|
251
|
+
```bash
|
|
252
|
+
cleo research link T3154 jwt-auth-2026-02-07
|
|
253
|
+
cleo research link T3154 jwt-auth-2026-02-07 --notes "Primary research source"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Effects**:
|
|
257
|
+
- Adds research ID to task's `.linkedResearch` array
|
|
258
|
+
- Adds task ID to manifest entry's `linked_tasks` array
|
|
259
|
+
- Creates bidirectional reference for discovery
|
|
260
|
+
|
|
261
|
+
**Verify Link**:
|
|
262
|
+
```bash
|
|
263
|
+
cleo show T3154 # Check .linkedResearch array
|
|
264
|
+
cleo research show jwt-auth-2026-02-07 # Check linked_tasks
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
### cleo research unlink
|
|
270
|
+
|
|
271
|
+
Remove link between research and task.
|
|
272
|
+
|
|
273
|
+
**Usage**:
|
|
274
|
+
```bash
|
|
275
|
+
cleo research unlink <task-id> <research-id>
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**Example**:
|
|
279
|
+
```bash
|
|
280
|
+
cleo research unlink T3154 jwt-auth-2026-02-07
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
### cleo research links
|
|
286
|
+
|
|
287
|
+
Show all research linked to a specific task.
|
|
288
|
+
|
|
289
|
+
**Usage**:
|
|
290
|
+
```bash
|
|
291
|
+
cleo research links <task-id>
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Example**:
|
|
295
|
+
```bash
|
|
296
|
+
cleo research links T3154
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Output**: JSON array of linked research entries
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
### cleo research pending
|
|
304
|
+
|
|
305
|
+
Show entries with `needs_followup` (orchestrator handoffs).
|
|
306
|
+
|
|
307
|
+
**Usage**:
|
|
308
|
+
```bash
|
|
309
|
+
cleo research pending [--brief]
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**Options**:
|
|
313
|
+
| Flag | Description |
|
|
314
|
+
|------|-------------|
|
|
315
|
+
| `--brief` | Minimal output (just IDs and followup tasks) |
|
|
316
|
+
|
|
317
|
+
**Example**:
|
|
318
|
+
```bash
|
|
319
|
+
cleo research pending
|
|
320
|
+
cleo research pending --brief
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**Output**: JSON array of entries requiring followup
|
|
324
|
+
```json
|
|
325
|
+
{
|
|
326
|
+
"success": true,
|
|
327
|
+
"count": 2,
|
|
328
|
+
"entries": [
|
|
329
|
+
{
|
|
330
|
+
"id": "partial-research-2026-02-06",
|
|
331
|
+
"title": "Incomplete Analysis",
|
|
332
|
+
"status": "partial",
|
|
333
|
+
"needs_followup": ["T3155", "T3156"]
|
|
334
|
+
}
|
|
335
|
+
]
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
### cleo research archive
|
|
342
|
+
|
|
343
|
+
Archive old manifest entries to maintain context efficiency.
|
|
344
|
+
|
|
345
|
+
**Usage**:
|
|
346
|
+
```bash
|
|
347
|
+
cleo research archive \
|
|
348
|
+
[--threshold BYTES] \
|
|
349
|
+
[--percent N] \
|
|
350
|
+
[--dry-run]
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**Options**:
|
|
354
|
+
| Flag | Default | Description |
|
|
355
|
+
|------|---------|-------------|
|
|
356
|
+
| `--threshold` | `200000` | Archive threshold in bytes (~50K tokens) |
|
|
357
|
+
| `--percent` | `50` | Percentage of oldest entries to archive |
|
|
358
|
+
| `--dry-run` | - | Show what would be archived without changes |
|
|
359
|
+
|
|
360
|
+
**Example**:
|
|
361
|
+
```bash
|
|
362
|
+
# Preview archival
|
|
363
|
+
cleo research archive --dry-run
|
|
364
|
+
|
|
365
|
+
# Archive oldest 50% when manifest exceeds 200KB
|
|
366
|
+
cleo research archive --threshold 200000 --percent 50
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
**Effects**:
|
|
370
|
+
- Moves entries to `{{OUTPUT_DIR}}/archive/MANIFEST-archive.jsonl`
|
|
371
|
+
- Updates status to `archived` in archive file
|
|
372
|
+
- Removes from main manifest to reduce context size
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
### cleo research archive-list
|
|
377
|
+
|
|
378
|
+
List entries from the archive file.
|
|
379
|
+
|
|
380
|
+
**Usage**:
|
|
381
|
+
```bash
|
|
382
|
+
cleo research archive-list \
|
|
383
|
+
[--limit N] \
|
|
384
|
+
[--since DATE]
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Options**:
|
|
388
|
+
| Flag | Default | Description |
|
|
389
|
+
|------|---------|-------------|
|
|
390
|
+
| `--limit` | `50` | Max entries to return |
|
|
391
|
+
| `--since` | none | Filter archived since date (ISO 8601) |
|
|
392
|
+
|
|
393
|
+
**Example**:
|
|
394
|
+
```bash
|
|
395
|
+
cleo research archive-list --limit 100 --since 2026-01-01
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
### cleo research status
|
|
401
|
+
|
|
402
|
+
Show manifest size and archival status.
|
|
403
|
+
|
|
404
|
+
**Usage**:
|
|
405
|
+
```bash
|
|
406
|
+
cleo research status
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**Output**: JSON with size metrics
|
|
410
|
+
```json
|
|
411
|
+
{
|
|
412
|
+
"success": true,
|
|
413
|
+
"manifest": {
|
|
414
|
+
"path": "claudedocs/agent-outputs/MANIFEST.jsonl",
|
|
415
|
+
"size": 153420,
|
|
416
|
+
"entryCount": 42,
|
|
417
|
+
"threshold": 200000,
|
|
418
|
+
"needsArchival": false
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
### cleo research stats
|
|
426
|
+
|
|
427
|
+
Show comprehensive manifest statistics.
|
|
428
|
+
|
|
429
|
+
**Usage**:
|
|
430
|
+
```bash
|
|
431
|
+
cleo research stats
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**Output**: JSON with detailed statistics
|
|
435
|
+
```json
|
|
436
|
+
{
|
|
437
|
+
"success": true,
|
|
438
|
+
"stats": {
|
|
439
|
+
"totalEntries": 42,
|
|
440
|
+
"byStatus": {
|
|
441
|
+
"complete": 35,
|
|
442
|
+
"partial": 5,
|
|
443
|
+
"blocked": 2
|
|
444
|
+
},
|
|
445
|
+
"byAgentType": {
|
|
446
|
+
"research": 20,
|
|
447
|
+
"implementation": 15,
|
|
448
|
+
"validation": 7
|
|
449
|
+
},
|
|
450
|
+
"actionableCount": 38,
|
|
451
|
+
"needsFollowupCount": 7
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
### cleo research validate
|
|
459
|
+
|
|
460
|
+
Validate manifest file integrity and entry format.
|
|
461
|
+
|
|
462
|
+
**Usage**:
|
|
463
|
+
```bash
|
|
464
|
+
cleo research validate [--fix] [--protocol] [--task T####]
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
**Options**:
|
|
468
|
+
| Flag | Description |
|
|
469
|
+
|------|-------------|
|
|
470
|
+
| `--fix` | Remove invalid entries (destructive) |
|
|
471
|
+
| `--protocol` | Validate against protocol requirements |
|
|
472
|
+
| `--task` | Validate entries linked to specific task |
|
|
473
|
+
|
|
474
|
+
**Example**:
|
|
475
|
+
```bash
|
|
476
|
+
# Check integrity
|
|
477
|
+
cleo research validate
|
|
478
|
+
|
|
479
|
+
# Fix invalid entries
|
|
480
|
+
cleo research validate --fix
|
|
481
|
+
|
|
482
|
+
# Validate protocol compliance for task outputs
|
|
483
|
+
cleo research validate --protocol --task T3154
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
**Validation Checks**:
|
|
487
|
+
- Valid JSON syntax per line
|
|
488
|
+
- Required fields present: `id`, `file`, `title`, `date`, `status`, `topics`, `key_findings`, `actionable`
|
|
489
|
+
- Status enum: `complete`, `partial`, `blocked`, `archived`
|
|
490
|
+
- Date format: ISO 8601 (YYYY-MM-DD)
|
|
491
|
+
- Field types: `topics` array, `key_findings` array, `actionable` boolean
|
|
492
|
+
- Agent type validity (protocol + workflow types)
|
|
493
|
+
|
|
494
|
+
**Exit Codes**:
|
|
495
|
+
- `0`: Validation passed
|
|
496
|
+
- `6`: Validation errors found (`EXIT_VALIDATION_ERROR`)
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
### cleo research compact
|
|
501
|
+
|
|
502
|
+
Remove duplicate/obsolete entries from manifest.
|
|
503
|
+
|
|
504
|
+
**Usage**:
|
|
505
|
+
```bash
|
|
506
|
+
cleo research compact
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**Effects**:
|
|
510
|
+
- Removes duplicate entries (same ID)
|
|
511
|
+
- Keeps most recent version of duplicates
|
|
512
|
+
- Atomic operation with backup
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
### cleo research get
|
|
517
|
+
|
|
518
|
+
Get single entry by ID (raw JSON object).
|
|
519
|
+
|
|
520
|
+
**Usage**:
|
|
521
|
+
```bash
|
|
522
|
+
cleo research get <entry-id>
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
**Example**:
|
|
526
|
+
```bash
|
|
527
|
+
cleo research get jwt-auth-2026-02-07
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
**Output**: Raw JSON object (no wrapper)
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
### cleo research inject
|
|
535
|
+
|
|
536
|
+
Output the subagent injection template for prompts.
|
|
537
|
+
|
|
538
|
+
**Usage**:
|
|
539
|
+
```bash
|
|
540
|
+
cleo research inject [--raw] [--clipboard]
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
**Options**:
|
|
544
|
+
| Flag | Description |
|
|
545
|
+
|------|-------------|
|
|
546
|
+
| `--raw` | Output template without variable substitution |
|
|
547
|
+
| `--clipboard` | Copy to clipboard (pbcopy/xclip) |
|
|
548
|
+
|
|
549
|
+
**Example**:
|
|
550
|
+
```bash
|
|
551
|
+
# Output with current values
|
|
552
|
+
cleo research inject
|
|
553
|
+
|
|
554
|
+
# Raw template with {{TOKENS}}
|
|
555
|
+
cleo research inject --raw
|
|
556
|
+
|
|
557
|
+
# Copy to clipboard
|
|
558
|
+
cleo research inject --clipboard
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
## Manifest Entry Schema
|
|
564
|
+
|
|
565
|
+
### Required Fields
|
|
566
|
+
|
|
567
|
+
| Field | Type | Description | Constraints |
|
|
568
|
+
|-------|------|-------------|-------------|
|
|
569
|
+
| `id` | string | Unique identifier | Format: `{topic-slug}-{date}` or `T####-{slug}` |
|
|
570
|
+
| `file` | string | Output file path | Relative to manifest directory |
|
|
571
|
+
| `title` | string | Human-readable title | Non-empty |
|
|
572
|
+
| `date` | string | Entry creation date | ISO 8601: YYYY-MM-DD |
|
|
573
|
+
| `status` | enum | Entry status | `complete`, `partial`, `blocked`, `archived` |
|
|
574
|
+
| `topics` | array | Categorization tags | Array of strings |
|
|
575
|
+
| `key_findings` | array | Key findings (1-7 items) | Array of strings, 1-7 items, one sentence each |
|
|
576
|
+
| `actionable` | boolean | Requires action | `true` or `false` |
|
|
577
|
+
|
|
578
|
+
### Optional Fields
|
|
579
|
+
|
|
580
|
+
| Field | Type | Description | Default |
|
|
581
|
+
|-------|------|-------------|---------|
|
|
582
|
+
| `agent_type` | string | Agent/protocol type | `research` |
|
|
583
|
+
| `needs_followup` | array | Task IDs requiring attention | `[]` |
|
|
584
|
+
| `linked_tasks` | array | Associated task IDs | `[]` |
|
|
585
|
+
| `audit` | object | Audit metadata (T2578) | See audit schema |
|
|
586
|
+
|
|
587
|
+
### Audit Object Schema (v2.10.0+)
|
|
588
|
+
|
|
589
|
+
When present, the `audit` field provides operational metadata:
|
|
590
|
+
|
|
591
|
+
```json
|
|
592
|
+
{
|
|
593
|
+
"audit": {
|
|
594
|
+
"created": {
|
|
595
|
+
"timestamp": "2026-02-07T05:00:00Z",
|
|
596
|
+
"agent": "cleo-subagent",
|
|
597
|
+
"taskId": "T3154"
|
|
598
|
+
},
|
|
599
|
+
"updated": {
|
|
600
|
+
"timestamp": "2026-02-07T06:00:00Z",
|
|
601
|
+
"agent": "ct-orchestrator",
|
|
602
|
+
"reason": "Status change to partial"
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
---
|
|
609
|
+
|
|
610
|
+
## Token Placeholders
|
|
611
|
+
|
|
612
|
+
### Standard Tokens (Pre-Resolved)
|
|
613
|
+
|
|
614
|
+
| Token | Description | Example |
|
|
615
|
+
|-------|-------------|---------|
|
|
616
|
+
| `{{TASK_ID}}` | Current task identifier | `T3154` |
|
|
617
|
+
| `{{EPIC_ID}}` | Parent epic identifier | `T3147` |
|
|
618
|
+
| `{{DATE}}` | Current date | `2026-02-07` |
|
|
619
|
+
| `{{TOPIC_SLUG}}` | URL-safe topic name | `jwt-authentication` |
|
|
620
|
+
| `{{OUTPUT_DIR}}` | Output directory | `claudedocs/agent-outputs` |
|
|
621
|
+
| `{{MANIFEST_PATH}}` | Manifest filename | `MANIFEST.jsonl` |
|
|
622
|
+
|
|
623
|
+
### Command Tokens (CLEO Defaults)
|
|
624
|
+
|
|
625
|
+
| Token | Default Value |
|
|
626
|
+
|-------|---------------|
|
|
627
|
+
| `{{TASK_LINK_CMD}}` | `cleo research link` |
|
|
628
|
+
| `{{TASK_COMPLETE_CMD}}` | `cleo complete` |
|
|
629
|
+
| `{{TASK_START_CMD}}` | `cleo start` |
|
|
630
|
+
| `{{TASK_SHOW_CMD}}` | `cleo show` |
|
|
631
|
+
|
|
632
|
+
**Note**: Orchestrators MUST pre-resolve all tokens before spawning subagents. Subagents CANNOT resolve `@` references or `{{TOKEN}}` patterns.
|
|
633
|
+
|
|
634
|
+
---
|
|
635
|
+
|
|
636
|
+
## Usage in Protocols
|
|
637
|
+
|
|
638
|
+
### Research Protocol Example
|
|
639
|
+
|
|
640
|
+
```markdown
|
|
641
|
+
## Output Requirements
|
|
642
|
+
|
|
643
|
+
1. Write findings to `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`
|
|
644
|
+
2. Create manifest entry:
|
|
645
|
+
|
|
646
|
+
```bash
|
|
647
|
+
cleo research add \
|
|
648
|
+
--title "{{TITLE}}" \
|
|
649
|
+
--file "{{DATE}}_{{TOPIC_SLUG}}.md" \
|
|
650
|
+
--topics "{{TOPICS_CSV}}" \
|
|
651
|
+
--findings "{{FINDINGS_CSV}}" \
|
|
652
|
+
--status complete \
|
|
653
|
+
--task {{TASK_ID}} \
|
|
654
|
+
--agent-type research
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
3. Link to task: `{{TASK_LINK_CMD}} {{TASK_ID}} {{ENTRY_ID}}`
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
### Implementation Protocol Example
|
|
661
|
+
|
|
662
|
+
```markdown
|
|
663
|
+
## Completion Sequence
|
|
664
|
+
|
|
665
|
+
```bash
|
|
666
|
+
# Write implementation file
|
|
667
|
+
# ...
|
|
668
|
+
|
|
669
|
+
# Record in manifest
|
|
670
|
+
cleo research add \
|
|
671
|
+
--title "{{TASK_TITLE}} Implementation" \
|
|
672
|
+
--file "{{OUTPUT_FILE}}" \
|
|
673
|
+
--topics "{{TASK_LABELS}}" \
|
|
674
|
+
--findings "Implemented X,Added Y,Modified Z" \
|
|
675
|
+
--status complete \
|
|
676
|
+
--task {{TASK_ID}} \
|
|
677
|
+
--agent-type implementation
|
|
678
|
+
|
|
679
|
+
# Complete task
|
|
680
|
+
{{TASK_COMPLETE_CMD}} {{TASK_ID}}
|
|
681
|
+
```
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
---
|
|
685
|
+
|
|
686
|
+
## Anti-Patterns
|
|
687
|
+
|
|
688
|
+
### ❌ Pretty-Printed JSON
|
|
689
|
+
|
|
690
|
+
```bash
|
|
691
|
+
# WRONG - Creates multiple lines
|
|
692
|
+
echo '{
|
|
693
|
+
"id": "test",
|
|
694
|
+
"title": "Test"
|
|
695
|
+
}' >> MANIFEST.jsonl
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
**Problem**: Breaks JSONL format (one object per line)
|
|
699
|
+
|
|
700
|
+
**Solution**: Use `jq -c` for compact output
|
|
701
|
+
```bash
|
|
702
|
+
jq -nc '{id: "test", title: "Test"}' >> MANIFEST.jsonl
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
---
|
|
706
|
+
|
|
707
|
+
### ❌ Direct File Writes
|
|
708
|
+
|
|
709
|
+
```bash
|
|
710
|
+
# WRONG - Bypasses validation
|
|
711
|
+
echo "$json" >> claudedocs/agent-outputs/MANIFEST.jsonl
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
**Problem**: No validation, no atomic operation, no audit trail
|
|
715
|
+
|
|
716
|
+
**Solution**: Use CLI commands
|
|
717
|
+
```bash
|
|
718
|
+
cleo research add --title "..." --file "..." --topics "..." --findings "..."
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
### ❌ Missing Key Findings
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
# WRONG - Empty findings array
|
|
727
|
+
cleo research add --findings ""
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
**Problem**: Manifest is for discovery - empty findings defeat purpose
|
|
731
|
+
|
|
732
|
+
**Solution**: Always provide 1-7 concise findings
|
|
733
|
+
```bash
|
|
734
|
+
cleo research add --findings "Finding 1,Finding 2,Finding 3"
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
|
|
739
|
+
### ❌ Returning Full Content
|
|
740
|
+
|
|
741
|
+
```markdown
|
|
742
|
+
**Subagent response:**
|
|
743
|
+
|
|
744
|
+
Here is my research:
|
|
745
|
+
|
|
746
|
+
# JWT Authentication
|
|
747
|
+
|
|
748
|
+
[5000 words of content...]
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
**Problem**: Bloats orchestrator context window
|
|
752
|
+
|
|
753
|
+
**Solution**: Return ONLY summary message
|
|
754
|
+
```markdown
|
|
755
|
+
Research complete. See MANIFEST.jsonl for summary.
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
---
|
|
759
|
+
|
|
760
|
+
### ❌ Unresolved Tokens in Subagent
|
|
761
|
+
|
|
762
|
+
```bash
|
|
763
|
+
# WRONG - Subagent cannot resolve @file references
|
|
764
|
+
cleo research add --findings "@findings.txt"
|
|
765
|
+
```
|
|
766
|
+
|
|
767
|
+
**Problem**: Subagents cannot resolve `@` or `{{TOKEN}}` patterns
|
|
768
|
+
|
|
769
|
+
**Solution**: Orchestrator must pre-resolve
|
|
770
|
+
```bash
|
|
771
|
+
# Orchestrator resolves before spawn
|
|
772
|
+
findings=$(cat findings.txt | tr '\n' ',' | sed 's/,$//')
|
|
773
|
+
# Then passes to subagent as plain text
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
---
|
|
777
|
+
|
|
778
|
+
### ❌ Skipping Task Link
|
|
779
|
+
|
|
780
|
+
```bash
|
|
781
|
+
# WRONG - No bidirectional association
|
|
782
|
+
cleo research add --title "..." --file "..." --topics "..." --findings "..."
|
|
783
|
+
# (missing --task flag)
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
**Problem**: Research orphaned, cannot be discovered from task
|
|
787
|
+
|
|
788
|
+
**Solution**: Always link to task
|
|
789
|
+
```bash
|
|
790
|
+
cleo research add \
|
|
791
|
+
--title "..." \
|
|
792
|
+
--file "..." \
|
|
793
|
+
--topics "..." \
|
|
794
|
+
--findings "..." \
|
|
795
|
+
--task {{TASK_ID}}
|
|
796
|
+
|
|
797
|
+
# Or link after creation
|
|
798
|
+
cleo research link {{TASK_ID}} {{ENTRY_ID}}
|
|
799
|
+
```
|
|
800
|
+
|
|
801
|
+
---
|
|
802
|
+
|
|
803
|
+
## References
|
|
804
|
+
|
|
805
|
+
- **Task System Integration**: `@skills/_shared/task-system-integration.md`
|
|
806
|
+
- **Subagent Protocol Base**: `@skills/_shared/subagent-protocol-base.md`
|
|
807
|
+
- **Research Manifest Library**: `lib/research-manifest.sh`
|
|
808
|
+
- **Research CLI**: `scripts/research.sh`
|
|
809
|
+
- **Exit Codes**: `lib/exit-codes.sh` (EXIT_VALIDATION_ERROR = 6)
|
|
810
|
+
- **RCASD-IVTR+C Protocol**: `docs/specs/PROJECT-LIFECYCLE-SPEC.md`
|