@cleocode/skills 2026.5.112 → 2026.5.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/ct-adr-recorder/SKILL.md +20 -1
- package/skills/ct-docs-write/SKILL.md +14 -3
- package/skills/ct-documentor/SKILL.md +193 -2
- package/skills/ct-spec-writer/SKILL.md +12 -3
- package/skills.json +235 -44
package/package.json
CHANGED
|
@@ -115,7 +115,26 @@ cleo docs add T4798 docs/adr/ADR-0042.md \
|
|
|
115
115
|
`spec | adr | research | handoff | note | llm-readme`.
|
|
116
116
|
- `--slug` MUST follow `adr-<NNNN>-<short-topic>`. The numeric segment
|
|
117
117
|
is the canonical ADR id; the topic segment makes the slug human
|
|
118
|
-
readable. Collisions return `
|
|
118
|
+
readable. Collisions return `E_SLUG_RESERVED` with 3 alternatives
|
|
119
|
+
(legacy `E_SLUG_TAKEN` aliased under `details.aliases` for one release —
|
|
120
|
+
T10386).
|
|
121
|
+
- Near-duplicate slugs trigger `W_SLUG_SIMILAR` (T10361). The CLI
|
|
122
|
+
surfaces the top match and hints `--allow-similar`. Use `--allow-similar`
|
|
123
|
+
only when the new ADR genuinely forks from the existing one (e.g.
|
|
124
|
+
versioned re-issue); every bypass is audited to
|
|
125
|
+
`.cleo/audit/similar-bypass.jsonl`.
|
|
126
|
+
- Unknown flags fail fast with `E_UNKNOWN_FLAG` + did-you-mean
|
|
127
|
+
suggestions (T10359) — `--lbls` becomes "did you mean --labels?".
|
|
128
|
+
- TODO(T10360 · E3.2 pending): when shipped, ADR drafts will accept
|
|
129
|
+
`--title "<human title>"` and CLEO will auto-allocate the next
|
|
130
|
+
`adr-NNN-<kebab-title>` via the E1 slug allocator. Until then,
|
|
131
|
+
you MUST hand-pick the next free `NNNN` by inspecting
|
|
132
|
+
`cleo docs list --type adr --project`. Example future call:
|
|
133
|
+
```bash
|
|
134
|
+
# FUTURE — DO NOT USE until T10360 ships:
|
|
135
|
+
# cleo docs add T4798 docs/drafts/draft.md --type adr \
|
|
136
|
+
# --title "Adopt Drizzle ORM v1 beta"
|
|
137
|
+
```
|
|
119
138
|
- The owner ID is the consensus task whose verdict drives the ADR
|
|
120
139
|
(`T4798` above). This is how downstream supersession cascades find
|
|
121
140
|
the chain — never attach an ADR to an arbitrary task.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-docs-write
|
|
3
3
|
description: This skill should be used when creating, editing, or reviewing documentation files (markdown, MDX, README, guides). Use when the user asks to "write docs", "create documentation", "edit the README", "improve doc clarity", "make docs more readable", "follow the style guide", or "write user-facing content". Applies CLEO's conversational, clear, and user-focused writing style.
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
tier: 3
|
|
6
6
|
core: false
|
|
7
7
|
category: composition
|
|
@@ -193,8 +193,19 @@ cleo docs add T1234 docs/drafts/saml-setup.md \
|
|
|
193
193
|
For user-facing prose use `note`; for end-user docs use `note` or `spec`
|
|
194
194
|
depending on whether the doc carries REQ-XXX requirements.
|
|
195
195
|
- `--slug` is the human-friendly handle for retrieval. Use kebab-case. If the
|
|
196
|
-
slug is already taken the CLI returns `
|
|
197
|
-
|
|
196
|
+
slug is already taken the CLI returns `E_SLUG_RESERVED` with 3 alternatives
|
|
197
|
+
(legacy `E_SLUG_TAKEN` aliased under `details.aliases` for one release —
|
|
198
|
+
T10386) — pick one rather than overwriting silently.
|
|
199
|
+
- If the slug is too close to an existing one the CLI surfaces a
|
|
200
|
+
`W_SLUG_SIMILAR` warning with the top match + a `--allow-similar` hint
|
|
201
|
+
(T10361). Pass `--allow-similar` to proceed when the fork is intentional;
|
|
202
|
+
every bypass is logged to `.cleo/audit/similar-bypass.jsonl`.
|
|
203
|
+
- Unknown flags (typos, removed options) fail fast with `E_UNKNOWN_FLAG`
|
|
204
|
+
+ did-you-mean suggestions (T10359). The legacy "silently absorb as
|
|
205
|
+
positional" behaviour from citty's `parseArgs` is rejected.
|
|
206
|
+
- TODO(T10360 · E3.2 pending): when shipped, `--type adr` will accept a
|
|
207
|
+
`--title <human-title>` flag and auto-allocate `adr-NNN-<kebab-title>`
|
|
208
|
+
via the E1 slug allocator — no more manual ADR-079 numbering.
|
|
198
209
|
- The owner ID (`T1234` above) auto-classifies the attachment by prefix:
|
|
199
210
|
`T###` → task, `ses_*` → session, `O-*` → observation.
|
|
200
211
|
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ct-documentor
|
|
3
3
|
description: Documentation coordinator with CLEO style guide compliance. Routes every canonical-doc write (spec, adr, research, handoff, note, llm-readme) through the docs SSoT via `cleo docs add` / `cleo docs publish` / `cleo docs fetch` — never raw filesystem writes. Coordinates ct-docs-lookup, ct-docs-write, ct-docs-review, ct-spec-writer, and ct-adr-recorder. Use when creating or updating documentation files, consolidating scattered documentation, or validating documentation against style standards. Triggers on documentation tasks, doc update requests, or style guide compliance checks.
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.12.0
|
|
5
5
|
tier: 3
|
|
6
6
|
core: false
|
|
7
7
|
category: specialist
|
|
8
8
|
protocol: null
|
|
9
|
+
metadata:
|
|
10
|
+
version: 3.12.0
|
|
11
|
+
lastReviewed: 2026-05-24
|
|
12
|
+
stability: stable
|
|
9
13
|
dependencies:
|
|
10
14
|
- ct-docs-lookup
|
|
11
15
|
- ct-docs-write
|
|
@@ -61,7 +65,7 @@ and every owner writes through `cleo docs add` — not raw filesystem writes.
|
|
|
61
65
|
| Doc Type | Owner Skill | SSoT Command |
|
|
62
66
|
|----------|-------------|--------------|
|
|
63
67
|
| `spec` (REQ-XXX requirements) | `ct-spec-writer` | `cleo docs add <ownerId> <path> --type spec --slug spec-<feature>` |
|
|
64
|
-
| `adr` (architecture decisions) | `ct-adr-recorder` | `cleo docs add <ownerId> <path> --type adr --slug adr-<NNN>-<rest>` |
|
|
68
|
+
| `adr` (architecture decisions) | `ct-adr-recorder` | `cleo docs add <ownerId> <path> --type adr --slug adr-<NNN>-<rest>` (TODO T10360 · E3.2 pending: `--title` + auto-`adr-NNN` allocation) |
|
|
65
69
|
| `research` (multi-source investigation) | `ct-research-agent` | `cleo docs add <ownerId> <path> --type research --slug research-<topic>` |
|
|
66
70
|
| `handoff` (session/agent transition) | `ct-documentor` (this skill) | `cleo docs add <ownerId> <path> --type handoff --slug handoff-<context>` |
|
|
67
71
|
| `note` (conversational prose) | `ct-docs-write` | `cleo docs add <ownerId> <path> --type note --slug <kebab-topic>` |
|
|
@@ -293,6 +297,193 @@ the canonical `changeset` DocKind) are allowlisted in the script.
|
|
|
293
297
|
Per-line opt-out (use sparingly): append
|
|
294
298
|
`// dockind-writer-allowed: <reason>` on the writeFile line.
|
|
295
299
|
|
|
300
|
+
#### Audit complement — manual-write sweep (T10372)
|
|
301
|
+
|
|
302
|
+
`scripts/sweep-manual-doc-writes.mjs` (CI job:
|
|
303
|
+
`Manual Write Sweep (T10372)`) is the read-only audit counterpart to
|
|
304
|
+
the writer-uniqueness lint. Where T10369 prevents *new* raw `.md`
|
|
305
|
+
writers from landing in `packages/core/src/**`, this sweep walks every
|
|
306
|
+
`*.md` file *already* added under `.cleo/canon.yml`'s `rawMdPaths`
|
|
307
|
+
directories since the T9791 docs-import cutoff (commit `251814e86`)
|
|
308
|
+
and classifies each one against the docs SSoT:
|
|
309
|
+
|
|
310
|
+
| Remediation | Meaning | Fix |
|
|
311
|
+
|---|---|---|
|
|
312
|
+
| `in-sync` | File SHA matches a blob already in the SSoT — bytes are tracked. | None. |
|
|
313
|
+
| `drift` | Slug exists in SSoT but the on-disk content has changed. | Re-publish via `cleo docs publish` or re-add as a new version. |
|
|
314
|
+
| `orphan` | Neither SHA nor slug resolves — the file is a raw fs write that bypassed `cleo docs add`. | Migrate via `cleo docs add <ownerId> <file> --type <kind> --slug <slug>`. |
|
|
315
|
+
| `deleted` | File was added since the cutoff but no longer exists on disk. | Informational only — does not count toward `unresolved`. |
|
|
316
|
+
|
|
317
|
+
Each run writes a timestamped report to
|
|
318
|
+
`audit/manual-write-sweep-<date>.json` and prints the summary block to
|
|
319
|
+
stdout. The CI job uploads the report as a workflow artefact on every
|
|
320
|
+
run and is wired with `continue-on-error: true` initially so the
|
|
321
|
+
existing orphan corpus does not break PRs. Saga T10288 / Epic T10293
|
|
322
|
+
E5.3 closes the orphan migration; the gate flips strict after that
|
|
323
|
+
lands.
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
# Local invocation — uses the globally-installed `cleo` on PATH.
|
|
327
|
+
node scripts/sweep-manual-doc-writes.mjs
|
|
328
|
+
|
|
329
|
+
# CI / monorepo build — point at the just-built local CLI bundle.
|
|
330
|
+
node scripts/sweep-manual-doc-writes.mjs \
|
|
331
|
+
--cleo-bin "node packages/cleo/dist/cli/index.js" \
|
|
332
|
+
--allow-unresolved
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Exit codes: `0` (clean OR `--allow-unresolved`), `1` (at least one
|
|
336
|
+
`orphan` or `drift` entry), `2` (canon.yml parse failure, git not
|
|
337
|
+
available, SSoT query failed).
|
|
338
|
+
|
|
339
|
+
### T10179 + T10203 manual-write migration (T10371)
|
|
340
|
+
|
|
341
|
+
Saga T10176's two known raw-write workarounds are normalised:
|
|
342
|
+
|
|
343
|
+
| Original file | SSoT slug | Type | Notes |
|
|
344
|
+
|---|---|---|---|
|
|
345
|
+
| `docs/research/t10179-executor-probe-result.md` | `t10179-executor-probe` | research | in-sync via earlier T9791 import — verified by SHA. |
|
|
346
|
+
| `.changeset/t10179-executor-probe.md` (consumed v5.108) | `t10179-changeset-archive` | note | bytes preserved verbatim from git `cc48ca10e`; archived because the pnpm/changesets `"@cleocode/cleo": patch` frontmatter does not satisfy the `changeset` DocKind schema. |
|
|
347
|
+
| `.changeset/t10203-napi-step-exports.md` (consumed v5.108) | `t10203-napi-step-exports` | changeset | in-sync via the `cleo changeset add` dual-write at PR-time. |
|
|
348
|
+
|
|
349
|
+
Round-trip parity is regression-locked by
|
|
350
|
+
`packages/core/src/docs/__tests__/manual-write-migration.test.ts`. The
|
|
351
|
+
test embeds the canonical bytes inline and asserts that
|
|
352
|
+
`createAttachmentStore().put(...) → findBySlug(...)` returns the same
|
|
353
|
+
SHA-256 it started with. Any future migration that silently rewrites or
|
|
354
|
+
recompresses these blobs fails the test.
|
|
355
|
+
|
|
356
|
+
### Sweep-driven remediation loop (T10373)
|
|
357
|
+
|
|
358
|
+
T10371 only covers the *known* manual-write set declared in the original
|
|
359
|
+
Saga T10176 disposition. The T10372 sweep surfaces *every* orphan
|
|
360
|
+
remaining under `rawMdPaths` at the moment it runs. T10373 closes the
|
|
361
|
+
loop by consuming the sweep report and migrating each orphan into the
|
|
362
|
+
SSoT using the same `cleo docs add --slug` pattern T10371 established.
|
|
363
|
+
|
|
364
|
+
The recurring pattern (use this any time the sweep flags fresh
|
|
365
|
+
orphans):
|
|
366
|
+
|
|
367
|
+
1. Run the sweep: `node scripts/sweep-manual-doc-writes.mjs`. The
|
|
368
|
+
report lands at `audit/manual-write-sweep-<date>.json`.
|
|
369
|
+
2. For each `orphan` entry, derive the migration tuple:
|
|
370
|
+
- `--type` from the file's parent directory (`.cleo/adrs/` → `adr`,
|
|
371
|
+
`.cleo/research/` → `research`, `.cleo/agent-outputs/` →
|
|
372
|
+
`handoff` or `note` based on content, `.cleo/rcasd/` → `rcasd`).
|
|
373
|
+
- `--slug` from the filename — lowercase, kebab-case, no
|
|
374
|
+
extension (e.g. `ADR-085-cross-db-invariants.md` →
|
|
375
|
+
`adr-085-cross-db-invariants`).
|
|
376
|
+
- `<owner-id>` from the file's frontmatter `task:` field if
|
|
377
|
+
present, otherwise from `cleo find "<filename-keyword>"`.
|
|
378
|
+
3. Run `cleo docs add <ownerId> <file> --type <kind> --slug <slug>
|
|
379
|
+
--desc "<sweep-remediation context>"`. The `--desc` should
|
|
380
|
+
reference the originating task ID so future operators can trace
|
|
381
|
+
the migration.
|
|
382
|
+
4. Verify via `cleo docs fetch <slug>` and re-run the sweep — the
|
|
383
|
+
`orphan` count MUST drop by the number of files migrated.
|
|
384
|
+
5. Add the new (slug, sha256, type, ownerId) row to a
|
|
385
|
+
round-trip parity test alongside the T10371 set. The canonical
|
|
386
|
+
example lives at
|
|
387
|
+
`packages/core/src/docs/__tests__/sweep-remediation.test.ts`.
|
|
388
|
+
|
|
389
|
+
T10373 migrated five orphans this way: `ADR-083`, `ADR-085`,
|
|
390
|
+
`T10268-saga-closeout`, `t10292-e4-cli-verb-matrix`, and
|
|
391
|
+
`t10292-e4-sdk-import-edges`. The last two were direct fallout from
|
|
392
|
+
the pre-T10389 worktree-unreachable bug — T10353 and T10354 workers
|
|
393
|
+
fell back to raw filesystem writes because `cleo docs add` rejected
|
|
394
|
+
inside their spawned worktrees. Re-publishing the bytes via the SSoT
|
|
395
|
+
proves the round-trip and closes the loop the bug opened.
|
|
396
|
+
|
|
397
|
+
If a sweep run surfaces a file that should genuinely stay as raw
|
|
398
|
+
markdown (e.g. an audit log not meant for SSoT propagation), add an
|
|
399
|
+
entry to `audit/sweep-exemptions.yml` rather than migrating it. The
|
|
400
|
+
sweep script honours exemptions and does not flag them as orphans.
|
|
401
|
+
|
|
402
|
+
### Stuck-saga closure via `cleo saga reconcile` (T10374 · Saga T10288 / Epic T10293)
|
|
403
|
+
|
|
404
|
+
When a Saga's docs-related closeout was completed under the saga's
|
|
405
|
+
member Epics — every Epic flipped to `status='done'` — but the parent
|
|
406
|
+
Saga row itself is still `pending`, the recovery verb is
|
|
407
|
+
`cleo saga reconcile <sagaId>`. This is the cron-safe T10121 path
|
|
408
|
+
that the ADR-076 / T10113 auto-close path delivers; sagas that pre-date
|
|
409
|
+
the auto-close path (T9625 is the canonical example) need an explicit
|
|
410
|
+
nudge.
|
|
411
|
+
|
|
412
|
+
The recipe — use this any time a docs-canon Saga is observably stuck
|
|
413
|
+
even though its members have all shipped via `cleo docs add` /
|
|
414
|
+
`cleo docs publish`:
|
|
415
|
+
|
|
416
|
+
1. Verify member-Epic terminality:
|
|
417
|
+
`for E in <memberIds>; do cleo show $E | jq '.data.task.status'; done`.
|
|
418
|
+
Every member must be `done`, `cancelled`, or `archived` before
|
|
419
|
+
reconcile will close the parent. If any member is genuinely stuck,
|
|
420
|
+
close THAT one first (evidence-based per ADR-051) — do NOT cancel
|
|
421
|
+
a member just to satisfy the gate.
|
|
422
|
+
2. Verify the SSoT fetch-gate the Saga's acceptance gates on (typically
|
|
423
|
+
a research plan or closure note):
|
|
424
|
+
`cleo docs fetch <slug>` — must return `success: true` with the
|
|
425
|
+
expected bytes.
|
|
426
|
+
3. Reconcile: `cleo saga reconcile <sagaId>`. The verb is idempotent
|
|
427
|
+
(re-runs return `action: 'no-op'`) and never modifies member rows.
|
|
428
|
+
4. Confirm: `cleo show <sagaId>` — `status` must be `done` and
|
|
429
|
+
`completedAt` populated. The action is appended to
|
|
430
|
+
`.cleo/audit/saga-reconcile.jsonl` for audit.
|
|
431
|
+
5. Write a closure-evidence handoff via
|
|
432
|
+
`cleo docs add <taskId> <file> --type handoff --slug <saga>-closure-evidence`
|
|
433
|
+
capturing: member statuses (table), reconcile envelope output,
|
|
434
|
+
sibling-saga sanity check (no cross-saga side effects), and
|
|
435
|
+
ADR-076 + T10113 path validation. The slug `t9625-closure-evidence`
|
|
436
|
+
is the canonical reference.
|
|
437
|
+
|
|
438
|
+
Regression coverage for this path lives at
|
|
439
|
+
`packages/core/src/sagas/__tests__/t9625-closure.test.ts` and locks
|
|
440
|
+
three invariants: stuck-saga closure (AC1), sibling-saga isolation
|
|
441
|
+
(AC2), and idempotency (AC3). Add a new case there whenever you close
|
|
442
|
+
another stuck docs-canon Saga so the recovery pattern stays under
|
|
443
|
+
test.
|
|
444
|
+
|
|
445
|
+
### Docs->memory auto-emit (T9976 · regression-tested by T10375)
|
|
446
|
+
|
|
447
|
+
Every successful `cleo docs add` fires a fire-and-forget memory observation
|
|
448
|
+
into `brain_observations`. The CLI never blocks on this write — a BRAIN
|
|
449
|
+
failure cannot fail `docs add` — but the observation is the bridge that
|
|
450
|
+
makes `cleo memory find '<slug>'` surface attached docs.
|
|
451
|
+
|
|
452
|
+
**Title shape**: `"Doc attached: <slug>"` (or `"Doc attached: <attachmentId>"`
|
|
453
|
+
when no slug is provided). This is what the FTS index matches on, so the
|
|
454
|
+
slug is also a memory-discovery key — not just a docs-lookup key.
|
|
455
|
+
|
|
456
|
+
**Narrative payload** (the {@link DocAttachmentObservationPayload} contract):
|
|
457
|
+
|
|
458
|
+
```jsonc
|
|
459
|
+
{
|
|
460
|
+
"kind": "doc-attachment", // discriminator
|
|
461
|
+
"attachmentId": "<id>", // assigned by the docs store
|
|
462
|
+
"ownerId": "<T#### | SG-#### | …>",
|
|
463
|
+
"slug": "<kebab-slug>", // omitted only when --slug not passed
|
|
464
|
+
"type": "<docKind>", // omitted only when --type not passed
|
|
465
|
+
"addedAt": "<ISO 8601 timestamp>"
|
|
466
|
+
}
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
The payload is consumed by `cleo memory verify <observationId>` for
|
|
470
|
+
round-trip checks against the docs store — see AC3 of the original T9976
|
|
471
|
+
suite at `packages/cleo/src/dispatch/domains/__tests__/docs-memory-observation.test.ts`.
|
|
472
|
+
|
|
473
|
+
**Retroactive sweeps**: when migrating manual `Write`-based docs back into
|
|
474
|
+
the SSoT (the T10371 + T10373 pattern), the auto-emit fires uniformly for
|
|
475
|
+
the kebab-case slugs the sweep uses (`t<num>-<kebab>`, `adr-<num>-<kebab>`).
|
|
476
|
+
Regression coverage lives at
|
|
477
|
+
`packages/cleo/src/dispatch/domains/__tests__/docs-memory-observation-retroactive.test.ts`
|
|
478
|
+
(T10375). Add a new case to that table whenever you discover a slug shape
|
|
479
|
+
not yet under test.
|
|
480
|
+
|
|
481
|
+
**Anti-pattern**: do NOT write a `cleo memory observe` manually after a
|
|
482
|
+
`cleo docs add` — the auto-emit already happened, and the duplicate
|
|
483
|
+
observation pollutes the FTS index. Use `cleo memory backfill-docs` (AC4
|
|
484
|
+
of T9976) only to repair attachments that pre-date the auto-emit feature
|
|
485
|
+
or were written outside the SSoT.
|
|
486
|
+
|
|
296
487
|
### Slug similarity warn (T10361 · closes T10167)
|
|
297
488
|
|
|
298
489
|
`cleo docs add` runs a fuzzy-match check against existing slugs for the
|
|
@@ -1,7 +1,7 @@
|
|
|
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.
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
tier: 2
|
|
6
6
|
core: false
|
|
7
7
|
category: recommended
|
|
@@ -161,8 +161,17 @@ cleo docs add T1234 docs/specs/auth-protocol.md \
|
|
|
161
161
|
Other allowed values: `adr | research | handoff | note | llm-readme`.
|
|
162
162
|
- `--slug` is the kebab-case retrieval handle. Use the spec topic +
|
|
163
163
|
version (e.g. `auth-protocol-v2`, `release-pipeline-v3`). The CLI
|
|
164
|
-
returns `
|
|
165
|
-
|
|
164
|
+
returns `E_SLUG_RESERVED` with 3 alternatives on collision (legacy
|
|
165
|
+
`E_SLUG_TAKEN` aliased under `details.aliases` for one release —
|
|
166
|
+
T10386) — pick one rather than silently overwriting.
|
|
167
|
+
- Near-duplicate slugs (e.g. `auth-protocol-v2` vs an existing
|
|
168
|
+
`auth-protocol`) surface a `W_SLUG_SIMILAR` warning with the top
|
|
169
|
+
match (T10361). Pass `--allow-similar` to proceed when the new spec
|
|
170
|
+
intentionally forks; every bypass is audited to
|
|
171
|
+
`.cleo/audit/similar-bypass.jsonl`.
|
|
172
|
+
- Unknown flags fail fast with `E_UNKNOWN_FLAG` + did-you-mean
|
|
173
|
+
suggestions (T10359) — `--titel`/`--lables` become "did you mean
|
|
174
|
+
--type/--labels?". Run `cleo docs add --help` for the canonical surface.
|
|
166
175
|
- The owner ID (`T1234`) auto-attaches the spec to its parent task so
|
|
167
176
|
downstream stages (`ct-validator`, decomposition, implementation)
|
|
168
177
|
can discover the spec via `cleo docs list --task T1234 --type spec`.
|
package/skills.json
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "2.1.0",
|
|
3
|
-
"generated": "2026-
|
|
3
|
+
"generated": "2026-05-24T00:00:00Z",
|
|
4
4
|
"skills": [
|
|
5
5
|
{
|
|
6
6
|
"name": "ct-cleo",
|
|
7
7
|
"description": "CLEO task management protocol - core guidance for session, task, and workflow operations. Provides CLI-based workflow, session protocol, task discovery patterns, RCSD lifecycle overview, error handling, and the Human Render Contract (ADR-077). Load this skill for detailed CLEO protocol guidance.",
|
|
8
8
|
"version": "2.2.0",
|
|
9
9
|
"path": "skills/ct-cleo/SKILL.md",
|
|
10
|
-
"references": [
|
|
10
|
+
"references": [
|
|
11
|
+
"skills/ct-cleo/references/session-protocol.md",
|
|
12
|
+
"skills/ct-cleo/references/loom-lifecycle.md",
|
|
13
|
+
"skills/ct-cleo/references/anti-patterns.md"
|
|
14
|
+
],
|
|
11
15
|
"core": true,
|
|
12
16
|
"category": "core",
|
|
13
17
|
"tier": 0,
|
|
14
18
|
"protocol": null,
|
|
15
19
|
"dependencies": [],
|
|
16
|
-
"sharedResources": [
|
|
17
|
-
|
|
20
|
+
"sharedResources": [
|
|
21
|
+
"task-system-integration"
|
|
22
|
+
],
|
|
23
|
+
"compatibility": [
|
|
24
|
+
"claude-code",
|
|
25
|
+
"gemini-cli",
|
|
26
|
+
"codex-cli"
|
|
27
|
+
],
|
|
18
28
|
"license": "MIT",
|
|
19
29
|
"metadata": {
|
|
20
30
|
"version": "2.2.0",
|
|
@@ -27,14 +37,32 @@
|
|
|
27
37
|
"description": "Pipeline-aware orchestration for multi-agent workflows. Manages RCASD-IVTR+C pipeline progression for epics, delegates all work to subagents via provider-neutral spawning, enforces lifecycle gates before spawning, and reads only manifests. Use when orchestrating complex workflows, delegating to subagents, or managing epic pipeline progression.",
|
|
28
38
|
"version": "4.0.0",
|
|
29
39
|
"path": "skills/ct-orchestrator/SKILL.md",
|
|
30
|
-
"references": [
|
|
40
|
+
"references": [
|
|
41
|
+
"skills/ct-orchestrator/references/autonomous-operation.md",
|
|
42
|
+
"skills/ct-orchestrator/references/lifecycle-gates.md",
|
|
43
|
+
"skills/ct-orchestrator/references/orchestrator-compliance.md",
|
|
44
|
+
"skills/ct-orchestrator/references/orchestrator-handoffs.md",
|
|
45
|
+
"skills/ct-orchestrator/references/orchestrator-patterns.md",
|
|
46
|
+
"skills/ct-orchestrator/references/orchestrator-recovery.md",
|
|
47
|
+
"skills/ct-orchestrator/references/orchestrator-spawning.md",
|
|
48
|
+
"skills/ct-orchestrator/references/orchestrator-tokens.md",
|
|
49
|
+
"skills/ct-orchestrator/references/SUBAGENT-PROTOCOL-BLOCK.md"
|
|
50
|
+
],
|
|
31
51
|
"core": true,
|
|
32
52
|
"category": "core",
|
|
33
53
|
"tier": 0,
|
|
34
54
|
"protocol": "agent-protocol",
|
|
35
55
|
"dependencies": [],
|
|
36
|
-
"sharedResources": [
|
|
37
|
-
|
|
56
|
+
"sharedResources": [
|
|
57
|
+
"subagent-protocol-base",
|
|
58
|
+
"task-system-integration"
|
|
59
|
+
],
|
|
60
|
+
"compatibility": [
|
|
61
|
+
"claude-code",
|
|
62
|
+
"cursor",
|
|
63
|
+
"windsurf",
|
|
64
|
+
"gemini-cli"
|
|
65
|
+
],
|
|
38
66
|
"license": "MIT",
|
|
39
67
|
"metadata": {}
|
|
40
68
|
},
|
|
@@ -49,8 +77,16 @@
|
|
|
49
77
|
"tier": 0,
|
|
50
78
|
"protocol": "implementation",
|
|
51
79
|
"dependencies": [],
|
|
52
|
-
"sharedResources": [
|
|
53
|
-
|
|
80
|
+
"sharedResources": [
|
|
81
|
+
"subagent-protocol-base",
|
|
82
|
+
"task-system-integration"
|
|
83
|
+
],
|
|
84
|
+
"compatibility": [
|
|
85
|
+
"claude-code",
|
|
86
|
+
"cursor",
|
|
87
|
+
"windsurf",
|
|
88
|
+
"gemini-cli"
|
|
89
|
+
],
|
|
54
90
|
"license": "MIT",
|
|
55
91
|
"metadata": {}
|
|
56
92
|
},
|
|
@@ -59,14 +95,33 @@
|
|
|
59
95
|
"description": "Epic planning and task decomposition for breaking down large initiatives into atomic, executable tasks. Provides dependency analysis, wave-based parallel execution planning, hierarchy management, and research linking.",
|
|
60
96
|
"version": "3.0.0",
|
|
61
97
|
"path": "skills/ct-epic-architect/SKILL.md",
|
|
62
|
-
"references": [
|
|
98
|
+
"references": [
|
|
99
|
+
"skills/ct-epic-architect/references/bug-epic-example.md",
|
|
100
|
+
"skills/ct-epic-architect/references/commands.md",
|
|
101
|
+
"skills/ct-epic-architect/references/feature-epic-example.md",
|
|
102
|
+
"skills/ct-epic-architect/references/migration-epic-example.md",
|
|
103
|
+
"skills/ct-epic-architect/references/output-format.md",
|
|
104
|
+
"skills/ct-epic-architect/references/patterns.md",
|
|
105
|
+
"skills/ct-epic-architect/references/refactor-epic-example.md",
|
|
106
|
+
"skills/ct-epic-architect/references/research-epic-example.md",
|
|
107
|
+
"skills/ct-epic-architect/references/shell-escaping.md",
|
|
108
|
+
"skills/ct-epic-architect/references/skill-aware-execution.md"
|
|
109
|
+
],
|
|
63
110
|
"core": false,
|
|
64
111
|
"category": "recommended",
|
|
65
112
|
"tier": 1,
|
|
66
113
|
"protocol": "decomposition",
|
|
67
114
|
"dependencies": [],
|
|
68
|
-
"sharedResources": [
|
|
69
|
-
|
|
115
|
+
"sharedResources": [
|
|
116
|
+
"subagent-protocol-base",
|
|
117
|
+
"task-system-integration"
|
|
118
|
+
],
|
|
119
|
+
"compatibility": [
|
|
120
|
+
"claude-code",
|
|
121
|
+
"cursor",
|
|
122
|
+
"windsurf",
|
|
123
|
+
"gemini-cli"
|
|
124
|
+
],
|
|
70
125
|
"license": "MIT",
|
|
71
126
|
"metadata": {}
|
|
72
127
|
},
|
|
@@ -81,15 +136,23 @@
|
|
|
81
136
|
"tier": 1,
|
|
82
137
|
"protocol": "research",
|
|
83
138
|
"dependencies": [],
|
|
84
|
-
"sharedResources": [
|
|
85
|
-
|
|
139
|
+
"sharedResources": [
|
|
140
|
+
"subagent-protocol-base",
|
|
141
|
+
"task-system-integration"
|
|
142
|
+
],
|
|
143
|
+
"compatibility": [
|
|
144
|
+
"claude-code",
|
|
145
|
+
"cursor",
|
|
146
|
+
"windsurf",
|
|
147
|
+
"gemini-cli"
|
|
148
|
+
],
|
|
86
149
|
"license": "MIT",
|
|
87
150
|
"metadata": {}
|
|
88
151
|
},
|
|
89
152
|
{
|
|
90
153
|
"name": "ct-spec-writer",
|
|
91
154
|
"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.",
|
|
92
|
-
"version": "2.
|
|
155
|
+
"version": "2.1.0",
|
|
93
156
|
"path": "skills/ct-spec-writer/SKILL.md",
|
|
94
157
|
"references": [],
|
|
95
158
|
"core": false,
|
|
@@ -97,8 +160,16 @@
|
|
|
97
160
|
"tier": 1,
|
|
98
161
|
"protocol": "specification",
|
|
99
162
|
"dependencies": [],
|
|
100
|
-
"sharedResources": [
|
|
101
|
-
|
|
163
|
+
"sharedResources": [
|
|
164
|
+
"subagent-protocol-base",
|
|
165
|
+
"task-system-integration"
|
|
166
|
+
],
|
|
167
|
+
"compatibility": [
|
|
168
|
+
"claude-code",
|
|
169
|
+
"cursor",
|
|
170
|
+
"windsurf",
|
|
171
|
+
"gemini-cli"
|
|
172
|
+
],
|
|
102
173
|
"license": "MIT",
|
|
103
174
|
"metadata": {}
|
|
104
175
|
},
|
|
@@ -113,8 +184,16 @@
|
|
|
113
184
|
"tier": 1,
|
|
114
185
|
"protocol": "validation",
|
|
115
186
|
"dependencies": [],
|
|
116
|
-
"sharedResources": [
|
|
117
|
-
|
|
187
|
+
"sharedResources": [
|
|
188
|
+
"subagent-protocol-base",
|
|
189
|
+
"task-system-integration"
|
|
190
|
+
],
|
|
191
|
+
"compatibility": [
|
|
192
|
+
"claude-code",
|
|
193
|
+
"cursor",
|
|
194
|
+
"windsurf",
|
|
195
|
+
"gemini-cli"
|
|
196
|
+
],
|
|
118
197
|
"license": "MIT",
|
|
119
198
|
"metadata": {}
|
|
120
199
|
},
|
|
@@ -129,24 +208,44 @@
|
|
|
129
208
|
"tier": 2,
|
|
130
209
|
"protocol": "contribution",
|
|
131
210
|
"dependencies": [],
|
|
132
|
-
"sharedResources": [
|
|
133
|
-
|
|
211
|
+
"sharedResources": [
|
|
212
|
+
"subagent-protocol-base",
|
|
213
|
+
"task-system-integration"
|
|
214
|
+
],
|
|
215
|
+
"compatibility": [
|
|
216
|
+
"claude-code",
|
|
217
|
+
"cursor",
|
|
218
|
+
"windsurf",
|
|
219
|
+
"gemini-cli"
|
|
220
|
+
],
|
|
134
221
|
"license": "MIT",
|
|
135
222
|
"metadata": {}
|
|
136
223
|
},
|
|
137
224
|
{
|
|
138
225
|
"name": "ct-documentor",
|
|
139
226
|
"description": "Documentation creation, editing, and review with CLEO style guide compliance. Coordinates specialized skills for lookup, writing, and review.",
|
|
140
|
-
"version": "3.
|
|
227
|
+
"version": "3.12.0",
|
|
141
228
|
"path": "skills/ct-documentor/SKILL.md",
|
|
142
229
|
"references": [],
|
|
143
230
|
"core": false,
|
|
144
231
|
"category": "specialist",
|
|
145
232
|
"tier": 2,
|
|
146
233
|
"protocol": null,
|
|
147
|
-
"dependencies": [
|
|
148
|
-
|
|
149
|
-
|
|
234
|
+
"dependencies": [
|
|
235
|
+
"ct-docs-lookup",
|
|
236
|
+
"ct-docs-write",
|
|
237
|
+
"ct-docs-review"
|
|
238
|
+
],
|
|
239
|
+
"sharedResources": [
|
|
240
|
+
"subagent-protocol-base",
|
|
241
|
+
"task-system-integration"
|
|
242
|
+
],
|
|
243
|
+
"compatibility": [
|
|
244
|
+
"claude-code",
|
|
245
|
+
"cursor",
|
|
246
|
+
"windsurf",
|
|
247
|
+
"gemini-cli"
|
|
248
|
+
],
|
|
150
249
|
"license": "MIT",
|
|
151
250
|
"metadata": {}
|
|
152
251
|
},
|
|
@@ -162,14 +261,19 @@
|
|
|
162
261
|
"protocol": null,
|
|
163
262
|
"dependencies": [],
|
|
164
263
|
"sharedResources": [],
|
|
165
|
-
"compatibility": [
|
|
264
|
+
"compatibility": [
|
|
265
|
+
"claude-code",
|
|
266
|
+
"cursor",
|
|
267
|
+
"windsurf",
|
|
268
|
+
"gemini-cli"
|
|
269
|
+
],
|
|
166
270
|
"license": "MIT",
|
|
167
271
|
"metadata": {}
|
|
168
272
|
},
|
|
169
273
|
{
|
|
170
274
|
"name": "ct-docs-write",
|
|
171
275
|
"description": "Documentation writing with CLEO's conversational, clear, user-focused style. Use when creating, editing, or improving documentation files.",
|
|
172
|
-
"version": "1.
|
|
276
|
+
"version": "1.2.0",
|
|
173
277
|
"path": "skills/ct-docs-write/SKILL.md",
|
|
174
278
|
"references": [],
|
|
175
279
|
"core": false,
|
|
@@ -178,7 +282,12 @@
|
|
|
178
282
|
"protocol": null,
|
|
179
283
|
"dependencies": [],
|
|
180
284
|
"sharedResources": [],
|
|
181
|
-
"compatibility": [
|
|
285
|
+
"compatibility": [
|
|
286
|
+
"claude-code",
|
|
287
|
+
"cursor",
|
|
288
|
+
"windsurf",
|
|
289
|
+
"gemini-cli"
|
|
290
|
+
],
|
|
182
291
|
"license": "MIT",
|
|
183
292
|
"metadata": {}
|
|
184
293
|
},
|
|
@@ -194,7 +303,12 @@
|
|
|
194
303
|
"protocol": null,
|
|
195
304
|
"dependencies": [],
|
|
196
305
|
"sharedResources": [],
|
|
197
|
-
"compatibility": [
|
|
306
|
+
"compatibility": [
|
|
307
|
+
"claude-code",
|
|
308
|
+
"cursor",
|
|
309
|
+
"windsurf",
|
|
310
|
+
"gemini-cli"
|
|
311
|
+
],
|
|
198
312
|
"license": "MIT",
|
|
199
313
|
"metadata": {}
|
|
200
314
|
},
|
|
@@ -209,8 +323,15 @@
|
|
|
209
323
|
"tier": 2,
|
|
210
324
|
"protocol": "contribution",
|
|
211
325
|
"dependencies": [],
|
|
212
|
-
"sharedResources": [
|
|
213
|
-
|
|
326
|
+
"sharedResources": [
|
|
327
|
+
"subagent-protocol-base"
|
|
328
|
+
],
|
|
329
|
+
"compatibility": [
|
|
330
|
+
"claude-code",
|
|
331
|
+
"cursor",
|
|
332
|
+
"windsurf",
|
|
333
|
+
"gemini-cli"
|
|
334
|
+
],
|
|
214
335
|
"license": "MIT",
|
|
215
336
|
"metadata": {}
|
|
216
337
|
},
|
|
@@ -226,27 +347,59 @@
|
|
|
226
347
|
"protocol": null,
|
|
227
348
|
"dependencies": [],
|
|
228
349
|
"sharedResources": [],
|
|
229
|
-
"compatibility": [
|
|
350
|
+
"compatibility": [
|
|
351
|
+
"claude-code",
|
|
352
|
+
"cursor",
|
|
353
|
+
"windsurf",
|
|
354
|
+
"gemini-cli"
|
|
355
|
+
],
|
|
230
356
|
"license": "MIT",
|
|
231
357
|
"metadata": {}
|
|
232
358
|
},
|
|
233
359
|
{
|
|
234
360
|
"name": "ct-council",
|
|
235
|
-
"description": "Convene \"The Council\"
|
|
361
|
+
"description": "Convene \"The Council\" \u2014 a 5-advisor, shuffled gate-based peer-review, chairman-synthesis workflow for reviewing a plan, decision, architecture, or piece of work inside the current project. Use when the user says \"convene the council\" (or \"counsel\"), \"get the council on this\", \"council review\", \"run the five advisors\", \"stress-test this\", \"get multiple perspectives\", or asks for a rigorous multi-angle challenge of a proposal (Contrarian, First Principles, Expansionist, Outsider, Executor \u2192 shuffled peer review with pass/fail gates \u2192 convergence detector \u2192 Chairman verdict). Operates on the current codebase \u2014 each advisor grounds their analysis in actual files/commits before opining. Output is validated by scripts/validate.py.",
|
|
236
362
|
"version": "1.0.0",
|
|
237
363
|
"path": "skills/ct-council/SKILL.md",
|
|
238
|
-
"references": [
|
|
364
|
+
"references": [
|
|
365
|
+
"skills/ct-council/references/chairman.md",
|
|
366
|
+
"skills/ct-council/references/contrarian.md",
|
|
367
|
+
"skills/ct-council/references/evidence-pack.md",
|
|
368
|
+
"skills/ct-council/references/examples.md",
|
|
369
|
+
"skills/ct-council/references/executor.md",
|
|
370
|
+
"skills/ct-council/references/expansionist.md",
|
|
371
|
+
"skills/ct-council/references/first-principles.md",
|
|
372
|
+
"skills/ct-council/references/outsider.md",
|
|
373
|
+
"skills/ct-council/references/peer-review.md"
|
|
374
|
+
],
|
|
239
375
|
"core": false,
|
|
240
376
|
"category": "specialist",
|
|
241
377
|
"tier": 2,
|
|
242
378
|
"protocol": null,
|
|
243
379
|
"dependencies": [],
|
|
244
380
|
"sharedResources": [],
|
|
245
|
-
"compatibility": [
|
|
381
|
+
"compatibility": [
|
|
382
|
+
"claude-code",
|
|
383
|
+
"cursor",
|
|
384
|
+
"windsurf",
|
|
385
|
+
"gemini-cli"
|
|
386
|
+
],
|
|
246
387
|
"license": "MIT",
|
|
247
388
|
"metadata": {
|
|
248
|
-
"triggers": [
|
|
249
|
-
|
|
389
|
+
"triggers": [
|
|
390
|
+
"convene the council",
|
|
391
|
+
"council review",
|
|
392
|
+
"run the five advisors",
|
|
393
|
+
"stress-test this",
|
|
394
|
+
"get multiple perspectives"
|
|
395
|
+
],
|
|
396
|
+
"advisors": [
|
|
397
|
+
"Contrarian",
|
|
398
|
+
"First Principles",
|
|
399
|
+
"Expansionist",
|
|
400
|
+
"Outsider",
|
|
401
|
+
"Executor"
|
|
402
|
+
]
|
|
250
403
|
}
|
|
251
404
|
},
|
|
252
405
|
{
|
|
@@ -254,14 +407,22 @@
|
|
|
254
407
|
"description": "Guide for creating effective skills. Use when creating a new skill or updating an existing skill that extends agent capabilities.",
|
|
255
408
|
"version": "1.0.0",
|
|
256
409
|
"path": "skills/ct-skill-creator/SKILL.md",
|
|
257
|
-
"references": [
|
|
410
|
+
"references": [
|
|
411
|
+
"skills/ct-skill-creator/references/output-patterns.md",
|
|
412
|
+
"skills/ct-skill-creator/references/workflows.md"
|
|
413
|
+
],
|
|
258
414
|
"core": false,
|
|
259
415
|
"category": "meta",
|
|
260
416
|
"tier": 3,
|
|
261
417
|
"protocol": null,
|
|
262
418
|
"dependencies": [],
|
|
263
419
|
"sharedResources": [],
|
|
264
|
-
"compatibility": [
|
|
420
|
+
"compatibility": [
|
|
421
|
+
"claude-code",
|
|
422
|
+
"cursor",
|
|
423
|
+
"windsurf",
|
|
424
|
+
"gemini-cli"
|
|
425
|
+
],
|
|
265
426
|
"license": "MIT",
|
|
266
427
|
"metadata": {}
|
|
267
428
|
},
|
|
@@ -277,7 +438,12 @@
|
|
|
277
438
|
"protocol": null,
|
|
278
439
|
"dependencies": [],
|
|
279
440
|
"sharedResources": [],
|
|
280
|
-
"compatibility": [
|
|
441
|
+
"compatibility": [
|
|
442
|
+
"claude-code",
|
|
443
|
+
"cursor",
|
|
444
|
+
"windsurf",
|
|
445
|
+
"gemini-cli"
|
|
446
|
+
],
|
|
281
447
|
"license": "MIT",
|
|
282
448
|
"metadata": {}
|
|
283
449
|
},
|
|
@@ -286,18 +452,43 @@
|
|
|
286
452
|
"description": "LOOM (Logical Order of Operations Methodology) - the systematic framework for how CLEO processes project threads through the RCASD-IVTR+C pipeline. LOOM encompasses the full lifecycle methodology that transforms raw ideas into delivered artifacts, from Research through Release with the Contribution protocol (+C) running across all stages. References docs/concepts/CLEO-VISION.md for the complete LOOM framework, neural hierarchy model, and brain metaphor mapping.",
|
|
287
453
|
"version": "1.0.0",
|
|
288
454
|
"path": "docs/concepts/CLEO-VISION.md",
|
|
289
|
-
"references": [
|
|
455
|
+
"references": [
|
|
456
|
+
".cleo/adrs/ADR-007-domain-consolidation.md",
|
|
457
|
+
".cleo/adrs/ADR-009-BRAIN-cognitive-architecture.md"
|
|
458
|
+
],
|
|
290
459
|
"core": false,
|
|
291
460
|
"category": "core",
|
|
292
461
|
"tier": 0,
|
|
293
462
|
"protocol": null,
|
|
294
463
|
"dependencies": [],
|
|
295
464
|
"sharedResources": [],
|
|
296
|
-
"compatibility": [
|
|
465
|
+
"compatibility": [
|
|
466
|
+
"claude-code",
|
|
467
|
+
"cursor",
|
|
468
|
+
"windsurf",
|
|
469
|
+
"gemini-cli"
|
|
470
|
+
],
|
|
297
471
|
"license": "MIT",
|
|
298
472
|
"metadata": {
|
|
299
|
-
"concepts": [
|
|
300
|
-
|
|
473
|
+
"concepts": [
|
|
474
|
+
"LOOM",
|
|
475
|
+
"RCASD-IVTR+C",
|
|
476
|
+
"lifecycle pipeline",
|
|
477
|
+
"neural hierarchy",
|
|
478
|
+
"brain metaphor"
|
|
479
|
+
],
|
|
480
|
+
"domains": [
|
|
481
|
+
"tasks",
|
|
482
|
+
"session",
|
|
483
|
+
"memory",
|
|
484
|
+
"check",
|
|
485
|
+
"pipeline",
|
|
486
|
+
"orchestrate",
|
|
487
|
+
"tools",
|
|
488
|
+
"admin",
|
|
489
|
+
"nexus",
|
|
490
|
+
"sticky"
|
|
491
|
+
]
|
|
301
492
|
}
|
|
302
493
|
}
|
|
303
494
|
]
|