@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.
- package/CHANGELOG.md +407 -0
- package/CODE_OF_CONDUCT.md +21 -0
- package/CONTRIBUTING.md +224 -0
- package/LICENSE +202 -0
- package/NOTICE +9 -0
- package/README.md +798 -0
- package/SECURITY.md +72 -0
- package/assets/clio-coder-logo-128.webp +0 -0
- package/damage-control-rules.yaml +419 -0
- package/dist/acp-UMLFVA3F.js +92 -0
- package/dist/agents-Q4MYPMUW.js +91 -0
- package/dist/auth-O6HYIJ6J.js +521 -0
- package/dist/chunk-262G75JS.js +35 -0
- package/dist/chunk-26BZQOAD.js +1281 -0
- package/dist/chunk-2J63S4SF.js +508 -0
- package/dist/chunk-3DANZDGR.js +717 -0
- package/dist/chunk-4UQA7NCT.js +29 -0
- package/dist/chunk-527KG6XR.js +497 -0
- package/dist/chunk-5LDRNKX2.js +1063 -0
- package/dist/chunk-5N2FG33Q.js +25 -0
- package/dist/chunk-67MTHP2E.js +135 -0
- package/dist/chunk-6CWDTGUC.js +20 -0
- package/dist/chunk-7BHLZB3A.js +2115 -0
- package/dist/chunk-7RBKDI66.js +348 -0
- package/dist/chunk-AMFR5YA3.js +541 -0
- package/dist/chunk-BBUH4VAA.js +1224 -0
- package/dist/chunk-BYEU76JP.js +899 -0
- package/dist/chunk-CLJ5HLUD.js +458 -0
- package/dist/chunk-D5YD55AR.js +116 -0
- package/dist/chunk-DXQNI4PC.js +61 -0
- package/dist/chunk-E3NYWENM.js +1004 -0
- package/dist/chunk-GNGDQYDU.js +34688 -0
- package/dist/chunk-GOTUR54M.js +9 -0
- package/dist/chunk-HBU5MTAM.js +41 -0
- package/dist/chunk-HMYNFFY4.js +28 -0
- package/dist/chunk-JPOWPFCU.js +1010 -0
- package/dist/chunk-JWHCJDCI.js +1215 -0
- package/dist/chunk-KBR4MZZR.js +41 -0
- package/dist/chunk-KKKPTZLM.js +93 -0
- package/dist/chunk-ME6DNWIU.js +66 -0
- package/dist/chunk-NI4DEJMC.js +88 -0
- package/dist/chunk-O4EJEDHO.js +659 -0
- package/dist/chunk-PIDUD6M2.js +31 -0
- package/dist/chunk-PS4PFJQP.js +29459 -0
- package/dist/chunk-QV47YRF4.js +48 -0
- package/dist/chunk-RQDWMVRB.js +279 -0
- package/dist/chunk-TFSSEXL6.js +136 -0
- package/dist/chunk-TKHQ4DGZ.js +8290 -0
- package/dist/chunk-TPOCL34A.js +2876 -0
- package/dist/chunk-UGYAX5YI.js +565 -0
- package/dist/chunk-UHTSULZS.js +461 -0
- package/dist/chunk-UU3R62TT.js +128 -0
- package/dist/chunk-UWIJNAOB.js +3906 -0
- package/dist/chunk-VOO7NYPP.js +914 -0
- package/dist/chunk-VPAWTYLY.js +117 -0
- package/dist/chunk-WD6AJM35.js +1216 -0
- package/dist/chunk-X3BR7HWV.js +115 -0
- package/dist/chunk-X3NE4WVW.js +120 -0
- package/dist/chunk-XNISANGE.js +1395 -0
- package/dist/chunk-XV4ZJ6ZM.js +3177 -0
- package/dist/cli/index.js +236 -0
- package/dist/clio-KIQ5SNDS.js +53 -0
- package/dist/components-JVHMUBEB.js +653 -0
- package/dist/config-ZFCDBMDC.js +372 -0
- package/dist/configure-G4E3A2PG.js +27 -0
- package/dist/context-CDXTP2MP.js +293 -0
- package/dist/context-E3KIFVXI.js +185 -0
- package/dist/context-clear-3F4PLXOS.js +102 -0
- package/dist/context-index-Q7YSYTR3.js +106 -0
- package/dist/docs-YIETIWZI.js +280 -0
- package/dist/doctor-M5HJJZOL.js +61 -0
- package/dist/domains/agents/builtins/architect.md +33 -0
- package/dist/domains/agents/builtins/coder.md +31 -0
- package/dist/domains/agents/builtins/context-bootstrap.md +38 -0
- package/dist/domains/agents/builtins/debugger.md +30 -0
- package/dist/domains/agents/builtins/documenter.md +31 -0
- package/dist/domains/agents/builtins/git-master.md +30 -0
- package/dist/domains/agents/builtins/provenance.md +30 -0
- package/dist/domains/agents/builtins/researcher.md +71 -0
- package/dist/domains/agents/builtins/scout.md +42 -0
- package/dist/domains/agents/builtins/tester.md +31 -0
- package/dist/domains/agents/builtins/verifier.md +30 -0
- package/dist/domains/agents/builtins/wiki-writer.md +41 -0
- package/dist/eval-B3KZZESM.js +2674 -0
- package/dist/evidence-V67CHM35.js +233 -0
- package/dist/evolve-YDZSUQYA.js +518 -0
- package/dist/extensions-SRG7XCAH.js +207 -0
- package/dist/fleet-CA2CRTVG.js +760 -0
- package/dist/fleet-preflight-CLIAX7YR.js +21 -0
- package/dist/init-2OZDJE2D.js +227 -0
- package/dist/memory-3PIQQAKX.js +207 -0
- package/dist/models-DY35XI7Y.js +237 -0
- package/dist/paths-5OMXW7Z4.js +57 -0
- package/dist/preload-KZVHET2B.js +11 -0
- package/dist/reset-PIFYNOS3.js +216 -0
- package/dist/run-3VSPP24F.js +735 -0
- package/dist/share-D36RQCXM.js +241 -0
- package/dist/skills-F2MRLELY.js +445 -0
- package/dist/skills-eval-E2ZTW4PL.js +932 -0
- package/dist/targets-DZMEZAH4.js +977 -0
- package/dist/trace-7NYCUI2J.js +250 -0
- package/dist/uninstall-AD3JWHBB.js +322 -0
- package/dist/upgrade-WYYBKGDY.js +301 -0
- package/dist/usage-ULIDAGFF.js +755 -0
- package/dist/version-ROZ6CZKH.js +16 -0
- package/dist/wiki-generate-PKFIX6OB.js +377 -0
- package/dist/worker/entry.js +1739 -0
- package/docs/README.md +93 -0
- package/docs/acp.md +120 -0
- package/docs/alcf-provider.md +72 -0
- package/docs/architecture.md +172 -0
- package/docs/artifact-versions.md +54 -0
- package/docs/built-in-agents.md +265 -0
- package/docs/capacity-and-scheduling.md +97 -0
- package/docs/commands-and-modes.md +554 -0
- package/docs/config-knobs-audit.md +115 -0
- package/docs/configuration-and-targets.md +812 -0
- package/docs/context-engine.md +236 -0
- package/docs/dispatch-architecture-rationale.md +126 -0
- package/docs/documentation-coverage.md +46 -0
- package/docs/documentation-guide.md +166 -0
- package/docs/environment-variables.md +105 -0
- package/docs/eval-runner.md +205 -0
- package/docs/evals-internal.md +298 -0
- package/docs/evidence-and-memory.md +243 -0
- package/docs/evolution.md +143 -0
- package/docs/exit-codes-and-output.md +74 -0
- package/docs/extensions-and-sharing.md +306 -0
- package/docs/fleet-demo-runbook.md +179 -0
- package/docs/fleet-dispatch.md +591 -0
- package/docs/glossary.md +75 -0
- package/docs/html/agents_blueprint.html +936 -0
- package/docs/html/alcf_blueprint.html +324 -0
- package/docs/html/architecture_blueprint.html +850 -0
- package/docs/html/commands_blueprint.html +794 -0
- package/docs/html/config_knobs_audit_blueprint.html +178 -0
- package/docs/html/configuration_blueprint.html +1080 -0
- package/docs/html/context_blueprint.html +603 -0
- package/docs/html/documentation_blueprint.html +832 -0
- package/docs/html/environment_blueprint.html +404 -0
- package/docs/html/eval_blueprint.html +743 -0
- package/docs/html/evals_internal_blueprint.html +190 -0
- package/docs/html/evolution_blueprint.html +674 -0
- package/docs/html/extensions_blueprint.html +2065 -0
- package/docs/html/fleet_dispatch_blueprint.html +286 -0
- package/docs/html/index.html +919 -0
- package/docs/html/lifecycle_blueprint.html +723 -0
- package/docs/html/memory_blueprint.html +699 -0
- package/docs/html/middleware_blueprint.html +664 -0
- package/docs/html/models_blueprint.html +2366 -0
- package/docs/html/observability_blueprint.html +683 -0
- package/docs/html/provider_adapter_blueprint.html +245 -0
- package/docs/html/safety_blueprint.html +1386 -0
- package/docs/html/shared.css +571 -0
- package/docs/html/shared.js +143 -0
- package/docs/html/skills_blueprint.html +671 -0
- package/docs/html/soak_blueprint.html +182 -0
- package/docs/html/tool_usage_blueprint.html +350 -0
- package/docs/html/tools_blueprint.html +2249 -0
- package/docs/html/trace_blueprint.html +235 -0
- package/docs/html/tui_design_blueprint.html +314 -0
- package/docs/html/validation_blueprint.html +961 -0
- package/docs/html/worker_dispatch_blueprint.html +231 -0
- package/docs/installation-and-lifecycle.md +308 -0
- package/docs/middleware-and-components.md +148 -0
- package/docs/model-catalog.md +189 -0
- package/docs/observability.md +233 -0
- package/docs/proactive-memory.md +452 -0
- package/docs/prompt-envelope-and-tools.md +142 -0
- package/docs/provider-adapter-cookbook.md +148 -0
- package/docs/release-cut-checklist.md +138 -0
- package/docs/safety-model.md +357 -0
- package/docs/scientific-validation.md +105 -0
- package/docs/session-lifecycle.md +156 -0
- package/docs/skills-marketplace.md +46 -0
- package/docs/tool-usage.md +527 -0
- package/docs/trace-store.md +132 -0
- package/docs/troubleshooting.md +33 -0
- package/docs/tui-design.md +239 -0
- package/docs/worker-dispatch-mechanics.md +242 -0
- package/package.json +132 -0
- package/skills/README.md +408 -0
- package/skills/git/commit-crafting/SKILL.md +79 -0
- package/skills/git/commit-crafting/evals.md +92 -0
- package/skills/git/create-pr/SKILL.md +116 -0
- package/skills/git/create-pr/evals.md +114 -0
- package/skills/git/investigate-issue/SKILL.md +139 -0
- package/skills/git/investigate-issue/evals.md +94 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +96 -0
- package/skills/git/resolve-merge-conflicts/evals.md +58 -0
- package/skills/git/review-changes/SKILL.md +103 -0
- package/skills/git/review-changes/evals.md +85 -0
- package/skills/git/worktree-create/SKILL.md +92 -0
- package/skills/git/worktree-create/evals.md +97 -0
- package/skills/git/worktree-create/references/worktree-setup.md +66 -0
- package/skills/git/worktree-merge/SKILL.md +95 -0
- package/skills/git/worktree-merge/evals.md +114 -0
- package/skills/skill-marketplace.json +261 -0
- package/skills/workflow/cut-it/SKILL.md +86 -0
- package/skills/workflow/cut-it/evals.md +42 -0
- package/src/domains/agents/builtins/architect.md +33 -0
- package/src/domains/agents/builtins/coder.md +31 -0
- package/src/domains/agents/builtins/context-bootstrap.md +38 -0
- package/src/domains/agents/builtins/debugger.md +30 -0
- package/src/domains/agents/builtins/documenter.md +31 -0
- package/src/domains/agents/builtins/git-master.md +30 -0
- package/src/domains/agents/builtins/provenance.md +30 -0
- package/src/domains/agents/builtins/researcher.md +71 -0
- package/src/domains/agents/builtins/scout.md +42 -0
- package/src/domains/agents/builtins/tester.md +31 -0
- package/src/domains/agents/builtins/verifier.md +30 -0
- package/src/domains/agents/builtins/wiki-writer.md +41 -0
- package/src/domains/agents/fleets/build-review.md +34 -0
- package/src/domains/agents/fleets/build-test.md +35 -0
- package/src/domains/agents/fleets/sdlc.md +86 -0
- package/src/domains/prompts/fragments/identity/clio-worker.md +11 -0
- package/src/domains/prompts/fragments/identity/clio.md +26 -0
- package/src/domains/prompts/fragments/operating/contract.md +64 -0
- package/src/domains/prompts/fragments/safety/auto-edit.md +14 -0
- package/src/domains/prompts/fragments/safety/full-auto.md +14 -0
- package/src/domains/prompts/fragments/safety/read-only.md +13 -0
- package/src/domains/prompts/fragments/safety/suggest.md +13 -0
- package/src/domains/prompts/fragments/wiki/page.md +75 -0
- package/src/domains/prompts/fragments/wiki/plan.md +48 -0
- package/src/domains/providers/models/cloud-models/alcf.yaml +40 -0
- 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).
|