agentwheel 0.14.5 → 0.14.7
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 +109 -8
- package/dist/{chunk-B3FMBTWC.js → chunk-QJTTISLY.js} +3 -1
- package/dist/{identify-TXIDGMNL.js → identify-T4RE5RBD.js} +1 -1
- package/dist/index.js +1481 -415
- 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.
|
|
@@ -46,7 +75,8 @@ for project/workspace installs and `user` for documented user-level installs. If
|
|
|
46
75
|
installed in more than one type, agentwheel requires `--installation-type` instead of guessing.
|
|
47
76
|
|
|
48
77
|
- **OpenClaw** — workspace `skills/`, local plugin directories; user `~/.openclaw/skills`,
|
|
49
|
-
`~/.openclaw/workspace/AGENTS.md`,
|
|
78
|
+
`~/.openclaw/workspace/AGENTS.md`, `~/.openclaw/workspace-subagents/<name>/AGENTS.md`,
|
|
79
|
+
and `~/.openclaw/openclaw.json`
|
|
50
80
|
- **Claude Code** — `CLAUDE.md`, `.claude/`, `.mcp.json`, and user `~/.claude/`
|
|
51
81
|
- **Codex CLI** — `AGENTS.md`, `.agents/skills`, `plugins/`, `.codex/`, and user equivalents
|
|
52
82
|
- **GitHub Copilot CLI** — `.github/`, user `~/.copilot/`, and documented `.agents` skill alternatives
|
|
@@ -76,7 +106,7 @@ Fragments are Agentwheel composition inputs, not runtime file-drop targets.
|
|
|
76
106
|
| `agentwheel uninstall <name-or-source>` | Remove a configured package from runtimes and config. |
|
|
77
107
|
| `agentwheel uninstall <name> --keep-files` | Remove from config/manifest while leaving runtime files unmanaged. |
|
|
78
108
|
| `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
|
|
109
|
+
| `agentwheel doctor` | Check runtime setup and suggest explicit companion/selected skill install commands when they are missing. |
|
|
80
110
|
|
|
81
111
|
Mental model: **`install` = make what is declared true. `update` = move tracking declarations forward,
|
|
82
112
|
then make them true.**
|
|
@@ -86,15 +116,45 @@ to reconcile those removals.
|
|
|
86
116
|
## Quick Start
|
|
87
117
|
|
|
88
118
|
```bash
|
|
89
|
-
npm i -g agentwheel
|
|
90
|
-
|
|
91
119
|
agentwheel init
|
|
92
120
|
agentwheel add github:your-org/agent-pack --adapter openclaw --installation-type local --mode tracking
|
|
93
121
|
agentwheel plan
|
|
94
122
|
agentwheel install
|
|
95
123
|
```
|
|
96
124
|
|
|
97
|
-
|
|
125
|
+
## Source Inputs
|
|
126
|
+
|
|
127
|
+
Agentwheel can install from explicit local paths, Git sources, catalogue short names, provider
|
|
128
|
+
indexes, and generated OpenPack wrappers:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
agentwheel install ./my-pack --adapter codex --local
|
|
132
|
+
agentwheel install github:your-org/agent-pack --adapter codex --user
|
|
133
|
+
agentwheel install skillkit:owner/skill-name --adapter claude --user
|
|
134
|
+
agentwheel install vercel:owner/skill-name --adapter codex --user
|
|
135
|
+
agentwheel install mcp-registry:publisher/server-name --adapter claude --local
|
|
136
|
+
agentwheel install clawhub:@openclaw/whatsapp --adapter openclaw --local
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
`mcp-registry:<server-name>` reads the public MCP Registry and stages a generated OpenPack package
|
|
140
|
+
only when the server exposes a safe unauthenticated `streamable-http` remote. Entries that require
|
|
141
|
+
secret headers or only publish native package instructions remain discovery-only until they are
|
|
142
|
+
wrapped by an explicit OpenPack source.
|
|
143
|
+
|
|
144
|
+
`clawhub:<package-name>` reads ClawHub package metadata and stages a generated OpenPack plugin
|
|
145
|
+
wrapper for OpenClaw. The generated artifact plans `openclaw plugins install --force clawhub:<name>`;
|
|
146
|
+
plugin execution remains opt-in through Agentwheel's plugin execution controls.
|
|
147
|
+
|
|
148
|
+
Submit a public resource to the catalogue without editing `index.json` by hand:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
npx agentwheel@latest registry publish https://github.com/owner/repo \
|
|
152
|
+
--description "Reusable skills and rules for coding agents." \
|
|
153
|
+
--tag skills,rules
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
The command normalizes the source, drafts the registry JSON, prints a verification command, and
|
|
157
|
+
prints a prefilled GitHub submission URL you can review before sending.
|
|
98
158
|
|
|
99
159
|
Contributor install from source:
|
|
100
160
|
|
|
@@ -122,7 +182,7 @@ the skill keeps Agentwheel commands, setup guidance, safety rules, and operation
|
|
|
122
182
|
inside your agent runtime instead of forcing you to leave the flow and look them up elsewhere.
|
|
123
183
|
|
|
124
184
|
The CLI never installs the companion skill silently into runtime folders. Use `doctor` to check the
|
|
125
|
-
selected runtime and print the exact preview and install commands when
|
|
185
|
+
selected runtime and print the exact preview and install commands when a skill is missing:
|
|
126
186
|
|
|
127
187
|
```bash
|
|
128
188
|
agentwheel doctor --adapter copilot --user
|
|
@@ -130,6 +190,16 @@ agentwheel install github:NestDevLab/agentwheel --adapter copilot --user --skill
|
|
|
130
190
|
agentwheel install github:NestDevLab/agentwheel --adapter copilot --user --skill agentwheel
|
|
131
191
|
```
|
|
132
192
|
|
|
193
|
+
`doctor` also accepts explicit skill checks and machine-readable output. In Syncwheel-managed
|
|
194
|
+
workspaces, it automatically includes the Syncwheel skill so Git/worktree maintenance guidance can
|
|
195
|
+
be installed into the active agent runtime when needed.
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
agentwheel doctor --adapter codex --local --skill syncwheel --source github:NestDevLab/syncwheel --json
|
|
199
|
+
agentwheel install github:NestDevLab/syncwheel --adapter codex --local --skill syncwheel --dry-run
|
|
200
|
+
agentwheel install github:NestDevLab/syncwheel --adapter codex --local --skill syncwheel
|
|
201
|
+
```
|
|
202
|
+
|
|
133
203
|
Run the dry-run first when you want to inspect the target path and conflict status before writing.
|
|
134
204
|
|
|
135
205
|
## Runtime Targeting
|
|
@@ -261,6 +331,17 @@ be deselected:
|
|
|
261
331
|
}
|
|
262
332
|
```
|
|
263
333
|
|
|
334
|
+
Package authors can also declare suggested companion packages. Suggestions are not installed by
|
|
335
|
+
default; users opt in with `--with-suggestions` for all suggestions relevant to selected artifacts,
|
|
336
|
+
or `--suggestion <alias>` for one named suggestion. The choice is saved when used with `add` or
|
|
337
|
+
`install <source>`.
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
agentwheel add github:your-org/agent-pack --skill triage --with-suggestions --adapter codex --local
|
|
341
|
+
agentwheel plan --skill triage --with-suggestions
|
|
342
|
+
agentwheel install github:your-org/agent-pack --skill triage --suggestion brainstorming --adapter codex --local
|
|
343
|
+
```
|
|
344
|
+
|
|
264
345
|
## Dependencies And Composition
|
|
265
346
|
|
|
266
347
|
OpenPack packages can depend on other packages and compose shared markdown fragments:
|
|
@@ -277,9 +358,22 @@ OpenPack packages can depend on other packages and compose shared markdown fragm
|
|
|
277
358
|
"select": ["rules/safe-actions.md", "fragments/risk.md"]
|
|
278
359
|
}
|
|
279
360
|
},
|
|
361
|
+
"suggests": {
|
|
362
|
+
"brainstorming": {
|
|
363
|
+
"source": "vercel:skills.sh/example/agent-skills",
|
|
364
|
+
"select": ["skills/brainstorming"],
|
|
365
|
+
"reason": "Generate options before converging."
|
|
366
|
+
}
|
|
367
|
+
},
|
|
280
368
|
"provides": [
|
|
281
369
|
{ "type": "fragments", "path": "fragments" },
|
|
282
|
-
{
|
|
370
|
+
{
|
|
371
|
+
"type": "skills",
|
|
372
|
+
"path": "skills",
|
|
373
|
+
"items": {
|
|
374
|
+
"triage": { "suggests": ["brainstorming"] }
|
|
375
|
+
}
|
|
376
|
+
}
|
|
283
377
|
]
|
|
284
378
|
}
|
|
285
379
|
```
|
|
@@ -293,6 +387,10 @@ OpenPack packages can depend on other packages and compose shared markdown fragm
|
|
|
293
387
|
`core:fragments/risk.md`.
|
|
294
388
|
- **Trust.** New transitive sources prompt before install. Pre-approve with `--trust <glob>` or
|
|
295
389
|
`--yes`, set a workspace trust policy, and manage persisted decisions with `agentwheel trust`.
|
|
390
|
+
- **Suggested companions.** `suggests` uses the same source/selection shape as `requires`, but it
|
|
391
|
+
is opt-in. `--with-suggestions` pulls all relevant suggestions as non-blocking optional edges;
|
|
392
|
+
`--suggestion <alias>` pulls a specific suggestion and fails if that explicit suggestion cannot
|
|
393
|
+
resolve.
|
|
296
394
|
- **Offline & frozen installs.** `--offline` guarantees zero network; `--frozen-lock` hard-fails if
|
|
297
395
|
resolution would differ from the lock.
|
|
298
396
|
- **Introspection.** `agentwheel deps tree` prints the resolved graph; `agentwheel deps why
|
|
@@ -425,7 +523,7 @@ Built-in runtime targets:
|
|
|
425
523
|
|
|
426
524
|
| Runtime | Native supported targets |
|
|
427
525
|
|---|---|
|
|
428
|
-
| **OpenClaw** | `local: skills/, .openclaw/plugins/`; `user: ~/.openclaw/workspace/AGENTS.md, ~/.openclaw/skills, ~/.openclaw/openclaw.json`; no built-in `rules` target |
|
|
526
|
+
| **OpenClaw** | `local: skills/, .openclaw/plugins/`; `user: ~/.openclaw/workspace/AGENTS.md, ~/.openclaw/workspace-subagents/<name>/AGENTS.md, ~/.openclaw/skills, ~/.openclaw/openclaw.json`; no built-in `rules` target |
|
|
429
527
|
| **Claude Code** | `local: CLAUDE.md, .claude/skills, .claude/rules, .claude/commands, .claude/agents, .claude/plugins, .mcp.json, .claude/settings.json`; `user: ~/.claude/...` except project MCP; rules are behavioral/path-scoped |
|
|
430
528
|
| **Codex CLI** | `local: AGENTS.md, .agents/skills, plugins/, .codex/agents, .codex/config.toml, .codex/hooks.json`; `user: ~/.codex/AGENTS.md, ~/.agents/skills, ~/.codex/plugins, ~/.codex/agents, ~/.codex/config.toml, ~/.codex/hooks.json`; no built-in `rules` target; generic settings are planned, not implemented |
|
|
431
529
|
| **Hermes** | `local: AGENTS.md`; `user: ~/.hermes/SOUL.md, ~/.hermes/skills, ~/.hermes/plugins, ~/.hermes/config.yaml`; rules require explicit adapter config |
|
|
@@ -433,6 +531,9 @@ Built-in runtime targets:
|
|
|
433
531
|
|
|
434
532
|
## Docs
|
|
435
533
|
|
|
534
|
+
- [`install.md`](install.md) — AI-agent handoff for installing Agentwheel and the companion skill.
|
|
535
|
+
- [`AGENT.md`](AGENT.md) — concise operating guide for AI agents using Agentwheel.
|
|
536
|
+
- [`llms.txt`](llms.txt) — LLM-oriented map of the public docs.
|
|
436
537
|
- [`docs/spec/openpack.md`](docs/spec/openpack.md) — OpenPack package spec.
|
|
437
538
|
- [`docs/fleet-config.md`](docs/fleet-config.md) — named agents, SSH targets, and profiles.
|
|
438
539
|
- [`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("~/")) {
|