allagents 0.31.1 → 0.31.2

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/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 EntityProcess
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 EntityProcess
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,441 +1,441 @@
1
- # AllAgents
2
-
3
- CLI tool for managing multi-repo AI agent workspaces with plugin synchronization across multiple AI clients.
4
-
5
- ## Why AllAgents?
6
-
7
- **The Problem:** AI coding assistants (Claude, Copilot, Cursor, Codex, etc.) each have their own configuration formats and directory structures. If you want to share skills across multiple projects or use multiple AI clients, you need to manually copy and transform files.
8
-
9
- **AllAgents solves this by:**
10
-
11
- | Feature | Claude Code Plugins | AllAgents |
12
- |---------|--------------------|-----------|
13
- | Scope | Single project | Multi-repo workspace |
14
- | Client support | Claude only | 23 AI clients |
15
- | File location | Runtime lookup from cache | Copied to workspace (git-versioned) |
16
- | Project structure | AI config mixed with code | Separate workspace repo |
17
-
18
- ### Key Differentiators
19
-
20
- 1. **Multi-repo workspaces** - One workspace references multiple project repositories. Your AI tooling lives separately from your application code.
21
-
22
- 2. **Multi-client distribution** - Write plugins once, sync to all clients. AllAgents transforms and copies files to each client's expected paths.
23
-
24
- 3. **Workspace is a git repo** - Unlike Claude's runtime plugin system, AllAgents copies files into your workspace. Team members get the same AI tooling via git.
25
-
26
- 4. **Clean separation** - Project repos stay clean. AI configuration lives in the workspace.
27
-
28
- ```
29
- ┌─────────────────┐
30
- │ Marketplace │ (plugin source - GitHub repos)
31
- └────────┬────────┘
32
-
33
-
34
- ┌─────────────────┐
35
- │ AllAgents │ (sync & transform)
36
- │ workspace sync │
37
- └────────┬────────┘
38
-
39
- ┌────┴────┬────────┬─────────┐
40
- ▼ ▼ ▼ ▼
41
- .claude/ .agents/ .cursor/ .factory/ (client paths)
42
- ```
43
-
44
- ## Installation
45
-
46
- ```bash
47
- # Using bun
48
- bun install -g allagents
49
-
50
- # Or run directly
51
- bunx allagents
52
- ```
53
-
54
- ## Quick Start
55
-
56
- ```bash
57
- # Create a new workspace
58
- allagents workspace init my-workspace
59
- cd my-workspace
60
-
61
- # Or initialize from a remote GitHub template
62
- allagents workspace init my-workspace --from owner/repo/path/to/template
63
-
64
- # Add a marketplace (or let auto-registration handle it)
65
- allagents plugin marketplace add anthropics/claude-plugins-official
66
-
67
- # Install plugins to workspace
68
- allagents plugin install code-review@claude-plugins-official
69
- allagents plugin install my-plugin@someuser/their-repo
70
-
71
- # Sync plugins to workspace
72
- allagents workspace sync
73
- ```
74
-
75
- ### Initialize from Remote Template
76
-
77
- Start a new workspace instantly from any GitHub repository containing a `workspace.yaml`:
78
-
79
- ```bash
80
- # From GitHub URL
81
- allagents workspace init ~/my-project --from https://github.com/myorg/templates/tree/main/nodejs
82
-
83
- # From shorthand
84
- allagents workspace init ~/my-project --from myorg/templates/nodejs
85
-
86
- # From repo root (looks for .allagents/workspace.yaml or workspace.yaml)
87
- allagents workspace init ~/my-project --from myorg/templates
88
- ```
89
-
90
- This fetches the workspace configuration directly from GitHub - no cloning required.
91
-
92
- ## Commands
93
-
94
- ### Workspace Commands
95
-
96
- ```bash
97
- # Initialize a new workspace from template
98
- allagents workspace init <path>
99
- allagents workspace init <path> --from <source> # From local path or GitHub URL
100
-
101
- # Sync all plugins to workspace (non-destructive)
102
- allagents workspace sync [options]
103
- --force Force re-fetch of remote plugins even if cached
104
- --dry-run Preview changes without applying
105
-
106
- # Non-destructive sync: your files are safe
107
- # - First sync overlays without deleting existing files
108
- # - Subsequent syncs only remove files AllAgents previously synced
109
- # - Tracked in .allagents/sync-state.json
110
-
111
- # Show status of workspace and plugins
112
- allagents workspace status
113
-
114
- # Add a repository to the workspace (auto-detects git remote source)
115
- allagents workspace repo add <path>
116
- allagents workspace repo add <path> --description "My project"
117
-
118
- # Remove a repository from the workspace
119
- allagents workspace repo remove <path>
120
-
121
- # List all repositories in the workspace
122
- allagents workspace repo list
123
- ```
124
-
125
- ### VSCode Workspace Generation
126
-
127
- When `vscode` is included in the `clients` list, `workspace sync` automatically generates a `.code-workspace` file. Repository paths are resolved to absolute paths. Plugin folders are included with prompt/instruction file location settings for Copilot.
128
-
129
- ```yaml
130
- # workspace.yaml
131
- clients:
132
- - vscode
133
- - claude
134
- ```
135
-
136
- #### Output filename
137
-
138
- The output filename defaults to `<dirname>.code-workspace`. Override with `vscode.output`:
139
-
140
- ```yaml
141
- # workspace.yaml
142
- vscode:
143
- output: my-project
144
- ```
145
-
146
- #### Template file
147
-
148
- Create `.allagents/template.code-workspace` for VSCode-specific settings, launch configurations, extensions, and extra folders. The template supports `{path:../...}` placeholders that resolve to absolute paths using repository paths from workspace.yaml.
149
-
150
- ```json
151
- {
152
- "folders": [
153
- { "path": "{path:../Shared}", "name": "SharedLib" }
154
- ],
155
- "settings": {
156
- "cSpell.words": ["myterm"],
157
- "chat.agent.maxRequests": 999,
158
- "chat.useClaudeSkills": true
159
- },
160
- "launch": {
161
- "configurations": [
162
- {
163
- "type": "node",
164
- "name": "dev",
165
- "cwd": "{path:../myapp}/src",
166
- "runtimeExecutable": "npm",
167
- "runtimeArgs": ["run", "dev"]
168
- }
169
- ]
170
- },
171
- "extensions": {
172
- "recommendations": ["dbaeumer.vscode-eslint"]
173
- }
174
- }
175
- ```
176
-
177
- The generated workspace includes:
178
- - Repository folders from workspace.yaml (resolved to absolute paths, listed first)
179
- - Template folders (deduplicated against repository folders)
180
- - All other template content (settings, launch, extensions) with `{repo:..}` placeholders resolved
181
-
182
- ### Plugin Marketplace Commands
183
-
184
- ```bash
185
- # List registered marketplaces
186
- allagents plugin marketplace list
187
-
188
- # Add a marketplace from GitHub or local path
189
- allagents plugin marketplace add <source>
190
- # Examples:
191
- # allagents plugin marketplace add anthropics/claude-plugins-official
192
- # allagents plugin marketplace add /path/to/local/marketplace
193
-
194
- # Remove a marketplace
195
- allagents plugin marketplace remove <name>
196
-
197
- # Update marketplace(s) from remote
198
- allagents plugin marketplace update [name]
199
- ```
200
-
201
- ### Plugin Commands
202
-
203
- ```bash
204
- # Install a plugin to .allagents/workspace.yaml (auto-registers marketplace if needed)
205
- allagents plugin install <plugin@marketplace>
206
-
207
- # Remove a plugin from .allagents/workspace.yaml
208
- allagents plugin uninstall <plugin>
209
-
210
- # List available plugins from marketplaces
211
- allagents plugin list [marketplace]
212
-
213
- # Validate a plugin or marketplace structure
214
- allagents plugin validate <path>
215
- ```
216
-
217
- ## .allagents/workspace.yaml
218
-
219
- The workspace configuration file lives in `.allagents/workspace.yaml` and defines repositories, plugins, workspace files, and target clients:
220
-
221
- ```yaml
222
- # Workspace file sync (optional) - copy files from a shared source
223
- workspace:
224
- source: ../shared-config # Default base for relative paths
225
- files:
226
- - AGENTS.md # String shorthand: same source and dest
227
- - source: docs/guide.md # Object form: explicit source
228
- dest: GUIDE.md # Optional dest (defaults to basename)
229
- - dest: CUSTOM.md # File-level source override
230
- source: ../other-config/CUSTOM.md
231
- - dest: AGENTS.md # GitHub source
232
- source: owner/repo/path/AGENTS.md
233
-
234
- repositories:
235
- - path: ../my-project
236
- source: github
237
- repo: myorg/my-project
238
- description: Main project repository
239
- - path: ../my-api
240
- source: github
241
- repo: myorg/my-api
242
- description: API service
243
-
244
- plugins:
245
- - code-review@claude-plugins-official # plugin@marketplace format
246
- - context7@claude-plugins-official
247
- - my-plugin@someuser/their-repo # fully qualified for custom marketplaces
248
-
249
- clients:
250
- - claude
251
- - copilot
252
- - cursor
253
- ```
254
-
255
- ### Workspace File Sync
256
-
257
- The `workspace:` section enables syncing files from external sources to your workspace root. This is useful for sharing agent configurations (AGENTS.md, CLAUDE.md) across multiple projects.
258
-
259
- **Key behaviors:**
260
- - **Source of truth is remote** - Local copies are overwritten on every sync
261
- - **Deleted files are restored** - If you delete AGENTS.md locally, sync restores it
262
- - **WORKSPACE-RULES injection** - AGENTS.md and CLAUDE.md automatically get workspace discovery rules injected
263
-
264
- **Source resolution:**
265
- | Format | Example | Resolves to |
266
- |--------|---------|-------------|
267
- | String shorthand | `AGENTS.md` | `{workspace.source}/AGENTS.md` |
268
- | Relative source | `source: docs/guide.md` | `{workspace.source}/docs/guide.md` |
269
- | File-level override | `source: ../other/file.md` | `../other/file.md` (relative to workspace) |
270
- | GitHub source | `source: owner/repo/path/file.md` | Fetched from GitHub cache |
271
-
272
- **GitHub sources** are fetched fresh on every sync (always pulls latest).
273
-
274
- ### Plugin Spec Format
275
-
276
- Plugins use the `plugin@marketplace` format:
277
-
278
- | Format | Example | Description |
279
- |--------|---------|-------------|
280
- | Well-known | `code-review@claude-plugins-official` | Uses known marketplace mapping |
281
- | owner/repo | `my-plugin@owner/repo` | Auto-registers GitHub repo, looks in `plugins/` |
282
- | owner/repo/subpath | `my-plugin@owner/repo/extensions` | Looks in custom subdirectory |
283
-
284
- The subpath format is useful when plugins aren't in the standard `plugins/` directory:
285
-
286
- ```yaml
287
- plugins:
288
- - feature-dev@anthropics/claude-plugins-official/plugins # explicit plugins/ dir
289
- - my-addon@someuser/repo/addons # custom addons/ dir
290
- - tool@org/monorepo/packages/tools # nested path
291
- ```
292
-
293
- ### Well-Known Marketplaces
294
-
295
- These marketplace names auto-resolve to their GitHub repos:
296
-
297
- - `claude-plugins-official` → `anthropics/claude-plugins-official`
298
-
299
- ### Supported Clients
300
-
301
- AllAgents supports 23 AI coding assistants:
302
-
303
- #### Universal Clients (share `.agents/skills/`)
304
-
305
- | Client | Skills | Agent File | Hooks | Commands | GitHub Overrides |
306
- |--------|--------|------------|-------|----------|------------------|
307
- | copilot | `.github/skills/` | `AGENTS.md` | `.github/hooks/` | No | `.github/` |
308
- | codex | `.agents/skills/` | `AGENTS.md` | No | No | No |
309
- | opencode | `.agents/skills/` | `AGENTS.md` | No | `.opencode/commands/` | No |
310
- | gemini | `.agents/skills/` | `GEMINI.md` | No | No | No |
311
- | ampcode | `.agents/skills/` | `AGENTS.md` | No | No | No |
312
- | vscode | `.agents/skills/` | `AGENTS.md` | No | No | `.github/` |
313
- | replit | `.agents/skills/` | `AGENTS.md` | No | No | No |
314
- | kimi | `.agents/skills/` | `AGENTS.md` | No | No | No |
315
-
316
- #### Provider-Specific Clients
317
-
318
- | Client | Skills | Agent File | Hooks | Commands |
319
- |--------|--------|------------|-------|----------|
320
- | claude | `.claude/skills/` | `CLAUDE.md` | `.claude/hooks/` | `.claude/commands/` |
321
- | cursor | `.cursor/skills/` | `AGENTS.md` | No | No |
322
- | factory | `.factory/skills/` | `AGENTS.md` | `.factory/hooks/` | No |
323
- | openclaw | `skills/` | `AGENTS.md` | No | No |
324
- | windsurf | `.windsurf/skills/` | `AGENTS.md` | No | No |
325
- | cline | `.cline/skills/` | `AGENTS.md` | No | No |
326
- | continue | `.continue/skills/` | `AGENTS.md` | No | No |
327
- | roo | `.roo/skills/` | `AGENTS.md` | No | No |
328
- | kilo | `.kilocode/skills/` | `AGENTS.md` | No | No |
329
- | trae | `.trae/skills/` | `AGENTS.md` | No | No |
330
- | augment | `.augment/skills/` | `AGENTS.md` | No | No |
331
- | zencoder | `.zencoder/skills/` | `AGENTS.md` | No | No |
332
- | junie | `.junie/skills/` | `AGENTS.md` | No | No |
333
- | openhands | `.openhands/skills/` | `AGENTS.md` | No | No |
334
- | kiro | `.kiro/skills/` | `AGENTS.md` | No | No |
335
-
336
- > **Note:** Universal clients share the same `.agents/skills/` directory. GitHub overrides (`.github/prompts/`, `.github/agents/`, `.github/hooks/`, `copilot-instructions.md`) are copied to Copilot/VSCode's `.github/` folder. Root `agents/` and `hooks/` also map to `.github/agents/` and `.github/hooks/` for Copilot.
337
-
338
- ## Marketplace Structure
339
-
340
- Marketplaces contain multiple plugins:
341
-
342
- ```
343
- my-marketplace/
344
- ├── plugins/
345
- │ ├── code-review/
346
- │ │ └── skills/
347
- │ └── debugging/
348
- │ └── skills/
349
- └── README.md
350
- ```
351
-
352
- ## Plugin Structure
353
-
354
- Each plugin follows this structure:
355
-
356
- ```
357
- my-plugin/
358
- ├── skills/ # Skill directories with SKILL.md (all clients)
359
- │ └── debugging/
360
- │ └── SKILL.md
361
- ├── commands/ # Command files (.md) - Claude, OpenCode
362
- │ ├── build.md
363
- │ └── deploy.md
364
- ├── .github/ # GitHub overrides (Copilot, VSCode)
365
- │ └── prompts/
366
- │ └── review.md
367
- ├── hooks/ # Hook files (Claude/Factory only)
368
- │ └── pre-commit.md
369
- └── AGENTS.md # Agent configuration (optional)
370
- ```
371
-
372
- ### Skill Validation
373
-
374
- Skills must have a valid `SKILL.md` file with YAML frontmatter:
375
-
376
- ```yaml
377
- ---
378
- name: my-skill # Required: lowercase, alphanumeric + hyphens, max 64 chars
379
- description: Description of the skill # Required
380
- allowed-tools: # Optional
381
- - Read
382
- - Write
383
- model: claude-3-opus # Optional
384
- ---
385
-
386
- # Skill Content
387
-
388
- Skill instructions go here...
389
- ```
390
-
391
- ### Self Commands
392
-
393
- ```bash
394
- # Update to latest version (auto-detects package manager)
395
- allagents self update
396
-
397
- # Force a specific package manager
398
- allagents self update --npm
399
- allagents self update --bun
400
- ```
401
-
402
- When using the interactive TUI, AllAgents automatically checks for newer versions in the background and shows a notice on startup when an update is available.
403
-
404
- ## Storage Locations
405
-
406
- ```
407
- ~/.allagents/
408
- ├── marketplaces.json # Registry of marketplaces
409
- ├── version-check.json # Cached update check (auto-managed)
410
- └── marketplaces/ # Cloned marketplace repos
411
- ├── claude-plugins-official/
412
- └── someuser-their-repo/
413
- ```
414
-
415
- ## Development
416
-
417
- ```bash
418
- # Install dependencies
419
- bun install
420
-
421
- # Run in development
422
- bun run dev workspace init test-ws
423
-
424
- # Run tests
425
- bun run test
426
-
427
- # Type check
428
- bun run typecheck
429
-
430
- # Build
431
- bun run build
432
- ```
433
-
434
- ## Related Projects
435
-
436
- - [dotagents](https://github.com/iannuttall/dotagents) - Unified AI agent configuration management
437
- - [vercel-labs/skills](https://github.com/vercel-labs/skills) - Universal skills for AI coding assistants
438
-
439
- ## License
440
-
441
- MIT
1
+ # AllAgents
2
+
3
+ CLI tool for managing multi-repo AI agent workspaces with plugin synchronization across multiple AI clients.
4
+
5
+ ## Why AllAgents?
6
+
7
+ **The Problem:** AI coding assistants (Claude, Copilot, Cursor, Codex, etc.) each have their own configuration formats and directory structures. If you want to share skills across multiple projects or use multiple AI clients, you need to manually copy and transform files.
8
+
9
+ **AllAgents solves this by:**
10
+
11
+ | Feature | Claude Code Plugins | AllAgents |
12
+ |---------|--------------------|-----------|
13
+ | Scope | Single project | Multi-repo workspace |
14
+ | Client support | Claude only | 23 AI clients |
15
+ | File location | Runtime lookup from cache | Copied to workspace (git-versioned) |
16
+ | Project structure | AI config mixed with code | Separate workspace repo |
17
+
18
+ ### Key Differentiators
19
+
20
+ 1. **Multi-repo workspaces** - One workspace references multiple project repositories. Your AI tooling lives separately from your application code.
21
+
22
+ 2. **Multi-client distribution** - Write plugins once, sync to all clients. AllAgents transforms and copies files to each client's expected paths.
23
+
24
+ 3. **Workspace is a git repo** - Unlike Claude's runtime plugin system, AllAgents copies files into your workspace. Team members get the same AI tooling via git.
25
+
26
+ 4. **Clean separation** - Project repos stay clean. AI configuration lives in the workspace.
27
+
28
+ ```
29
+ ┌─────────────────┐
30
+ │ Marketplace │ (plugin source - GitHub repos)
31
+ └────────┬────────┘
32
+
33
+
34
+ ┌─────────────────┐
35
+ │ AllAgents │ (sync & transform)
36
+ │ workspace sync │
37
+ └────────┬────────┘
38
+
39
+ ┌────┴────┬────────┬─────────┐
40
+ ▼ ▼ ▼ ▼
41
+ .claude/ .agents/ .cursor/ .factory/ (client paths)
42
+ ```
43
+
44
+ ## Installation
45
+
46
+ ```bash
47
+ # Using bun
48
+ bun install -g allagents
49
+
50
+ # Or run directly
51
+ bunx allagents
52
+ ```
53
+
54
+ ## Quick Start
55
+
56
+ ```bash
57
+ # Create a new workspace
58
+ allagents workspace init my-workspace
59
+ cd my-workspace
60
+
61
+ # Or initialize from a remote GitHub template
62
+ allagents workspace init my-workspace --from owner/repo/path/to/template
63
+
64
+ # Add a marketplace (or let auto-registration handle it)
65
+ allagents plugin marketplace add anthropics/claude-plugins-official
66
+
67
+ # Install plugins to workspace
68
+ allagents plugin install code-review@claude-plugins-official
69
+ allagents plugin install my-plugin@someuser/their-repo
70
+
71
+ # Sync plugins to workspace
72
+ allagents workspace sync
73
+ ```
74
+
75
+ ### Initialize from Remote Template
76
+
77
+ Start a new workspace instantly from any GitHub repository containing a `workspace.yaml`:
78
+
79
+ ```bash
80
+ # From GitHub URL
81
+ allagents workspace init ~/my-project --from https://github.com/myorg/templates/tree/main/nodejs
82
+
83
+ # From shorthand
84
+ allagents workspace init ~/my-project --from myorg/templates/nodejs
85
+
86
+ # From repo root (looks for .allagents/workspace.yaml or workspace.yaml)
87
+ allagents workspace init ~/my-project --from myorg/templates
88
+ ```
89
+
90
+ This fetches the workspace configuration directly from GitHub - no cloning required.
91
+
92
+ ## Commands
93
+
94
+ ### Workspace Commands
95
+
96
+ ```bash
97
+ # Initialize a new workspace from template
98
+ allagents workspace init <path>
99
+ allagents workspace init <path> --from <source> # From local path or GitHub URL
100
+
101
+ # Sync all plugins to workspace (non-destructive)
102
+ allagents workspace sync [options]
103
+ --force Force re-fetch of remote plugins even if cached
104
+ --dry-run Preview changes without applying
105
+
106
+ # Non-destructive sync: your files are safe
107
+ # - First sync overlays without deleting existing files
108
+ # - Subsequent syncs only remove files AllAgents previously synced
109
+ # - Tracked in .allagents/sync-state.json
110
+
111
+ # Show status of workspace and plugins
112
+ allagents workspace status
113
+
114
+ # Add a repository to the workspace (auto-detects git remote source)
115
+ allagents workspace repo add <path>
116
+ allagents workspace repo add <path> --description "My project"
117
+
118
+ # Remove a repository from the workspace
119
+ allagents workspace repo remove <path>
120
+
121
+ # List all repositories in the workspace
122
+ allagents workspace repo list
123
+ ```
124
+
125
+ ### VSCode Workspace Generation
126
+
127
+ When `vscode` is included in the `clients` list, `workspace sync` automatically generates a `.code-workspace` file. Repository paths are resolved to absolute paths. Plugin folders are included with prompt/instruction file location settings for Copilot.
128
+
129
+ ```yaml
130
+ # workspace.yaml
131
+ clients:
132
+ - vscode
133
+ - claude
134
+ ```
135
+
136
+ #### Output filename
137
+
138
+ The output filename defaults to `<dirname>.code-workspace`. Override with `vscode.output`:
139
+
140
+ ```yaml
141
+ # workspace.yaml
142
+ vscode:
143
+ output: my-project
144
+ ```
145
+
146
+ #### Template file
147
+
148
+ Create `.allagents/template.code-workspace` for VSCode-specific settings, launch configurations, extensions, and extra folders. The template supports `{path:../...}` placeholders that resolve to absolute paths using repository paths from workspace.yaml.
149
+
150
+ ```json
151
+ {
152
+ "folders": [
153
+ { "path": "{path:../Shared}", "name": "SharedLib" }
154
+ ],
155
+ "settings": {
156
+ "cSpell.words": ["myterm"],
157
+ "chat.agent.maxRequests": 999,
158
+ "chat.useClaudeSkills": true
159
+ },
160
+ "launch": {
161
+ "configurations": [
162
+ {
163
+ "type": "node",
164
+ "name": "dev",
165
+ "cwd": "{path:../myapp}/src",
166
+ "runtimeExecutable": "npm",
167
+ "runtimeArgs": ["run", "dev"]
168
+ }
169
+ ]
170
+ },
171
+ "extensions": {
172
+ "recommendations": ["dbaeumer.vscode-eslint"]
173
+ }
174
+ }
175
+ ```
176
+
177
+ The generated workspace includes:
178
+ - Repository folders from workspace.yaml (resolved to absolute paths, listed first)
179
+ - Template folders (deduplicated against repository folders)
180
+ - All other template content (settings, launch, extensions) with `{repo:..}` placeholders resolved
181
+
182
+ ### Plugin Marketplace Commands
183
+
184
+ ```bash
185
+ # List registered marketplaces
186
+ allagents plugin marketplace list
187
+
188
+ # Add a marketplace from GitHub or local path
189
+ allagents plugin marketplace add <source>
190
+ # Examples:
191
+ # allagents plugin marketplace add anthropics/claude-plugins-official
192
+ # allagents plugin marketplace add /path/to/local/marketplace
193
+
194
+ # Remove a marketplace
195
+ allagents plugin marketplace remove <name>
196
+
197
+ # Update marketplace(s) from remote
198
+ allagents plugin marketplace update [name]
199
+ ```
200
+
201
+ ### Plugin Commands
202
+
203
+ ```bash
204
+ # Install a plugin to .allagents/workspace.yaml (auto-registers marketplace if needed)
205
+ allagents plugin install <plugin@marketplace>
206
+
207
+ # Remove a plugin from .allagents/workspace.yaml
208
+ allagents plugin uninstall <plugin>
209
+
210
+ # List available plugins from marketplaces
211
+ allagents plugin list [marketplace]
212
+
213
+ # Validate a plugin or marketplace structure
214
+ allagents plugin validate <path>
215
+ ```
216
+
217
+ ## .allagents/workspace.yaml
218
+
219
+ The workspace configuration file lives in `.allagents/workspace.yaml` and defines repositories, plugins, workspace files, and target clients:
220
+
221
+ ```yaml
222
+ # Workspace file sync (optional) - copy files from a shared source
223
+ workspace:
224
+ source: ../shared-config # Default base for relative paths
225
+ files:
226
+ - AGENTS.md # String shorthand: same source and dest
227
+ - source: docs/guide.md # Object form: explicit source
228
+ dest: GUIDE.md # Optional dest (defaults to basename)
229
+ - dest: CUSTOM.md # File-level source override
230
+ source: ../other-config/CUSTOM.md
231
+ - dest: AGENTS.md # GitHub source
232
+ source: owner/repo/path/AGENTS.md
233
+
234
+ repositories:
235
+ - path: ../my-project
236
+ source: github
237
+ repo: myorg/my-project
238
+ description: Main project repository
239
+ - path: ../my-api
240
+ source: github
241
+ repo: myorg/my-api
242
+ description: API service
243
+
244
+ plugins:
245
+ - code-review@claude-plugins-official # plugin@marketplace format
246
+ - context7@claude-plugins-official
247
+ - my-plugin@someuser/their-repo # fully qualified for custom marketplaces
248
+
249
+ clients:
250
+ - claude
251
+ - copilot
252
+ - cursor
253
+ ```
254
+
255
+ ### Workspace File Sync
256
+
257
+ The `workspace:` section enables syncing files from external sources to your workspace root. This is useful for sharing agent configurations (AGENTS.md, CLAUDE.md) across multiple projects.
258
+
259
+ **Key behaviors:**
260
+ - **Source of truth is remote** - Local copies are overwritten on every sync
261
+ - **Deleted files are restored** - If you delete AGENTS.md locally, sync restores it
262
+ - **WORKSPACE-RULES injection** - AGENTS.md and CLAUDE.md automatically get workspace discovery rules injected
263
+
264
+ **Source resolution:**
265
+ | Format | Example | Resolves to |
266
+ |--------|---------|-------------|
267
+ | String shorthand | `AGENTS.md` | `{workspace.source}/AGENTS.md` |
268
+ | Relative source | `source: docs/guide.md` | `{workspace.source}/docs/guide.md` |
269
+ | File-level override | `source: ../other/file.md` | `../other/file.md` (relative to workspace) |
270
+ | GitHub source | `source: owner/repo/path/file.md` | Fetched from GitHub cache |
271
+
272
+ **GitHub sources** are fetched fresh on every sync (always pulls latest).
273
+
274
+ ### Plugin Spec Format
275
+
276
+ Plugins use the `plugin@marketplace` format:
277
+
278
+ | Format | Example | Description |
279
+ |--------|---------|-------------|
280
+ | Well-known | `code-review@claude-plugins-official` | Uses known marketplace mapping |
281
+ | owner/repo | `my-plugin@owner/repo` | Auto-registers GitHub repo, looks in `plugins/` |
282
+ | owner/repo/subpath | `my-plugin@owner/repo/extensions` | Looks in custom subdirectory |
283
+
284
+ The subpath format is useful when plugins aren't in the standard `plugins/` directory:
285
+
286
+ ```yaml
287
+ plugins:
288
+ - feature-dev@anthropics/claude-plugins-official/plugins # explicit plugins/ dir
289
+ - my-addon@someuser/repo/addons # custom addons/ dir
290
+ - tool@org/monorepo/packages/tools # nested path
291
+ ```
292
+
293
+ ### Well-Known Marketplaces
294
+
295
+ These marketplace names auto-resolve to their GitHub repos:
296
+
297
+ - `claude-plugins-official` → `anthropics/claude-plugins-official`
298
+
299
+ ### Supported Clients
300
+
301
+ AllAgents supports 23 AI coding assistants:
302
+
303
+ #### Universal Clients (share `.agents/skills/`)
304
+
305
+ | Client | Skills | Agent File | Hooks | Commands | GitHub Overrides |
306
+ |--------|--------|------------|-------|----------|------------------|
307
+ | copilot | `.github/skills/` | `AGENTS.md` | `.github/hooks/` | No | `.github/` |
308
+ | codex | `.agents/skills/` | `AGENTS.md` | No | No | No |
309
+ | opencode | `.agents/skills/` | `AGENTS.md` | No | `.opencode/commands/` | No |
310
+ | gemini | `.agents/skills/` | `GEMINI.md` | No | No | No |
311
+ | ampcode | `.agents/skills/` | `AGENTS.md` | No | No | No |
312
+ | vscode | `.agents/skills/` | `AGENTS.md` | No | No | `.github/` |
313
+ | replit | `.agents/skills/` | `AGENTS.md` | No | No | No |
314
+ | kimi | `.agents/skills/` | `AGENTS.md` | No | No | No |
315
+
316
+ #### Provider-Specific Clients
317
+
318
+ | Client | Skills | Agent File | Hooks | Commands |
319
+ |--------|--------|------------|-------|----------|
320
+ | claude | `.claude/skills/` | `CLAUDE.md` | `.claude/hooks/` | `.claude/commands/` |
321
+ | cursor | `.cursor/skills/` | `AGENTS.md` | No | No |
322
+ | factory | `.factory/skills/` | `AGENTS.md` | `.factory/hooks/` | No |
323
+ | openclaw | `skills/` | `AGENTS.md` | No | No |
324
+ | windsurf | `.windsurf/skills/` | `AGENTS.md` | No | No |
325
+ | cline | `.cline/skills/` | `AGENTS.md` | No | No |
326
+ | continue | `.continue/skills/` | `AGENTS.md` | No | No |
327
+ | roo | `.roo/skills/` | `AGENTS.md` | No | No |
328
+ | kilo | `.kilocode/skills/` | `AGENTS.md` | No | No |
329
+ | trae | `.trae/skills/` | `AGENTS.md` | No | No |
330
+ | augment | `.augment/skills/` | `AGENTS.md` | No | No |
331
+ | zencoder | `.zencoder/skills/` | `AGENTS.md` | No | No |
332
+ | junie | `.junie/skills/` | `AGENTS.md` | No | No |
333
+ | openhands | `.openhands/skills/` | `AGENTS.md` | No | No |
334
+ | kiro | `.kiro/skills/` | `AGENTS.md` | No | No |
335
+
336
+ > **Note:** Universal clients share the same `.agents/skills/` directory. GitHub overrides (`.github/prompts/`, `.github/agents/`, `.github/hooks/`, `copilot-instructions.md`) are copied to Copilot/VSCode's `.github/` folder. Root `agents/` and `hooks/` also map to `.github/agents/` and `.github/hooks/` for Copilot.
337
+
338
+ ## Marketplace Structure
339
+
340
+ Marketplaces contain multiple plugins:
341
+
342
+ ```
343
+ my-marketplace/
344
+ ├── plugins/
345
+ │ ├── code-review/
346
+ │ │ └── skills/
347
+ │ └── debugging/
348
+ │ └── skills/
349
+ └── README.md
350
+ ```
351
+
352
+ ## Plugin Structure
353
+
354
+ Each plugin follows this structure:
355
+
356
+ ```
357
+ my-plugin/
358
+ ├── skills/ # Skill directories with SKILL.md (all clients)
359
+ │ └── debugging/
360
+ │ └── SKILL.md
361
+ ├── commands/ # Command files (.md) - Claude, OpenCode
362
+ │ ├── build.md
363
+ │ └── deploy.md
364
+ ├── .github/ # GitHub overrides (Copilot, VSCode)
365
+ │ └── prompts/
366
+ │ └── review.md
367
+ ├── hooks/ # Hook files (Claude/Factory only)
368
+ │ └── pre-commit.md
369
+ └── AGENTS.md # Agent configuration (optional)
370
+ ```
371
+
372
+ ### Skill Validation
373
+
374
+ Skills must have a valid `SKILL.md` file with YAML frontmatter:
375
+
376
+ ```yaml
377
+ ---
378
+ name: my-skill # Required: lowercase, alphanumeric + hyphens, max 64 chars
379
+ description: Description of the skill # Required
380
+ allowed-tools: # Optional
381
+ - Read
382
+ - Write
383
+ model: claude-3-opus # Optional
384
+ ---
385
+
386
+ # Skill Content
387
+
388
+ Skill instructions go here...
389
+ ```
390
+
391
+ ### Self Commands
392
+
393
+ ```bash
394
+ # Update to latest version (auto-detects package manager)
395
+ allagents self update
396
+
397
+ # Force a specific package manager
398
+ allagents self update --npm
399
+ allagents self update --bun
400
+ ```
401
+
402
+ When using the interactive TUI, AllAgents automatically checks for newer versions in the background and shows a notice on startup when an update is available.
403
+
404
+ ## Storage Locations
405
+
406
+ ```
407
+ ~/.allagents/
408
+ ├── marketplaces.json # Registry of marketplaces
409
+ ├── version-check.json # Cached update check (auto-managed)
410
+ └── marketplaces/ # Cloned marketplace repos
411
+ ├── claude-plugins-official/
412
+ └── someuser-their-repo/
413
+ ```
414
+
415
+ ## Development
416
+
417
+ ```bash
418
+ # Install dependencies
419
+ bun install
420
+
421
+ # Run in development
422
+ bun run dev workspace init test-ws
423
+
424
+ # Run tests
425
+ bun run test
426
+
427
+ # Type check
428
+ bun run typecheck
429
+
430
+ # Build
431
+ bun run build
432
+ ```
433
+
434
+ ## Related Projects
435
+
436
+ - [dotagents](https://github.com/iannuttall/dotagents) - Unified AI agent configuration management
437
+ - [vercel-labs/skills](https://github.com/vercel-labs/skills) - Universal skills for AI coding assistants
438
+
439
+ ## License
440
+
441
+ MIT
package/dist/index.js CHANGED
@@ -24573,6 +24573,7 @@ function executeCommand(binary2, args, options = {}) {
24573
24573
  const proc = spawn2(binary2, args, {
24574
24574
  cwd: options.cwd,
24575
24575
  stdio: ["ignore", "pipe", "pipe"],
24576
+ shell: process.platform === "win32",
24576
24577
  env: { ...process.env }
24577
24578
  });
24578
24579
  let stdout = "";
@@ -24655,6 +24656,9 @@ async function syncCodexMcpServers(validatedPlugins, options) {
24655
24656
  removedServers: [],
24656
24657
  trackedServers: []
24657
24658
  };
24659
+ if (pluginServers.size === 0 && previouslyTracked.size === 0) {
24660
+ return result;
24661
+ }
24658
24662
  const listResult = await exec("codex", ["mcp", "list", "--json"]);
24659
24663
  if (!listResult.success) {
24660
24664
  result.warnings.push(`Codex CLI not available or 'codex mcp list' failed: ${listResult.error ?? "unknown error"}`);
@@ -28815,7 +28819,7 @@ var package_default;
28815
28819
  var init_package = __esm(() => {
28816
28820
  package_default = {
28817
28821
  name: "allagents",
28818
- version: "0.31.1",
28822
+ version: "0.31.2",
28819
28823
  description: "CLI tool for managing multi-repo AI agent workspaces with plugin synchronization",
28820
28824
  type: "module",
28821
28825
  bin: {
@@ -1,15 +1,15 @@
1
- # Workspace root files (optional)
2
- # workspace:
3
- # source: ./path/to/config # local path, GitHub URL, or plugin@marketplace
4
- # files:
5
- # - CLAUDE.md
6
- # - AGENTS.md
7
- # - source: docs/CLAUDE.md # explicit source/dest mapping
8
- # dest: CLAUDE.md
9
-
10
- repositories: []
11
-
12
- plugins: []
13
-
14
- clients:
15
- - universal
1
+ # Workspace root files (optional)
2
+ # workspace:
3
+ # source: ./path/to/config # local path, GitHub URL, or plugin@marketplace
4
+ # files:
5
+ # - CLAUDE.md
6
+ # - AGENTS.md
7
+ # - source: docs/CLAUDE.md # explicit source/dest mapping
8
+ # dest: CLAUDE.md
9
+
10
+ repositories: []
11
+
12
+ plugins: []
13
+
14
+ clients:
15
+ - universal
@@ -0,0 +1,14 @@
1
+ # Workspace
2
+
3
+ ## Development
4
+
5
+ To run tests:
6
+ ```bash
7
+ npm test
8
+ ```
9
+
10
+ ## Guidelines
11
+
12
+ - Add project-specific coding conventions here
13
+ - Document architectural decisions
14
+ - Include workflow preferences
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allagents",
3
- "version": "0.31.1",
3
+ "version": "0.31.2",
4
4
  "description": "CLI tool for managing multi-repo AI agent workspaces with plugin synchronization",
5
5
  "type": "module",
6
6
  "bin": {