agent-switchboard 0.1.25 → 0.1.27
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/README.md +169 -229
- package/dist/commands/library.d.ts +1 -1
- package/dist/commands/library.js +4 -5
- package/dist/commands/library.js.map +1 -1
- package/dist/config/paths.d.ts +6 -0
- package/dist/config/paths.js +9 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schemas.d.ts +305 -21
- package/dist/config/schemas.js +10 -4
- package/dist/config/schemas.js.map +1 -1
- package/dist/index.js +198 -103
- package/dist/index.js.map +1 -1
- package/dist/library/sources.d.ts +72 -0
- package/dist/library/sources.js +279 -0
- package/dist/library/sources.js.map +1 -0
- package/dist/rules/agents.d.ts +6 -2
- package/dist/rules/agents.js +11 -2
- package/dist/rules/agents.js.map +1 -1
- package/dist/rules/distribution.d.ts +2 -1
- package/dist/rules/distribution.js +55 -4
- package/dist/rules/distribution.js.map +1 -1
- package/dist/rules/library.d.ts +1 -1
- package/dist/rules/library.js +4 -5
- package/dist/rules/library.js.map +1 -1
- package/dist/skills/library.d.ts +1 -1
- package/dist/skills/library.js +4 -5
- package/dist/skills/library.js.map +1 -1
- package/dist/subagents/library.d.ts +1 -1
- package/dist/subagents/library.js +4 -5
- package/dist/subagents/library.js.map +1 -1
- package/package.json +1 -1
- package/dist/library/subscriptions.d.ts +0 -42
- package/dist/library/subscriptions.js +0 -116
- package/dist/library/subscriptions.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,341 +1,281 @@
|
|
|
1
1
|
# Agent Switchboard
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/agent-switchboard)
|
|
4
|
+
[](https://github.com/qyhfrank/agent-switchboard/actions/workflows/ci.yml)
|
|
5
|
+
[](LICENSE)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
Manage MCP servers, rules, commands, subagents, and skills from a single source of truth, then sync them to every AI coding agent you use.
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
Alias: `asb`
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
## Why
|
|
12
|
+
|
|
13
|
+
AI coding agents (Codex, Claude Code, Cursor, Gemini, OpenCode ...) each store MCP servers, prompt rules, slash commands, and skills in their own formats and locations. When you add a new MCP server or tweak a coding rule, you repeat the work for each agent. Configs drift, setups go stale.
|
|
14
|
+
|
|
15
|
+
Agent Switchboard solves this with **one library, one config, many targets**:
|
|
10
16
|
|
|
11
|
-
```bash
|
|
12
|
-
npm i -g agent-switchboard
|
|
13
17
|
```
|
|
18
|
+
Libraries Config Layers Distribution
|
|
19
|
+
┌──────────────┐ ┌─────────────────────┐ ┌────────────────┐
|
|
20
|
+
│ mcp.json │ │ User config.toml │ │ Claude Code │
|
|
21
|
+
│ rules/ │ │ Profile <name>.toml │ │ Codex │
|
|
22
|
+
│ commands/ │ ─► │ Project .asb.toml │ ─► │ Cursor │
|
|
23
|
+
│ subagents/ │ │ │ │ Gemini │
|
|
24
|
+
│ skills/ │ │ Per-agent overrides │ │ OpenCode │
|
|
25
|
+
└──────────────┘ └─────────────────────┘ │ Claude Desktop │
|
|
26
|
+
└────────────────┘
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
All library entries are agent-agnostic Markdown files (or directories for skills). Agent Switchboard reads them, applies layered configuration and per-agent overrides, then writes the correct format to each agent's config location.
|
|
30
|
+
|
|
31
|
+
## Compatibility
|
|
14
32
|
|
|
15
|
-
|
|
33
|
+
| Feature | Claude Code | Codex | Cursor | Gemini | OpenCode | Claude Desktop |
|
|
34
|
+
|:-----------------|:-----------:|:-----:|:------:|:------:|:--------:|:--------------:|
|
|
35
|
+
| MCP servers | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
|
36
|
+
| Project-level MCP| ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
37
|
+
| Rules | ✓ | ✓ | ✓ mdc | ✓ | ✓ | |
|
|
38
|
+
| Commands | ✓ | ✓\* | ✓ | ✓ | ✓ | |
|
|
39
|
+
| Subagents | ✓ | | ✓ | | ✓ | |
|
|
40
|
+
| Skills | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
41
|
+
|
|
42
|
+
\* Codex commands use deprecated `~/.codex/prompts/`; prefer skills instead.
|
|
43
|
+
|
|
44
|
+
Cursor rules are distributed as individual `.mdc` files to `~/.cursor/rules/` (native format), not as a single composed document.
|
|
45
|
+
|
|
46
|
+
## Quick Start
|
|
16
47
|
|
|
17
48
|
```bash
|
|
18
|
-
npx agent-switchboard@latest mcp
|
|
49
|
+
npm i -g agent-switchboard # or: npx agent-switchboard@latest mcp
|
|
19
50
|
```
|
|
20
51
|
|
|
21
|
-
|
|
52
|
+
1. **Pick your agents** -- create `~/.agent-switchboard/config.toml`:
|
|
22
53
|
|
|
23
|
-
|
|
24
|
-
|
|
54
|
+
```toml
|
|
55
|
+
[agents]
|
|
56
|
+
active = ["claude-code", "codex", "cursor"]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
2. **Manage MCP servers** -- launches an interactive checkbox UI:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
asb mcp
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
3. **Sync everything** -- pushes all libraries (rules, commands, subagents, skills) and MCP config to every active agent:
|
|
25
66
|
|
|
26
67
|
```bash
|
|
27
|
-
|
|
68
|
+
asb sync
|
|
28
69
|
```
|
|
29
70
|
|
|
30
|
-
That
|
|
71
|
+
That's it. Library content lives under `~/.agent-switchboard/` and agent configs are updated in place.
|
|
72
|
+
|
|
73
|
+
## Command Reference
|
|
74
|
+
|
|
75
|
+
| Command | Description |
|
|
76
|
+
|:---------------------|:--------------------------------------------------------|
|
|
77
|
+
| `asb mcp` | Interactive MCP server selector |
|
|
78
|
+
| `asb rule` | Interactive rule snippet selector with ordering |
|
|
79
|
+
| `asb command` | Interactive command selector |
|
|
80
|
+
| `asb subagent` | Interactive subagent selector |
|
|
81
|
+
| `asb skill` | Interactive skill selector |
|
|
82
|
+
| `asb sync` | Push all libraries + MCP to agents (no UI) |
|
|
83
|
+
| `asb <lib> load` | Import files from a platform into the library |
|
|
84
|
+
| `asb <lib> list` | Show inventory, activation state, and sync timestamps |
|
|
85
|
+
| `asb source add` | Add an external library source (local path or git URL) |
|
|
86
|
+
| `asb source remove` | Remove a library source |
|
|
87
|
+
| `asb source list` | List configured library sources |
|
|
31
88
|
|
|
32
|
-
|
|
89
|
+
`<lib>` = `rule`, `command`, `subagent`, or `skill`.
|
|
33
90
|
|
|
34
|
-
|
|
91
|
+
**Shared flags**: `-p, --profile <name>`, `--project <path>`, `--json` (on `list` and `source list`).
|
|
35
92
|
|
|
36
|
-
|
|
93
|
+
## Configuration
|
|
94
|
+
|
|
95
|
+
### `config.toml`
|
|
96
|
+
|
|
97
|
+
The central config file at `~/.agent-switchboard/config.toml` controls which agents and library entries are active:
|
|
37
98
|
|
|
38
99
|
```toml
|
|
39
|
-
# ~/.agent-switchboard/config.toml
|
|
40
100
|
[agents]
|
|
41
|
-
active = ["codex", "cursor"]
|
|
101
|
+
active = ["claude-code", "codex", "cursor", "gemini", "opencode"]
|
|
42
102
|
|
|
43
103
|
[rules]
|
|
44
|
-
includeDelimiters = false
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Supported agent IDs:
|
|
48
|
-
- `codex` - Codex CLI
|
|
49
|
-
- `cursor` - Cursor IDE
|
|
50
|
-
- `claude-code` - Claude Code CLI
|
|
51
|
-
- `claude-desktop` - Claude Desktop app
|
|
52
|
-
- `gemini` - Gemini CLI
|
|
53
|
-
- `opencode` - OpenCode (supports `opencode.json` and `opencode.jsonc`)
|
|
54
|
-
|
|
55
|
-
Toggle `rules.includeDelimiters` to `true` if you want each snippet surrounded by markers such as:
|
|
56
|
-
```
|
|
57
|
-
<!-- your-rule-name:start -->
|
|
58
|
-
…
|
|
59
|
-
<!-- your-rule-name:end -->
|
|
104
|
+
includeDelimiters = false # wrap each rule snippet in <!-- id:start/end --> markers
|
|
60
105
|
```
|
|
61
106
|
|
|
62
|
-
|
|
107
|
+
Supported agent IDs: `claude-code`, `claude-desktop`, `codex`, `cursor`, `gemini`, `opencode`.
|
|
63
108
|
|
|
64
109
|
### Per-Agent Overrides
|
|
65
110
|
|
|
66
|
-
|
|
111
|
+
Fine-tune which library entries reach each agent using `add` / `remove` / `active`:
|
|
67
112
|
|
|
68
113
|
```toml
|
|
69
114
|
[agents]
|
|
70
115
|
active = ["claude-code", "codex", "opencode"]
|
|
71
116
|
|
|
72
|
-
# Codex: exclude skill-codex (avoid self-reference)
|
|
73
117
|
codex.skills.remove = ["skill-codex"]
|
|
74
|
-
codex.rules.remove
|
|
118
|
+
codex.rules.remove = ["skill-codex"]
|
|
75
119
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
opencode.rules.remove = ["skill-codex"]
|
|
79
|
-
|
|
80
|
-
# Gemini: add extra command, remove a skill
|
|
81
|
-
gemini.commands.add = ["cmd-gemini-only"]
|
|
82
|
-
gemini.skills.remove = ["skill-go"]
|
|
120
|
+
gemini.commands.add = ["cmd-gemini-only"]
|
|
121
|
+
gemini.skills.remove = ["skill-go"]
|
|
83
122
|
```
|
|
84
123
|
|
|
85
|
-
| Syntax
|
|
86
|
-
|
|
87
|
-
| `<agent>.<section>.active = [...]
|
|
88
|
-
| `<agent>.<section>.add = [...]`
|
|
89
|
-
| `<agent>.<section>.remove = [...]
|
|
90
|
-
|
|
91
|
-
Sections: `mcp`, `commands`, `subagents`, `skills`, `rules`
|
|
124
|
+
| Syntax | Behavior |
|
|
125
|
+
|:----------------------------------|:---------------------------|
|
|
126
|
+
| `<agent>.<section>.active = [...]`| Replace the global list |
|
|
127
|
+
| `<agent>.<section>.add = [...]` | Append to the global list |
|
|
128
|
+
| `<agent>.<section>.remove = [...]`| Remove from the global list|
|
|
92
129
|
|
|
93
|
-
|
|
130
|
+
Sections: `mcp`, `rules`, `commands`, `subagents`, `skills`.
|
|
94
131
|
|
|
95
|
-
|
|
132
|
+
### Layered Configuration
|
|
96
133
|
|
|
97
|
-
|
|
98
|
-
- **Profile**: `<ASB_HOME>/<profile>.toml`
|
|
99
|
-
- **Project**: `<project>/.asb.toml`
|
|
134
|
+
Three TOML layers merge in priority order (higher wins):
|
|
100
135
|
|
|
101
|
-
|
|
136
|
+
| Layer | File | Scope |
|
|
137
|
+
|:--------|:--------------------------------|:----------------------------------|
|
|
138
|
+
| User | `<ASB_HOME>/config.toml` | Personal defaults |
|
|
139
|
+
| Profile | `<ASB_HOME>/<profile>.toml` | Team or workflow presets (`-p`) |
|
|
140
|
+
| Project | `<project>/.asb.toml` | Per-repository overrides |
|
|
102
141
|
|
|
103
142
|
```bash
|
|
104
|
-
#
|
|
105
|
-
|
|
143
|
+
asb command -p team # profile layer
|
|
144
|
+
asb rule --project /path/to/repo # project layer
|
|
145
|
+
asb subagent -p team --project /path/to/repo # both
|
|
146
|
+
```
|
|
106
147
|
|
|
107
|
-
|
|
108
|
-
agent-switchboard rule --project /path/to/repo
|
|
148
|
+
When `--project` is used, outputs target the project directory (e.g. `<project>/AGENTS.md`, `<project>/.claude/commands/`).
|
|
109
149
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
150
|
+
## Libraries
|
|
151
|
+
|
|
152
|
+
All library types follow the same pattern:
|
|
113
153
|
|
|
114
|
-
|
|
154
|
+
1. **Store** entries in `~/.agent-switchboard/<type>/` as Markdown files (or directories for skills).
|
|
155
|
+
2. **Import** existing platform files: `asb <type> load <platform> [path] [-r]`.
|
|
156
|
+
3. **Select** active entries: `asb <type>` (interactive fuzzy-search selector).
|
|
157
|
+
4. **Audit** inventory: `asb <type> list [--json]`.
|
|
115
158
|
|
|
116
|
-
|
|
117
|
-
- Rules: Codex writes `<project>/AGENTS.md`. Gemini writes `<project>/AGENTS.md`. OpenCode writes `<project>/.opencode/AGENTS.md`.
|
|
118
|
-
- Commands (project-level supported):
|
|
119
|
-
- Claude Code → `<project>/.claude/commands/`
|
|
120
|
-
- Gemini → `<project>/.gemini/commands/`
|
|
121
|
-
- OpenCode → `<project>/.opencode/command/`
|
|
122
|
-
- Codex → global only (`~/.codex/prompts/`, deprecated; consider migrating to skills)
|
|
123
|
-
- Subagents (project-level supported):
|
|
124
|
-
- Claude Code → `<project>/.claude/agents/`
|
|
125
|
-
- OpenCode → `<project>/.opencode/agent/`
|
|
126
|
-
- Skills (project-level supported):
|
|
127
|
-
- Claude Code → `<project>/.claude/skills/`
|
|
128
|
-
- Gemini → `<project>/.gemini/skills/`
|
|
129
|
-
- OpenCode → `<project>/.opencode/skill/`
|
|
130
|
-
- Codex → `~/.agents/skills/` (global) or `<project>/.agents/skills/` (project-level)
|
|
159
|
+
Selections are saved into the highest-priority config layer. Distribution writes each entry in the format the target agent expects, skipping unchanged files (hash-based).
|
|
131
160
|
|
|
132
|
-
|
|
161
|
+
### Rules
|
|
133
162
|
|
|
134
|
-
|
|
163
|
+
Snippets in `~/.agent-switchboard/rules/` with optional YAML frontmatter:
|
|
135
164
|
|
|
136
165
|
```markdown
|
|
137
166
|
---
|
|
138
167
|
title: Prompt Hygiene
|
|
139
|
-
tags:
|
|
140
|
-
|
|
141
|
-
requires:
|
|
142
|
-
- claude-code
|
|
168
|
+
tags: [hygiene]
|
|
169
|
+
requires: [claude-code]
|
|
143
170
|
---
|
|
144
171
|
Keep commit messages scoped to the change.
|
|
145
172
|
```
|
|
146
173
|
|
|
147
|
-
|
|
174
|
+
Cursor-specific options can be set via `extras.cursor` in rule frontmatter:
|
|
148
175
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
- `~/.config/opencode/AGENTS.md` (or `%APPDATA%/opencode/AGENTS.md` on Windows)
|
|
160
|
-
|
|
161
|
-
Unsupportive agents such as Claude Desktop and Cursor are reported and left untouched. If you rerun the selector without changing the order, the tool refreshes the destination files to overwrite any manual edits.
|
|
162
|
-
|
|
163
|
-
### Auditing Rules
|
|
164
|
-
|
|
165
|
-
See the full inventory, activation state, and per-agent sync timestamps:
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
agent-switchboard rule list [-p <profile>] [--project <path>]
|
|
176
|
+
```markdown
|
|
177
|
+
---
|
|
178
|
+
title: Python Rules
|
|
179
|
+
description: Python coding standards
|
|
180
|
+
extras:
|
|
181
|
+
cursor:
|
|
182
|
+
alwaysApply: false
|
|
183
|
+
globs: "*.py"
|
|
184
|
+
---
|
|
185
|
+
Use type hints everywhere.
|
|
169
186
|
```
|
|
170
187
|
|
|
171
|
-
|
|
188
|
+
The interactive selector lets you **reorder** snippets. For most agents, rules are composed into a single document. For Cursor, each rule is written as an individual `.mdc` file with native frontmatter (`description`, `alwaysApply`, `globs`):
|
|
172
189
|
|
|
173
|
-
|
|
174
|
-
|
|
190
|
+
| Agent | Global output | Project output |
|
|
191
|
+
|:------------|:------------------------------------|:----------------------------------|
|
|
192
|
+
| Claude Code | `~/.claude/CLAUDE.md` | `<project>/.claude/CLAUDE.md` |
|
|
193
|
+
| Codex | `~/.codex/AGENTS.md` | `<project>/AGENTS.md` |
|
|
194
|
+
| Cursor | `~/.cursor/rules/<id>.mdc` | `<project>/.cursor/rules/<id>.mdc`|
|
|
195
|
+
| Gemini | `~/.gemini/AGENTS.md` | `<project>/.gemini/AGENTS.md` |
|
|
196
|
+
| OpenCode | `~/.config/opencode/AGENTS.md` | `<project>/AGENTS.md` |
|
|
175
197
|
|
|
176
|
-
###
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
# Import an existing platform file or directory into the library
|
|
180
|
-
# Use -r/--recursive to traverse subdirectories when <path> is a directory
|
|
181
|
-
agent-switchboard command load <platform> [path] [-r]
|
|
182
|
-
# <platform>: claude-code | codex | gemini | opencode
|
|
183
|
-
# If [path] is omitted, defaults by platform:
|
|
184
|
-
# claude-code → ~/.claude/commands
|
|
185
|
-
# codex → ~/.codex/prompts
|
|
186
|
-
# gemini → ~/.gemini/commands
|
|
187
|
-
# opencode → ~/.config/opencode/command (Windows: %APPDATA%/opencode/command)
|
|
188
|
-
```
|
|
198
|
+
### Commands
|
|
189
199
|
|
|
190
|
-
|
|
200
|
+
Markdown files in `~/.agent-switchboard/commands/` with optional `description` and `extras.<platform>`:
|
|
191
201
|
|
|
192
202
|
```bash
|
|
193
|
-
|
|
203
|
+
asb command load claude-code # import from ~/.claude/commands/
|
|
204
|
+
asb command load gemini [path] -r # import recursively
|
|
194
205
|
```
|
|
195
206
|
|
|
196
|
-
|
|
207
|
+
Platforms: `claude-code`, `codex`, `cursor`, `gemini`, `opencode`.
|
|
197
208
|
|
|
198
|
-
|
|
209
|
+
### Subagents
|
|
199
210
|
|
|
200
|
-
|
|
211
|
+
Same format as commands, stored in `~/.agent-switchboard/subagents/`.
|
|
201
212
|
|
|
202
213
|
```bash
|
|
203
|
-
#
|
|
204
|
-
agent-switchboard command list [-p <profile>] [--project <path>]
|
|
214
|
+
asb subagent load claude-code # import from ~/.claude/agents/
|
|
205
215
|
```
|
|
206
216
|
|
|
207
|
-
|
|
217
|
+
Platforms: `claude-code`, `opencode`, `cursor`.
|
|
208
218
|
|
|
209
|
-
|
|
210
|
-
- Frontmatter: only global `description` (optional). Any platform-native options must live under `extras.<platform>` and are written through verbatim. We do not parse, validate, or showcase platform key names in this README. Platforms that do not support subagent files are skipped.
|
|
219
|
+
### Skills
|
|
211
220
|
|
|
212
|
-
|
|
221
|
+
Multi-file directory bundles in `~/.agent-switchboard/skills/<skill-id>/`, each containing a `SKILL.md` entry file:
|
|
213
222
|
|
|
214
|
-
```bash
|
|
215
|
-
agent-switchboard subagent load <platform> [path] [-r]
|
|
216
|
-
# <platform>: claude-code | opencode
|
|
217
|
-
# If [path] is omitted, defaults by platform:
|
|
218
|
-
# claude-code → ~/.claude/agents
|
|
219
|
-
# opencode → ~/.config/opencode/agent (Windows: %APPDATA%/opencode/agent)
|
|
220
223
|
```
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
224
|
+
~/.agent-switchboard/skills/my-skill/
|
|
225
|
+
├── SKILL.md # name + description in frontmatter
|
|
226
|
+
├── helper.py
|
|
227
|
+
└── templates/
|
|
228
|
+
└── template.txt
|
|
226
229
|
```
|
|
227
230
|
|
|
228
|
-
Type to fuzzy filter the list, then confirm to persist the selection into the active configuration layer. Adapters write each selected subagent to the corresponding platform output in your user home (platform defaults), using the file format that platform expects. The frontmatter consists of the global `description` (if present) plus `extras.<platform>` written as-is. Platforms that do not accept subagent files are skipped with a hint.
|
|
229
|
-
|
|
230
|
-
### Inventory
|
|
231
|
-
|
|
232
231
|
```bash
|
|
233
|
-
|
|
232
|
+
asb skill load claude-code # import from ~/.claude/skills/
|
|
233
|
+
asb skill load codex # import from ~/.agents/skills/
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
Skills are multi-file bundles (directories) that provide reusable capabilities to agents. Each skill is a directory containing a `SKILL.md` file and any supporting files.
|
|
239
|
-
|
|
240
|
-
- Location: `~/.agent-switchboard/skills/<skill-id>/` (respects `ASB_HOME`).
|
|
241
|
-
- Entry file: `SKILL.md` with required `name` and `description` in frontmatter.
|
|
236
|
+
Entire directories are copied to each agent's skill location. Deactivated skills are cleaned up automatically.
|
|
242
237
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
```
|
|
246
|
-
~/.agent-switchboard/skills/
|
|
247
|
-
└── my-skill/
|
|
248
|
-
├── SKILL.md
|
|
249
|
-
├── helper.py
|
|
250
|
-
└── templates/
|
|
251
|
-
└── template.txt
|
|
252
|
-
```
|
|
238
|
+
## Library Sources
|
|
253
239
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
```markdown
|
|
257
|
-
---
|
|
258
|
-
name: my-skill
|
|
259
|
-
description: A helpful skill that does something useful
|
|
260
|
-
extras:
|
|
261
|
-
claude-code:
|
|
262
|
-
# Platform-specific options
|
|
263
|
-
---
|
|
264
|
-
Skill instructions and content here.
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
### Import
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
# Import skills from an existing platform directory
|
|
271
|
-
agent-switchboard skill load <platform> [path]
|
|
272
|
-
# <platform>: claude-code | codex
|
|
273
|
-
# If [path] is omitted, defaults by platform:
|
|
274
|
-
# claude-code → ~/.claude/skills
|
|
275
|
-
# codex → ~/.agents/skills (fallback: ~/.codex/skills)
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### Select and Distribute
|
|
240
|
+
Pull library entries from external directories or git repos:
|
|
279
241
|
|
|
280
242
|
```bash
|
|
281
|
-
|
|
243
|
+
asb source add https://github.com/org/repo # name defaults to "repo"
|
|
244
|
+
asb source add /path/to/team-library team # explicit name
|
|
245
|
+
asb source list # list configured sources
|
|
246
|
+
asb source remove repo # remove
|
|
282
247
|
```
|
|
283
248
|
|
|
284
|
-
|
|
285
|
-
- Claude Code → `~/.claude/skills/<skill-id>/`
|
|
286
|
-
- Codex → `~/.agents/skills/<skill-id>/` (or `<project>/.agents/skills/<skill-id>/`)
|
|
287
|
-
- Gemini → `~/.gemini/skills/<skill-id>/`
|
|
288
|
-
- OpenCode → `~/.config/opencode/skill/<skill-id>/`
|
|
289
|
-
|
|
290
|
-
### Inventory
|
|
291
|
-
|
|
292
|
-
```bash
|
|
293
|
-
agent-switchboard skill list [-p <profile>] [--project <path>]
|
|
294
|
-
```
|
|
249
|
+
The source path must contain at least one of `rules/`, `commands/`, `subagents/`, or `skills/`. Entries from external sources appear with a namespace prefix (e.g. `team:my-rule`) in selectors and config.
|
|
295
250
|
|
|
296
251
|
## Sync
|
|
297
252
|
|
|
298
|
-
|
|
253
|
+
Push all libraries and MCP config to every active agent in one step:
|
|
299
254
|
|
|
300
255
|
```bash
|
|
301
|
-
|
|
256
|
+
asb sync [-p <profile>] [--project <path>]
|
|
302
257
|
```
|
|
303
258
|
|
|
304
|
-
|
|
259
|
+
This merges layered config, applies per-agent overrides, and writes target files in place. Files are only rewritten when content changes.
|
|
305
260
|
|
|
306
261
|
## Environment
|
|
307
262
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
All `list` subcommands support `--json` for machine-readable output:
|
|
314
|
-
|
|
315
|
-
```bash
|
|
316
|
-
agent-switchboard rule list --json
|
|
317
|
-
agent-switchboard command list --json
|
|
318
|
-
agent-switchboard subagent list --json
|
|
319
|
-
agent-switchboard skill list --json
|
|
320
|
-
```
|
|
263
|
+
| Variable | Default | Purpose |
|
|
264
|
+
|:-----------------|:---------------------------|:---------------------------------------------|
|
|
265
|
+
| `ASB_HOME` | `~/.agent-switchboard` | Library, config, and state directory |
|
|
266
|
+
| `ASB_AGENTS_HOME`| OS user home | Base path for agent config locations |
|
|
321
267
|
|
|
322
268
|
## Development
|
|
323
269
|
|
|
324
|
-
Install dependencies, build, and link globally:
|
|
325
|
-
|
|
326
270
|
```bash
|
|
327
271
|
pnpm install
|
|
328
272
|
pnpm build
|
|
329
|
-
pnpm link --global
|
|
273
|
+
pnpm link --global # global `agent-switchboard` points to local build
|
|
330
274
|
```
|
|
331
275
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
To unlink:
|
|
276
|
+
Code changes take effect after `pnpm build`. To unlink: `pnpm uninstall -g agent-switchboard`.
|
|
335
277
|
|
|
336
|
-
|
|
337
|
-
pnpm uninstall -g agent-switchboard
|
|
338
|
-
```
|
|
278
|
+
Other scripts: `pnpm dev` (tsx), `pnpm test`, `pnpm lint`, `pnpm typecheck`.
|
|
339
279
|
|
|
340
280
|
## License
|
|
341
281
|
|
|
@@ -10,6 +10,6 @@ export interface CommandEntry {
|
|
|
10
10
|
}
|
|
11
11
|
export declare function ensureCommandsDirectory(): string;
|
|
12
12
|
/**
|
|
13
|
-
* Load all commands from default library and
|
|
13
|
+
* Load all commands from default library and external sources
|
|
14
14
|
*/
|
|
15
15
|
export declare function loadCommandLibrary(): CommandEntry[];
|
package/dist/commands/library.js
CHANGED
|
@@ -2,7 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getCommandsDir } from '../config/paths.js';
|
|
4
4
|
import { parseLibraryMarkdown } from '../library/parser.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getSourcesRecord } from '../library/sources.js';
|
|
6
6
|
function isMarkdownFile(fileName) {
|
|
7
7
|
const extension = path.extname(fileName).toLowerCase();
|
|
8
8
|
return extension === '.md' || extension === '.markdown';
|
|
@@ -59,16 +59,15 @@ function loadCommandsFromDirectory(directory, namespace) {
|
|
|
59
59
|
return result;
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
* Load all commands from default library and
|
|
62
|
+
* Load all commands from default library and external sources
|
|
63
63
|
*/
|
|
64
64
|
export function loadCommandLibrary() {
|
|
65
65
|
const result = [];
|
|
66
66
|
// Load from default library (no namespace)
|
|
67
67
|
const defaultDir = ensureCommandsDirectory();
|
|
68
68
|
result.push(...loadCommandsFromDirectory(defaultDir));
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
for (const [namespace, basePath] of Object.entries(subscriptions)) {
|
|
69
|
+
const sources = getSourcesRecord();
|
|
70
|
+
for (const [namespace, basePath] of Object.entries(sources)) {
|
|
72
71
|
const commandsDir = path.join(basePath, 'commands');
|
|
73
72
|
result.push(...loadCommandsFromDirectory(commandsDir, namespace));
|
|
74
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/commands/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/commands/library.ts"],"names":[],"mappings":"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"}
|
package/dist/config/paths.d.ts
CHANGED
|
@@ -50,6 +50,12 @@ export declare function getSubagentsDir(): string;
|
|
|
50
50
|
* Returns the absolute path to the skills library directory
|
|
51
51
|
*/
|
|
52
52
|
export declare function getSkillsDir(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Returns the directory for remote source clones.
|
|
55
|
+
* Without namespace: returns the base marketplaces dir (~/.asb/marketplaces/).
|
|
56
|
+
* With namespace: returns the namespace-specific dir (~/.asb/marketplaces/<namespace>/).
|
|
57
|
+
*/
|
|
58
|
+
export declare function getSourceCacheDir(namespace?: string): string;
|
|
53
59
|
/**
|
|
54
60
|
* Returns the home directory for installed agent apps (Claude Code, OpenCode, etc.)
|
|
55
61
|
* Can be overridden via `ASB_AGENTS_HOME`; falls back to the OS user home.
|
package/dist/config/paths.js
CHANGED
|
@@ -89,6 +89,15 @@ export function getSubagentsDir() {
|
|
|
89
89
|
export function getSkillsDir() {
|
|
90
90
|
return path.join(getConfigDir(), 'skills');
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Returns the directory for remote source clones.
|
|
94
|
+
* Without namespace: returns the base marketplaces dir (~/.asb/marketplaces/).
|
|
95
|
+
* With namespace: returns the namespace-specific dir (~/.asb/marketplaces/<namespace>/).
|
|
96
|
+
*/
|
|
97
|
+
export function getSourceCacheDir(namespace) {
|
|
98
|
+
const base = path.join(getConfigDir(), 'marketplaces');
|
|
99
|
+
return namespace ? path.join(base, namespace) : base;
|
|
100
|
+
}
|
|
92
101
|
/**
|
|
93
102
|
* Returns the home directory for installed agent apps (Claude Code, OpenCode, etc.)
|
|
94
103
|
* Can be overridden via `ASB_AGENTS_HOME`; falls back to the OS user home.
|
package/dist/config/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"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"}
|