@iowarp/clio-coder 0.3.0

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 (226) hide show
  1. package/CHANGELOG.md +407 -0
  2. package/CODE_OF_CONDUCT.md +21 -0
  3. package/CONTRIBUTING.md +224 -0
  4. package/LICENSE +202 -0
  5. package/NOTICE +9 -0
  6. package/README.md +798 -0
  7. package/SECURITY.md +72 -0
  8. package/assets/clio-coder-logo-128.webp +0 -0
  9. package/damage-control-rules.yaml +419 -0
  10. package/dist/acp-UMLFVA3F.js +92 -0
  11. package/dist/agents-Q4MYPMUW.js +91 -0
  12. package/dist/auth-O6HYIJ6J.js +521 -0
  13. package/dist/chunk-262G75JS.js +35 -0
  14. package/dist/chunk-26BZQOAD.js +1281 -0
  15. package/dist/chunk-2J63S4SF.js +508 -0
  16. package/dist/chunk-3DANZDGR.js +717 -0
  17. package/dist/chunk-4UQA7NCT.js +29 -0
  18. package/dist/chunk-527KG6XR.js +497 -0
  19. package/dist/chunk-5LDRNKX2.js +1063 -0
  20. package/dist/chunk-5N2FG33Q.js +25 -0
  21. package/dist/chunk-67MTHP2E.js +135 -0
  22. package/dist/chunk-6CWDTGUC.js +20 -0
  23. package/dist/chunk-7BHLZB3A.js +2115 -0
  24. package/dist/chunk-7RBKDI66.js +348 -0
  25. package/dist/chunk-AMFR5YA3.js +541 -0
  26. package/dist/chunk-BBUH4VAA.js +1224 -0
  27. package/dist/chunk-BYEU76JP.js +899 -0
  28. package/dist/chunk-CLJ5HLUD.js +458 -0
  29. package/dist/chunk-D5YD55AR.js +116 -0
  30. package/dist/chunk-DXQNI4PC.js +61 -0
  31. package/dist/chunk-E3NYWENM.js +1004 -0
  32. package/dist/chunk-GNGDQYDU.js +34688 -0
  33. package/dist/chunk-GOTUR54M.js +9 -0
  34. package/dist/chunk-HBU5MTAM.js +41 -0
  35. package/dist/chunk-HMYNFFY4.js +28 -0
  36. package/dist/chunk-JPOWPFCU.js +1010 -0
  37. package/dist/chunk-JWHCJDCI.js +1215 -0
  38. package/dist/chunk-KBR4MZZR.js +41 -0
  39. package/dist/chunk-KKKPTZLM.js +93 -0
  40. package/dist/chunk-ME6DNWIU.js +66 -0
  41. package/dist/chunk-NI4DEJMC.js +88 -0
  42. package/dist/chunk-O4EJEDHO.js +659 -0
  43. package/dist/chunk-PIDUD6M2.js +31 -0
  44. package/dist/chunk-PS4PFJQP.js +29459 -0
  45. package/dist/chunk-QV47YRF4.js +48 -0
  46. package/dist/chunk-RQDWMVRB.js +279 -0
  47. package/dist/chunk-TFSSEXL6.js +136 -0
  48. package/dist/chunk-TKHQ4DGZ.js +8290 -0
  49. package/dist/chunk-TPOCL34A.js +2876 -0
  50. package/dist/chunk-UGYAX5YI.js +565 -0
  51. package/dist/chunk-UHTSULZS.js +461 -0
  52. package/dist/chunk-UU3R62TT.js +128 -0
  53. package/dist/chunk-UWIJNAOB.js +3906 -0
  54. package/dist/chunk-VOO7NYPP.js +914 -0
  55. package/dist/chunk-VPAWTYLY.js +117 -0
  56. package/dist/chunk-WD6AJM35.js +1216 -0
  57. package/dist/chunk-X3BR7HWV.js +115 -0
  58. package/dist/chunk-X3NE4WVW.js +120 -0
  59. package/dist/chunk-XNISANGE.js +1395 -0
  60. package/dist/chunk-XV4ZJ6ZM.js +3177 -0
  61. package/dist/cli/index.js +236 -0
  62. package/dist/clio-KIQ5SNDS.js +53 -0
  63. package/dist/components-JVHMUBEB.js +653 -0
  64. package/dist/config-ZFCDBMDC.js +372 -0
  65. package/dist/configure-G4E3A2PG.js +27 -0
  66. package/dist/context-CDXTP2MP.js +293 -0
  67. package/dist/context-E3KIFVXI.js +185 -0
  68. package/dist/context-clear-3F4PLXOS.js +102 -0
  69. package/dist/context-index-Q7YSYTR3.js +106 -0
  70. package/dist/docs-YIETIWZI.js +280 -0
  71. package/dist/doctor-M5HJJZOL.js +61 -0
  72. package/dist/domains/agents/builtins/architect.md +33 -0
  73. package/dist/domains/agents/builtins/coder.md +31 -0
  74. package/dist/domains/agents/builtins/context-bootstrap.md +38 -0
  75. package/dist/domains/agents/builtins/debugger.md +30 -0
  76. package/dist/domains/agents/builtins/documenter.md +31 -0
  77. package/dist/domains/agents/builtins/git-master.md +30 -0
  78. package/dist/domains/agents/builtins/provenance.md +30 -0
  79. package/dist/domains/agents/builtins/researcher.md +71 -0
  80. package/dist/domains/agents/builtins/scout.md +42 -0
  81. package/dist/domains/agents/builtins/tester.md +31 -0
  82. package/dist/domains/agents/builtins/verifier.md +30 -0
  83. package/dist/domains/agents/builtins/wiki-writer.md +41 -0
  84. package/dist/eval-B3KZZESM.js +2674 -0
  85. package/dist/evidence-V67CHM35.js +233 -0
  86. package/dist/evolve-YDZSUQYA.js +518 -0
  87. package/dist/extensions-SRG7XCAH.js +207 -0
  88. package/dist/fleet-CA2CRTVG.js +760 -0
  89. package/dist/fleet-preflight-CLIAX7YR.js +21 -0
  90. package/dist/init-2OZDJE2D.js +227 -0
  91. package/dist/memory-3PIQQAKX.js +207 -0
  92. package/dist/models-DY35XI7Y.js +237 -0
  93. package/dist/paths-5OMXW7Z4.js +57 -0
  94. package/dist/preload-KZVHET2B.js +11 -0
  95. package/dist/reset-PIFYNOS3.js +216 -0
  96. package/dist/run-3VSPP24F.js +735 -0
  97. package/dist/share-D36RQCXM.js +241 -0
  98. package/dist/skills-F2MRLELY.js +445 -0
  99. package/dist/skills-eval-E2ZTW4PL.js +932 -0
  100. package/dist/targets-DZMEZAH4.js +977 -0
  101. package/dist/trace-7NYCUI2J.js +250 -0
  102. package/dist/uninstall-AD3JWHBB.js +322 -0
  103. package/dist/upgrade-WYYBKGDY.js +301 -0
  104. package/dist/usage-ULIDAGFF.js +755 -0
  105. package/dist/version-ROZ6CZKH.js +16 -0
  106. package/dist/wiki-generate-PKFIX6OB.js +377 -0
  107. package/dist/worker/entry.js +1739 -0
  108. package/docs/README.md +93 -0
  109. package/docs/acp.md +120 -0
  110. package/docs/alcf-provider.md +72 -0
  111. package/docs/architecture.md +172 -0
  112. package/docs/artifact-versions.md +54 -0
  113. package/docs/built-in-agents.md +265 -0
  114. package/docs/capacity-and-scheduling.md +97 -0
  115. package/docs/commands-and-modes.md +554 -0
  116. package/docs/config-knobs-audit.md +115 -0
  117. package/docs/configuration-and-targets.md +812 -0
  118. package/docs/context-engine.md +236 -0
  119. package/docs/dispatch-architecture-rationale.md +126 -0
  120. package/docs/documentation-coverage.md +46 -0
  121. package/docs/documentation-guide.md +166 -0
  122. package/docs/environment-variables.md +105 -0
  123. package/docs/eval-runner.md +205 -0
  124. package/docs/evals-internal.md +298 -0
  125. package/docs/evidence-and-memory.md +243 -0
  126. package/docs/evolution.md +143 -0
  127. package/docs/exit-codes-and-output.md +74 -0
  128. package/docs/extensions-and-sharing.md +306 -0
  129. package/docs/fleet-demo-runbook.md +179 -0
  130. package/docs/fleet-dispatch.md +591 -0
  131. package/docs/glossary.md +75 -0
  132. package/docs/html/agents_blueprint.html +936 -0
  133. package/docs/html/alcf_blueprint.html +324 -0
  134. package/docs/html/architecture_blueprint.html +850 -0
  135. package/docs/html/commands_blueprint.html +794 -0
  136. package/docs/html/config_knobs_audit_blueprint.html +178 -0
  137. package/docs/html/configuration_blueprint.html +1080 -0
  138. package/docs/html/context_blueprint.html +603 -0
  139. package/docs/html/documentation_blueprint.html +832 -0
  140. package/docs/html/environment_blueprint.html +404 -0
  141. package/docs/html/eval_blueprint.html +743 -0
  142. package/docs/html/evals_internal_blueprint.html +190 -0
  143. package/docs/html/evolution_blueprint.html +674 -0
  144. package/docs/html/extensions_blueprint.html +2065 -0
  145. package/docs/html/fleet_dispatch_blueprint.html +286 -0
  146. package/docs/html/index.html +919 -0
  147. package/docs/html/lifecycle_blueprint.html +723 -0
  148. package/docs/html/memory_blueprint.html +699 -0
  149. package/docs/html/middleware_blueprint.html +664 -0
  150. package/docs/html/models_blueprint.html +2366 -0
  151. package/docs/html/observability_blueprint.html +683 -0
  152. package/docs/html/provider_adapter_blueprint.html +245 -0
  153. package/docs/html/safety_blueprint.html +1386 -0
  154. package/docs/html/shared.css +571 -0
  155. package/docs/html/shared.js +143 -0
  156. package/docs/html/skills_blueprint.html +671 -0
  157. package/docs/html/soak_blueprint.html +182 -0
  158. package/docs/html/tool_usage_blueprint.html +350 -0
  159. package/docs/html/tools_blueprint.html +2249 -0
  160. package/docs/html/trace_blueprint.html +235 -0
  161. package/docs/html/tui_design_blueprint.html +314 -0
  162. package/docs/html/validation_blueprint.html +961 -0
  163. package/docs/html/worker_dispatch_blueprint.html +231 -0
  164. package/docs/installation-and-lifecycle.md +308 -0
  165. package/docs/middleware-and-components.md +148 -0
  166. package/docs/model-catalog.md +189 -0
  167. package/docs/observability.md +233 -0
  168. package/docs/proactive-memory.md +452 -0
  169. package/docs/prompt-envelope-and-tools.md +142 -0
  170. package/docs/provider-adapter-cookbook.md +148 -0
  171. package/docs/release-cut-checklist.md +138 -0
  172. package/docs/safety-model.md +357 -0
  173. package/docs/scientific-validation.md +105 -0
  174. package/docs/session-lifecycle.md +156 -0
  175. package/docs/skills-marketplace.md +46 -0
  176. package/docs/tool-usage.md +527 -0
  177. package/docs/trace-store.md +132 -0
  178. package/docs/troubleshooting.md +33 -0
  179. package/docs/tui-design.md +239 -0
  180. package/docs/worker-dispatch-mechanics.md +242 -0
  181. package/package.json +132 -0
  182. package/skills/README.md +408 -0
  183. package/skills/git/commit-crafting/SKILL.md +79 -0
  184. package/skills/git/commit-crafting/evals.md +92 -0
  185. package/skills/git/create-pr/SKILL.md +116 -0
  186. package/skills/git/create-pr/evals.md +114 -0
  187. package/skills/git/investigate-issue/SKILL.md +139 -0
  188. package/skills/git/investigate-issue/evals.md +94 -0
  189. package/skills/git/resolve-merge-conflicts/SKILL.md +96 -0
  190. package/skills/git/resolve-merge-conflicts/evals.md +58 -0
  191. package/skills/git/review-changes/SKILL.md +103 -0
  192. package/skills/git/review-changes/evals.md +85 -0
  193. package/skills/git/worktree-create/SKILL.md +92 -0
  194. package/skills/git/worktree-create/evals.md +97 -0
  195. package/skills/git/worktree-create/references/worktree-setup.md +66 -0
  196. package/skills/git/worktree-merge/SKILL.md +95 -0
  197. package/skills/git/worktree-merge/evals.md +114 -0
  198. package/skills/skill-marketplace.json +261 -0
  199. package/skills/workflow/cut-it/SKILL.md +86 -0
  200. package/skills/workflow/cut-it/evals.md +42 -0
  201. package/src/domains/agents/builtins/architect.md +33 -0
  202. package/src/domains/agents/builtins/coder.md +31 -0
  203. package/src/domains/agents/builtins/context-bootstrap.md +38 -0
  204. package/src/domains/agents/builtins/debugger.md +30 -0
  205. package/src/domains/agents/builtins/documenter.md +31 -0
  206. package/src/domains/agents/builtins/git-master.md +30 -0
  207. package/src/domains/agents/builtins/provenance.md +30 -0
  208. package/src/domains/agents/builtins/researcher.md +71 -0
  209. package/src/domains/agents/builtins/scout.md +42 -0
  210. package/src/domains/agents/builtins/tester.md +31 -0
  211. package/src/domains/agents/builtins/verifier.md +30 -0
  212. package/src/domains/agents/builtins/wiki-writer.md +41 -0
  213. package/src/domains/agents/fleets/build-review.md +34 -0
  214. package/src/domains/agents/fleets/build-test.md +35 -0
  215. package/src/domains/agents/fleets/sdlc.md +86 -0
  216. package/src/domains/prompts/fragments/identity/clio-worker.md +11 -0
  217. package/src/domains/prompts/fragments/identity/clio.md +26 -0
  218. package/src/domains/prompts/fragments/operating/contract.md +64 -0
  219. package/src/domains/prompts/fragments/safety/auto-edit.md +14 -0
  220. package/src/domains/prompts/fragments/safety/full-auto.md +14 -0
  221. package/src/domains/prompts/fragments/safety/read-only.md +13 -0
  222. package/src/domains/prompts/fragments/safety/suggest.md +13 -0
  223. package/src/domains/prompts/fragments/wiki/page.md +75 -0
  224. package/src/domains/prompts/fragments/wiki/plan.md +48 -0
  225. package/src/domains/providers/models/cloud-models/alcf.yaml +40 -0
  226. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +993 -0
@@ -0,0 +1,306 @@
1
+ # Extensions, Prompt Templates, Skills, and Share Archives
2
+
3
+ > [!TIP]
4
+ > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/extensions_blueprint.html](html/extensions_blueprint.html) (Version: 0.3.0).
5
+
6
+ Clio Coder has lightweight community-oriented resource packaging. Extensions are filesystem bundles that contribute prompts, skills, and future theme resources. Share archives are portable JSON files for moving project/user Clio resources between machines or collaborators.
7
+
8
+ Source of truth: `src/domains/extensions/**`, `src/domains/resources/**`, `src/domains/share/**`, `src/cli/extensions.ts`, and `src/cli/share.ts`.
9
+
10
+ ---
11
+
12
+ ## Resource roots and precedence
13
+
14
+ Prompts and skills are loaded from package, user, and project roots. Higher-ranked roots override lower-ranked resources with the same name.
15
+
16
+ Prompts use the three-tier precedence:
17
+
18
+ | Rank | Scope | Root |
19
+ | --- | --- | --- |
20
+ | 0 | package | enabled extension resource roots |
21
+ | 1 | user | `<configDir>/prompts` |
22
+ | 2 | project | `.clio-coder/prompts` |
23
+ | 3 | cli | reserved for call-site injected resources |
24
+
25
+ Skills add Agent Skills compatibility roots so that skills installed by other agents are usable without copying. The skill precedence, lowest to highest, is:
26
+
27
+ | Precedence | Scope | Source | Root |
28
+ | --- | --- | --- | --- |
29
+ | 10 | package | extension | enabled extension resource roots |
30
+ | 20 | user | agents / claude / codex / copilot / opencode | `~/.agents/skills`, `~/.claude/skills`, `~/.codex/skills`, `~/.copilot/skills`, `~/.config/opencode/skills` |
31
+ | 30 | user | clio | `<configDir>/skills` |
32
+ | 40 | project | agents / claude / codex / copilot / opencode | `.agents/skills`, `.claude/skills`, `.codex/skills`, `.github/skills`, `.opencode/skills` (untrusted by default) |
33
+ | 50 | project | clio | `.clio-coder/skills` |
34
+ | 60 | cli | path | reserved for call-site injected resources |
35
+
36
+ Clio-native roots intentionally outrank shared compatibility roots at the same scope, so `.clio-coder/skills` overrides a project `.codex/skills` skill of the same name, and `<configDir>/skills` overrides `~/.agents/skills`. If multiple compatibility roots contain the same skill name at the same precedence, Clio resolves the collision deterministically by file path and records a diagnostic. If two roots resolve to the same canonical `SKILL.md` through a symlink, Clio keeps the higher-precedence entry and records a diagnostic.
37
+
38
+ ---
39
+
40
+ ## Prompt templates
41
+
42
+ Prompt templates are Markdown files under a prompt root. Filename is the command name.
43
+
44
+ Example `.clio-coder/prompts/bugfix.md`:
45
+
46
+ ```md
47
+ ---
48
+ description: Focused bug-fix prompt
49
+ argument-hint: "<file> <symptom>"
50
+ ---
51
+
52
+ Investigate {{1}} for this symptom: {{2}}
53
+
54
+ Return:
55
+ 1. likely root cause;
56
+ 2. minimal patch plan;
57
+ 3. validation commands.
58
+ ```
59
+
60
+ Use in the TUI:
61
+
62
+ ```text
63
+ /prompts
64
+ /bugfix src/parser.ts empty input crashes
65
+ ```
66
+
67
+ Templates without frontmatter are accepted; Clio derives a fallback description from the first non-empty line. Invalid frontmatter degrades to a warning for prompt templates rather than failing the whole load.
68
+
69
+ ---
70
+
71
+ ## Skills
72
+
73
+ Skills follow the Agent Skills `SKILL.md` format. A skill is a directory containing `SKILL.md`, or a single Markdown file under a skill root. YAML frontmatter is required and must include a `description`. A missing description is the only hard rejection; every other validation issue degrades to a warning and the skill still loads.
74
+
75
+ Example `.clio-coder/skills/hdf5-review/SKILL.md`:
76
+
77
+ ```md
78
+ ---
79
+ name: hdf5-review
80
+ description: Review HDF5/NetCDF validation logic and output assumptions.
81
+ license: MIT
82
+ allowed-tools:
83
+ - Read
84
+ - Grep
85
+ ---
86
+
87
+ When asked to review scientific array output:
88
+ - identify expected dimensions and attributes;
89
+ - ask for validation data when absent;
90
+ - prefer deterministic scripts over visual inspection;
91
+ - cite files and commands used.
92
+ ```
93
+
94
+ Use in the TUI:
95
+
96
+ ```text
97
+ /skill
98
+ /skill:hdf5-review review the output validation path
99
+ ```
100
+
101
+ `/skill` opens the Skills Hub with discovered project skills, user skills, and marketplace entries. `/skill:name args` submits `args` with a pending skill request; the model must call `context` (scope="skills") for that skill before following the workflow. The same pending-request path runs in headless mode, so `clio-coder run "/skill:name args"` matches the interactive behavior.
102
+
103
+ Every activation records a session ledger entry with the skill name, file path, hash, source, trigger (`slash-command` or `tool`), and turn id when one is available. The same ledger is mirrored into session metadata, prompt diagnostics, and run receipts. Compaction keeps the newest active skill turn in the retained suffix so a loaded skill is not silently summarized away.
104
+
105
+ ### Naming and validation
106
+
107
+ The canonical invocation name is the frontmatter `name` when present, otherwise the directory or file subject. When `name` differs from the path subject Clio records a warning and keeps the frontmatter name, which lets shared cross-agent skill folders load without renaming. Names should use lowercase letters, numbers, and single hyphens; format violations warn but do not block loading.
108
+
109
+ Recognized frontmatter fields:
110
+
111
+ - `name`, `description`: core identity.
112
+ - `disable-model-invocation: true`: hides the skill from the model-visible catalog while keeping it loadable by `/skill:name`.
113
+ - `allowed-tools`, `disallowed-tools`: parsed as tool policy fields for the loaded skill workflow.
114
+ - `license`, `version`, `compatibility`, and other non-core keys: captured as skill metadata and surfaced when the skill loads through `context`.
115
+ - `source-url`, `registry-id`, `installed-at`, `updated-at`, `audit`: captured as install provenance when present.
116
+
117
+ ### Trust and compatibility roots
118
+
119
+ Shared user roots are model-visible by default, like the Clio user root. Project-local compatibility roots are discovered but **untrusted by default**: they appear in `/skill` with an `untrusted` marker, but they are excluded from the model-visible catalog and cannot be loaded through `context`. This prevents an unreviewed project checkout from injecting skills the model will act on.
120
+
121
+ Opt in to model-visible project compatibility roots by setting `skills.trustProjectCompatRoots: true` in `settings.yaml`. `CLIO_CODER_TRUST_PROJECT_SKILLS=1` remains an environment override. `.clio-coder/skills` is always trusted as the Clio-native project root.
122
+
123
+ ### Loading with context, writing directly
124
+
125
+ `context(scope="skills")` lists model-visible skills when called with no `name`, or loads a pending skill body by `name`. It returns structured metadata (`name`, `description`, `path`, `base_dir`, `hash`, `source`, `scope`, `disable_model_invocation`, parsed tool policy fields, diagnostics, and frontmatter metadata) plus the body. Pass `include_tree: true` to list sibling files under the skill base directory, capped internally at 50 entries. The skills scope never executes bundled scripts and only resolves skills the model is allowed to see.
126
+
127
+ Creating a skill is writing a `SKILL.md` file with the ordinary write tool: `.clio-coder/skills/<name>/SKILL.md` for project scope, or the Clio config skills directory for user scope. The loader validates frontmatter on load (`clio-coder skills validate` reports diagnostics), and the `skill-craft` shipped skill documents the frontmatter contract and craft rules.
128
+
129
+ ### Skills CLI
130
+
131
+ ```bash
132
+ clio-coder skills list [--json] [--all]
133
+ clio-coder skills search <query> [--json]
134
+ clio-coder skills inspect <name> [--json]
135
+ clio-coder skills validate [path] [--json]
136
+ clio-coder skills install <name|path|github-url> [--user|--project] [--name <name>] [--force]
137
+ clio-coder skills update <name> | --all [--force]
138
+ clio-coder skills sync [--force]
139
+ clio-coder skills eval <name|path> [--scenario <id>] [--target <id>] [--workspace <path>] [--timeout <seconds>] [--trust-fixtures] [--allow-network] [--json]
140
+ ```
141
+
142
+ `eval` (experimental) executes a skill's `evals.md` RED-GREEN scenarios with
143
+ baseline, treatment, and judge runs; see
144
+ [skills-marketplace.md](skills-marketplace.md) for the catalog contract it
145
+ verifies. Fixture commands in an `evals.md` are real shell and only run with
146
+ `--trust-fixtures`.
147
+
148
+ Every arm runs hermetic in a disposable workspace at autonomy `full-auto`: the network tool plane is stripped from child runs so a scenario measures the skill against its workspace and not against the open web. `--allow-network` keeps the web tools, and the run reports which network policy was in force. The per-arm execution timeout is set with `--timeout <seconds>`.
149
+
150
+ Exit code is 1 when a treatment bullet fails. Exit code is 3 when a scenario goes unmeasured, such as when judge output is truncated, missing, or unparseable, or when a run dies at a permission wall. Permission-wall deaths and harness infrastructure failures are classified as unmeasured infrastructure errors rather than negative verdicts on the skill.
151
+
152
+
153
+ Headless runs also accept `--no-skills` to disable discovery and repeatable `--skill <path>` to load one explicit `SKILL.md` file or skill directory for that run. Explicit `--skill` paths are honored even when `--no-skills` is set.
154
+
155
+ ### Agent Skills compatibility
156
+
157
+ Clio is local-first. Skills run from disk and no chat turn depends on network access. Because the compatibility roots above use the standard `SKILL.md` shape, skills installed by the Skills.sh CLI for other agents are usable directly:
158
+
159
+ ```text
160
+ npx skills add <skill> -a codex # installs into ~/.codex/skills
161
+ ```
162
+
163
+ Clio does not call Skills.sh during startup or prompt assembly, and does not emit its own telemetry. If you run `npx skills`, its telemetry follows that CLI and can be disabled with `DISABLE_TELEMETRY=1`. Skills.sh remote search and audit are not enabled in this release. Clio does support local marketplace search plus `clio-coder skills install <name|path|github-url>`: bare names resolve through the local marketplace, and explicit local paths or GitHub URLs install directly.
164
+
165
+ ### Prompt envelope and safety
166
+
167
+ Skill bodies never enter the prompt uninvited. The model discovers skills only through `context(scope="skills")`: a call with no `name` returns a one-line listing (name, scope, description) of model-visible skills, and a body loads only when the pending-skill policy authorizes that name for the turn, which requires an explicit operator invocation such as `/skill:<name>`. Skills are prompt resources, not execution grants: any script a skill references still runs through normal Clio tools and safety gates, and a loaded skill's `allowed-tools` declaration narrows the tool surface at admission (reason code `skill_surface`) without ever granting anything the host would refuse.
168
+
169
+ ---
170
+
171
+ ## Extension package manifest
172
+
173
+ An extension root contains `clio-coder-extension.yaml`, `clio-coder-extension.yml`, or `clio-coder-extension.json`.
174
+
175
+ ```yaml
176
+ manifestVersion: 1
177
+ id: lab-pack
178
+ name: Lab Pack
179
+ version: 1.0.0
180
+ description: Prompts and skills for this lab
181
+ resources:
182
+ prompts: prompts
183
+ skills: skills
184
+ themes: themes
185
+ compatibility:
186
+ clio: ">=0.2.0"
187
+ ```
188
+
189
+ Required fields are `manifestVersion: 1`, `id`, `version`, and `description`. `name` defaults to `id` when absent. The current resource kinds are `prompts`, `skills`, and `themes`; theme loading is reserved and currently returns an empty list in the resource loader.
190
+
191
+ IDs must be lowercase and may include numbers, dots, underscores, and hyphens; they must start/end alphanumeric.
192
+
193
+ ---
194
+
195
+ ## Extension CLI
196
+
197
+ ```bash
198
+ clio-coder extensions list [--all] [--json] [--user|--project]
199
+ clio-coder extensions discover <path> [--json]
200
+ clio-coder extensions install <path> [--user|--project] [--force] [--json]
201
+ clio-coder extensions enable <id> [--user|--project] [--json]
202
+ clio-coder extensions disable <id> [--user|--project] [--json]
203
+ clio-coder extensions remove <id> [--user|--project] [--json]
204
+ ```
205
+
206
+ Install locations:
207
+
208
+ | Scope | Root |
209
+ | --- | --- |
210
+ | user | `<configDir>/extensions/<id>` |
211
+ | project | `.clio-coder/extensions/<id>` |
212
+
213
+ Project extensions shadow user extensions with the same ID. Use `--all` to list shadowed/disabled entries.
214
+
215
+ ### Skill pack distribution
216
+
217
+ Clio Coder should not grow built-in skills in the harness. Distribute reusable Clio skills as extension packages instead. A future `iowarp/clio-kit` bundle can carry `clio-coder-extension.yaml` plus a `skills/` directory, and users can install it with `clio-coder extensions install <path> --user` or `--project`.
218
+
219
+ Recommended layout:
220
+
221
+ ```text
222
+ clio-kit/
223
+ clio-coder-extension.yaml
224
+ skills/
225
+ hpc-review/
226
+ SKILL.md
227
+ references/
228
+ scripts/
229
+ release-check/
230
+ SKILL.md
231
+ ```
232
+
233
+ This keeps the runtime local-first and small. Clio Coder discovers enabled extension skill roots, records provenance as `source: extension`, and still requires normal tool safety gates for any script a skill asks the agent to run.
234
+
235
+ ---
236
+
237
+ ## Share archives
238
+
239
+ Share archives are single JSON files:
240
+
241
+ ```json
242
+ {
243
+ "kind": "clio-share-archive",
244
+ "formatVersion": 1,
245
+ "manifest": {
246
+ "format": "clio.share.v1",
247
+ "clioVersion": "0.3.0",
248
+ "createdAt": "...",
249
+ "files": []
250
+ },
251
+ "files": []
252
+ }
253
+ ```
254
+
255
+ Every file entry is base64 encoded and SHA-256 checked on import.
256
+
257
+ ### Export
258
+
259
+ ```bash
260
+ clio-coder share export --out project.clio-coder-share.json --project
261
+ clio-coder share export --out all.clio-coder-share.json --both --all
262
+ ```
263
+
264
+ Options:
265
+
266
+ | Flag | Meaning |
267
+ | --- | --- |
268
+ | `--project` | Export project resources only. Default scope. |
269
+ | `--user` | Export user resources only. |
270
+ | `--both` | Export both user and project resources. |
271
+ | `--context` | Include project context files (`CLIO-CODER.md`, `AGENTS.md`, `CODEX.md`, `GEMINI.md`, `CLAUDE.md`). |
272
+ | `--prompts` | Include prompt templates. |
273
+ | `--skills` | Include skills. |
274
+ | `--settings` | Include non-secret settings fragment. |
275
+ | `--extensions` | Include extension bundle files, excluding extension `state.json`. |
276
+ | `--all` | Include every supported resource class. |
277
+
278
+ If no include flags are supplied, export includes all supported classes for the selected scope.
279
+
280
+ Settings fragments include non-secret UI/runtime preferences such as `autonomy`, `scope`, `budget`, `theme`, `terminal`, `keybindings`, `compaction`, and `retry`. Targets and credentials are not included.
281
+
282
+ ### Import and inspect
283
+
284
+ ```bash
285
+ clio-coder share inspect project.clio-coder-share.json
286
+ clio-coder share import project.clio-coder-share.json --dry-run
287
+ clio-coder share import project.clio-coder-share.json --force
288
+ ```
289
+
290
+ Dry-run imports produce a plan and report conflicts without writing. Without `--force`, conflicting destination files block writes. With `--force`, conflicting files are overwritten and supported settings-fragment keys are merged into the current settings file.
291
+
292
+ Aliases:
293
+
294
+ ```bash
295
+ clio-coder export --out project.clio-coder-share.json
296
+ clio-coder import project.clio-coder-share.json --dry-run
297
+ ```
298
+
299
+ ---
300
+
301
+ ## Community packaging guidance
302
+
303
+ - Keep extension packages small and reviewable.
304
+ - Treat prompts and skills as source code: document assumptions, expected evidence, and validation commands.
305
+ - Do not put secrets in extension packages or share archives.
306
+ - Prefer project-scoped resources for repository-specific instructions and user-scoped resources for personal workflow helpers.
@@ -0,0 +1,179 @@
1
+ # Fleet Demo Runbook
2
+
3
+ A repeatable multi-node demonstration: one orchestrator drives a real
4
+ CMake/C++ fix through a reviewer-gated dispatch across SSH nodes, and every
5
+ worker's receipt (including the remote ones) verifies afterward. The steps
6
+ are executable in order; this document doubles as the recording script.
7
+ Background and reference: [fleet-dispatch.md](fleet-dispatch.md).
8
+
9
+ ## Reference fabric
10
+
11
+ | Role | Machine | Notes |
12
+ | --- | --- | --- |
13
+ | Orchestrator | `zbook` | Runs the interactive Clio session. |
14
+ | SSH node | `blade` | General worker capacity. |
15
+ | SSH node | `mini` | Serves the operator's resident models on its GPU; residency stays observe. |
16
+ | SSH node | `dragon` | General worker capacity. |
17
+
18
+ All four machines share the filesystem, so the project root resolves to the
19
+ same absolute path everywhere. The demo project is any CMake/C++ repository
20
+ with a known failing build or test; a one-line compile error in a `.cpp` file
21
+ works well on camera.
22
+
23
+ ## 1. Declare the fleet (zbook)
24
+
25
+ Add the nodes to `settings.yaml` (see `clio-coder paths` for its location):
26
+
27
+ ```yaml
28
+ fleet:
29
+ nodes:
30
+ - id: blade
31
+ host: blade
32
+ maxWorkers: 2
33
+ - id: mini
34
+ host: mini
35
+ maxWorkers: 1
36
+ residency: observe
37
+ - id: dragon
38
+ host: dragon
39
+ maxWorkers: 2
40
+ ```
41
+
42
+ The implicit `local` node (zbook itself) is never declared. `residency:
43
+ observe` is the default and is written here only to make the demo point
44
+ explicit: workers on mini must never evict its resident models.
45
+
46
+ ## 2. Preflight the nodes
47
+
48
+ ```
49
+ clio-coder doctor
50
+ ```
51
+
52
+ Doctor probes each node over its real SSH channel: reachability, a
53
+ version-matched `clio-coder` on the remote path, path parity for the project root,
54
+ and a writable remote state dir. Passing nodes become dispatch-eligible;
55
+ failures are warnings that name the fix. Re-run doctor after any host,
56
+ project, or version change; admission fails closed on a stale preflight.
57
+
58
+ Confirm the durable view:
59
+
60
+ ```
61
+ clio-coder fleet status
62
+ ```
63
+
64
+ ## 3. Open the session and the fleet views
65
+
66
+ ```
67
+ clio-coder
68
+ ```
69
+
70
+ In the session:
71
+
72
+ - `/fleet` opens the fleet overlay; Tab cycles status, nodes, profiles, and
73
+ bindings. The nodes tab shows blade, mini, and dragon online with their
74
+ capacity.
75
+ - Alt+W toggles the dispatch board, which will fill with per-run cards once
76
+ work starts.
77
+
78
+ ## 4. Dispatch the gated fix across nodes
79
+
80
+ Give the orchestrator a concrete instruction that names the topology and the
81
+ placement. Example prompt for the chat input:
82
+
83
+ ```
84
+ Dispatch the fix for the failing CMake build as a reviewed task: builder on
85
+ node blade, reviewer on node dragon, at most 2 review cycles. The task is:
86
+ "Fix the compile error in src/mesh/loader.cpp so `cmake --build build` and
87
+ `ctest --test-dir build` both pass. Keep the change minimal."
88
+ ```
89
+
90
+ The model calls the dispatch tool with `review: {max_cycles: 2, node:
91
+ "dragon"}` and `node: "blade"` on the task. Because a remote placement is
92
+ plan-scale, supervised autonomy parks the call and shows the plan artifact
93
+ (topology, per-task agent, model, node); one approval launches the whole
94
+ plan. Full-auto skips the stop and seals the plan hash into the receipts
95
+ instead.
96
+
97
+ What to watch:
98
+
99
+ - The board card for the builder shows `node blade`, live tool activity, and
100
+ the per-worker context meter.
101
+ - The reviewer card shows `node dragon` and `gate reviewer c1`; the reviewer
102
+ runs read-only and ends with a `VERDICT:` line.
103
+ - On a revise verdict, a second builder card appears with `gate builder c2`;
104
+ the reviewer's findings were threaded to it as input data.
105
+ - `/fleet` status rows carry the node column for both runs.
106
+
107
+ If a node dies mid-run (for the demo: stop sshd on blade), the run finalizes
108
+ as stalled, the node is classified dead after consecutive channel failures,
109
+ and the bounded retry reroutes to a survivor with the hop recorded on the new
110
+ receipt.
111
+
112
+ ## 5. Collect the results
113
+
114
+ The dispatch tool returns the gate verdict, the run ids, and the receipt
115
+ paths. The monitor tool answers follow-ups inside the session (`mode=list`,
116
+ `mode=status`, `mode=receipt`). For asynchronous work the same flow applies
117
+ with `detach: true` plus `monitor mode="collect"`; the demo keeps the gate
118
+ attached so the verdict lands in one message.
119
+
120
+ Verify the fix like any local change:
121
+
122
+ ```
123
+ cmake --build build && ctest --test-dir build
124
+ ```
125
+
126
+ ## 6. Verify every receipt, including the remote ones
127
+
128
+ ```
129
+ clio-coder fleet status --json
130
+ clio-coder evidence build --run <builderRunId>
131
+ clio-coder evidence build --run <reviewerRunId>
132
+ clio-coder evidence list
133
+ clio-coder evidence inspect <evidenceId>
134
+ ```
135
+
136
+ `clio-coder evidence build` recomputes the receipt's integrity digest against the
137
+ run ledger; a tampered or mismatched receipt fails the build with the field
138
+ that diverged. The receipts of the remote runs verify on zbook because the
139
+ ledger and receipts live on the shared filesystem. Current receipts use strict
140
+ v15 and authenticate every current receipt and reconstructed-ledger field.
141
+ Every other receipt version is rejected rather than reported as partial; the
142
+ current binary has no historical receipt reader.
143
+
144
+ ## Provenance walkthrough: what a PI can verify from receipts alone
145
+
146
+ Each run's receipt is a JSON file under `<state>/receipts/<runId>.json`
147
+ (`clio-coder paths` shows the state dir; the monitor tool prints the exact path per
148
+ run). From the receipts alone, with no session transcript, a PI can
149
+ reconstruct:
150
+
151
+ 1. What ran and where. `agentId`, `task`, `targetId`, `wireModelId`,
152
+ `runtimeKind`, and `node` name the agent, model, and machine. `identity`
153
+ anchors the host, user, and any HPC scheduler allocation. `reroutes` lists
154
+ every dead-node failover hop the run survived.
155
+ 2. Against which code. `reproducibility.git` records branch, commit, dirty
156
+ state, and a status hash of the working tree at run start; `cwd` is the
157
+ workspace.
158
+ 3. Under which authority. `autonomyEnforcement` seals the autonomy level and
159
+ how the runtime enforced it. `safety` counts allowed, blocked, and
160
+ permission-requested tool calls and lists blocked attempts.
161
+ `plan` proves the dispatch was operator-approved (or full-auto logged)
162
+ and hashes the exact plan artifact.
163
+ 4. Through which gate. `gate` on the reviewer receipt references the builder
164
+ run id and its receipt digest; a revise builder references the reviewer
165
+ that sent it back, with the verdict. Following `gate.subjects` digests
166
+ backward reconstructs the whole review chain, and any edit to an earlier
167
+ receipt breaks the digest the later one recorded.
168
+ 5. That nothing was altered. The `integrity` block is a sha256 over the
169
+ complete receipt schema and its stable ledger row. `clio-coder evidence build
170
+ --run <id>` recomputes and cross-checks it; `verifyReceiptIntegrity` in
171
+ `src/domains/dispatch/receipt-integrity.ts` is the reference
172
+ implementation. Current receipts use v15 and every other version fails
173
+ verification. Incompatible state must be archived or removed; it is never
174
+ read as evidence through a compatibility verifier.
175
+
176
+ The walkthrough for an audience is three commands: `clio-coder evidence build
177
+ --run <id>` (it verifies), open the receipt JSON (read `node`, `gate`,
178
+ `plan`, `reproducibility.git`), and `clio-coder evidence build` again after
179
+ hand-editing one byte of the receipt (it refuses, naming the mismatch).