@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.
Files changed (154) hide show
  1. package/README.md +46 -63
  2. package/frontmatter.d.mts +60 -0
  3. package/frontmatter.mjs +277 -0
  4. package/index.d.ts +3 -3
  5. package/index.js +34 -9
  6. package/package.json +4 -2
  7. package/profiles/core.json +10 -3
  8. package/profiles/full.json +10 -6
  9. package/profiles/recommended.json +29 -3
  10. package/skills/_shared/manifest-operations.md +19 -40
  11. package/skills/_shared/skill-chaining-patterns.md +5 -9
  12. package/skills/_shared/subagent-protocol-base.md +6 -6
  13. package/skills/_shared/task-system-integration.md +6 -6
  14. package/skills/ct-adr-recorder/SKILL.md +22 -16
  15. package/skills/ct-artifact-publisher/SKILL.md +14 -6
  16. package/skills/ct-cleo/SKILL.md +97 -16
  17. package/skills/ct-cleo/__tests__/injection-content.test.ts +62 -13
  18. package/skills/ct-cleo/references/loom-lifecycle.md +1 -1
  19. package/skills/{ct-memory/SKILL.md → ct-cleo/references/memory.md} +10 -18
  20. package/skills/ct-cleo/references/orchestrator-constraints.md +5 -5
  21. package/skills/ct-cleo/references/session-protocol.md +17 -9
  22. package/skills/{ct-stickynote/SKILL.md → ct-cleo/references/sticky-notes.md} +7 -25
  23. package/skills/ct-codebase-mapper/SKILL.md +66 -38
  24. package/skills/ct-consensus-voter/SKILL.md +14 -6
  25. package/skills/ct-contribution/SKILL.md +11 -5
  26. package/skills/ct-council/SKILL.md +5 -0
  27. package/skills/ct-dev-workflow/SKILL.md +9 -8
  28. package/skills/ct-documentor/SKILL.md +37 -34
  29. package/skills/{ct-docs-review/__tests__/skill-docs-review.test.ts → ct-documentor/__tests__/reviewing-reference.test.ts} +4 -3
  30. package/skills/{ct-docs-write/__tests__/skill-docs-write.test.ts → ct-documentor/__tests__/writing-reference.test.ts} +4 -3
  31. package/skills/ct-documentor/references/anti-patterns.md +8 -8
  32. package/skills/{ct-docs-write → ct-documentor}/references/audience-targeting.md +5 -5
  33. package/skills/ct-documentor/references/chain-orchestration.md +19 -19
  34. package/skills/{ct-docs-write → ct-documentor}/references/cleo-style-guide.md +1 -1
  35. package/skills/ct-documentor/references/doc-types-and-templates.md +1 -1
  36. package/skills/{ct-docs-review → ct-documentor}/references/pr-review-mode.md +1 -1
  37. package/skills/{ct-docs-review/SKILL.md → ct-documentor/references/reviewing.md} +6 -22
  38. package/skills/ct-documentor/references/style-coordination.md +5 -5
  39. package/skills/{ct-docs-review → ct-documentor}/references/style-violations.md +1 -1
  40. package/skills/{ct-docs-write/SKILL.md → ct-documentor/references/writing.md} +5 -21
  41. package/skills/ct-epic-architect/SKILL.md +16 -9
  42. package/skills/ct-epic-architect/references/commands.md +5 -5
  43. package/skills/ct-epic-architect/references/output-format.md +2 -2
  44. package/skills/ct-epic-architect/references/patterns.md +2 -2
  45. package/skills/ct-epic-architect/references/skill-aware-execution.md +3 -3
  46. package/skills/ct-grade/SKILL.md +7 -4
  47. package/skills/ct-grade/agents/scenario-runner.md +1 -1
  48. package/skills/ct-ivt-looper/SKILL.md +27 -21
  49. package/skills/ct-lead/SKILL.md +49 -12
  50. package/skills/ct-lead/references/aggregation-protocol.md +44 -21
  51. package/skills/ct-lead/references/spawn-pattern.md +12 -11
  52. package/skills/ct-orchestrator/README.md +2 -2
  53. package/skills/ct-orchestrator/SKILL.md +34 -11
  54. package/skills/ct-orchestrator/references/SUBAGENT-PROTOCOL-BLOCK.md +4 -4
  55. package/skills/ct-orchestrator/references/autonomous-operation.md +4 -4
  56. package/skills/ct-orchestrator/references/orchestrator-compliance.md +3 -3
  57. package/skills/ct-orchestrator/references/orchestrator-patterns.md +20 -19
  58. package/skills/ct-orchestrator/references/orchestrator-recovery.md +13 -23
  59. package/skills/ct-orchestrator/references/orchestrator-spawning.md +9 -10
  60. package/skills/ct-orchestrator/references/orchestrator-tokens.md +9 -9
  61. package/skills/ct-provenance-keeper/SKILL.md +14 -6
  62. package/skills/ct-release-orchestrator/SKILL.md +23 -13
  63. package/skills/ct-release-orchestrator/references/composition.md +1 -1
  64. package/skills/ct-release-orchestrator/references/release-types.md +33 -15
  65. package/skills/ct-research-agent/SKILL.md +18 -12
  66. package/skills/ct-research-agent/references/triggers-and-routing.md +4 -4
  67. package/skills/{ct-skill-creator → ct-skill-author}/SKILL.md +12 -4
  68. package/skills/{ct-skill-validator → ct-skill-author}/agents/ecosystem-checker.md +1 -1
  69. package/skills/{ct-skill-validator → ct-skill-author}/evals/quality_evals.json +10 -10
  70. package/skills/{ct-skill-validator → ct-skill-author}/evals/trigger_queries.json +1 -1
  71. package/skills/{ct-skill-validator → ct-skill-author}/references/cleo-ecosystem-rules.md +8 -4
  72. package/skills/{ct-skill-creator → ct-skill-author}/references/provider-deployment.md +10 -6
  73. package/skills/{ct-skill-validator/SKILL.md → ct-skill-author/references/validating.md} +14 -16
  74. package/skills/{ct-skill-validator → ct-skill-author}/references/validation-rules.md +2 -2
  75. package/skills/{ct-skill-validator → ct-skill-author}/scripts/_skill_finder.py +2 -2
  76. package/skills/{ct-skill-validator → ct-skill-author}/scripts/check_depth.py +2 -5
  77. package/skills/{ct-skill-validator → ct-skill-author}/scripts/generate_validation_report.py +1 -1
  78. package/skills/{ct-skill-validator → ct-skill-author}/scripts/run_quality_eval.py +2 -2
  79. package/skills/ct-spec-writer/SKILL.md +13 -7
  80. package/skills/ct-task-executor/SKILL.md +21 -21
  81. package/skills/ct-task-executor/references/common-failures.md +3 -3
  82. package/skills/ct-task-executor/references/evidence-and-gates.md +1 -0
  83. package/skills/ct-validator/SKILL.md +15 -9
  84. package/skills/ct-validator/references/compliance-reports.md +1 -1
  85. package/skills/ct-validator/references/validation-modes.md +3 -3
  86. package/skills/manifest.json +1313 -481
  87. package/dispatch-config.json +0 -983
  88. package/provider-skills-map.json +0 -97
  89. package/skills/ct-docs-lookup/SKILL.md +0 -181
  90. package/skills/ct-docs-lookup/references/ctx7-workflow.md +0 -198
  91. package/skills/ct-docs-lookup/references/library-id-resolution.md +0 -217
  92. package/skills/ct-docs-lookup/references/version-specific-docs.md +0 -220
  93. package/skills/ct-master-tac/SKILL.md +0 -116
  94. package/skills/ct-master-tac/__tests__/install.test.ts +0 -283
  95. package/skills/ct-master-tac/bundled/README.md +0 -40
  96. package/skills/ct-master-tac/bundled/protocols/architecture-decision.cant +0 -90
  97. package/skills/ct-master-tac/bundled/protocols/artifact-publish.cant +0 -105
  98. package/skills/ct-master-tac/bundled/protocols/consensus.cant +0 -85
  99. package/skills/ct-master-tac/bundled/protocols/contribution.cant +0 -92
  100. package/skills/ct-master-tac/bundled/protocols/decomposition.cant +0 -102
  101. package/skills/ct-master-tac/bundled/protocols/implementation.cant +0 -77
  102. package/skills/ct-master-tac/bundled/protocols/provenance.cant +0 -100
  103. package/skills/ct-master-tac/bundled/protocols/release.cant +0 -107
  104. package/skills/ct-master-tac/bundled/protocols/research.cant +0 -77
  105. package/skills/ct-master-tac/bundled/protocols/specification.cant +0 -77
  106. package/skills/ct-master-tac/bundled/protocols/testing.cant +0 -99
  107. package/skills/ct-master-tac/bundled/protocols/validation.cant +0 -75
  108. package/skills/ct-master-tac/bundled/teams/platform.cant +0 -115
  109. package/skills/ct-master-tac/manifest.json +0 -55
  110. package/skills/ct-skill-creator/eval-viewer/__pycache__/generate_review.cpython-314.pyc +0 -0
  111. package/skills/ct-skill-creator/manifest-entry.json +0 -17
  112. package/skills/ct-skill-creator/scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  113. package/skills/ct-skill-creator/scripts/__pycache__/aggregate_benchmark.cpython-314.pyc +0 -0
  114. package/skills/ct-skill-creator/scripts/__pycache__/generate_report.cpython-314.pyc +0 -0
  115. package/skills/ct-skill-creator/scripts/__pycache__/improve_description.cpython-314.pyc +0 -0
  116. package/skills/ct-skill-creator/scripts/__pycache__/init_skill.cpython-314.pyc +0 -0
  117. package/skills/ct-skill-creator/scripts/__pycache__/quick_validate.cpython-314.pyc +0 -0
  118. package/skills/ct-skill-creator/scripts/__pycache__/run_eval.cpython-314.pyc +0 -0
  119. package/skills/ct-skill-creator/scripts/__pycache__/run_loop.cpython-314.pyc +0 -0
  120. package/skills/ct-skill-creator/scripts/__pycache__/utils.cpython-314.pyc +0 -0
  121. package/skills/ct-skill-validator/manifest-entry.json +0 -20
  122. package/skills/ct-stickynote/README.md +0 -14
  123. package/skills/signaldock-connect/SKILL.md +0 -132
  124. package/skills/signaldock-connect/assets/agent-card.json +0 -48
  125. package/skills/signaldock-connect/references/api-endpoints.md +0 -131
  126. package/skills.json +0 -495
  127. /package/skills/{ct-docs-review → ct-documentor}/references/inline-comment-patterns.md +0 -0
  128. /package/skills/{ct-docs-write → ct-documentor}/references/markdown-patterns.md +0 -0
  129. /package/skills/{ct-skill-creator → ct-skill-author}/agents/analyzer.md +0 -0
  130. /package/skills/{ct-skill-creator → ct-skill-author}/agents/comparator.md +0 -0
  131. /package/skills/{ct-skill-creator → ct-skill-author}/agents/grader.md +0 -0
  132. /package/skills/{ct-skill-creator → ct-skill-author}/assets/eval_review.html +0 -0
  133. /package/skills/{ct-skill-validator → ct-skill-author}/assets/valid-skill-example.md +0 -0
  134. /package/skills/{ct-skill-creator → ct-skill-author}/eval-viewer/generate_review.py +0 -0
  135. /package/skills/{ct-skill-creator → ct-skill-author}/eval-viewer/viewer.html +0 -0
  136. /package/skills/{ct-skill-creator → ct-skill-author}/references/dynamic-context.md +0 -0
  137. /package/skills/{ct-skill-creator → ct-skill-author}/references/frontmatter.md +0 -0
  138. /package/skills/{ct-skill-creator → ct-skill-author}/references/invocation-control.md +0 -0
  139. /package/skills/{ct-skill-creator → ct-skill-author}/references/output-patterns.md +0 -0
  140. /package/skills/{ct-skill-creator → ct-skill-author}/references/schemas.md +0 -0
  141. /package/skills/{ct-skill-creator → ct-skill-author}/references/workflows.md +0 -0
  142. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/__init__.py +0 -0
  143. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/aggregate_benchmark.py +0 -0
  144. /package/skills/{ct-skill-validator → ct-skill-author}/scripts/audit_body.py +0 -0
  145. /package/skills/{ct-skill-validator → ct-skill-author}/scripts/check_ecosystem.py +0 -0
  146. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/generate_report.py +0 -0
  147. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/improve_description.py +0 -0
  148. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/init_skill.py +0 -0
  149. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/package_skill.py +0 -0
  150. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/quick_validate.py +0 -0
  151. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/run_eval.py +0 -0
  152. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/run_loop.py +0 -0
  153. /package/skills/{ct-skill-creator → ct-skill-author}/scripts/utils.py +0 -0
  154. /package/skills/{ct-skill-validator → ct-skill-author}/scripts/validate.py +0 -0
@@ -107,7 +107,7 @@ Every spawn combines two layers:
107
107
 
108
108
  | ID | Rule | Enforcement |
109
109
  |----|------|-------------|
110
- | BASE-001 | MUST append ONE entry via `cleo manifest append <json>` (writes to pipeline_manifest table per ADR-027/T1093) | Required |
110
+ | BASE-001 | MUST append ONE entry via `cleo manifest append --entry '<json>'` (writes to pipeline_manifest table per ADR-027/T1093) | Required |
111
111
  | BASE-002 | MUST NOT return content in response | Required |
112
112
  | BASE-003 | MUST complete task via `cleo complete` | Required |
113
113
  | BASE-004 | MUST write output file before manifest | Required |
@@ -1,16 +1,6 @@
1
- ---
2
- name: ct-memory
3
- version: 1.0.0
4
- description: Brain memory protocol with progressive disclosure for anti-hallucination and context recall
5
- triggers:
6
- - memory
7
- - brain
8
- - recall
9
- - remember
10
- - anti-hallucination
11
- ---
12
-
13
- # ct-memory -- Brain Memory Protocol
1
+ <!-- Merged from the ct-memory skill into ct-cleo (T12649, D11157). -->
2
+
3
+ # Memory (BRAIN) — progressive recall
14
4
 
15
5
  ## Purpose
16
6
 
@@ -20,8 +10,10 @@ Ensures LLM agents never start conversations with amnesia. Provides structured m
20
10
 
21
11
  Use CLI (`cleo`) for all memory operations.
22
12
 
23
- 1. The memory bridge (.cleo/memory-bridge.md) is already loaded via CLEO-INJECTION.md @-reference
24
- 2. If the bridge content feels stale (>2 hours old), refresh:
13
+ 1. `cleo briefing` (or `cleo memory digest`) gives the live project memory summary.
14
+ The file bridge (`.cleo/memory-bridge.md`) is a legacy opt-in
15
+ (`brain.memoryBridge.mode = "file"`); do not assume it was loaded.
16
+ 2. For the task at hand, search:
25
17
  - `cleo memory find "session task decision" --limit 10`
26
18
  3. Check for anti-patterns to avoid:
27
19
  - `cleo memory find "mistake error avoid warning" --limit 5`
@@ -62,14 +54,14 @@ Before stating facts about the codebase or project:
62
54
 
63
55
  ### Cross-Project Knowledge (via NEXUS)
64
56
 
65
- - `cleo nexus search "pattern" --scope global`
66
- - Search across all CLEO-managed projects
57
+ - `cleo nexus search "pattern"` (add `--project <id>` to narrow to one project)
58
+ - Search the symbol graph across CLEO-managed projects
67
59
 
68
60
  ## Token Budget Guidelines
69
61
 
70
62
  | Operation | ~Tokens | When |
71
63
  |-----------|---------|------|
72
- | memory-bridge.md (auto-loaded) | 200-400 | Always (free) |
64
+ | `cleo memory digest` | 200-400 | Session start |
73
65
  | `cleo memory find` | 50/hit | Discovery |
74
66
  | `cleo memory fetch` | 500/entry | Details |
75
67
  | `cleo memory timeline` | 200-500 | Context |
@@ -18,11 +18,11 @@
18
18
  ### CLI Spawn Operations
19
19
 
20
20
  ```bash
21
- cleo orchestrator start --epic T001
22
- cleo orchestrator analyze T001
23
- cleo orchestrator ready --epic T001
24
- cleo orchestrator next --epic T001
25
- cleo orchestrator spawn T002
21
+ cleo orchestrate start T001
22
+ cleo orchestrate analyze T001
23
+ cleo orchestrate ready T001
24
+ cleo orchestrate next T001
25
+ cleo orchestrate spawn T002
26
26
  ```
27
27
 
28
28
  ### Spawn Workflow
@@ -38,9 +38,14 @@ ct start T006 # Start next task
38
38
  ```bash
39
39
  ct complete <id> # Complete current
40
40
  ct archive # Clean up done tasks
41
- ct session end --note "Progress"
41
+ ct session end --note "Progress" # this terminal's session; elsewhere: --session <id>
42
42
  ```
43
43
 
44
+ Sessions are terminal-bound: from a terminal that did not start/resume the
45
+ session, `session end` fails with `E_SESSION_UNBOUND` rather than ending the
46
+ newest session. Bind (`cleo session resume <id>`, `CLEO_SESSION_ID=<id>`) or pass
47
+ `--session <id>`. Scripts and CI must export `CLEO_SESSION_ID`.
48
+
44
49
  ## Research & Manifest Operations
45
50
 
46
51
  ### Output Requirements
@@ -92,8 +97,7 @@ Orchestrators resolve ALL tokens before spawning subagents. Subagents CANNOT res
92
97
  | `{{EPIC_ID}}` | Parent epic identifier |
93
98
  | `{{DATE}}` | Current date (ISO) |
94
99
  | `{{TOPIC_SLUG}}` | URL-safe topic name |
95
- | `{{OUTPUT_DIR}}` | Output directory |
96
- | `{{MANIFEST_PATH}}` | Manifest file path |
100
+ | `{{OUTPUT_DIR}}` | Legacy output directory — record output with `cleo docs add` instead |
97
101
  | `{{TASK_TITLE}}` | Task title |
98
102
  | `{{TASK_DESCRIPTION}}` | Task description |
99
103
 
@@ -113,8 +117,8 @@ Skills are **context injections, NOT agents**. The orchestrator selects and inje
113
117
  ### Discovery
114
118
 
115
119
  ```bash
116
- cleo skill list
117
- cleo skill show ct-orchestrator
120
+ cleo skills list
121
+ cleo skills info ct-orchestrator
118
122
  ```
119
123
 
120
124
  ### Key Skills
@@ -140,12 +144,16 @@ cleo skill show ct-orchestrator
140
144
 
141
145
  ## Release Workflow
142
146
 
143
- **CRITICAL**: `release ship` only commits version metadata. All code changes MUST be committed BEFORE running `release ship`.
147
+ Releases are PR-gated (ADR-065). Commit and merge all code through PRs first; the
148
+ release verbs are `plan` → `open` → `reconcile`. The legacy `create`/`ship`
149
+ verbs were removed (T9540, T10103).
144
150
 
145
151
  ```bash
146
- git add <files> && git commit -m "feat(T####): description"
147
- cleo release create v1.0.0
148
- cleo release ship v1.0.0 --bump-version --create-tag --push
152
+ cleo release plan v2026.MM.N --epic T#### # or --tasks T1,T2
153
+ cleo release open v2026.MM.N # dispatches release-prepare
154
+ cleo release pr-status v2026.MM.N # poll the release PR + CI
155
+ git tag -a v2026.MM.N -m "Release v2026.MM.N" && git push origin v2026.MM.N
156
+ cleo release reconcile v2026.MM.N # backfill provenance
149
157
  ```
150
158
 
151
159
  ## Project Context
@@ -1,19 +1,6 @@
1
- ---
2
- name: ct-stickynote
3
- description: Quick ephemeral sticky notes for project-wide capture before formal classification
4
- version: 1.0.0
5
- category: productivity
6
- tier: 0
7
- protocol: null
8
- tags: [sticky, notes, capture, quick, ephemeral]
9
- triggers: [note, sticky, jot, capture]
10
- compatibility: [claude-code, gemini-cli, codex-cli, opencode]
11
- dependencies: []
12
- sharedResources: []
13
- license: MIT
14
- ---
15
-
16
- # Sticky Notes Skill
1
+ <!-- Merged from the ct-stickynote skill into ct-cleo (T12649, D11157). -->
2
+
3
+ # Sticky notes — capture before you classify
17
4
 
18
5
  Quick capture ephemeral notes that fill the gap between session notes and formal tasks.
19
6
 
@@ -32,15 +19,10 @@ Use sticky notes for:
32
19
  | `sticky.add` | Create sticky | `cleo sticky add "Refactor auth middleware" --tag bug --color red` |
33
20
  | `sticky.list` | List active | `cleo sticky list --tag bug` |
34
21
  | `sticky.show` | Show details | `cleo sticky show SN-001` |
35
- | `sticky.convert` | Promote to task/memory | `cleo sticky convert SN-001 --to-task` |
22
+ | `sticky.convert` | Promote to task/memory | `cleo sticky convert SN-001 --to-task --title "..."` or `--to-memory --type learning` |
36
23
  | `sticky.archive` | Archive | `cleo sticky archive SN-001` |
37
24
 
38
- ## Installation
39
-
40
- ```bash
41
- cleo skill install library:ct-stickynote
42
- ```
43
-
44
- ## Auto-Archive
45
25
 
46
- Stickies auto-archive after 30 days if not converted.
26
+ Also: `cleo sticky jot "..."` (alias of add), `cleo sticky ls`, and
27
+ `cleo sticky purge <id>` (permanent). Sticky notes are a core CLEO feature, so
28
+ this guide ships inside ct-cleo rather than as a separate skill.
@@ -1,9 +1,7 @@
1
1
  ---
2
2
  name: ct-codebase-mapper
3
- version: 1.0.0
4
- description: Codebase analysis and mapping for autonomous agent understanding. Builds structured maps of project stack, architecture, conventions, testing, integrations, and concerns.
5
- category: recommended
6
- tier: 1
3
+ version: 2.0.1
4
+ description: Orient in an unfamiliar or large codebase with CLEO's code-intelligence graph (cleo nexus) and project map (cleo map). Use before planning or editing unfamiliar code, for brownfield onboarding, to find what a change would break, or to map a project's structure, communities and execution flows. Triggers on "map the codebase", "understand this project", "what calls X", "what would break", "brownfield analysis", "project structure".
7
5
  protocol: null
8
6
  dependencies: []
9
7
  compatibility:
@@ -17,66 +15,96 @@ triggers:
17
15
  - understand project
18
16
  - brownfield analysis
19
17
  - project structure
18
+ - blast radius
19
+ metadata:
20
+ version: 2.0.1
21
+ tier: on-demand
22
+ install: harness
23
+ covers:
24
+ - packages/cleo/src/cli/commands/nexus.ts
25
+ - packages/cleo/src/cli/commands/map.ts
26
+ lastReviewed: 2026-09-28
27
+ stability: stable
20
28
  ---
21
29
 
22
30
  # Codebase Mapper
23
31
 
24
- Structured codebase analysis for autonomous agent understanding.
32
+ Two instruments, used together:
25
33
 
26
- ## Quick Start
34
+ - **`cleo nexus`** is the symbol graph: callers, callees, blast radius,
35
+ communities and execution flows, parsed from source. Use it for any question
36
+ about how code connects.
37
+ - **`cleo map`** is the project survey: stack, architecture, structure,
38
+ conventions, testing, integrations and concerns. Use it for the one-page
39
+ overview, and `--store` to keep the findings in BRAIN.
27
40
 
28
- | Goal | Command | Cost |
29
- |------|---------|------|
30
- | Quick analysis | `query admin map` | ~500 tokens |
31
- | Deep analysis + store | `mutate admin map` | ~800 tokens |
32
- | Focus on one area | `query admin map {focus: "concerns"}` | ~300 tokens |
33
- | CLI | `cleo map` / `cleo map --store` | — |
34
-
35
- ## Progressive Disclosure
36
-
37
- ### Tier 0: Quick Analysis
41
+ ## 1. Check the index before trusting it
38
42
 
39
43
  ```bash
40
- cleo map
44
+ cleo nexus status
41
45
  ```
42
46
 
43
- Returns structured `CodebaseMapResult` with stack, architecture, structure, conventions, testing, integrations, and concerns.
47
+ Read `nodeCount`, `lastIndexedAt` and `staleFileCount` against `fileCount`.
48
+ Queries auto-refresh up to 25 stale files; beyond that they warn
49
+ `W_NEXUS_INDEX_STALE`. Refresh with `cleo nexus analyze` (incremental; `--full`
50
+ rebuilds). An empty or stale index gives confident-looking but incomplete
51
+ answers — say which you relied on.
44
52
 
45
- ### Tier 1: Store to Brain
53
+ ## 2. Survey the project
46
54
 
47
55
  ```bash
48
- cleo map --store
56
+ cleo map # full survey
57
+ cleo map --focus concerns # one area: stack | architecture | structure |
58
+ # conventions | testing | integrations | concerns
59
+ cleo map --store # same survey, findings stored to BRAIN
60
+ # (tagged source: 'codebase-map')
49
61
  ```
50
62
 
51
- Same analysis, but stores patterns, learnings, and observations to brain.db. Tagged with `source: 'codebase-map'` for filtering.
63
+ ## 3. Find the structure
64
+
65
+ ```bash
66
+ cleo nexus clusters # detected communities (modules that change together)
67
+ cleo nexus flows # detected execution flows (entry point → callees)
68
+ cleo nexus search-code "<text>" # locate a symbol by name, file pattern or keyword
69
+ ```
52
70
 
53
- ### Tier 2: Focused Analysis
71
+ ## 4. Before editing a symbol
54
72
 
55
73
  ```bash
56
- cleo map --focus concerns
74
+ cleo nexus impact <symbol> # blast radius: direct, indirect, transitive callers
75
+ cleo nexus context <symbol> # callers, callees, community, flows
76
+ cleo nexus full-context <symbol> # plus BRAIN memories, tasks and conduit threads
57
77
  ```
58
78
 
59
- Focus areas: `stack`, `architecture`, `structure`, `conventions`, `testing`, `integrations`, `concerns`.
79
+ `HIGH`/`CRITICAL` impact means review the affected callers before editing.
80
+ `UNKNOWN` means the assessment is incomplete, and `NONE` means nothing was
81
+ detected in the assessed graph — static analysis cannot prove every runtime
82
+ caller, so an empty footprint alone never establishes that a change is safe.
83
+ When a symbol name is ambiguous, pass the qualified candidate the command
84
+ returns and confirm against the source.
60
85
 
61
- ## When to Use
86
+ ## When to use
62
87
 
63
- - **New project onboarding**: Run `cleo map --store` to build brain.db context
64
- - **Brownfield init**: `cleo init --map-codebase` runs analysis during initialization
65
- - **Before epic planning**: Understand project structure before decomposing work
66
- - **Tech debt assessment**: `query admin map {focus: "concerns"}` for TODOs and large files
88
+ | Situation | Start with |
89
+ |-----------|------------|
90
+ | New or brownfield project | `cleo nexus status`, then `cleo map --store` |
91
+ | Planning an epic in unfamiliar code | `cleo map --focus architecture`, `cleo nexus clusters` |
92
+ | About to change a function or type | `cleo nexus impact <symbol>` |
93
+ | "Who calls this / what does this call?" | `cleo nexus context <symbol>` |
94
+ | Tech-debt review | `cleo map --focus concerns` |
67
95
 
68
- ## Output Structure
96
+ ## `cleo map` output
69
97
 
70
98
  ```typescript
71
99
  {
72
- projectContext: ProjectContext, // From detectProjectType()
73
- stack: StackAnalysis, // Languages, frameworks, deps
74
- architecture: ArchAnalysis, // Layers, entry points, patterns
75
- structure: StructureAnalysis, // Directory tree with annotations
76
- conventions: ConventionAnalysis,// Naming, linting, formatting
77
- testing: TestingAnalysis, // Framework, patterns, coverage
78
- integrations: IntegrationAnalysis, // APIs, DBs, CI/CD
79
- concerns: ConcernAnalysis, // TODOs, large files, complexity
100
+ projectContext: ProjectContext, // From detectProjectType()
101
+ stack: StackAnalysis, // Languages, frameworks, deps
102
+ architecture: ArchAnalysis, // Layers, entry points, patterns
103
+ structure: StructureAnalysis, // Directory tree with annotations
104
+ conventions: ConventionAnalysis, // Naming, linting, formatting
105
+ testing: TestingAnalysis, // Framework, patterns, coverage
106
+ integrations: IntegrationAnalysis, // APIs, DBs, CI/CD
107
+ concerns: ConcernAnalysis, // TODOs, large files, complexity
80
108
  analyzedAt: string
81
109
  }
82
110
  ```
@@ -2,10 +2,19 @@
2
2
  name: ct-consensus-voter
3
3
  description: "Runs structured multi-agent voting for decision tasks with confidence scores, conflict detection, and HITL escalation when the threshold is not met. Use when two or more agents must vote on options: architecture choices, tool selection, policy decisions, when a task carries agent_type:analysis, or on phrases like 'reach consensus', 'vote on options', 'resolve the debate', 'pick the best approach'. Produces a voting matrix JSON, enforces the 0.5 threshold, flags ties within 0.1 confidence as contested and escalates to human tiebreak."
4
4
  protocol: consensus
5
- loomStage: consensus
6
5
  adrRefs:
7
6
  - ADR-015
8
7
  - ADR-023
8
+ metadata:
9
+ version: 1.0.2
10
+ tier: on-demand
11
+ install: harness
12
+ covers:
13
+ - packages/core/src/validation/protocols/cant/consensus.cant
14
+ - packages/core/src/validation/protocols/protocols-markdown/consensus.md
15
+ loomStage: consensus
16
+ lastReviewed: 2026-09-28
17
+ stability: stable
9
18
  ---
10
19
 
11
20
  # Consensus Voter
@@ -129,10 +138,9 @@ On escalation:
129
138
  Validate the matrix through `cleo check protocol`:
130
139
 
131
140
  ```bash
132
- cleo check protocol \
133
- --protocolType consensus \
134
- --votingMatrixFile ./.cleo/rcasd/T4797/consensus/T4797-consensus.json \
135
- --taskId T4797
141
+ cleo check protocol consensus \
142
+ --voting-matrix-file ./.cleo/rcasd/T4797/consensus/T4797-consensus.json \
143
+ --task-id T4797
136
144
  ```
137
145
 
138
146
  Exit code 0 = matrix is valid and verdict is `PROVEN` or `REFUTED`. Exit code 65 = `HANDOFF_REQUIRED` (contested or insufficient evidence). Exit code 61 = `E_PROTOCOL_CONSENSUS` (matrix shape is invalid).
@@ -160,7 +168,7 @@ This skill typically hands off to ct-adr-recorder on a `PROVEN` verdict so the d
160
168
  5. Critical-severity conflicts always escalate, regardless of top-option confidence.
161
169
  6. Manifest entry MUST set `agent_type: "analysis"` and include the verdict.
162
170
  7. On PROVEN, hand off to ct-adr-recorder; on CONTESTED or INSUFFICIENT_EVIDENCE, hand off to HITL.
163
- 8. Always validate via `cleo check protocol --protocolType consensus`.
171
+ 8. Always validate via `cleo check protocol consensus`.
164
172
 
165
173
  ## See also / References
166
174
 
@@ -6,12 +6,8 @@ description: >-
6
6
  "consensus workflow", "multi-agent decision", "create contribution",
7
7
  "contribution start", "contribution submit", "detect conflicts",
8
8
  "weighted consensus", "decision tracking", "conflict resolution".
9
- version: 1.0.0
10
- tier: 3
11
- core: false
12
- category: meta
9
+ version: 1.0.2
13
10
  protocol: contribution
14
- loomStage: contribution
15
11
  adrRefs:
16
12
  - ADR-015
17
13
  - ADR-053
@@ -24,6 +20,16 @@ compatibility:
24
20
  - windsurf
25
21
  - gemini-cli
26
22
  license: MIT
23
+ metadata:
24
+ version: 1.0.2
25
+ tier: on-demand
26
+ install: harness
27
+ covers:
28
+ - packages/core/src/validation/protocols/cant/contribution.cant
29
+ - packages/core/src/validation/protocols/protocols-markdown/contribution.md
30
+ loomStage: contribution
31
+ lastReviewed: 2026-09-28
32
+ stability: stable
27
33
  ---
28
34
 
29
35
  # Contribution Protocol Skill
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: ct-council
3
3
  description: Convene "The Council" — 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 → shuffled peer review with pass/fail gates → convergence detector → Chairman verdict). Operates on the current codebase — each advisor grounds their analysis in actual files/commits before opining. Output is validated by scripts/validate.py.
4
+ metadata:
5
+ version: 1.0.0
6
+ tier: on-demand
7
+ install: harness
8
+ stability: stable
4
9
  ---
5
10
 
6
11
  # The Council
@@ -1,10 +1,7 @@
1
1
  ---
2
2
  name: ct-dev-workflow
3
3
  description: Development workflow orchestration for task-driven development with atomic commits, conventional commit messages, and systematic release processes. Enforces task traceability, branch discipline, smart test scope selection, and GitHub Actions integration. Use when committing code, creating releases, managing branches, or following contribution protocols. Triggers on commit operations, release preparation, or workflow compliance needs.
4
- version: 3.1.0
5
- tier: 2
6
- core: false
7
- category: specialist
4
+ version: 3.1.3
8
5
  protocol: contribution
9
6
  dependencies: []
10
7
  sharedResources:
@@ -17,8 +14,12 @@ compatibility:
17
14
  - gemini-cli
18
15
  license: MIT
19
16
  metadata:
20
- version: 3.1.0
21
- lastReviewed: 2026-09-18
17
+ version: 3.1.3
18
+ tier: core
19
+ install: harness
20
+ covers:
21
+ - .github/workflows/release-prepare.yml
22
+ lastReviewed: 2026-09-28
22
23
  stability: stable
23
24
  ---
24
25
 
@@ -337,8 +338,8 @@ cleo session end --note "Completed X, Y, Z"
337
338
 
338
339
  ### Output Requirements
339
340
 
340
- 1. MUST write workflow summary to: `{{OUTPUT_DIR}}/{{DATE}}_{{TOPIC_SLUG}}.md`
341
- 2. MUST append ONE line to: `{{MANIFEST_PATH}}`
341
+ 1. MUST record workflow summary with `cleo docs add {{TASK_ID}} --content - --type note --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
342
+ 2. MUST record ONE manifest entry: `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027)
342
343
  3. MUST return ONLY: "Workflow complete. Manifest appended to pipeline_manifest."
343
344
  4. MUST NOT return full commit/release details in response
344
345
 
@@ -1,19 +1,9 @@
1
1
  ---
2
2
  name: ct-documentor
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.16.0
5
- tier: 3
6
- core: false
7
- category: specialist
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. Carries the CLEO writing and review guides as references and coordinates 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.17.3
8
5
  protocol: null
9
- metadata:
10
- version: 3.16.0
11
- lastReviewed: 2026-09-19
12
- stability: stable
13
6
  dependencies:
14
- - ct-docs-lookup
15
- - ct-docs-write
16
- - ct-docs-review
17
7
  - ct-spec-writer
18
8
  - ct-adr-recorder
19
9
  sharedResources:
@@ -25,6 +15,15 @@ compatibility:
25
15
  - windsurf
26
16
  - gemini-cli
27
17
  license: MIT
18
+ metadata:
19
+ version: 3.17.3
20
+ tier: core
21
+ install: harness
22
+ covers:
23
+ - packages/cleo/src/cli/commands/docs.ts
24
+ - packages/contracts/src/docs-taxonomy.ts
25
+ lastReviewed: 2026-09-28
26
+ stability: stable
28
27
  ---
29
28
 
30
29
  # Documentation Specialist Context Injection
@@ -91,9 +90,9 @@ Context injection for documentation tasks spawned via cleo-subagent. Orchestrate
91
90
 
92
91
  | Skill | Purpose | Invoke When |
93
92
  |-------|---------|-------------|
94
- | `ct-docs-lookup` | Query existing docs, find references via `cleo docs fetch`/`list` | Discovery phase, checking what exists |
95
- | `ct-docs-write` | Create/edit docs via `cleo docs add` with CLEO style | Writing or updating content |
96
- | `ct-docs-review` | Check compliance with style guide, read through `cleo docs fetch` | Quality validation before completion |
93
+ | `cleo docs find` / `list` / `fetch` (and the Context7 MCP for library APIs) | Query existing docs and current external docs | Discovery phase, checking what exists |
94
+ | `references/writing.md` (was ct-docs-write) | Create/edit docs via `cleo docs add` with CLEO style | Writing or updating content |
95
+ | `references/reviewing.md` (was ct-docs-review) | Check compliance with style guide, read through `cleo docs fetch`; PR mode | Quality validation before completion |
97
96
  | `ct-spec-writer` | Author specs (REQ-XXX requirements) via `cleo docs add --type spec` | Formal specification work |
98
97
  | `ct-adr-recorder` | Author ADRs via `cleo docs add --type adr --slug adr-NNN-...` | Architecture decisions promoted from consensus |
99
98
 
@@ -114,8 +113,8 @@ and every owner writes through `cleo docs add` — not raw filesystem writes.
114
113
  | `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) |
115
114
  | `research` (multi-source investigation) | `ct-research-agent` | `cleo docs add <ownerId> <path> --type research --slug research-<topic>` |
116
115
  | `handoff` (session/agent transition) | `ct-documentor` (this skill) | `cleo docs add <ownerId> <path> --type handoff --slug handoff-<context>` |
117
- | `note` (conversational prose) | `ct-docs-write` | `cleo docs add <ownerId> <path> --type note --slug <kebab-topic>` |
118
- | `llm-readme` (agent-facing) | `ct-docs-write` | `cleo docs add <ownerId> <path> --type llm-readme --slug <kebab-topic>` |
116
+ | `note` (conversational prose) | `ct-documentor` (`references/writing.md`) | `cleo docs add <ownerId> <path> --type note --slug <kebab-topic>` |
117
+ | `llm-readme` (agent-facing) | `ct-documentor` (`references/writing.md`) | `cleo docs add <ownerId> <path> --type llm-readme --slug <kebab-topic>` |
119
118
 
120
119
  Hard rule: EVERY canonical-type write goes through the SSoT. The coordinator
121
120
  rejects any subagent return that wrote raw markdown into `.cleo/adrs/`,
@@ -158,6 +157,7 @@ Before adding a new doc, ALWAYS ask: is this **a new doc**, **a change to an exi
158
157
  ### Examples
159
158
 
160
159
  - **"Fix a typo in ADR-076 saga-first-class"** - `cleo docs update adr-076-saga-first-class --file /tmp/fixed.md --message "fix typo in §2"` (canonical - T10161). NOT a new doc. NOT a supersession. Just patch in place; T10161 squashes patches within a 5-minute window so consecutive typo fixes don't bloat the audit log.
160
+ - **"Accept a spec that review signed off"** - `cleo docs update <slug> --status accepted` (T12654). `--status` alone changes only the lifecycle status (draft, proposed, accepted, superseded, archived, deprecated); the stored bytes are kept, so there is no need to re-supply `--file` or `--content`. Any content edit without `--status` resets the doc to `draft`.
161
161
 
162
162
  - **"Replace the entire saga-orchestration model with v2" (ADVANCED)** - `cleo docs add T9999 v2.md --type adr --slug adr-080-saga-orchestration-v2` followed by `cleo docs supersede adr-073-above-epic-naming adr-080-saga-orchestration-v2 --reason "v2 canonicalizes the SG- prefix + 4-tier hierarchy"`. Both rows survive in the attachments table; readers see `lifecycle_status=superseded` on v1 and `supersedes=adr-073` on v2.
163
163
 
@@ -204,7 +204,7 @@ This closes the silent-absorption footgun where citty's underlying
204
204
 
205
205
  ```bash
206
206
  # Typo → E_UNKNOWN_FLAG with suggestion
207
- $ cleo docs add T123 file.md --titel "X"
207
+ $ cleo docs add T123 file.md --titel "X" # cleo-cmd: negative-example
208
208
  {
209
209
  "success": false,
210
210
  "error": {
@@ -398,8 +398,10 @@ Per-line opt-out (use sparingly): append
398
398
  the writer-uniqueness lint. Where T10369 prevents *new* raw `.md`
399
399
  writers from landing in `packages/core/src/**`, this sweep walks every
400
400
  `*.md` file *already* added under `.cleo/canon.yml`'s `rawMdPaths`
401
- directories since the T9791 docs-import cutoff (commit `251814e86`)
402
- and classifies each one against the docs SSoT:
401
+ directories since the T9791 docs-import cutoff — the commit that
402
+ imported the legacy corpus and committed its manifests under
403
+ `.cleo/audit/imports/`, which is how the sweep locates it — and
404
+ classifies each one against the docs SSoT:
403
405
 
404
406
  | Remediation | Meaning | Fix |
405
407
  |---|---|---|
@@ -574,9 +576,10 @@ not yet under test.
574
576
 
575
577
  **Anti-pattern**: do NOT write a `cleo memory observe` manually after a
576
578
  `cleo docs add` — the auto-emit already happened, and the duplicate
577
- observation pollutes the FTS index. Use `cleo memory backfill-docs` (AC4
578
- of T9976) only to repair attachments that pre-date the auto-emit feature
579
- or were written outside the SSoT.
579
+ observation pollutes the FTS index. No CLI command back-fills that
580
+ observation for attachments that pre-date the auto-emit feature: the
581
+ `memory backfill-docs` verb planned in T9976 AC4 never shipped. Leave such
582
+ attachments as they are rather than hand-writing a duplicate observation.
580
583
 
581
584
  #### System-managed exemptions (T10368)
582
585
 
@@ -693,7 +696,7 @@ the docs graph — never grep the filesystem for the file you just wrote.
693
696
  cleo docs list --type spec --project # canonical: every spec in this project
694
697
  cleo docs list --task T1234 # canonical: everything attached to a task
695
698
  cleo docs versions --for T1234 # ADVANCED: list every SHA version
696
- cleo docs sync --from docs/legacy.md --for T1234 --type note --slug legacy-doc # ADVANCED: back-fill on-disk file into SSoT
699
+ cleo docs sync --from docs/legacy.md --for T1234 # ADVANCED: back-fill on-disk file into SSoT (no --type/--slug; classify with docs add)
697
700
  ```
698
701
 
699
702
  ---
@@ -770,7 +773,7 @@ Grep: pattern="{TOPIC_KEYWORDS}" path="docs/"
770
773
  Grep: pattern="{RELATED_TERMS}" path="docs/" output_mode="files_with_matches"
771
774
  ```
772
775
 
773
- **Invoke `/ct-docs-lookup`** for deeper documentation research.
776
+ **Use the Context7 MCP** (`resolve-library-id` → `query-docs`) for current library and framework docs.
774
777
 
775
778
  ### Phase 2: Assess
776
779
 
@@ -783,7 +786,7 @@ Grep: pattern="{RELATED_TERMS}" path="docs/" output_mode="files_with_matches"
783
786
 
784
787
  ### Phase 3: Write/Update
785
788
 
786
- **Invoke `/ct-docs-write`** for content creation.
789
+ **Load `references/writing.md`** for content creation.
787
790
 
788
791
  **For EXISTING files:**
789
792
  1. Read the current content
@@ -808,7 +811,7 @@ Grep: pattern="{RELATED_TERMS}" path="docs/" output_mode="files_with_matches"
808
811
 
809
812
  ### Phase 4: Review
810
813
 
811
- **Invoke `/ct-docs-review`** for quality validation.
814
+ **Load `references/reviewing.md`** for quality validation.
812
815
 
813
816
  Checklist:
814
817
  - [ ] No formal language ("utilize", "offerings", "cannot")
@@ -868,14 +871,14 @@ cleo research link {TASK_ID} {RESEARCH_ID}
868
871
 
869
872
  ### Output Requirements
870
873
 
871
- 1. MUST write documentation output to: `{{OUTPUT_DIR}}/`
872
- 2. MUST append ONE line to: `{{MANIFEST_PATH}}`
874
+ 1. MUST record documentation output with `cleo docs add {{TASK_ID}} --content - --type <kind> --slug {{TOPIC_SLUG}}` (never a raw file under `.cleo/agent-outputs/`)
875
+ 2. MUST record ONE manifest entry: `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027)
873
876
  3. MUST return ONLY: "Documentation complete. Manifest appended to pipeline_manifest."
874
877
  4. MUST NOT return documentation content in response
875
878
 
876
879
  ### Output File Format
877
880
 
878
- Write to `{{OUTPUT_DIR}}/`:
881
+ Record it with `cleo docs add {{TASK_ID}} --content - --type <kind> --slug {{TOPIC_SLUG}}`, using this body:
879
882
 
880
883
  ```markdown
881
884
  # Documentation Update: {TITLE}
@@ -904,12 +907,12 @@ Write to `{{OUTPUT_DIR}}/`:
904
907
  - [ ] Changes don't duplicate existing content
905
908
  - [ ] Cross-references updated
906
909
  - [ ] Examples tested
907
- - [ ] Style guide compliance verified via ct-docs-review
910
+ - [ ] Style guide compliance verified via `references/reviewing.md`
908
911
  ```
909
912
 
910
913
  ### Manifest Entry
911
914
 
912
- Append ONE line to `{{MANIFEST_PATH}}`:
915
+ Record it with `cleo manifest append --entry '<entry JSON>'` (the flat manifest file is retired, ADR-027):
913
916
 
914
917
  ```json
915
918
  {"id":"docs-{TOPIC}-{DATE}","file":"{DATE}_docs-{TOPIC}.md","title":"Documentation Update: {TITLE}","date":"{DATE}","status":"complete","agent_type":"documentation","topics":["documentation","{topic}"],"key_findings":["Updated {file} with {change}","Consolidated {topic} docs into {canonical-location}","Avoided duplication by updating existing {file}"],"actionable":false,"needs_followup":[],"linked_tasks":["{TASK_ID}"]}
@@ -923,10 +926,10 @@ Append ONE line to `{{MANIFEST_PATH}}`:
923
926
  - [ ] Core principle followed (maintain, don't duplicate)
924
927
  - [ ] Coordinator pattern followed: every doc-type routed to its owning skill
925
928
  - [ ] Every canonical-type write went through `cleo docs add --type X --slug Y`
926
- - [ ] `/ct-docs-write` invoked for `note`/`llm-readme` content
929
+ - [ ] `references/writing.md` followed for `note`/`llm-readme` content
927
930
  - [ ] `/ct-spec-writer` invoked when writing specs (REQ-XXX requirements)
928
931
  - [ ] `/ct-adr-recorder` invoked when promoting consensus → ADR
929
- - [ ] `/ct-docs-review` invoked for quality validation
932
+ - [ ] `references/reviewing.md` applied for quality validation
930
933
  - [ ] Anti-duplication checklist verified
931
934
  - [ ] Output file written with "Files NOT Created" section
932
935
  - [ ] Manifest entry appended