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 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 the explicit companion skill install command when it is missing. |
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
- Prefer pnpm? `pnpm add -g agentwheel` works too.
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
- The CLI never installs it silently into runtime folders. Use `doctor` to check the selected runtime
121
- and print the exact preview and install commands when the skill is missing:
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
- { "type": "skills", "path": "skills" }
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("~/")) {
@@ -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