@cleocode/skills 2026.5.110 → 2026.5.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/skills",
3
- "version": "2026.5.110",
3
+ "version": "2026.5.112",
4
4
  "description": "CLEO skill definitions - bundled with CLEO monorepo",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1,7 +1,7 @@
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.0
4
+ version: 3.6.0
5
5
  tier: 3
6
6
  core: false
7
7
  category: specialist
@@ -241,6 +241,58 @@ T10366 establishes the registry contract; T10367 (docs add) and T10368
241
241
  allocator — callers should continue invoking the existing writers
242
242
  (`cleo docs add` dispatch handler, `writeChangesetEntry`) directly.
243
243
 
244
+ **T10367 LIVE — `cleo docs add --type changeset` delegates to
245
+ `writeChangesetEntry`.** The dispatch handler in
246
+ `packages/cleo/src/dispatch/domains/docs.ts` now branches on
247
+ `payload.type === 'changeset'` and routes the call through the
248
+ canonical dual-write transaction. This eliminates the second writer
249
+ for the `changeset` DocKind (the SG-DOCS-INTEGRITY invariant) — the
250
+ bytes that land on `.changeset/<slug>.md` AND the SSoT blob are
251
+ byte-identical regardless of which verb the operator invoked. The
252
+ `cleo changeset add` CLI remains the friendlier authoring surface
253
+ (it prompts for every required frontmatter field) while
254
+ `cleo docs add --type changeset --file <path>` works for agents that
255
+ already have a fully-formed changeset markdown blob in hand.
256
+
257
+ Contract for the docs-add path:
258
+ - The input file MUST carry valid changeset frontmatter
259
+ (`id`, `tasks`, `kind`, `summary`). Missing → `E_REQUIRES_CHANGESET_VERB`
260
+ with a fix hint pointing at `cleo changeset add` for guided authoring.
261
+ - When `--slug` is also passed it MUST match the frontmatter `id`
262
+ (the frontmatter is canonical) — divergence → `E_SLUG_MISMATCH`.
263
+ - The LAFS envelope on success carries `data.type === 'changeset'`,
264
+ `data.slug`, `data.attachmentId`, and `data.sha256` — round-trip
265
+ identical to what `cleo changeset add` emits.
266
+
267
+ #### CI gate — DocKind Writer Uniqueness (T10369)
268
+
269
+ `scripts/lint-dockind-writer-uniqueness.mjs` (CI job:
270
+ `DocKind Writer Uniqueness (T10369)`) enforces the
271
+ WriterRegistry invariants at PR-time. It refuses to merge a PR that:
272
+
273
+ 1. Adds a new entry to `BUILTIN_DOC_KINDS` (in
274
+ `packages/contracts/src/docs-taxonomy.ts`) without a matching
275
+ descriptor in `writer-registry.ts` (`dockind-coverage-missing`).
276
+ 2. Declares more than one descriptor for the same DocKind
277
+ (`dockind-coverage-collision` — the registry itself throws at module
278
+ load too, this gate surfaces it earlier in CI).
279
+ 3. Has a `mode: 'ssot-first'` descriptor that does NOT match
280
+ `.cleo/canon.yml`'s `canonicalHome` for the same kind, or vice versa
281
+ (`canon-yml-ssot-first-drift`).
282
+ 4. Adds a NEW raw `writeFileSync(path.md, …)` / `writeFile(path.md, …)`
283
+ call inside `packages/core/src/**` that is not in
284
+ `.lint-dockind-writer-baseline.json` (`unregistered-md-write`).
285
+
286
+ Schema-parity rules (#1-#3) are ALWAYS strict — there is no baseline.
287
+ The unregistered-md-write rule runs in baseline mode by default; count
288
+ decreases always pass, count increases fail. The two legitimate
289
+ non-DocKind `.md` writers (`packages/core/src/sessions/handoff-markdown.ts`
290
+ for session snapshots and `packages/core/src/changesets/writer.ts` for
291
+ the canonical `changeset` DocKind) are allowlisted in the script.
292
+
293
+ Per-line opt-out (use sparingly): append
294
+ `// dockind-writer-allowed: <reason>` on the writeFile line.
295
+
244
296
  ### Slug similarity warn (T10361 · closes T10167)
245
297
 
246
298
  `cleo docs add` runs a fuzzy-match check against existing slugs for the