agentwheel 0.14.4 → 0.14.6
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/AGENT.md +95 -0
- package/README.md +113 -7
- package/dist/{chunk-B3FMBTWC.js → chunk-QJTTISLY.js} +3 -1
- package/dist/{identify-TXIDGMNL.js → identify-T4RE5RBD.js} +1 -1
- package/dist/index.js +1242 -343
- package/install.md +113 -0
- package/llms.txt +27 -0
- package/openpack.json +1 -1
- package/package.json +4 -1
- package/skills/agentwheel/SKILL.md +13 -0
package/AGENT.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Agentwheel For AI Agents
|
|
2
|
+
|
|
3
|
+
Agentwheel is the control plane for installing OpenPack resources into agent runtimes. Use it when a
|
|
4
|
+
user wants to discover, add, install, update, remove, or publish skills, instructions, rules,
|
|
5
|
+
commands, subagents, MCP, hooks, settings, plugins, or fragments.
|
|
6
|
+
|
|
7
|
+
## Operating Model
|
|
8
|
+
|
|
9
|
+
- `add` records desired packages in `.agentwheel/config.json`.
|
|
10
|
+
- `plan` previews what would change.
|
|
11
|
+
- `install` makes the declared state true.
|
|
12
|
+
- `update` refreshes tracking packages, then installs.
|
|
13
|
+
- `uninstall` removes managed runtime output and config entries.
|
|
14
|
+
|
|
15
|
+
Runtime output directories are generated. Do not hand-edit generated skills, runtime config, or
|
|
16
|
+
plugin directories to complete an Agentwheel change.
|
|
17
|
+
|
|
18
|
+
## Standard Flow
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
agentwheel add github:owner/agent-pack --adapter codex --installation-type local --mode tracking
|
|
22
|
+
agentwheel plan
|
|
23
|
+
agentwheel install
|
|
24
|
+
agentwheel status
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
To add and install in one step:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
agentwheel install github:owner/agent-pack --adapter codex --local
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use explicit scope when the target matters:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
agentwheel install github:owner/agent-pack --adapter claude --user
|
|
37
|
+
agentwheel install github:owner/agent-pack --adapter codex --local
|
|
38
|
+
agentwheel install github:owner/agent-pack --adapter openclaw --installation-type local
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Companion Skills
|
|
42
|
+
|
|
43
|
+
Install the Agentwheel companion skill when the user wants Agentwheel guidance inside the runtime:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
agentwheel doctor --adapter codex --local
|
|
47
|
+
agentwheel install github:NestDevLab/agentwheel --adapter codex --local --skill agentwheel
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
In Syncwheel-managed repositories, `doctor` can also check for the Syncwheel skill:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
agentwheel doctor --adapter codex --local --skill syncwheel --source github:NestDevLab/syncwheel
|
|
54
|
+
agentwheel install github:NestDevLab/syncwheel --adapter codex --local --skill syncwheel
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Sources And Catalogue
|
|
58
|
+
|
|
59
|
+
Use direct sources when known:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
agentwheel install github:owner/repo --adapter codex --local
|
|
63
|
+
agentwheel install skillkit:owner/skill-name --adapter claude --user
|
|
64
|
+
agentwheel install vercel:owner/skill-name --adapter codex --user
|
|
65
|
+
agentwheel install mcp-registry:publisher/server-name --adapter claude --local
|
|
66
|
+
agentwheel install clawhub:@openclaw/package-name --adapter openclaw --local
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Use the catalogue for browsing and copy-ready commands:
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
https://nestdevlab.github.io/agentwheel/catalogue.html
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Draft a public catalogue submission without editing the registry by hand:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npx agentwheel@latest registry publish https://github.com/owner/repo
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Safety
|
|
82
|
+
|
|
83
|
+
- Prefer `agentwheel plan` or `agentwheel install --dry-run` before broad or fleet changes.
|
|
84
|
+
- Stop on drift or conflict unless the user explicitly approves the exact scope.
|
|
85
|
+
- Use `--adapter-module` only with `--allow-adapter-code` after the user approves local code execution.
|
|
86
|
+
- Use `--execute-plugins` only after the user approves plugin execution.
|
|
87
|
+
- Treat registry publishing, Git commits, pushes, and runtime restarts as separate side effects.
|
|
88
|
+
|
|
89
|
+
## Key References
|
|
90
|
+
|
|
91
|
+
- Install handoff: `install.md`
|
|
92
|
+
- Package spec: `docs/spec/openpack.md`
|
|
93
|
+
- Compatibility matrix: `docs/design/artifact-harness-compatibility.md`
|
|
94
|
+
- Fleet config: `docs/fleet-config.md`
|
|
95
|
+
- Catalogue: `docs/catalogue.html`
|
package/README.md
CHANGED
|
@@ -34,6 +34,35 @@ agentwheel install
|
|
|
34
34
|
No lock-in. No central gatekeeper. Packages live in plain git repos or local folders, customizations
|
|
35
35
|
live in your workspace, and runtimes stay generated output.
|
|
36
36
|
|
|
37
|
+
## Install Methods
|
|
38
|
+
|
|
39
|
+
**CLI install**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm i -g agentwheel
|
|
43
|
+
agentwheel init
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Prefer pnpm? `pnpm add -g agentwheel` works too.
|
|
47
|
+
|
|
48
|
+
**AI agent handoff**
|
|
49
|
+
|
|
50
|
+
Give an agent [`install.md`](install.md) when you want it to install Agentwheel, verify the CLI,
|
|
51
|
+
install the companion skill, and show the right catalogue flow for your runtime.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
curl -fsSL https://raw.githubusercontent.com/NestDevLab/agentwheel/main/install.md
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Companion skill**
|
|
58
|
+
|
|
59
|
+
The companion skill keeps Agentwheel commands and safety rules inside the runtime you are using:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
agentwheel doctor --adapter codex --local
|
|
63
|
+
agentwheel install github:NestDevLab/agentwheel --adapter codex --local --skill agentwheel
|
|
64
|
+
```
|
|
65
|
+
|
|
37
66
|
> **Status: early (v0.12).** The public CLI vocabulary is package-manager style:
|
|
38
67
|
> `add`, `install`, `update`, and `uninstall`. A hidden `sync` shim remains for old bootstrapped
|
|
39
68
|
> skills; use `install` in all new docs and scripts.
|
|
@@ -76,7 +105,7 @@ Fragments are Agentwheel composition inputs, not runtime file-drop targets.
|
|
|
76
105
|
| `agentwheel uninstall <name-or-source>` | Remove a configured package from runtimes and config. |
|
|
77
106
|
| `agentwheel uninstall <name> --keep-files` | Remove from config/manifest while leaving runtime files unmanaged. |
|
|
78
107
|
| `agentwheel status` | Show configured packages, manifest/lock presence, and install state. Use `--profile <name>` for profile-managed fleets; `status --all` uses profile `all` when present. |
|
|
79
|
-
| `agentwheel doctor` | Check runtime setup and suggest
|
|
108
|
+
| `agentwheel doctor` | Check runtime setup and suggest explicit companion/selected skill install commands when they are missing. |
|
|
80
109
|
|
|
81
110
|
Mental model: **`install` = make what is declared true. `update` = move tracking declarations forward,
|
|
82
111
|
then make them true.**
|
|
@@ -86,15 +115,45 @@ to reconcile those removals.
|
|
|
86
115
|
## Quick Start
|
|
87
116
|
|
|
88
117
|
```bash
|
|
89
|
-
npm i -g agentwheel
|
|
90
|
-
|
|
91
118
|
agentwheel init
|
|
92
119
|
agentwheel add github:your-org/agent-pack --adapter openclaw --installation-type local --mode tracking
|
|
93
120
|
agentwheel plan
|
|
94
121
|
agentwheel install
|
|
95
122
|
```
|
|
96
123
|
|
|
97
|
-
|
|
124
|
+
## Source Inputs
|
|
125
|
+
|
|
126
|
+
Agentwheel can install from explicit local paths, Git sources, catalogue short names, provider
|
|
127
|
+
indexes, and generated OpenPack wrappers:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
agentwheel install ./my-pack --adapter codex --local
|
|
131
|
+
agentwheel install github:your-org/agent-pack --adapter codex --user
|
|
132
|
+
agentwheel install skillkit:owner/skill-name --adapter claude --user
|
|
133
|
+
agentwheel install vercel:owner/skill-name --adapter codex --user
|
|
134
|
+
agentwheel install mcp-registry:publisher/server-name --adapter claude --local
|
|
135
|
+
agentwheel install clawhub:@openclaw/whatsapp --adapter openclaw --local
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
`mcp-registry:<server-name>` reads the public MCP Registry and stages a generated OpenPack package
|
|
139
|
+
only when the server exposes a safe unauthenticated `streamable-http` remote. Entries that require
|
|
140
|
+
secret headers or only publish native package instructions remain discovery-only until they are
|
|
141
|
+
wrapped by an explicit OpenPack source.
|
|
142
|
+
|
|
143
|
+
`clawhub:<package-name>` reads ClawHub package metadata and stages a generated OpenPack plugin
|
|
144
|
+
wrapper for OpenClaw. The generated artifact plans `openclaw plugins install --force clawhub:<name>`;
|
|
145
|
+
plugin execution remains opt-in through Agentwheel's plugin execution controls.
|
|
146
|
+
|
|
147
|
+
Submit a public resource to the catalogue without editing `index.json` by hand:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npx agentwheel@latest registry publish https://github.com/owner/repo \
|
|
151
|
+
--description "Reusable skills and rules for coding agents." \
|
|
152
|
+
--tag skills,rules
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
The command normalizes the source, drafts the registry JSON, prints a verification command, and
|
|
156
|
+
prints a prefilled GitHub submission URL you can review before sending.
|
|
98
157
|
|
|
99
158
|
Contributor install from source:
|
|
100
159
|
|
|
@@ -117,8 +176,12 @@ stderr warning when an update is available. Disable it with `--no-update-check`
|
|
|
117
176
|
## Companion Skill Doctor
|
|
118
177
|
|
|
119
178
|
Agentwheel ships its own companion skill in `github:NestDevLab/agentwheel` as `skills/agentwheel`.
|
|
120
|
-
|
|
121
|
-
|
|
179
|
+
Installing it is optional, but strongly recommended if you want to get the most out of Agentwheel:
|
|
180
|
+
the skill keeps Agentwheel commands, setup guidance, safety rules, and operational patterns available
|
|
181
|
+
inside your agent runtime instead of forcing you to leave the flow and look them up elsewhere.
|
|
182
|
+
|
|
183
|
+
The CLI never installs the companion skill silently into runtime folders. Use `doctor` to check the
|
|
184
|
+
selected runtime and print the exact preview and install commands when a skill is missing:
|
|
122
185
|
|
|
123
186
|
```bash
|
|
124
187
|
agentwheel doctor --adapter copilot --user
|
|
@@ -126,6 +189,18 @@ agentwheel install github:NestDevLab/agentwheel --adapter copilot --user --skill
|
|
|
126
189
|
agentwheel install github:NestDevLab/agentwheel --adapter copilot --user --skill agentwheel
|
|
127
190
|
```
|
|
128
191
|
|
|
192
|
+
`doctor` also accepts explicit skill checks and machine-readable output. In Syncwheel-managed
|
|
193
|
+
workspaces, it automatically includes the Syncwheel skill so Git/worktree maintenance guidance can
|
|
194
|
+
be installed into the active agent runtime when needed.
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
agentwheel doctor --adapter codex --local --skill syncwheel --source github:NestDevLab/syncwheel --json
|
|
198
|
+
agentwheel install github:NestDevLab/syncwheel --adapter codex --local --skill syncwheel --dry-run
|
|
199
|
+
agentwheel install github:NestDevLab/syncwheel --adapter codex --local --skill syncwheel
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Run the dry-run first when you want to inspect the target path and conflict status before writing.
|
|
203
|
+
|
|
129
204
|
## Runtime Targeting
|
|
130
205
|
|
|
131
206
|
Normal use does not need `--target-root`. Run agentwheel inside a runtime folder and it detects the
|
|
@@ -255,6 +330,17 @@ be deselected:
|
|
|
255
330
|
}
|
|
256
331
|
```
|
|
257
332
|
|
|
333
|
+
Package authors can also declare suggested companion packages. Suggestions are not installed by
|
|
334
|
+
default; users opt in with `--with-suggestions` for all suggestions relevant to selected artifacts,
|
|
335
|
+
or `--suggestion <alias>` for one named suggestion. The choice is saved when used with `add` or
|
|
336
|
+
`install <source>`.
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
agentwheel add github:your-org/agent-pack --skill triage --with-suggestions --adapter codex --local
|
|
340
|
+
agentwheel plan --skill triage --with-suggestions
|
|
341
|
+
agentwheel install github:your-org/agent-pack --skill triage --suggestion brainstorming --adapter codex --local
|
|
342
|
+
```
|
|
343
|
+
|
|
258
344
|
## Dependencies And Composition
|
|
259
345
|
|
|
260
346
|
OpenPack packages can depend on other packages and compose shared markdown fragments:
|
|
@@ -271,9 +357,22 @@ OpenPack packages can depend on other packages and compose shared markdown fragm
|
|
|
271
357
|
"select": ["rules/safe-actions.md", "fragments/risk.md"]
|
|
272
358
|
}
|
|
273
359
|
},
|
|
360
|
+
"suggests": {
|
|
361
|
+
"brainstorming": {
|
|
362
|
+
"source": "vercel:skills.sh/example/agent-skills",
|
|
363
|
+
"select": ["skills/brainstorming"],
|
|
364
|
+
"reason": "Generate options before converging."
|
|
365
|
+
}
|
|
366
|
+
},
|
|
274
367
|
"provides": [
|
|
275
368
|
{ "type": "fragments", "path": "fragments" },
|
|
276
|
-
{
|
|
369
|
+
{
|
|
370
|
+
"type": "skills",
|
|
371
|
+
"path": "skills",
|
|
372
|
+
"items": {
|
|
373
|
+
"triage": { "suggests": ["brainstorming"] }
|
|
374
|
+
}
|
|
375
|
+
}
|
|
277
376
|
]
|
|
278
377
|
}
|
|
279
378
|
```
|
|
@@ -287,6 +386,10 @@ OpenPack packages can depend on other packages and compose shared markdown fragm
|
|
|
287
386
|
`core:fragments/risk.md`.
|
|
288
387
|
- **Trust.** New transitive sources prompt before install. Pre-approve with `--trust <glob>` or
|
|
289
388
|
`--yes`, set a workspace trust policy, and manage persisted decisions with `agentwheel trust`.
|
|
389
|
+
- **Suggested companions.** `suggests` uses the same source/selection shape as `requires`, but it
|
|
390
|
+
is opt-in. `--with-suggestions` pulls all relevant suggestions as non-blocking optional edges;
|
|
391
|
+
`--suggestion <alias>` pulls a specific suggestion and fails if that explicit suggestion cannot
|
|
392
|
+
resolve.
|
|
290
393
|
- **Offline & frozen installs.** `--offline` guarantees zero network; `--frozen-lock` hard-fails if
|
|
291
394
|
resolution would differ from the lock.
|
|
292
395
|
- **Introspection.** `agentwheel deps tree` prints the resolved graph; `agentwheel deps why
|
|
@@ -427,6 +530,9 @@ Built-in runtime targets:
|
|
|
427
530
|
|
|
428
531
|
## Docs
|
|
429
532
|
|
|
533
|
+
- [`install.md`](install.md) — AI-agent handoff for installing Agentwheel and the companion skill.
|
|
534
|
+
- [`AGENT.md`](AGENT.md) — concise operating guide for AI agents using Agentwheel.
|
|
535
|
+
- [`llms.txt`](llms.txt) — LLM-oriented map of the public docs.
|
|
430
536
|
- [`docs/spec/openpack.md`](docs/spec/openpack.md) — OpenPack package spec.
|
|
431
537
|
- [`docs/fleet-config.md`](docs/fleet-config.md) — named agents, SSH targets, and profiles.
|
|
432
538
|
- [`docs/design/artifact-harness-compatibility.md`](docs/design/artifact-harness-compatibility.md) — artifact/harness compatibility matrix and rule semantics.
|
|
@@ -87,12 +87,14 @@ async function writeJsonAtomic(path, data) {
|
|
|
87
87
|
|
|
88
88
|
// src/source/identify.ts
|
|
89
89
|
function inferSourceDriverName(source) {
|
|
90
|
+
if (source.startsWith("clawhub:")) return "clawhub";
|
|
91
|
+
if (source.startsWith("mcp-registry:")) return "mcp-registry";
|
|
90
92
|
if (source.startsWith("skillkit:")) return "skillkit";
|
|
91
93
|
if (source.startsWith("vercel:")) return "vercel-skills";
|
|
92
94
|
return source.startsWith("github:") || source.startsWith("git:") ? "git" : "local";
|
|
93
95
|
}
|
|
94
96
|
async function isExplicitSource(source) {
|
|
95
|
-
if (source.startsWith("github:") || source.startsWith("git:") || source.startsWith("skillkit:") || source.startsWith("vercel:")) {
|
|
97
|
+
if (source.startsWith("github:") || source.startsWith("git:") || source.startsWith("skillkit:") || source.startsWith("vercel:") || source.startsWith("mcp-registry:") || source.startsWith("clawhub:")) {
|
|
96
98
|
return true;
|
|
97
99
|
}
|
|
98
100
|
if (source.startsWith("./") || source.startsWith("../") || source.startsWith("/") || source.startsWith("~/")) {
|