@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
|
@@ -45,10 +45,14 @@ Or the domain.operation shorthand when describing operations abstractly: `tasks.
|
|
|
45
45
|
- `cleo add`, `cleo update`, `cleo complete`
|
|
46
46
|
- `cleo session status`, `cleo session start`, `cleo session end`
|
|
47
47
|
- `cleo memory find`, `cleo memory timeline`, `cleo memory fetch`, `cleo memory observe`
|
|
48
|
-
- `cleo dash`, `cleo
|
|
49
|
-
- `cleo
|
|
50
|
-
- `cleo
|
|
51
|
-
- `cleo
|
|
48
|
+
- `cleo dash`, `cleo doctor`, `cleo <command> --help` (there is no `help` verb)
|
|
49
|
+
- `cleo manifest append`
|
|
50
|
+
- `cleo skills list`, `cleo skills info`
|
|
51
|
+
- `cleo orchestrate status`, `cleo orchestrate spawn`
|
|
52
|
+
|
|
53
|
+
Gate 31 (`scripts/lint-skill-commands.mjs`) checks every `cleo` invocation in a
|
|
54
|
+
canonical skill against the live command manifest; run it rather than relying
|
|
55
|
+
on this list.
|
|
52
56
|
|
|
53
57
|
**Fail condition**: Skill references a domain.operation that does not exist in the constitution.
|
|
54
58
|
|
|
@@ -10,7 +10,7 @@ Skills follow a single-source-of-truth model:
|
|
|
10
10
|
packages/skills/skills/ <-- canonical location
|
|
11
11
|
ct-cleo/SKILL.md
|
|
12
12
|
ct-orchestrator/SKILL.md
|
|
13
|
-
ct-skill-
|
|
13
|
+
ct-skill-author/SKILL.md
|
|
14
14
|
...
|
|
15
15
|
manifest.json <-- CLEO-only metadata
|
|
16
16
|
```
|
|
@@ -57,7 +57,7 @@ CLEO-aware providers read both SKILL.md and manifest.json. The manifest provides
|
|
|
57
57
|
|
|
58
58
|
### CLEO Package Skills
|
|
59
59
|
|
|
60
|
-
Skills in `packages/skills/skills/` are managed by CLEO infrastructure. They are deployed via the CLEO skill system and do not need manual symlink setup.
|
|
60
|
+
Skills in `packages/skills/skills/` are managed by CLEO infrastructure. They are deployed via the CLEO skill system and do not need manual symlink setup. `manifest.json` (generated from SKILL.md frontmatter) drives installation: every skill with `metadata.install: harness` is installed.
|
|
61
61
|
|
|
62
62
|
### User Global Skills
|
|
63
63
|
|
|
@@ -164,12 +164,16 @@ To add a new skill to the CLEO package (`packages/skills/`):
|
|
|
164
164
|
}
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
4. **Add
|
|
168
|
-
|
|
167
|
+
4. **Add dispatch routing** if the skill should participate: add it to the
|
|
168
|
+
`dispatch_matrix` (`by_task_type`, `by_keyword`, `by_protocol`) in
|
|
169
|
+
`packages/skills/skills/manifest.json`. (`dispatch-config.json` was removed
|
|
170
|
+
in T12649; nothing read it.)
|
|
169
171
|
|
|
170
|
-
5. **
|
|
172
|
+
5. **Regenerate the manifest**: `node scripts/skills/generate-manifest.mjs`.
|
|
173
|
+
It writes the identity fields and `_meta.totalSkills` from SKILL.md
|
|
174
|
+
frontmatter; gate 29 fails if you hand-edit them.
|
|
171
175
|
|
|
172
176
|
6. **Validate**: Run the skill validator to confirm the new skill passes all checks:
|
|
173
177
|
```bash
|
|
174
|
-
python3 packages/skills/skills/ct-skill-
|
|
178
|
+
python3 packages/skills/skills/ct-skill-author/scripts/quick_validate.py packages/skills/skills/my-new-skill
|
|
175
179
|
```
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
name: ct-skill-validator
|
|
3
|
-
description: Validates an existing skill folder against the full CLEO standard and ecosystem. Use when auditing skills for structural compliance, verifying a skill fits into the CLEO ecosystem and constitution, running quality A/B evals, or preparing a skill for distribution. Runs a 3-phase validation loop — structural, ecosystem fit, and quality eval — then presents all findings as an HTML report opened in the user's browser. Iterates until all required phases pass.
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
allowed-tools: Bash(python *)
|
|
6
|
-
---
|
|
1
|
+
<!-- Merged from the ct-skill-validator skill into ct-skill-author (T12649, D11157). -->
|
|
7
2
|
|
|
8
3
|
# CLEO Skill Validator
|
|
9
4
|
|
|
@@ -26,7 +21,7 @@ python ${CLAUDE_SKILL_DIR}/scripts/validate.py <skill-dir>
|
|
|
26
21
|
|
|
27
22
|
# With manifest checks (Tier 4):
|
|
28
23
|
python ${CLAUDE_SKILL_DIR}/scripts/validate.py <skill-dir> \
|
|
29
|
-
--manifest
|
|
24
|
+
--manifest packages/skills/skills/manifest.json
|
|
30
25
|
|
|
31
26
|
# JSON output (for scripting):
|
|
32
27
|
python ${CLAUDE_SKILL_DIR}/scripts/validate.py <skill-dir> --json
|
|
@@ -35,7 +30,10 @@ python ${CLAUDE_SKILL_DIR}/scripts/validate.py <skill-dir> --json
|
|
|
35
30
|
python ${CLAUDE_SKILL_DIR}/scripts/audit_body.py <skill-dir>
|
|
36
31
|
|
|
37
32
|
# Manifest alignment check: bundled into validate.py Tier 4. Use:
|
|
38
|
-
# python validate.py <skill-dir> --manifest
|
|
33
|
+
# python validate.py <skill-dir> --manifest packages/skills/skills/manifest.json
|
|
34
|
+
# (CLEO's own package ships no dispatch-config.json or provider-skills-map.json
|
|
35
|
+
# since T12649/T12679; --dispatch-config/--provider-map only apply to external
|
|
36
|
+
# libraries that still ship them. For CLEO skills, gates 29-32 are authoritative.)
|
|
39
37
|
|
|
40
38
|
# Progressive-disclosure depth check (T9684 — CI gate):
|
|
41
39
|
python ${CLAUDE_SKILL_DIR}/scripts/check_depth.py <skill-dir>
|
|
@@ -56,7 +54,7 @@ python ${CLAUDE_SKILL_DIR}/scripts/check_depth.py <skill-dir> --audit-allowlist
|
|
|
56
54
|
|
|
57
55
|
Pre-existing stubs are allowlisted with follow-up task IDs in
|
|
58
56
|
`scripts/check_depth.py::ALLOWLIST`. Gold-standard skills:
|
|
59
|
-
`ct-orchestrator` (9 refs) and `ct-skill-
|
|
57
|
+
`ct-orchestrator` (9 refs) and `ct-skill-author` (7 refs).
|
|
60
58
|
|
|
61
59
|
**Allowlist hygiene:** every entry carries `last_reviewed: YYYY-MM-DD HH:MM:SS`.
|
|
62
60
|
`check_depth.py` runs a silent background audit on every invocation and emits
|
|
@@ -75,8 +73,8 @@ Repeat until errors = 0. Do not proceed to Phase 2 while errors remain.
|
|
|
75
73
|
- Tier 1 — Structure: SKILL.md exists, frontmatter parseable, no CLEO-only fields
|
|
76
74
|
- Tier 2 — Frontmatter Quality: name matches dir, description has trigger indicators
|
|
77
75
|
- Tier 3 — Body Quality: length, no placeholder text, file references exist on disk
|
|
78
|
-
- Tier 4 — CLEO Integration: manifest
|
|
79
|
-
- Tier 5 — Provider Compatibility: provider-skills-map check (
|
|
76
|
+
- Tier 4 — CLEO Integration: manifest alignment (dispatch-config only for external libraries that ship one)
|
|
77
|
+
- Tier 5 — Provider Compatibility: provider-skills-map check (external libraries only; CLEO removed its map in T12679)
|
|
80
78
|
|
|
81
79
|
See [references/validation-rules.md](references/validation-rules.md) for full rule set.
|
|
82
80
|
|
|
@@ -130,11 +128,11 @@ Repeat until verdict is `PASS` or `PASS_WITH_WARNINGS`. WARN is acceptable; ERRO
|
|
|
130
128
|
## Phase 3: Quality A/B Eval
|
|
131
129
|
|
|
132
130
|
Tests whether the skill actually improves agent output quality vs. no skill context.
|
|
133
|
-
Phase 3 is **delegated** — `ct-skill-
|
|
131
|
+
Phase 3 is **delegated** — `ct-skill-author` does static analysis; runtime
|
|
134
132
|
quality evals live in a dedicated skill (`skill-evaluator` preferred,
|
|
135
|
-
`ct-skill-
|
|
133
|
+
`ct-skill-author` as legacy fallback).
|
|
136
134
|
|
|
137
|
-
> **Scope boundary:** `ct-skill-
|
|
135
|
+
> **Scope boundary:** `ct-skill-author` is *static* — it checks structure,
|
|
138
136
|
> frontmatter, body, manifest, depth, ecosystem fit. For deep runtime A/B
|
|
139
137
|
> benchmarking, regression detection, and auto-improvement, the dispatcher
|
|
140
138
|
> below routes to `skill-evaluator`, which owns that workflow end-to-end.
|
|
@@ -177,7 +175,7 @@ loop: generate → run → grade → aggregate → analyze → detect-regression
|
|
|
177
175
|
propose. See `skill-evaluator/SKILL.md` for the workflow it actually
|
|
178
176
|
executes.
|
|
179
177
|
|
|
180
|
-
When `ct-skill-
|
|
178
|
+
When `ct-skill-author` is the resolved fallback, the wrapper invokes its
|
|
181
179
|
`run_eval.py` with the same arguments translated to its CLI shape.
|
|
182
180
|
|
|
183
181
|
### Manual A/B (if you want to drive runs yourself)
|
|
@@ -228,7 +226,7 @@ Open the report in the browser: omit `--no-open` (default behaviour opens browse
|
|
|
228
226
|
|
|
229
227
|
## Self-Validation
|
|
230
228
|
|
|
231
|
-
This skill validates itself. To validate ct-skill-
|
|
229
|
+
This skill validates itself. To validate ct-skill-author:
|
|
232
230
|
|
|
233
231
|
```bash
|
|
234
232
|
python ${CLAUDE_SKILL_DIR}/scripts/validate.py ${CLAUDE_SKILL_DIR}
|
|
@@ -9,8 +9,8 @@ The CLEO Skill Validator enforces compliance across five tiers of increasing dep
|
|
|
9
9
|
1. **Structure** — Does the skill have the required files and valid frontmatter?
|
|
10
10
|
2. **Frontmatter Quality** — Are all frontmatter fields correct, well-formed, and non-contradictory?
|
|
11
11
|
3. **Body Quality** — Is the body content complete, concise, and free of placeholders?
|
|
12
|
-
4. **CLEO Integration** — Does the skill align with manifest.json and dispatch-config.json?
|
|
13
|
-
5. **Provider Compatibility** — Is the skill referenced in the provider-skills-map?
|
|
12
|
+
4. **CLEO Integration** — Does the skill align with manifest.json (and dispatch-config.json, for external libraries that ship one)?
|
|
13
|
+
5. **Provider Compatibility** — Is the skill referenced in the provider-skills-map (external libraries only; CLEO's was removed in T12679)?
|
|
14
14
|
|
|
15
15
|
Tiers 1-3 run on every validation. Tiers 4-5 are opt-in via CLI flags.
|
|
16
16
|
|
|
@@ -109,7 +109,7 @@ def _candidates(name: str, caller_skill_dir: Path) -> Iterator[Path]:
|
|
|
109
109
|
# - <child>/skills/<name>
|
|
110
110
|
# - <child>/packages/skills/skills/<name>
|
|
111
111
|
# This finds skills under sibling project roots — e.g. when the
|
|
112
|
-
# caller is in /mnt/projects/cleocode/.../ct-skill-
|
|
112
|
+
# caller is in /mnt/projects/cleocode/.../ct-skill-author/ and
|
|
113
113
|
# the target is in /mnt/projects/proxmox/skills/<name>/. The walk
|
|
114
114
|
# eventually reaches the common ancestor /mnt/projects/ where both
|
|
115
115
|
# cleocode and proxmox are children. Bounded by MAX_SIBLINGS per
|
|
@@ -176,7 +176,7 @@ def find_skill(name: str, *, caller: Path | None = None) -> Path | None:
|
|
|
176
176
|
def find_first(names: list[str], *, caller: Path | None = None) -> tuple[str, Path] | None:
|
|
177
177
|
"""Return the (name, path) of the first found skill from a preference list.
|
|
178
178
|
|
|
179
|
-
Lets callers say "prefer skill-evaluator, fall back to ct-skill-
|
|
179
|
+
Lets callers say "prefer skill-evaluator, fall back to ct-skill-author"
|
|
180
180
|
without hardcoding either path.
|
|
181
181
|
"""
|
|
182
182
|
for n in names:
|
|
@@ -5,7 +5,7 @@ CLEO Skill Depth Check — progressive-disclosure-depth rule (T9684).
|
|
|
5
5
|
Fails when a skill's SKILL.md is below the depth threshold AND it has
|
|
6
6
|
no references/ subdir with at least the manifest-declared reference
|
|
7
7
|
files. The gold standard is ct-orchestrator (9 references) and
|
|
8
|
-
ct-skill-
|
|
8
|
+
ct-skill-author (7 references); the rule is calibrated to flag
|
|
9
9
|
stubs without forcing every skill to that depth.
|
|
10
10
|
|
|
11
11
|
Rule logic:
|
|
@@ -41,7 +41,7 @@ from pathlib import Path
|
|
|
41
41
|
# Adjust here, then re-run the audit to verify all 19 active skills pass.
|
|
42
42
|
MIN_BODY_LINES = 100
|
|
43
43
|
MIN_REF_FILES = 3
|
|
44
|
-
GOLD_STANDARDS = ("ct-orchestrator", "ct-skill-
|
|
44
|
+
GOLD_STANDARDS = ("ct-orchestrator", "ct-skill-author")
|
|
45
45
|
|
|
46
46
|
# Cadence for the allowlist audit — entries older than this are flagged stale.
|
|
47
47
|
ALLOWLIST_STALE_DAYS = 30
|
|
@@ -62,9 +62,6 @@ LAST_REVIEWED_RE = re.compile(r"last_reviewed:\s*(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:
|
|
|
62
62
|
# Format: skill-name -> "task-id: rationale | last_reviewed: YYYY-MM-DD HH:MM:SS"
|
|
63
63
|
ALLOWLIST: dict[str, str] = {
|
|
64
64
|
"ct-codebase-mapper": "T9567-followup: pre-existing; depth-backfill deferred | last_reviewed: 2026-05-21 14:00:18",
|
|
65
|
-
"ct-master-tac": "T9567-followup: pre-existing; depth-backfill deferred | last_reviewed: 2026-05-21 14:00:18",
|
|
66
|
-
"ct-memory": "T9567-followup: pre-existing; depth-backfill deferred | last_reviewed: 2026-05-21 14:00:18",
|
|
67
|
-
"ct-stickynote": "T9567-followup: ephemeral note skill; minimal-by-design | last_reviewed: 2026-05-21 14:00:18",
|
|
68
65
|
}
|
|
69
66
|
|
|
70
67
|
|
|
@@ -344,7 +344,7 @@ def generate_html(
|
|
|
344
344
|
{grading_html}
|
|
345
345
|
{comparison_html}
|
|
346
346
|
|
|
347
|
-
<div class="footer">Generated by ct-skill-
|
|
347
|
+
<div class="footer">Generated by ct-skill-author — CLEO Full Validation Report</div>
|
|
348
348
|
</body>
|
|
349
349
|
</html>
|
|
350
350
|
"""
|
|
@@ -31,7 +31,7 @@ from _skill_finder import find_first # noqa: E402
|
|
|
31
31
|
|
|
32
32
|
# Preference order — first found wins. Lets the user opt-in to a different
|
|
33
33
|
# eval skill via $SKILL_FINDER_PATH without code changes.
|
|
34
|
-
PREFERENCE = ["skill-evaluator", "ct-skill-creator"]
|
|
34
|
+
PREFERENCE = ["skill-evaluator", "ct-skill-author", "ct-skill-creator"]
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
def main() -> int:
|
|
@@ -83,7 +83,7 @@ def main() -> int:
|
|
|
83
83
|
if args.executor:
|
|
84
84
|
cmd += ["--executor", args.executor]
|
|
85
85
|
else:
|
|
86
|
-
# ct-skill-creator
|
|
86
|
+
# ct-skill-author (formerly ct-skill-creator) eval paths
|
|
87
87
|
if args.trigger:
|
|
88
88
|
script = eval_skill_path / "scripts" / "run_eval.py"
|
|
89
89
|
cmd = ["python3", str(script), "--skill-path", str(target_skill)]
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-spec-writer
|
|
3
3
|
description: Technical specification writing using RFC 2119 language for clear, unambiguous requirements. Creates protocol specifications, technical requirements, API specifications, and architecture documents with testable requirements and compliance criteria. Use when writing specifications, defining protocols, documenting requirements, or creating API contracts. Triggers on specification tasks, protocol definition needs, or requirement documentation.
|
|
4
|
-
version: 2.1.
|
|
5
|
-
tier: 2
|
|
6
|
-
core: false
|
|
7
|
-
category: recommended
|
|
4
|
+
version: 2.1.2
|
|
8
5
|
protocol: specification
|
|
9
|
-
loomStage: specification
|
|
10
6
|
adrRefs:
|
|
11
7
|
- ADR-014
|
|
12
8
|
- ADR-023
|
|
@@ -20,6 +16,16 @@ compatibility:
|
|
|
20
16
|
- windsurf
|
|
21
17
|
- gemini-cli
|
|
22
18
|
license: MIT
|
|
19
|
+
metadata:
|
|
20
|
+
version: 2.1.2
|
|
21
|
+
tier: on-demand
|
|
22
|
+
install: harness
|
|
23
|
+
covers:
|
|
24
|
+
- packages/core/src/validation/protocols/cant/specification.cant
|
|
25
|
+
- packages/core/src/validation/protocols/protocols-markdown/specification.md
|
|
26
|
+
loomStage: specification
|
|
27
|
+
lastReviewed: 2026-09-28
|
|
28
|
+
stability: stable
|
|
23
29
|
---
|
|
24
30
|
|
|
25
31
|
# Specification Writer Context Injection
|
|
@@ -225,7 +231,7 @@ Spec blobs live in the docs SSoT; published copies on disk go in
|
|
|
225
231
|
1. Read task: `{{TASK_SHOW_CMD}} {{TASK_ID}}`
|
|
226
232
|
2. Start task: `{{TASK_START_CMD}} {{TASK_ID}}` (if not already started by orchestrator)
|
|
227
233
|
3. Write specification to `docs/specs/{{SPEC_NAME}}.md`
|
|
228
|
-
4.
|
|
234
|
+
4. Record the manifest entry: `cleo manifest append --task {{TASK_ID}} --type specification --content "<one-paragraph summary>"`
|
|
229
235
|
5. Complete task: `{{TASK_COMPLETE_CMD}} {{TASK_ID}}`
|
|
230
236
|
6. Return summary message
|
|
231
237
|
|
|
@@ -238,7 +244,7 @@ Spec blobs live in the docs SSoT; published copies on disk go in
|
|
|
238
244
|
### Output Requirements
|
|
239
245
|
|
|
240
246
|
1. MUST write specification to: `docs/specs/{{SPEC_NAME}}.md`
|
|
241
|
-
2. MUST
|
|
247
|
+
2. MUST record ONE manifest entry: `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027)
|
|
242
248
|
3. MUST return ONLY: "Specification complete. Manifest appended to pipeline_manifest."
|
|
243
249
|
4. MUST NOT return specification content in response
|
|
244
250
|
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-task-executor
|
|
3
3
|
description: General implementation task execution for completing assigned CLEO tasks by following instructions and producing concrete deliverables. Handles coding, configuration, documentation work with quality verification against acceptance criteria and progress reporting. Use when executing implementation tasks, completing assigned work, or producing task deliverables. Triggers on implementation tasks, general execution needs, or task completion work.
|
|
4
|
-
version: 2.
|
|
5
|
-
metadata:
|
|
6
|
-
version: 2.2.0
|
|
7
|
-
lastReviewed: 2026-09-19
|
|
8
|
-
stability: stable
|
|
9
|
-
tier: 2
|
|
10
|
-
core: true
|
|
11
|
-
category: core
|
|
4
|
+
version: 2.7.3
|
|
12
5
|
protocol: implementation
|
|
13
|
-
loomStage: implementation
|
|
14
6
|
adrRefs:
|
|
15
7
|
- ADR-070
|
|
16
8
|
- ADR-062
|
|
@@ -25,8 +17,16 @@ compatibility:
|
|
|
25
17
|
- gemini-cli
|
|
26
18
|
license: MIT
|
|
27
19
|
metadata:
|
|
28
|
-
version: 2.7.
|
|
29
|
-
|
|
20
|
+
version: 2.7.3
|
|
21
|
+
tier: core
|
|
22
|
+
install: harness
|
|
23
|
+
covers:
|
|
24
|
+
- packages/cleo/src/cli/commands/verify.ts
|
|
25
|
+
- packages/cleo/src/cli/commands/complete.ts
|
|
26
|
+
- packages/core/src/validation/protocols/cant/implementation.cant
|
|
27
|
+
- packages/core/src/validation/protocols/protocols-markdown/implementation.md
|
|
28
|
+
loomStage: implementation
|
|
29
|
+
lastReviewed: 2026-09-28
|
|
30
30
|
stability: stable
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -99,8 +99,8 @@ Context injection for implementation tasks spawned via cleo-subagent. Provides d
|
|
|
99
99
|
2. Focus already set by orchestrator (set if working standalone)
|
|
100
100
|
3. Execute instructions (see Methodology below)
|
|
101
101
|
4. Verify deliverables against acceptance criteria
|
|
102
|
-
5.
|
|
103
|
-
6.
|
|
102
|
+
5. Record output: `cleo docs add {{TASK_ID}} --content - --type note --slug {{TOPIC_SLUG}}`
|
|
103
|
+
6. Record the manifest entry: `cleo manifest append --task {{TASK_ID}} --type implementation --content "<one-paragraph summary>"`
|
|
104
104
|
7. Complete task: `{{TASK_COMPLETE_CMD}} {{TASK_ID}}`
|
|
105
105
|
8. Return summary message
|
|
106
106
|
|
|
@@ -159,8 +159,8 @@ The routing prints a one-line info message to stderr (suppress with
|
|
|
159
159
|
|
|
160
160
|
### Output Requirements
|
|
161
161
|
|
|
162
|
-
1. MUST
|
|
163
|
-
2. MUST
|
|
162
|
+
1. MUST record findings with `cleo docs add {{TASK_ID}} --content - --type note --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
|
|
163
|
+
2. MUST record ONE manifest entry: `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027)
|
|
164
164
|
3. MUST return ONLY: "Implementation complete. Manifest appended to pipeline_manifest."
|
|
165
165
|
4. MUST NOT return implementation details in response
|
|
166
166
|
|
|
@@ -168,7 +168,7 @@ The routing prints a one-line info message to stderr (suppress with
|
|
|
168
168
|
|
|
169
169
|
## Output File Format
|
|
170
170
|
|
|
171
|
-
|
|
171
|
+
Record it with `cleo docs add {{TASK_ID}} --content - --type note --slug {{TOPIC_SLUG}}`, using this body:
|
|
172
172
|
|
|
173
173
|
```markdown
|
|
174
174
|
# {{TASK_NAME}}
|
|
@@ -193,7 +193,7 @@ Write to `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`:
|
|
|
193
193
|
|
|
194
194
|
## Acceptance Criteria Verification
|
|
195
195
|
|
|
196
|
-
Record each criterion's changed artifacts and actual verification results. A merged PR with green CI provides provenance; it cannot automatically satisfy implementation, testing and review. Use `pr:<number>;files:<changed-path>` for implementation and actual result atoms for test/review gates, with explicit `satisfies:T1234#AC1` links for canonical criteria. The PR must relate to the task; documentation-only changes cannot prove a code fix. Research and documentation tasks may use appropriately scoped documentary evidence. Fetch the merge commit before claiming its artifact bytes were inspected. Criterion edits require fresh evidence. A completed child does not establish that its parent's independent criteria were met.
|
|
196
|
+
Record each criterion's changed artifacts and actual verification results. A merged PR with green CI provides provenance; it cannot automatically satisfy implementation, testing and review. Use `pr:<number>;files:<changed-path>` for implementation (`pr:<component>@<integration>` when your PR merged into an integration branch) and actual result atoms for test/review gates, with explicit `satisfies:T1234#AC1` links for canonical criteria. The PR must relate to the task; documentation-only changes cannot prove a code fix. Research and documentation tasks may use appropriately scoped documentary evidence. Fetch the merge commit before claiming its artifact bytes were inspected. Criterion edits require fresh evidence. A completed child does not establish that its parent's independent criteria were met.
|
|
197
197
|
|
|
198
198
|
|
|
199
199
|
| Criterion | Status | Notes |
|
|
@@ -216,7 +216,7 @@ Record each criterion's changed artifacts and actual verification results. A mer
|
|
|
216
216
|
|
|
217
217
|
## Manifest Entry Format
|
|
218
218
|
|
|
219
|
-
Append ONE entry via `cleo manifest append <json
|
|
219
|
+
Append ONE entry via `cleo manifest append --entry '<json>'` (writes to pipeline_manifest table per ADR-027):
|
|
220
220
|
|
|
221
221
|
```json
|
|
222
222
|
{"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}}"]}
|
|
@@ -240,7 +240,7 @@ Append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest
|
|
|
240
240
|
- [ ] All instructions executed
|
|
241
241
|
- [ ] All deliverables produced
|
|
242
242
|
- [ ] Acceptance criteria verified
|
|
243
|
-
- [ ] Output
|
|
243
|
+
- [ ] Output recorded with `cleo docs add` (slug in the return message)
|
|
244
244
|
- [ ] Manifest entry appended (single line, valid JSON)
|
|
245
245
|
- [ ] Task completed via `{{TASK_COMPLETE_CMD}}`
|
|
246
246
|
- [ ] Session ended with summary note (if executor owns session)
|
|
@@ -307,8 +307,8 @@ cleo session list --all
|
|
|
307
307
|
# Clean up stale sessions (72h+ inactive)
|
|
308
308
|
cleo session gc
|
|
309
309
|
|
|
310
|
-
#
|
|
311
|
-
cleo session gc --
|
|
310
|
+
# Also end active sessions idle longer than N days (use cautiously)
|
|
311
|
+
cleo session gc --max-age 1
|
|
312
312
|
```
|
|
313
313
|
|
|
314
314
|
### Best Practices
|
|
@@ -43,8 +43,8 @@ not in the worktree's branch.
|
|
|
43
43
|
(persistent shell state was not reset between tool calls), or
|
|
44
44
|
deliberately followed an absolute path from a prior session's notes.
|
|
45
45
|
|
|
46
|
-
**Fix.** The spawn prompt's
|
|
47
|
-
|
|
46
|
+
**Fix.** The spawn prompt's FIRST ACTION guard, `cd '<path>' || exit 1`
|
|
47
|
+
(single-quoted, so it survives spaces), MUST start every Bash call. All subsequent paths SHOULD be absolute within the worktree.
|
|
48
48
|
If unsure, prefix with `git rev-parse --show-toplevel` first.
|
|
49
49
|
|
|
50
50
|
## Cherry-Pick Instead of Merge
|
|
@@ -61,7 +61,7 @@ relate commits to the task.
|
|
|
61
61
|
without reading ADR-062. The CLEO contract is that workers commit on
|
|
62
62
|
their task branch; the integrator MUST use `git merge --no-ff
|
|
63
63
|
task/<id>` to preserve SHAs, author identity, and the
|
|
64
|
-
`
|
|
64
|
+
`git log --grep <task-id>` trace.
|
|
65
65
|
|
|
66
66
|
**Fix.** Always `git merge --no-ff task/<TID>` for integration. See
|
|
67
67
|
`feedback_cherry_pick_worktrees.md` for the full pattern.
|
|
@@ -140,6 +140,7 @@ cleo memory observe "..." --title "..."
|
|
|
140
140
|
| — | `E_EVIDENCE_INSUFFICIENT` | Gate atom kind doesn't match required | See gate-atom table above |
|
|
141
141
|
| — | `E_EVIDENCE_TESTS_FAILED` | `tool:test` exit non-zero | Fix failing tests first |
|
|
142
142
|
| — | `E_EVIDENCE_TOOL_FAILED` | Lint/typecheck/etc exit non-zero | Fix source and re-run |
|
|
143
|
+
| — | `E_EVIDENCE_TOOL_VACUOUS` | Tool exited 0 but provably checked nothing (`tsc` without `-b` on a references-only tsconfig) | Add a covering `typecheck` script (e.g. `tsc -b`) or set `typecheck.command` in `.cleo/project-context.json` |
|
|
143
144
|
| — | `E_EVIDENCE_STALE` | Files or commit changed after verify | Re-verify before complete |
|
|
144
145
|
| — | `E_EVIDENCE_INVALID_DECISION` | Decision ID not found in BRAIN | Use `cleo memory decision-find` |
|
|
145
146
|
| — | `E_FLAG_REMOVED` | Tried `cleo complete --force` | `--force` removed per ADR-051 |
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-validator
|
|
3
3
|
description: Compliance validation for verifying systems, documents, or code against requirements, schemas, or standards. Performs schema validation, code compliance checks, document validation, and protocol compliance verification with detailed pass/fail reporting. Use when validating compliance, checking schemas, verifying code standards, or auditing protocol implementations. Triggers on validation tasks, compliance checks, or quality verification needs.
|
|
4
|
-
version: 2.0.
|
|
5
|
-
tier: 2
|
|
6
|
-
core: false
|
|
7
|
-
category: recommended
|
|
4
|
+
version: 2.0.4
|
|
8
5
|
protocol: validation
|
|
9
|
-
loomStage: validation
|
|
10
6
|
adrRefs:
|
|
11
7
|
- ADR-051
|
|
12
8
|
- ADR-023
|
|
@@ -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/validation.cant
|
|
25
|
+
- packages/core/src/validation/protocols/protocols-markdown/validation.md
|
|
26
|
+
loomStage: validation
|
|
27
|
+
lastReviewed: 2026-09-28
|
|
28
|
+
stability: stable
|
|
23
29
|
---
|
|
24
30
|
|
|
25
31
|
# Validator Context Injection
|
|
@@ -190,8 +196,8 @@ the Validate-phase Lead prompt, listing the touched packages and the exact
|
|
|
190
196
|
1. Read task: `{{TASK_SHOW_CMD}} {{TASK_ID}}`
|
|
191
197
|
2. Start task: `{{TASK_START_CMD}} {{TASK_ID}}` (if not already started by orchestrator)
|
|
192
198
|
3. Execute validation checks
|
|
193
|
-
4.
|
|
194
|
-
5.
|
|
199
|
+
4. Record validation report with `cleo docs add {{TASK_ID}} --content - --type note --slug {{TOPIC_SLUG}}`
|
|
200
|
+
5. Record the manifest entry: `cleo manifest append --task {{TASK_ID}} --type validation --content "<one-paragraph summary>"`
|
|
195
201
|
6. Complete task: `{{TASK_COMPLETE_CMD}} {{TASK_ID}}`
|
|
196
202
|
7. Return summary message
|
|
197
203
|
|
|
@@ -203,8 +209,8 @@ the Validate-phase Lead prompt, listing the touched packages and the exact
|
|
|
203
209
|
|
|
204
210
|
### Output Requirements
|
|
205
211
|
|
|
206
|
-
1. MUST
|
|
207
|
-
2. MUST
|
|
212
|
+
1. MUST record validation report with `cleo docs add {{TASK_ID}} --content - --type note --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
|
|
213
|
+
2. MUST record ONE manifest entry: `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027)
|
|
208
214
|
3. MUST return ONLY: "Validation complete. Manifest appended to pipeline_manifest."
|
|
209
215
|
4. MUST NOT return validation content in response
|
|
210
216
|
|
|
@@ -106,7 +106,7 @@ unactionable — the consumer cannot prioritize.
|
|
|
106
106
|
### Warnings
|
|
107
107
|
|
|
108
108
|
**W-001**: `packages/cleo/src/dispatch.ts` is 487 lines (warn at 400).
|
|
109
|
-
- Rule: ct-skill-
|
|
109
|
+
- Rule: ct-skill-author audit_body §body-length
|
|
110
110
|
- Fix: Extract sub-handlers into sibling files.
|
|
111
111
|
- Verification: re-run audit_body.py.
|
|
112
112
|
|
|
@@ -93,9 +93,9 @@ links; scan for placeholder text; verify formatting.
|
|
|
93
93
|
**Tool examples.**
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
# Use the ct-skill-
|
|
97
|
-
python packages/skills/skills/ct-skill-
|
|
98
|
-
python packages/skills/skills/ct-skill-
|
|
96
|
+
# Use the ct-skill-author scripts as a model
|
|
97
|
+
python packages/skills/skills/ct-skill-author/scripts/validate.py <skill-dir>
|
|
98
|
+
python packages/skills/skills/ct-skill-author/scripts/audit_body.py <skill-dir>
|
|
99
99
|
|
|
100
100
|
# Generic markdown link check
|
|
101
101
|
markdown-link-check docs/specs/*.md
|