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 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`, and `~/.openclaw/openclaw.json`
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 the explicit companion skill install command when it is missing. |
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
- Prefer pnpm? `pnpm add -g agentwheel` works too.
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 the skill is missing:
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
- { "type": "skills", "path": "skills" }
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("~/")) {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  inferSourceDriverName,
4
4
  isExplicitSource
5
- } from "./chunk-B3FMBTWC.js";
5
+ } from "./chunk-QJTTISLY.js";
6
6
  export {
7
7
  inferSourceDriverName,
8
8
  isExplicitSource