@cleocode/skills 2026.9.20 → 2026.9.22
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/README.md +46 -63
- package/frontmatter.d.mts +60 -0
- package/frontmatter.mjs +277 -0
- package/index.d.ts +3 -3
- package/index.js +34 -9
- package/package.json +4 -2
- package/profiles/core.json +10 -3
- package/profiles/full.json +10 -6
- package/profiles/recommended.json +29 -3
- package/skills/_shared/manifest-operations.md +19 -40
- package/skills/_shared/skill-chaining-patterns.md +5 -9
- package/skills/_shared/subagent-protocol-base.md +6 -6
- package/skills/_shared/task-system-integration.md +6 -6
- package/skills/ct-adr-recorder/SKILL.md +22 -16
- package/skills/ct-artifact-publisher/SKILL.md +14 -6
- package/skills/ct-cleo/SKILL.md +97 -16
- package/skills/ct-cleo/__tests__/injection-content.test.ts +62 -13
- package/skills/ct-cleo/references/loom-lifecycle.md +1 -1
- package/skills/{ct-memory/SKILL.md → ct-cleo/references/memory.md} +10 -18
- package/skills/ct-cleo/references/orchestrator-constraints.md +5 -5
- package/skills/ct-cleo/references/session-protocol.md +17 -9
- package/skills/{ct-stickynote/SKILL.md → ct-cleo/references/sticky-notes.md} +7 -25
- package/skills/ct-codebase-mapper/SKILL.md +66 -38
- package/skills/ct-consensus-voter/SKILL.md +14 -6
- package/skills/ct-contribution/SKILL.md +11 -5
- package/skills/ct-council/SKILL.md +5 -0
- package/skills/ct-dev-workflow/SKILL.md +9 -8
- package/skills/ct-documentor/SKILL.md +37 -34
- package/skills/{ct-docs-review/__tests__/skill-docs-review.test.ts → ct-documentor/__tests__/reviewing-reference.test.ts} +4 -3
- package/skills/{ct-docs-write/__tests__/skill-docs-write.test.ts → ct-documentor/__tests__/writing-reference.test.ts} +4 -3
- package/skills/ct-documentor/references/anti-patterns.md +8 -8
- package/skills/{ct-docs-write → ct-documentor}/references/audience-targeting.md +5 -5
- package/skills/ct-documentor/references/chain-orchestration.md +19 -19
- package/skills/{ct-docs-write → ct-documentor}/references/cleo-style-guide.md +1 -1
- package/skills/ct-documentor/references/doc-types-and-templates.md +1 -1
- package/skills/{ct-docs-review → ct-documentor}/references/pr-review-mode.md +1 -1
- package/skills/{ct-docs-review/SKILL.md → ct-documentor/references/reviewing.md} +6 -22
- package/skills/ct-documentor/references/style-coordination.md +5 -5
- package/skills/{ct-docs-review → ct-documentor}/references/style-violations.md +1 -1
- package/skills/{ct-docs-write/SKILL.md → ct-documentor/references/writing.md} +5 -21
- package/skills/ct-epic-architect/SKILL.md +16 -9
- package/skills/ct-epic-architect/references/commands.md +5 -5
- package/skills/ct-epic-architect/references/output-format.md +2 -2
- package/skills/ct-epic-architect/references/patterns.md +2 -2
- package/skills/ct-epic-architect/references/skill-aware-execution.md +3 -3
- package/skills/ct-grade/SKILL.md +7 -4
- package/skills/ct-grade/agents/scenario-runner.md +1 -1
- package/skills/ct-ivt-looper/SKILL.md +27 -21
- package/skills/ct-lead/SKILL.md +49 -12
- package/skills/ct-lead/references/aggregation-protocol.md +44 -21
- package/skills/ct-lead/references/spawn-pattern.md +12 -11
- package/skills/ct-orchestrator/README.md +2 -2
- package/skills/ct-orchestrator/SKILL.md +34 -11
- package/skills/ct-orchestrator/references/SUBAGENT-PROTOCOL-BLOCK.md +4 -4
- package/skills/ct-orchestrator/references/autonomous-operation.md +4 -4
- package/skills/ct-orchestrator/references/orchestrator-compliance.md +3 -3
- package/skills/ct-orchestrator/references/orchestrator-patterns.md +20 -19
- package/skills/ct-orchestrator/references/orchestrator-recovery.md +13 -23
- package/skills/ct-orchestrator/references/orchestrator-spawning.md +9 -10
- package/skills/ct-orchestrator/references/orchestrator-tokens.md +9 -9
- package/skills/ct-provenance-keeper/SKILL.md +14 -6
- package/skills/ct-release-orchestrator/SKILL.md +23 -13
- package/skills/ct-release-orchestrator/references/composition.md +1 -1
- package/skills/ct-release-orchestrator/references/release-types.md +33 -15
- package/skills/ct-research-agent/SKILL.md +18 -12
- package/skills/ct-research-agent/references/triggers-and-routing.md +4 -4
- package/skills/{ct-skill-creator → ct-skill-author}/SKILL.md +12 -4
- package/skills/{ct-skill-validator → ct-skill-author}/agents/ecosystem-checker.md +1 -1
- package/skills/{ct-skill-validator → ct-skill-author}/evals/quality_evals.json +10 -10
- package/skills/{ct-skill-validator → ct-skill-author}/evals/trigger_queries.json +1 -1
- package/skills/{ct-skill-validator → ct-skill-author}/references/cleo-ecosystem-rules.md +8 -4
- package/skills/{ct-skill-creator → ct-skill-author}/references/provider-deployment.md +10 -6
- package/skills/{ct-skill-validator/SKILL.md → ct-skill-author/references/validating.md} +14 -16
- package/skills/{ct-skill-validator → ct-skill-author}/references/validation-rules.md +2 -2
- package/skills/{ct-skill-validator → ct-skill-author}/scripts/_skill_finder.py +2 -2
- package/skills/{ct-skill-validator → ct-skill-author}/scripts/check_depth.py +2 -5
- package/skills/{ct-skill-validator → ct-skill-author}/scripts/generate_validation_report.py +1 -1
- package/skills/{ct-skill-validator → ct-skill-author}/scripts/run_quality_eval.py +2 -2
- package/skills/ct-spec-writer/SKILL.md +13 -7
- package/skills/ct-task-executor/SKILL.md +21 -21
- package/skills/ct-task-executor/references/common-failures.md +3 -3
- package/skills/ct-task-executor/references/evidence-and-gates.md +1 -0
- package/skills/ct-validator/SKILL.md +15 -9
- package/skills/ct-validator/references/compliance-reports.md +1 -1
- package/skills/ct-validator/references/validation-modes.md +3 -3
- package/skills/manifest.json +1313 -481
- package/dispatch-config.json +0 -983
- package/provider-skills-map.json +0 -97
- package/skills/ct-docs-lookup/SKILL.md +0 -181
- package/skills/ct-docs-lookup/references/ctx7-workflow.md +0 -198
- package/skills/ct-docs-lookup/references/library-id-resolution.md +0 -217
- package/skills/ct-docs-lookup/references/version-specific-docs.md +0 -220
- package/skills/ct-master-tac/SKILL.md +0 -116
- package/skills/ct-master-tac/__tests__/install.test.ts +0 -283
- package/skills/ct-master-tac/bundled/README.md +0 -40
- package/skills/ct-master-tac/bundled/protocols/architecture-decision.cant +0 -90
- package/skills/ct-master-tac/bundled/protocols/artifact-publish.cant +0 -105
- package/skills/ct-master-tac/bundled/protocols/consensus.cant +0 -85
- package/skills/ct-master-tac/bundled/protocols/contribution.cant +0 -92
- package/skills/ct-master-tac/bundled/protocols/decomposition.cant +0 -102
- package/skills/ct-master-tac/bundled/protocols/implementation.cant +0 -77
- package/skills/ct-master-tac/bundled/protocols/provenance.cant +0 -100
- package/skills/ct-master-tac/bundled/protocols/release.cant +0 -107
- package/skills/ct-master-tac/bundled/protocols/research.cant +0 -77
- package/skills/ct-master-tac/bundled/protocols/specification.cant +0 -77
- package/skills/ct-master-tac/bundled/protocols/testing.cant +0 -99
- package/skills/ct-master-tac/bundled/protocols/validation.cant +0 -75
- package/skills/ct-master-tac/bundled/teams/platform.cant +0 -115
- package/skills/ct-master-tac/manifest.json +0 -55
- package/skills/ct-skill-creator/eval-viewer/__pycache__/generate_review.cpython-314.pyc +0 -0
- package/skills/ct-skill-creator/manifest-entry.json +0 -17
- 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-validator/manifest-entry.json +0 -20
- package/skills/ct-stickynote/README.md +0 -14
- package/skills/signaldock-connect/SKILL.md +0 -132
- package/skills/signaldock-connect/assets/agent-card.json +0 -48
- package/skills/signaldock-connect/references/api-endpoints.md +0 -131
- package/skills.json +0 -495
- /package/skills/{ct-docs-review → ct-documentor}/references/inline-comment-patterns.md +0 -0
- /package/skills/{ct-docs-write → ct-documentor}/references/markdown-patterns.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/agents/analyzer.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/agents/comparator.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/agents/grader.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/assets/eval_review.html +0 -0
- /package/skills/{ct-skill-validator → ct-skill-author}/assets/valid-skill-example.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/eval-viewer/generate_review.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/eval-viewer/viewer.html +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/references/dynamic-context.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/references/frontmatter.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/references/invocation-control.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/references/output-patterns.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/references/schemas.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/references/workflows.md +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/__init__.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/aggregate_benchmark.py +0 -0
- /package/skills/{ct-skill-validator → ct-skill-author}/scripts/audit_body.py +0 -0
- /package/skills/{ct-skill-validator → ct-skill-author}/scripts/check_ecosystem.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/generate_report.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/improve_description.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/init_skill.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/package_skill.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/quick_validate.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/run_eval.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/run_loop.py +0 -0
- /package/skills/{ct-skill-creator → ct-skill-author}/scripts/utils.py +0 -0
- /package/skills/{ct-skill-validator → ct-skill-author}/scripts/validate.py +0 -0
|
@@ -18,11 +18,8 @@
|
|
|
18
18
|
## Context Budget Monitoring
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
# Check
|
|
22
|
-
cleo orchestrate context
|
|
23
|
-
|
|
24
|
-
# With specific token count
|
|
25
|
-
cleo orchestrate context --tokens 5000
|
|
21
|
+
# Check context usage for an epic
|
|
22
|
+
cleo orchestrate context T1575
|
|
26
23
|
```
|
|
27
24
|
|
|
28
25
|
**Status Thresholds**:
|
|
@@ -54,15 +51,14 @@ Orchestrator sessions may span multiple Claude conversations. This is expected a
|
|
|
54
51
|
### Cleanup Commands
|
|
55
52
|
|
|
56
53
|
```bash
|
|
57
|
-
# Standard garbage collection
|
|
54
|
+
# Standard garbage collection
|
|
58
55
|
cleo session gc
|
|
59
56
|
|
|
60
|
-
#
|
|
61
|
-
cleo session gc --
|
|
57
|
+
# Also end active sessions older than N days
|
|
58
|
+
cleo session gc --max-age 7
|
|
62
59
|
|
|
63
|
-
#
|
|
64
|
-
cleo session
|
|
65
|
-
cleo session gc --include-active --dry-run
|
|
60
|
+
# There is no dry-run; inspect first
|
|
61
|
+
cleo session list --status active
|
|
66
62
|
```
|
|
67
63
|
|
|
68
64
|
### Configuration
|
|
@@ -84,12 +80,12 @@ cleo config set retention.autoEndActiveAfterDays 14 # Extend to 2 weeks
|
|
|
84
80
|
|
|
85
81
|
2. **Session suspend for long waits**: Suspend when blocked on external factors
|
|
86
82
|
```bash
|
|
87
|
-
cleo session suspend --
|
|
83
|
+
cleo session suspend <sessionId> --reason "Awaiting code review"
|
|
88
84
|
```
|
|
89
85
|
|
|
90
86
|
3. **Periodic cleanup**: Run garbage collection periodically to remove stale sessions
|
|
91
87
|
```bash
|
|
92
|
-
cleo session gc --
|
|
88
|
+
cleo session gc --max-age 7
|
|
93
89
|
```
|
|
94
90
|
|
|
95
91
|
4. **Multi-day work**: No need to restart sessions daily - orchestrator sessions are designed for extended work periods
|
|
@@ -99,15 +95,9 @@ cleo config set retention.autoEndActiveAfterDays 14 # Extend to 2 weeks
|
|
|
99
95
|
## Validation
|
|
100
96
|
|
|
101
97
|
```bash
|
|
102
|
-
#
|
|
103
|
-
cleo orchestrate validate
|
|
104
|
-
|
|
105
|
-
# Validate for specific epic
|
|
106
|
-
cleo orchestrate validate --epic T1575
|
|
107
|
-
|
|
108
|
-
# Validate specific subagent output
|
|
109
|
-
cleo orchestrate validate --subagent research-id-2026-01-18
|
|
98
|
+
# Validate one task's subagent output
|
|
99
|
+
cleo orchestrate validate T1586
|
|
110
100
|
|
|
111
|
-
#
|
|
112
|
-
cleo orchestrate validate --manifest
|
|
101
|
+
# Validate a specific output file, and that a manifest entry was appended
|
|
102
|
+
cleo orchestrate validate T1586 --file <output-path> --manifest
|
|
113
103
|
```
|
|
@@ -11,14 +11,13 @@ Spawning is ALWAYS a two-step process: CLEO **prepares** the prompt, then the pr
|
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
# Get next dependency-safe task
|
|
14
|
-
cleo orchestrate next
|
|
14
|
+
cleo orchestrate next T1575
|
|
15
15
|
|
|
16
16
|
# Generate fully-resolved spawn prompt
|
|
17
17
|
cleo orchestrate spawn T1586
|
|
18
18
|
|
|
19
|
-
# Or
|
|
20
|
-
cleo orchestrate spawn T1586 --
|
|
21
|
-
cleo orchestrate spawn T1586 --template RESEARCH-AGENT # aliases work
|
|
19
|
+
# Or override the protocol (the skill follows from it)
|
|
20
|
+
cleo orchestrate spawn T1586 --protocol research
|
|
22
21
|
```
|
|
23
22
|
|
|
24
23
|
The `spawn` command returns:
|
|
@@ -110,7 +109,7 @@ skills/ct-documentor/SKILL.md
|
|
|
110
109
|
|
|
111
110
|
```bash
|
|
112
111
|
# Step 1: Get ready task
|
|
113
|
-
cleo orchestrate next
|
|
112
|
+
cleo orchestrate next T1575
|
|
114
113
|
# Returns: { nextTask: { id: "T1586", title: "...", priority: "high" } }
|
|
115
114
|
|
|
116
115
|
# Step 2: Generate spawn prompt (handles all token injection)
|
|
@@ -148,7 +147,7 @@ The function performs these steps automatically:
|
|
|
148
147
|
|
|
149
148
|
| Step | Action | Details |
|
|
150
149
|
|------|--------|---------|
|
|
151
|
-
| 1 | Read task from CLEO | `cleo show T1234
|
|
150
|
+
| 1 | Read task from CLEO | `cleo show T1234` |
|
|
152
151
|
| 2 | Select skill | Auto-dispatch from task type/labels or use override |
|
|
153
152
|
| 3 | Validate skill | Check compatibility with target model |
|
|
154
153
|
| 4 | Inject protocol | Load skill template + subagent protocol |
|
|
@@ -161,7 +160,7 @@ The function performs these steps automatically:
|
|
|
161
160
|
Step 6 validates that the generated prompt contains the `SUBAGENT PROTOCOL` marker. This is **mandatory** and will fail loudly if missing:
|
|
162
161
|
|
|
163
162
|
- **Exit code**: `EXIT_PROTOCOL_MISSING` (60)
|
|
164
|
-
- **Fix command**: `cleo
|
|
163
|
+
- **Fix command**: `cleo orchestrate spawn <taskId>` (regenerates the prompt with the protocol embedded)
|
|
165
164
|
- **Validation function**: `orchestrator_verify_protocol_injection()`
|
|
166
165
|
|
|
167
166
|
If validation fails, the spawn is **blocked** and you must fix the skill template or manually inject the protocol block.
|
|
@@ -266,7 +265,7 @@ ti_set_context "T1234" "$(date +%Y-%m-%d)" "auth-implementation"
|
|
|
266
265
|
|
|
267
266
|
# Set defaults and get task context
|
|
268
267
|
ti_set_defaults
|
|
269
|
-
task_json=$(cleo show T1234
|
|
268
|
+
task_json=$(cleo show T1234)
|
|
270
269
|
ti_set_task_context "$task_json"
|
|
271
270
|
```
|
|
272
271
|
|
|
@@ -290,6 +289,6 @@ Use Task tool with:
|
|
|
290
289
|
# Check manifest for completion
|
|
291
290
|
{{RESEARCH_SHOW_CMD}} <research-id>
|
|
292
291
|
|
|
293
|
-
# Or
|
|
294
|
-
|
|
292
|
+
# Or list the task's pipeline_manifest entries
|
|
293
|
+
cleo manifest list --task <taskId> --json --limit 1
|
|
295
294
|
```
|
|
@@ -16,7 +16,7 @@ The `spawn` command handles token injection automatically. For manual injection,
|
|
|
16
16
|
# 3. Gets task context from CLEO
|
|
17
17
|
# 4. Extracts manifest summaries
|
|
18
18
|
# 5. Injects all tokens
|
|
19
|
-
cleo orchestrate spawn T1586 --
|
|
19
|
+
cleo orchestrate spawn T1586 --protocol research
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
### Manual Token Injection
|
|
@@ -33,7 +33,7 @@ export TI_TOPIC_SLUG="my-research-topic"
|
|
|
33
33
|
ti_set_defaults
|
|
34
34
|
|
|
35
35
|
# 3. Optional: Get task context from CLEO
|
|
36
|
-
task_json=$(cleo show T1234
|
|
36
|
+
task_json=$(cleo show T1234)
|
|
37
37
|
ti_set_task_context "$task_json"
|
|
38
38
|
|
|
39
39
|
# 4. Load and inject skill template
|
|
@@ -70,7 +70,7 @@ template=$(ti_load_template "skills/ct-research-agent/SKILL.md")
|
|
|
70
70
|
|
|
71
71
|
| Token | Default Value |
|
|
72
72
|
|-------|---------------|
|
|
73
|
-
| `{{OUTPUT_DIR}}` | `.cleo/agent-outputs` |
|
|
73
|
+
| `{{OUTPUT_DIR}}` | `.cleo/agent-outputs` (legacy token — do not write there; record output with `cleo docs add`) |
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
### Task Context Tokens (populated from CLEO task data)
|
|
@@ -113,7 +113,7 @@ For fine-grained control over token injection, use `lib/token-inject.sh` directl
|
|
|
113
113
|
|----------|--------|--------|
|
|
114
114
|
| **Required** | `{{TASK_ID}}`, `{{DATE}}`, `{{TOPIC_SLUG}}` | Must be set before injection |
|
|
115
115
|
| **Task Commands** | `{{TASK_SHOW_CMD}}`, `{{TASK_START_CMD}}`, `{{TASK_COMPLETE_CMD}}`, etc. | CLEO defaults |
|
|
116
|
-
| **Output Paths** | `{{OUTPUT_DIR}}
|
|
116
|
+
| **Output Paths** | `{{OUTPUT_DIR}}` | Legacy CLEO default — record output with `cleo docs add` and manifest entries with `cleo manifest append` |
|
|
117
117
|
| **Task Context** | `{{TASK_TITLE}}`, `{{TASK_DESCRIPTION}}`, `{{DEPENDS_LIST}}`, etc. | From CLEO task data |
|
|
118
118
|
| **Manifest Context** | `{{MANIFEST_SUMMARIES}}` | From recent pipeline_manifest entries |
|
|
119
119
|
|
|
@@ -129,7 +129,7 @@ ti_set_context "T1234" "2026-01-20" "auth-research"
|
|
|
129
129
|
ti_set_defaults
|
|
130
130
|
|
|
131
131
|
# 3. Get task context from CLEO
|
|
132
|
-
task_json=$(cleo show T1234
|
|
132
|
+
task_json=$(cleo show T1234)
|
|
133
133
|
ti_set_task_context "$task_json"
|
|
134
134
|
|
|
135
135
|
# 4. Load and inject skill template
|
|
@@ -155,8 +155,8 @@ echo "$template" | grep -c '{{' && echo "WARNING: Uninjected tokens remain"
|
|
|
155
155
|
## Subagent Protocol Tokens
|
|
156
156
|
|
|
157
157
|
Token defaults (from `skills/_shared/placeholders.json`):
|
|
158
|
-
- `{{OUTPUT_DIR}}` -> `.cleo/agent-outputs`
|
|
159
|
-
-
|
|
158
|
+
- `{{OUTPUT_DIR}}` -> `.cleo/agent-outputs` (legacy token — record output with `cleo docs add`, never raw writes there)
|
|
159
|
+
- The flat manifest path token is retired (ADR-027) — use `cleo manifest append`
|
|
160
160
|
|
|
161
161
|
### Inline Protocol Block (when CLI unavailable)
|
|
162
162
|
|
|
@@ -164,8 +164,8 @@ Token defaults (from `skills/_shared/placeholders.json`):
|
|
|
164
164
|
## SUBAGENT PROTOCOL (RFC 2119 - MANDATORY)
|
|
165
165
|
|
|
166
166
|
OUTPUT REQUIREMENTS:
|
|
167
|
-
1. MUST
|
|
168
|
-
2. MUST append ONE entry via `cleo manifest append <json
|
|
167
|
+
1. MUST record findings with `cleo docs add {{TASK_ID}} --content - --type <kind> --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
|
|
168
|
+
2. MUST append ONE entry via `cleo manifest append --entry '<json>'` (writes to pipeline_manifest table per ADR-027/T1093)
|
|
169
169
|
3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
|
|
170
170
|
4. MUST NOT return research content in response.
|
|
171
171
|
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-provenance-keeper
|
|
3
3
|
description: "Generates in-toto v1 attestations, SLSA-level provenance records, SBOMs (CycloneDX or SPDX), and sigstore/cosign signatures for published artifacts. Invoked by ct-artifact-publisher as a delegation for signing and attestation. Records the full commit, then build, then artifact, then attestation, then registry chain in .cleo/releases.json and rejects publishes whose digest does not match the attestation. Triggers when artifact-publish reaches the provenance step or when a release needs SLSA L2+ attestation."
|
|
4
|
+
metadata:
|
|
5
|
+
version: 1.0.2
|
|
6
|
+
tier: on-demand
|
|
7
|
+
install: harness
|
|
8
|
+
covers:
|
|
9
|
+
- packages/core/src/validation/protocols/cant/provenance.cant
|
|
10
|
+
- packages/core/src/validation/protocols/protocols-markdown/provenance.md
|
|
11
|
+
lastReviewed: 2026-09-28
|
|
12
|
+
stability: stable
|
|
4
13
|
---
|
|
5
14
|
|
|
6
15
|
# Provenance Keeper
|
|
@@ -127,11 +136,10 @@ Each release appends a record in the following shape. The skill MUST populate ev
|
|
|
127
136
|
Validate the provenance entry through `cleo check protocol`:
|
|
128
137
|
|
|
129
138
|
```bash
|
|
130
|
-
cleo check protocol \
|
|
131
|
-
--
|
|
132
|
-
--
|
|
133
|
-
--
|
|
134
|
-
--hasSbom true
|
|
139
|
+
cleo check protocol provenance \
|
|
140
|
+
--task-id T4902 \
|
|
141
|
+
--has-attestation true \
|
|
142
|
+
--has-sbom true
|
|
135
143
|
```
|
|
136
144
|
|
|
137
145
|
Exit code 0 = provenance record is complete and verified. Exit code 90 = invalid config. Exit code 91 = signing key missing. Exit code 92 = signature invalid. Exit code 93 = digest mismatch (refuse to bind attestation). Exit code 94 = attestation format or subject is invalid.
|
|
@@ -158,4 +166,4 @@ Exit code 0 = provenance record is complete and verified. Exit code 90 = invalid
|
|
|
158
166
|
5. Default to sigstore keyless signing via OIDC in CI; fall back to gpg only when configured.
|
|
159
167
|
6. Generate CycloneDX SBOMs for every artifact with runtime dependencies.
|
|
160
168
|
7. `.cleo/releases.json` is append-only; never mutate past entries.
|
|
161
|
-
8. Validate every run via `cleo check protocol
|
|
169
|
+
8. Validate every run via `cleo check protocol provenance`.
|
|
@@ -2,14 +2,20 @@
|
|
|
2
2
|
name: ct-release-orchestrator
|
|
3
3
|
description: "Orchestrates the canonical 4-verb release pipeline introduced by SPEC-T9345: cleo release plan, then cleo release open, then PR + GHA tag workflow, then cleo release reconcile. The deprecated cleo release ship monolith was deleted in T10103 — do not invoke it. Use ship-e2e-smoke to validate the full pipeline end-to-end (dry-run by default). The full verb-to-state map is in docs/release/verb-matrix.md. Use when shipping a new version, validating the release pipeline end-to-end, or promoting a completed epic to released status."
|
|
4
4
|
protocol: release
|
|
5
|
-
loomStage: release
|
|
6
5
|
adrRefs:
|
|
7
6
|
- ADR-053
|
|
8
7
|
- ADR-063
|
|
9
8
|
- ADR-065
|
|
10
9
|
metadata:
|
|
11
|
-
version: 3.0.
|
|
12
|
-
|
|
10
|
+
version: 3.0.2
|
|
11
|
+
tier: on-demand
|
|
12
|
+
install: harness
|
|
13
|
+
covers:
|
|
14
|
+
- packages/core/src/validation/protocols/cant/release.cant
|
|
15
|
+
- packages/core/src/validation/protocols/protocols-markdown/release.md
|
|
16
|
+
- packages/cleo/src/cli/commands/release.ts
|
|
17
|
+
loomStage: release
|
|
18
|
+
lastReviewed: 2026-09-28
|
|
13
19
|
stability: stable
|
|
14
20
|
---
|
|
15
21
|
|
|
@@ -30,7 +36,7 @@ Owns the canonical 4-verb release pipeline established by SPEC-T9345 and finalis
|
|
|
30
36
|
| 1 | `cleo release plan <ver> --epic <id>` | _(none)_ → `planned` | Builds the Release Plan envelope; auto-writes `CHANGELOG.md` (T10105 closes the silent-skip gap) |
|
|
31
37
|
| 2 | `cleo release open <ver>` | `planned` → `pr-opened` | Dispatches `release-prepare.yml`; the workflow cuts the branch + opens the PR |
|
|
32
38
|
| 3 | _(GHA)_ `release-prepare.yml` → PR merge | `pr-opened` → `pr-merged` | Owned by CI; verify via `cleo release pr-status <ver>` |
|
|
33
|
-
| 4 |
|
|
39
|
+
| 4 | `git tag -a v<ver> -m "Release v<ver>" && git push origin v<ver>` | `pr-merged` → `tag-pushed` | Explicit tag after the release PR merges — `auto-tag-on-release-merge.yml` is retired (T10434, ADR-087); the tag push triggers `release.yml` |
|
|
34
40
|
| 5 | `cleo release reconcile <ver>` | `tag-pushed` → `published` | Backfills 11 provenance tables; idempotent |
|
|
35
41
|
|
|
36
42
|
Optional validators (read-only / dry-run):
|
|
@@ -47,15 +53,15 @@ Optional validators (read-only / dry-run):
|
|
|
47
53
|
|----|------|-------------|
|
|
48
54
|
| RLSE-001 | Version MUST be CalVer (`YYYY.MM.patch`) per ADR-065 — never SemVer. | `cleo release plan` rejects non-CalVer; exit 53. |
|
|
49
55
|
| RLSE-002 | `CHANGELOG.md` MUST be updated before the tag — always-write is the default behaviour of `cleo release plan` (T9784 deleted the manual changelog verb). | Plan envelope refuses to advance to `pr-opened` if the changeset directory is unparseable (T10105). |
|
|
50
|
-
| RLSE-003 | All per-task evidence gates MUST be recorded via `cleo verify <task> --gate <g> --evidence …` BEFORE `cleo complete`. The legacy `cleo release verify` batch verb was deleted in T9540. | ADR-051 per-task evidence ritual. |
|
|
51
|
-
| RLSE-004 | The release MUST be tagged
|
|
56
|
+
| RLSE-003 | All per-task evidence gates MUST be recorded via `cleo verify <task> --gate <g> --evidence …` BEFORE `cleo complete`. The legacy `cleo release verify` batch verb was deleted in T9540. | ADR-051 per-task evidence ritual. | <!-- cleo-cmd: negative-example: release verify -->
|
|
57
|
+
| RLSE-004 | The release MUST be tagged explicitly (`git tag -a v<ver>` + `git push origin v<ver>`) after the release PR merges. | Auto-tag was retired in T10434 / ADR-087: `GITHUB_TOKEN` tag pushes did not reliably trigger `release.yml`. |
|
|
52
58
|
| RLSE-005 | Direct pushes to `main` are prohibited. Every release ships via a PR cut by `release-prepare.yml`. | ADR-065 + branch protection (see `docs/release/branch-protection-setup.md`). |
|
|
53
59
|
| RLSE-006 | Version MUST be consistent across all workspace targets resolved by `resolveVersionBumpTargets` (root package.json + every workspace package + Cargo workspace). | Version-bump preflight in `release-prepare.yml`. |
|
|
54
60
|
| RLSE-007 | Provenance reconcile MUST run within the release-publish workflow — never as a manual followup. | Invoked by `release-publish.yml`. |
|
|
55
61
|
|
|
56
62
|
## Integration
|
|
57
63
|
|
|
58
|
-
Use the explicit
|
|
64
|
+
Use the explicit verbs. **Do not** invoke `cleo release ship` — it was deleted in T10103. <!-- cleo-cmd: negative-example: release ship -->
|
|
59
65
|
|
|
60
66
|
```bash
|
|
61
67
|
# 1. Plan — build the canonical Release Plan envelope.
|
|
@@ -67,7 +73,11 @@ cleo release open v2026.6.0
|
|
|
67
73
|
# 3. (Optional) Poll PR + CI status while the workflow runs.
|
|
68
74
|
cleo release pr-status v2026.6.0
|
|
69
75
|
|
|
70
|
-
# 4.
|
|
76
|
+
# 4. After the release PR merges, tag explicitly (auto-tag is retired).
|
|
77
|
+
git tag -a v2026.6.0 -m "Release v2026.6.0"
|
|
78
|
+
git push origin v2026.6.0
|
|
79
|
+
|
|
80
|
+
# 5. Reconcile — runs automatically inside release-publish.yml.
|
|
71
81
|
# Run manually only if backfilling a historical release.
|
|
72
82
|
cleo release reconcile v2026.6.0
|
|
73
83
|
```
|
|
@@ -88,7 +98,7 @@ Exit codes (canonical):
|
|
|
88
98
|
- `0` — success.
|
|
89
99
|
- `53` — version validation failed (e.g. not CalVer).
|
|
90
100
|
- `54` — release-prepare workflow gate failed.
|
|
91
|
-
- `56` — tag creation failed
|
|
101
|
+
- `56` — tag creation failed.
|
|
92
102
|
- `82` — `E_PLAN_NOT_FOUND` (plan envelope missing for the requested version).
|
|
93
103
|
- `83` — `E_IVTR_INCOMPLETE` (per-task IVTR loops not released).
|
|
94
104
|
- `88` — artifact publish failed.
|
|
@@ -97,9 +107,9 @@ Exit codes (canonical):
|
|
|
97
107
|
|
|
98
108
|
| Pattern | Problem | Solution |
|
|
99
109
|
|---------|---------|----------|
|
|
100
|
-
| Running `cleo release ship` | The verb was deleted in T10103 — the command will exit with `Unknown command`. | Use `cleo release plan` + `cleo release open`. |
|
|
110
|
+
| Running `cleo release ship` | The verb was deleted in T10103 — the command will exit with `Unknown command`. | Use `cleo release plan` + `cleo release open`. | <!-- cleo-cmd: negative-example: release ship -->
|
|
101
111
|
| Manually invoking `gh workflow run release-prepare.yml` | Bypasses the plan envelope; `releases.status` stays at `planned`. | Always go through `cleo release open <ver>` — it tracks state in the `releases` table. |
|
|
102
|
-
|
|
|
112
|
+
| Tagging before the release PR merges, or `git push --tags` | Tags an unmerged commit, or pushes every local tag. | Tag the merged release commit and push that one tag: `git push origin v<ver>`. |
|
|
103
113
|
| Hand-editing `CHANGELOG.md` for the new version | Drift between the changeset directory and the changelog. | `cleo release plan` always auto-writes the section (T10105). Use `cleo changeset add` to author entries. |
|
|
104
114
|
| Pasting one verb into another's workflow file | Multi-step orchestration belongs in `ship-e2e-smoke`. | Use `cleo release ship-e2e-smoke … --execute` for end-to-end validation. |
|
|
105
115
|
| Running the pipeline on a dirty worktree | Release commit scoops up unrelated changes. | The clean-tree gate refuses to advance. |
|
|
@@ -108,10 +118,10 @@ Exit codes (canonical):
|
|
|
108
118
|
## Critical Rules Summary
|
|
109
119
|
|
|
110
120
|
1. The 4-verb pipeline — `plan`, `open`, `reconcile`, `rollback` — is the ONLY way to ship.
|
|
111
|
-
2. The deprecated `cleo release ship` shim was DELETED in T10103. Do not invoke it.
|
|
121
|
+
2. The deprecated `cleo release ship` shim was DELETED in T10103. Do not invoke it. <!-- cleo-cmd: negative-example: release ship -->
|
|
112
122
|
3. CalVer (`YYYY.MM.patch`) is the only valid version scheme.
|
|
113
123
|
4. `cleo release plan` always writes the CHANGELOG section unless `--no-changelog`.
|
|
114
|
-
5. The tag is created
|
|
124
|
+
5. The tag is created explicitly after the release PR merges; `auto-tag-on-release-merge.yml` is retired (T10434, ADR-087).
|
|
115
125
|
6. Provenance reconcile is invoked by `release-publish.yml`, not manually (unless backfilling).
|
|
116
126
|
7. Per-task evidence gates use `cleo verify --gate --evidence` per ADR-051 — not the deleted batch verb.
|
|
117
127
|
8. Use `cleo release ship-e2e-smoke` to validate the full pipeline before a real ship.
|
|
@@ -31,7 +31,7 @@ release → artifact-publish → provenance
|
|
|
31
31
|
| 93 | provenance | `E_DIGEST_MISMATCH` |
|
|
32
32
|
| 94 | provenance | `E_ATTESTATION_INVALID` |
|
|
33
33
|
|
|
34
|
-
The parent MUST NOT remap sub-protocol exit codes. A caller reading `cleo release
|
|
34
|
+
The parent MUST NOT remap sub-protocol exit codes. A caller reading `cleo release open` / `cleo release pr-status` output needs to know exactly which step failed.
|
|
35
35
|
|
|
36
36
|
## Rollback Semantics
|
|
37
37
|
|
|
@@ -18,8 +18,11 @@ No package is produced. Used for docs, spec updates, and internal code changes t
|
|
|
18
18
|
### Commands
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
cleo release
|
|
22
|
-
cleo
|
|
21
|
+
cleo release plan v2026.4.5 --epic T####
|
|
22
|
+
cleo release open v2026.4.5
|
|
23
|
+
# after the release PR merges:
|
|
24
|
+
git tag -a v2026.4.5 -m "Release v2026.4.5" && git push origin v2026.4.5
|
|
25
|
+
cleo check protocol release --version v2026.4.5 --has-changelog true
|
|
23
26
|
```
|
|
24
27
|
|
|
25
28
|
## npm-Package Release
|
|
@@ -38,11 +41,14 @@ Publishes one or more npm packages from the monorepo. Uses `npm publish --proven
|
|
|
38
41
|
### Commands
|
|
39
42
|
|
|
40
43
|
```bash
|
|
41
|
-
cleo release
|
|
44
|
+
cleo release plan v2026.4.5 --epic T####
|
|
45
|
+
cleo release open v2026.4.5
|
|
46
|
+
# after the release PR merges:
|
|
47
|
+
git tag -a v2026.4.5 -m "Release v2026.4.5" && git push origin v2026.4.5
|
|
42
48
|
# CI handles the publish + attestation; the skill records the result.
|
|
43
|
-
cleo check protocol
|
|
44
|
-
cleo check protocol
|
|
45
|
-
cleo check protocol
|
|
49
|
+
cleo check protocol release --version v2026.4.5 --has-changelog true
|
|
50
|
+
cleo check protocol artifact-publish --artifact-type npm-package --build-passed true
|
|
51
|
+
cleo check protocol provenance --has-attestation true --has-sbom true
|
|
46
52
|
```
|
|
47
53
|
|
|
48
54
|
## docker-image Release
|
|
@@ -61,10 +67,13 @@ Builds and pushes a container image to GHCR or another OCI registry, signs with
|
|
|
61
67
|
### Commands
|
|
62
68
|
|
|
63
69
|
```bash
|
|
64
|
-
cleo release
|
|
70
|
+
cleo release plan v2026.4.5 --epic T####
|
|
71
|
+
cleo release open v2026.4.5
|
|
72
|
+
# after the release PR merges:
|
|
73
|
+
git tag -a v2026.4.5 -m "Release v2026.4.5" && git push origin v2026.4.5
|
|
65
74
|
# CI runs: docker build → cosign sign → cosign attest → syft sbom → push
|
|
66
|
-
cleo check protocol
|
|
67
|
-
cleo check protocol
|
|
75
|
+
cleo check protocol artifact-publish --artifact-type docker-image --build-passed true
|
|
76
|
+
cleo check protocol provenance --has-attestation true --has-sbom true
|
|
68
77
|
```
|
|
69
78
|
|
|
70
79
|
## cargo-crate Release
|
|
@@ -82,9 +91,12 @@ Publishes one or more crates from the Rust workspace to crates.io.
|
|
|
82
91
|
### Commands
|
|
83
92
|
|
|
84
93
|
```bash
|
|
85
|
-
cleo release
|
|
94
|
+
cleo release plan v2026.4.5 --epic T####
|
|
95
|
+
cleo release open v2026.4.5
|
|
96
|
+
# after the release PR merges:
|
|
97
|
+
git tag -a v2026.4.5 -m "Release v2026.4.5" && git push origin v2026.4.5
|
|
86
98
|
# CI runs: cargo test → cargo publish --dry-run → cargo publish
|
|
87
|
-
cleo check protocol
|
|
99
|
+
cleo check protocol artifact-publish --artifact-type cargo-crate --build-passed true
|
|
88
100
|
```
|
|
89
101
|
|
|
90
102
|
## github-tarball Release
|
|
@@ -101,9 +113,12 @@ Creates a source tarball and attaches it to a GitHub Release. Optional cosign si
|
|
|
101
113
|
### Commands
|
|
102
114
|
|
|
103
115
|
```bash
|
|
104
|
-
cleo release
|
|
116
|
+
cleo release plan v2026.4.5 --epic T####
|
|
117
|
+
cleo release open v2026.4.5
|
|
118
|
+
# after the release PR merges:
|
|
119
|
+
git tag -a v2026.4.5 -m "Release v2026.4.5" && git push origin v2026.4.5
|
|
105
120
|
# gh release create runs in CI with the tarball attached
|
|
106
|
-
cleo check protocol
|
|
121
|
+
cleo check protocol artifact-publish --artifact-type github-release --build-passed true
|
|
107
122
|
```
|
|
108
123
|
|
|
109
124
|
## Multi-Artifact Release
|
|
@@ -120,9 +135,12 @@ A release with more than one artifact type — typical for a major version that
|
|
|
120
135
|
### Commands
|
|
121
136
|
|
|
122
137
|
```bash
|
|
123
|
-
cleo release
|
|
138
|
+
cleo release plan v2026.4.5 --epic T####
|
|
139
|
+
cleo release open v2026.4.5
|
|
140
|
+
# after the release PR merges:
|
|
141
|
+
git tag -a v2026.4.5 -m "Release v2026.4.5" && git push origin v2026.4.5
|
|
124
142
|
# CI orchestrates all publishes; skill records the unified chain
|
|
125
|
-
cleo check protocol
|
|
143
|
+
cleo check protocol release --version v2026.4.5 --has-changelog true
|
|
126
144
|
```
|
|
127
145
|
|
|
128
146
|
## Which Checklist Wins?
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-research-agent
|
|
3
3
|
description: Multi-source research and investigation combining web search, documentation lookup via Context7, and codebase analysis. Synthesizes findings into actionable recommendations with proper citation and task traceability. Use when conducting research, investigating best practices, gathering technical information, or analyzing existing implementations. Triggers on research tasks, investigation needs, or information discovery requests.
|
|
4
|
-
version: 2.0.
|
|
5
|
-
tier: 2
|
|
6
|
-
core: false
|
|
7
|
-
category: recommended
|
|
4
|
+
version: 2.0.4
|
|
8
5
|
protocol: research
|
|
9
|
-
loomStage: research
|
|
10
6
|
adrRefs:
|
|
11
7
|
- ADR-023
|
|
12
8
|
- ADR-070
|
|
@@ -20,6 +16,16 @@ compatibility:
|
|
|
20
16
|
- windsurf
|
|
21
17
|
- gemini-cli
|
|
22
18
|
license: MIT
|
|
19
|
+
metadata:
|
|
20
|
+
version: 2.0.4
|
|
21
|
+
tier: on-demand
|
|
22
|
+
install: harness
|
|
23
|
+
covers:
|
|
24
|
+
- packages/core/src/validation/protocols/cant/research.cant
|
|
25
|
+
- packages/core/src/validation/protocols/protocols-markdown/research.md
|
|
26
|
+
loomStage: research
|
|
27
|
+
lastReviewed: 2026-09-28
|
|
28
|
+
stability: stable
|
|
23
29
|
---
|
|
24
30
|
|
|
25
31
|
# Research Context Injection
|
|
@@ -70,8 +76,8 @@ Context injection for research and investigation tasks spawned via cleo-subagent
|
|
|
70
76
|
1. Read task: `{{TASK_SHOW_CMD}} {{TASK_ID}}`
|
|
71
77
|
2. Focus already set by orchestrator (skip if working standalone, set if needed)
|
|
72
78
|
3. Conduct research (see Methodology below)
|
|
73
|
-
4.
|
|
74
|
-
5.
|
|
79
|
+
4. Record output: `cleo docs add {{TASK_ID}} --content - --type research --slug {{TOPIC_SLUG}}`
|
|
80
|
+
5. Record the manifest entry: `cleo manifest append --task {{TASK_ID}} --type research --content "<one-paragraph summary>"`
|
|
75
81
|
6. Complete task: `{{TASK_COMPLETE_CMD}} {{TASK_ID}}`
|
|
76
82
|
7. Return summary message
|
|
77
83
|
|
|
@@ -109,8 +115,8 @@ Context injection for research and investigation tasks spawned via cleo-subagent
|
|
|
109
115
|
|
|
110
116
|
### Output Requirements
|
|
111
117
|
|
|
112
|
-
1. MUST
|
|
113
|
-
2. MUST
|
|
118
|
+
1. MUST record findings with `cleo docs add {{TASK_ID}} --content - --type research --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
|
|
119
|
+
2. MUST record ONE manifest entry: `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027)
|
|
114
120
|
3. MUST return ONLY: "Research complete. Manifest appended to pipeline_manifest."
|
|
115
121
|
4. MUST NOT return research content in response
|
|
116
122
|
|
|
@@ -118,7 +124,7 @@ Context injection for research and investigation tasks spawned via cleo-subagent
|
|
|
118
124
|
|
|
119
125
|
## Output File Format
|
|
120
126
|
|
|
121
|
-
|
|
127
|
+
Record it with `cleo docs add {{TASK_ID}} --content - --type research --slug {{TOPIC_SLUG}}`, using this body:
|
|
122
128
|
|
|
123
129
|
```markdown
|
|
124
130
|
# {{RESEARCH_TITLE}}
|
|
@@ -159,7 +165,7 @@ Write to `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`:
|
|
|
159
165
|
|
|
160
166
|
## Manifest Entry Format
|
|
161
167
|
|
|
162
|
-
Append ONE entry via `cleo manifest append <json
|
|
168
|
+
Append ONE entry via `cleo manifest append --entry '<json>'` (writes to pipeline_manifest table per ADR-027):
|
|
163
169
|
|
|
164
170
|
```json
|
|
165
171
|
{"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}}"]}
|
|
@@ -181,7 +187,7 @@ Append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest
|
|
|
181
187
|
- [ ] Task details read via `{{TASK_SHOW_CMD}}`
|
|
182
188
|
- [ ] Research conducted across multiple sources
|
|
183
189
|
- [ ] Findings synthesized with recommendations
|
|
184
|
-
- [ ] Output
|
|
190
|
+
- [ ] Output recorded with `cleo docs add` (slug in the return message)
|
|
185
191
|
- [ ] Manifest entry appended (single line, valid JSON)
|
|
186
192
|
- [ ] Task completed via `{{TASK_COMPLETE_CMD}}`
|
|
187
193
|
- [ ] Response is ONLY the summary message
|
|
@@ -38,12 +38,12 @@ to sibling skills that have narrower context budgets and stricter contracts.
|
|
|
38
38
|
| "write the spec for X" | `ct-spec-writer` |
|
|
39
39
|
| "validate this implementation against the spec" | `ct-validator` |
|
|
40
40
|
| "decompose this epic into tasks" | `ct-epic-architect` |
|
|
41
|
-
| "look up Next.js 15 middleware API" |
|
|
41
|
+
| "look up Next.js 15 middleware API" | the Context7 MCP (single-library fetch) |
|
|
42
42
|
| "decide between A and B" (no investigation needed) | `ct-consensus-voter` |
|
|
43
43
|
| "explain this function" | (no skill — direct read suffices) |
|
|
44
44
|
|
|
45
45
|
A useful heuristic: if the user already knows the answer and just wants it
|
|
46
|
-
written down, route to `ct-spec-writer` or `ct-
|
|
46
|
+
written down, route to `ct-spec-writer` or `ct-documentor` (`references/writing.md`). Research is for
|
|
47
47
|
when the answer is not yet known.
|
|
48
48
|
|
|
49
49
|
## Routing to Downstream Skills
|
|
@@ -68,11 +68,11 @@ Research outputs typically feed one of these next stages. The manifest
|
|
|
68
68
|
|
|
69
69
|
```
|
|
70
70
|
Is the answer already known and just needs documentation?
|
|
71
|
-
├── YES → ct-
|
|
71
|
+
├── YES → the writing guide (`ct-documentor/references/writing.md`)
|
|
72
72
|
└── NO → continue
|
|
73
73
|
│
|
|
74
74
|
Is this a single-library API question?
|
|
75
|
-
├── YES →
|
|
75
|
+
├── YES → the Context7 MCP
|
|
76
76
|
└── NO → ct-research-agent (this skill)
|
|
77
77
|
│
|
|
78
78
|
After research, do findings produce requirements?
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: ct-skill-
|
|
3
|
-
description:
|
|
2
|
+
name: ct-skill-author
|
|
3
|
+
description: Create, improve and validate CLEO skills. Use when writing a new skill or updating an existing one (structure, frontmatter, progressive disclosure, trigger descriptions, evals), and when auditing a skill folder against the CLEO standard before it ships (structural, ecosystem-fit and quality validation with an HTML report). Internal to CLEO development — not installed to harnesses.
|
|
4
4
|
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: 2.0.1
|
|
7
|
+
tier: internal
|
|
8
|
+
install: internal
|
|
9
|
+
lastReviewed: 2026-09-28
|
|
10
|
+
stability: stable
|
|
5
11
|
---
|
|
6
12
|
|
|
7
|
-
# Skill
|
|
13
|
+
# Skill Author
|
|
8
14
|
|
|
9
|
-
|
|
15
|
+
Guidance for creating effective skills, and the validation loop that checks them.
|
|
16
|
+
This skill merges the former ct-skill-creator and ct-skill-validator (T12649, D11157).
|
|
17
|
+
For validation, load `references/validating.md`; its scripts live in `scripts/`.
|
|
10
18
|
|
|
11
19
|
## About Skills
|
|
12
20
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"skill_name": "ct-skill-
|
|
2
|
+
"skill_name": "ct-skill-author",
|
|
3
3
|
"evals": [
|
|
4
4
|
{
|
|
5
5
|
"id": 1,
|
|
6
|
-
"prompt": "Validate the ct-skill-
|
|
7
|
-
"expected_output": "A complete tier-by-tier validation report showing pass/fail/warn status for ct-skill-
|
|
6
|
+
"prompt": "Validate the ct-skill-author skill against the v2 standard and show me a full report",
|
|
7
|
+
"expected_output": "A complete tier-by-tier validation report showing pass/fail/warn status for ct-skill-author, with an HTML report opened in the browser",
|
|
8
8
|
"expectations": [
|
|
9
|
-
"Claude runs validate.py against ct-skill-
|
|
9
|
+
"Claude runs validate.py against ct-skill-author",
|
|
10
10
|
"The output shows results for all 5 tiers",
|
|
11
11
|
"Claude runs generate_validation_report.py to produce an HTML report",
|
|
12
12
|
"Claude tells the user the report path or opens it in the browser",
|
|
@@ -27,20 +27,20 @@
|
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"id": 3,
|
|
30
|
-
"prompt": "Audit the ct-skill-
|
|
31
|
-
"expected_output": "Full self-audit of ct-skill-
|
|
30
|
+
"prompt": "Audit the ct-skill-author skill itself — run all checks and give me a full findings report",
|
|
31
|
+
"expected_output": "Full self-audit of ct-skill-author including validate gauntlet and audit_body, with HTML report",
|
|
32
32
|
"expectations": [
|
|
33
|
-
"Claude runs validate.py against ct-skill-
|
|
33
|
+
"Claude runs validate.py against ct-skill-author",
|
|
34
34
|
"Claude runs audit_body.py for the deep body quality audit",
|
|
35
35
|
"An HTML report combining all findings is generated",
|
|
36
36
|
"Claude opens or links the HTML report for the user",
|
|
37
|
-
"The result correctly reflects ct-skill-
|
|
37
|
+
"The result correctly reflects ct-skill-author's actual compliance status"
|
|
38
38
|
]
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"id": 4,
|
|
42
|
-
"prompt": "Run the manifest alignment check for ct-skill-
|
|
43
|
-
"expected_output": "Manifest alignment results showing whether ct-skill-
|
|
42
|
+
"prompt": "Run the manifest alignment check for ct-skill-author against the CLEO manifest",
|
|
43
|
+
"expected_output": "Manifest alignment results showing whether ct-skill-author is registered correctly in manifest.json",
|
|
44
44
|
"expectations": [
|
|
45
45
|
"Claude passes --manifest to validate.py (Tier 4 check)",
|
|
46
46
|
"The manifest.json path is correctly resolved",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
{"query": "validate my skill against v2 standard", "should_trigger": true},
|
|
3
3
|
{"query": "check if this skill folder is v2 compliant", "should_trigger": true},
|
|
4
4
|
{"query": "audit the skill structure and frontmatter", "should_trigger": true},
|
|
5
|
-
{"query": "run v2 compliance check on ct-skill-
|
|
5
|
+
{"query": "run v2 compliance check on ct-skill-author", "should_trigger": true},
|
|
6
6
|
{"query": "is my SKILL.md missing required fields", "should_trigger": true},
|
|
7
7
|
{"query": "verify skill passes all CLEO validation tiers", "should_trigger": true},
|
|
8
8
|
{"query": "prepare skill for distribution, check for issues", "should_trigger": true},
|