opencode-skill-autodiscovery 1.3.0 → 1.4.1

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 CHANGED
@@ -1,53 +1,22 @@
1
1
  # opencode-skill-autodiscovery
2
2
 
3
- An [opencode](https://opencode.ai) plugin that auto-discovers skills installed by
4
- VS Code agent plugins, Claude Code plugins, and [Agent Plugins
5
- 1.0.0](https://agent-plugins.org) conformant packages on the current machine,
6
- and registers them with opencode's `skills.paths` so they appear in every
7
- session. Each discovered skill is also exposed as a `/skill-name` slash command
8
- that loads the skill and routes the rest of your message through it.
3
+ An [opencode](https://opencode.ai) plugin that auto-discovers skills, agents, and MCP servers installed by VS Code agent plugins, Claude Code plugins, and [Agent Plugins 1.0.0](https://agent-plugins.org) conformant packages on the current machine, and registers them with opencode so they appear in every session. Discovered skills are registered with opencode's `skills.paths` and also exposed as `/skill-name` slash commands that load the skill and route the rest of your message through it. Discovered agents are registered as `config.agent.<name>` (opt-in), and discovered MCP servers are mapped onto `config.mcp` (opt-in). Works with both `opencode.json` and `opencode.jsonc` config files.
9
4
 
10
5
  ## Why
11
6
 
12
- Skills live in different places depending on the tool, OS, and local vs remote
13
- setup:
14
-
15
- - VS Code agent plugins, local client: `~/.vscode/agent-plugins` (Windows /
16
- older builds), `~/.config/Code/agentPlugins` (Linux),
17
- `~/Library/Application Support/Code/agentPlugins` (macOS), and
18
- `%APPDATA%\Code\agentPlugins` (Windows), plus `Code - Insiders` variants.
19
- The install layout is `{host}/{org}/{repo}`, with optional `installed.json`
20
- and `cache.json` manifests alongside.
21
- - VS Code agent plugins on a remote host (Remote-SSH, Codespaces, Dev
22
- Containers, WSL): `~/.vscode-server/data/agentPlugins`. VS Code syncs the
23
- enabled skills from your local client into a synthetic "VS Code Synced
24
- Data" plugin materialized at
25
- `~/.vscode-server/data/agentPlugins/{sanitizedUri}/{nonce}/skills/...`, and
26
- records each synced bundle in `~/.vscode-server/data/agentPlugins/cache.json`.
7
+ Skills live in different places depending on the tool, OS, and local vs remote setup:
8
+
9
+ - VS Code agent plugins, local client: `~/.vscode/agent-plugins` (Windows / older builds), `~/.config/Code/agentPlugins` (Linux), `~/Library/Application Support/Code/agentPlugins` (macOS), and `%APPDATA%\Code\agentPlugins` (Windows), plus `Code - Insiders` variants. The install layout is `{host}/{org}/{repo}`, with optional `installed.json` and `cache.json` manifests alongside.
10
+ - VS Code agent plugins on a remote host (Remote-SSH, Codespaces, Dev Containers, WSL): `~/.vscode-server/data/agentPlugins`. VS Code syncs the enabled skills from your local client into a synthetic "VS Code Synced Data" plugin materialized at `~/.vscode-server/data/agentPlugins/{sanitizedUri}/{nonce}/skills/...`, and records each synced bundle in `~/.vscode-server/data/agentPlugins/cache.json`.
27
11
  - Claude Code plugins: `~/.claude/plugins/installed_plugins.json`
28
- - Claude Code plugins on a remote host (SSH/remote sessions):
29
- `~/.claude/remote/plugins/installed_plugins.json`
30
- - **Agent Plugins 1.0.0 packages** distributed via npm. opencode installs npm
31
- plugins into its own cache (`~/.cache/opencode/packages/...`), not the
32
- project's `node_modules`, and a `skills.paths` entry relative to the project
33
- dir silently resolves to nothing. This plugin scans both the opencode plugin
34
- cache and the project's `node_modules` for packages carrying a root
35
- `plugin.json` whose `$schema` is `https://agent-plugins.org/schemas/...`,
36
- and registers their `skills/` with **absolute** paths — so an npm-distributed
37
- Agent Plugins package (e.g. `@dodopayments/opencode-plugin`) just works with
38
- `"plugin": ["opencode-skill-autodiscovery"]` and nothing else.
39
-
40
- Each points at plugin directories that contain `SKILL.md` files. This plugin
41
- reads the manifests (including the remote `cache.json` LRU), resolves each
42
- entry to its on-disk skill directories, and registers them with opencode.
43
- When a discovered package carries a conformant root `plugin.json`, that manifest
44
- is preferred (its `skills/` children are registered as-is); otherwise the plugin
45
- falls back to a tree walk so legacy layouts keep working.
12
+ - Claude Code plugins on a remote host (SSH/remote sessions): `~/.claude/remote/plugins/installed_plugins.json`
13
+ - **Agent Plugins 1.0.0 packages** distributed via npm. opencode installs npm plugins into its own cache (`~/.cache/opencode/packages/...`), not the project's `node_modules`, and a `skills.paths` entry relative to the project dir silently resolves to nothing. This plugin scans both the opencode plugin cache and the project's `node_modules` for packages carrying a root `plugin.json` whose `$schema` is `https://agent-plugins.org/schemas/...`, and registers their `skills/` with **absolute** paths — so an npm-distributed Agent Plugins package (e.g. `@dodopayments/opencode-plugin`) just works with `"plugin": ["opencode-skill-autodiscovery"]` and nothing else.
14
+
15
+ Each points at plugin directories that contain `SKILL.md` files. This plugin reads the manifests (including the remote `cache.json` LRU), resolves each entry to its on-disk skill directories, and registers them with opencode. When a discovered package carries a conformant root `plugin.json`, that manifest is preferred (its `skills/` children are registered as-is); otherwise the plugin falls back to a tree walk so legacy layouts keep working.
46
16
 
47
17
  ### MCP servers (opt-in)
48
18
 
49
- With the `mcp` option, the plugin also reads each discovered package's `mcp.json`
50
- and maps it onto opencode's `config.mcp`:
19
+ With the `mcp` option, the plugin also reads each discovered package's `mcp.json` and maps it onto opencode's `config.mcp`:
51
20
 
52
21
  | Agent Plugins server | opencode entry |
53
22
  |---|---|
@@ -55,56 +24,39 @@ and maps it onto opencode's `config.mcp`:
55
24
  | `{ "type": "streamable-http", "url" }` | `{ "type": "remote", "url" }` |
56
25
  | `{ "type": "sse" }` | skipped (opencode has no SSE transport) |
57
26
 
58
- `${PLUGIN_ROOT}` and `${PLUGIN_DATA}` placeholders are expanded in `args`/`env`,
59
- and both variables are injected into each stdio server's environment
60
- (`PLUGIN_DATA` points at
61
- `{opencode state}/plugin-data/{packageName}`). Invalid entries are skipped
62
- per-entry, never fatally. `sse` servers and stdio `cwd` (which opencode cannot
63
- represent) are dropped with a log line.
27
+ `${PLUGIN_ROOT}` and `${PLUGIN_DATA}` placeholders are expanded in `args`/`env`, and both variables are injected into each stdio server's environment (`PLUGIN_DATA` points at `{opencode state}/plugin-data/{packageName}`). Invalid entries are skipped per-entry, never fatally. `sse` servers and stdio `cwd` (which opencode cannot represent) are dropped with a log line.
64
28
 
65
29
  ### Agents (opt-in)
66
30
 
67
- Agent Plugins 1.0.0 has no portable "agents" component type (only skills and
68
- MCP servers), so agents are contributed through the spec's client-extension
69
- mechanism. With the `agents` option, the plugin reads agents from three
70
- sources, in order:
31
+ Agent Plugins 1.0.0 has no portable "agents" component type (only skills and MCP servers), so agents are contributed through the spec's client-extension mechanism. With the `agents` option, the plugin reads agents from four sources, in order:
32
+
33
+ 1. `plugin.json` `extensions["dev.opencode"].agents` (a map of agent name opencode `agent` config).
34
+ 2. A `dev.opencode/agents/<name>.json` extension directory (one opencode agent config per file).
35
+ 3. A legacy Claude Code plugin shim: `.claude-plugin/plugin.json` `agents`, mapping `description` and `systemPrompt` (or the `agents/<name>/AGENTS.md` body) onto an opencode agent.
36
+ 4. Flat `agents/<name>.md` files (the agency-agents layout) — one agent per file, keyed by filename, with `description`/`color` from frontmatter and the markdown body as the prompt.
71
37
 
72
- 1. `plugin.json` `extensions["dev.opencode"].agents` (a map of agent name
73
- opencode `agent` config).
74
- 2. A `dev.opencode/agents/<name>.json` extension directory (one opencode agent
75
- config per file).
76
- 3. A legacy Claude Code plugin shim: `.claude-plugin/plugin.json` `agents`,
77
- mapping `description` and `systemPrompt` (or the `agents/<name>/AGENTS.md`
78
- body) onto an opencode agent.
38
+ Agents discovered without an explicit `mode` default to opencode's `all`, so they are both Tab-selectable and spawnable as subagents.
79
39
 
80
- Discovered agents are registered as `config.agent.<name>` with the same rules
81
- as commands: user-defined agents are never overwritten, same-source mirrors are
82
- collapsed, and cross-source collisions become `<package>-<agent>`.
40
+ Discovered agents are registered as `config.agent.<name>` with the same rules as commands: user-defined agents are never overwritten, same-source mirrors are collapsed, and cross-source collisions become `<package>-<agent>`.
83
41
 
84
- **Trust note:** a package-supplied `permission` block is always dropped — agent
85
- permissions are too powerful to inherit from a package by default. If you need
86
- one, define the agent yourself in `opencode.json` (which always wins).
42
+ **Trust note:** a package-supplied `permission` block is always dropped — agent permissions are too powerful to inherit from a package by default. If you need one, define the agent yourself in `opencode.json` (which always wins).
43
+
44
+ Agent `color` values are normalized: bare CSS names (e.g. `orange`, `purple`) are mapped to the `#RRGGBB` hex literals opencode accepts, hex shorthand (`#0f8`) is expanded, and anything else is dropped rather than risk rejecting the whole config.
87
45
 
88
46
  ### Slash commands
89
47
 
90
- opencode treats skills and slash commands as separate mechanisms: skills are
91
- only loaded on demand via the `skill` tool. To make a discovered skill
92
- invocable as `/name`, the plugin also registers a command for it (via
93
- `config.command`) whose template loads the skill and forwards your arguments:
48
+ opencode treats skills and slash commands as separate mechanisms: skills are only loaded on demand via the `skill` tool. To make a discovered skill invocable as `/name`, the plugin also registers a command for it (via `config.command`) whose template loads the skill and forwards your arguments:
94
49
 
95
50
  ```markdown
96
51
  Load the `spec` skill and follow its instructions.
97
52
  Context: $ARGUMENTS
98
53
  ```
99
54
 
100
- So `/spec plan the migration` loads the `spec` skill and runs it against
101
- `plan the migration`. The command's description is taken from the skill's
102
- frontmatter; existing commands with the same name are never overwritten (a
103
- colliding skill from a different source is registered as `/package-skill`).
55
+ So `/spec plan the migration` loads the `spec` skill and runs it against `plan the migration`. The command's description is taken from the skill's frontmatter; existing commands with the same name are never overwritten (a colliding skill from a different source is registered as `/package-skill`).
104
56
 
105
57
  ## Install
106
58
 
107
- Add the package name to the `plugin` array in your `opencode.json`:
59
+ Add the package name to the `plugin` array in your `opencode.json` (or `opencode.jsonc` — both are supported):
108
60
 
109
61
  ```json
110
62
  {
@@ -139,34 +91,56 @@ Use the tuple form to configure options:
139
91
  | `mcp` | `false` | Also register MCP servers from discovered packages' `mcp.json`. |
140
92
  | `agents` | `false` | Also register agents from packages (see "Agents" above). |
141
93
 
94
+ ## VPS / remote hosts (SSH sessions)
95
+
96
+ Discovery is **machine-local**: a remote session only sees the skills, agents, and packages installed **on that host**. So opencode (and this plugin) must be installed on each remote machine, and you run opencode inside the SSH session — not from a local client terminal.
97
+
98
+ **On each remote host:**
99
+
100
+ ```sh
101
+ # 1. Install opencode if it isn't there yet
102
+ npm install -g opencode-ai
103
+
104
+ # 2. Install this plugin globally. The -g flag targets the machine-wide config;
105
+ # without it, opencode writes a project-scoped .opencode/opencode.json
106
+ # instead (easy to miss, because the plugin looks installed but only for
107
+ # that one directory).
108
+ opencode plugin opencode-skill-autodiscovery -g
109
+
110
+ # 3. Restart opencode. It fetches the latest published version into the
111
+ # remote's own cache.
112
+ ```
113
+
114
+ Or hand-edit the remote's global config (`~/.config/opencode/opencode.json`):
115
+
116
+ ```json
117
+ {
118
+ "plugin": [["opencode-skill-autodiscovery", { "mcp": true, "agents": true }]]
119
+ }
120
+ ```
121
+
122
+ **What a remote session discovers** (that host's own installs):
123
+ - VS Code Remote-SSH synced skills from `~/.vscode-server/data/agentPlugins/` (read via the `cache.json` LRU).
124
+ - Claude Code remote plugins from `~/.claude/remote/plugins/`.
125
+ - Agent Plugins packages in the remote's opencode cache (`~/.cache/opencode/packages/*`) and the project's `node_modules`.
126
+
127
+ **Caveats:**
128
+ - Run opencode **on the remote**. A local client terminal reads the local machine's manifests, not the remote's.
129
+ - VS Code only syncs **enabled** skills to the server as a flattened "VS Code Synced Data" bundle; marketplace clones (including their `agents/*.md` files) are generally not copied. Install the pack on the remote too if you want its agents there.
130
+ - To force a re-fetch of a new release on a remote, clear the cached copy and restart (opencode re-downloads the latest):
131
+ ```sh
132
+ rm -rf ~/.cache/opencode/packages/opencode-skill-autodiscovery*
133
+ ```
134
+
142
135
  ## Notes
143
136
 
144
- - Discovery is inherently **machine-local**: it reads manifests from the home
145
- directory of the machine opencode is running on. Remote sessions on a
146
- different machine will discover that machine's skills.
147
- - On a remote host, VS Code does **not** copy your marketplace plugins over.
148
- It syncs only the enabled skills/agents/etc. from your client as a single
149
- flattened "VS Code Synced Data" bundle under
150
- `~/.vscode-server/data/agentPlugins/`. That is why you won't see the
151
- original `{org}/{repo}` layout on the remote — the skill directories are
152
- named after the skills instead. This plugin reads `cache.json` to locate
153
- those materialized bundles.
154
- - Newer VS Code layouts have no `installed.json` at all; marketplaces are
155
- cloned directly under the agent plugin dir. The plugin falls back to a tree
156
- walk only when no manifest is present, so it never surfaces skills from
157
- cloned-but-uninstalled marketplaces on setups that do have a manifest.
158
- - VS Code account sync only syncs your marketplace extension list; each machine
159
- still has its own `installed.json`/`cache.json` that this plugin reads.
160
- - A package is only treated as an Agent Plugins package when its root
161
- `plugin.json` declares a `$schema` under `https://agent-plugins.org/schemas/`.
162
- Everything else is ignored by the cache/node_modules scanners and falls back
163
- to the tree walk elsewhere.
164
- - The same plugin can be materialised in several VS Code layouts at once
165
- (local clone + synced bundle + marketplace clone). `skills.paths` keeps all
166
- paths; slash commands and MCP servers are de-duplicated so mirrors don't
167
- create a wall of `/mirror-of-...` junk.
168
- - The plugin is a no-op when no manifests or conformant packages exist, or when
169
- they contain no skills.
137
+ - Discovery is inherently **machine-local**: it reads manifests from the home directory of the machine opencode is running on. Remote sessions on a different machine will discover that machine's skills.
138
+ - On a remote host, VS Code does **not** copy your marketplace plugins over. It syncs only the enabled skills/agents/etc. from your client as a single flattened "VS Code Synced Data" bundle under `~/.vscode-server/data/agentPlugins/`. That is why you won't see the original `{org}/{repo}` layout on the remote — the skill directories are named after the skills instead. This plugin reads `cache.json` to locate those materialized bundles.
139
+ - Newer VS Code layouts have no `installed.json` at all; marketplaces are cloned directly under the agent plugin dir. The plugin falls back to a tree walk only when no manifest is present, so it never surfaces skills from cloned-but-uninstalled marketplaces on setups that do have a manifest.
140
+ - VS Code account sync only syncs your marketplace extension list; each machine still has its own `installed.json`/`cache.json` that this plugin reads.
141
+ - A package is only treated as an Agent Plugins package when its root `plugin.json` declares a `$schema` under `https://agent-plugins.org/schemas/`. Everything else is ignored by the cache/node_modules scanners and falls back to the tree walk elsewhere.
142
+ - The same plugin can be materialised in several VS Code layouts at once (local clone + synced bundle + marketplace clone). `skills.paths` keeps all paths; slash commands and MCP servers are de-duplicated so mirrors don't create a wall of `/mirror-of-...` junk.
143
+ - The plugin is a no-op when no manifests or conformant packages exist, or when they contain no skills.
170
144
 
171
145
  ## Development
172
146
 
@@ -179,5 +153,6 @@ npm test # build + node --test (fixture-based unit tests)
179
153
  Publish:
180
154
 
181
155
  ```sh
156
+ npm pack # local tarball (no publish needed for testing)
182
157
  npm publish --access public
183
158
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AA4EF,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC,CA0D7C"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAmJF,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC,CAuF7C"}
package/dist/agents.js CHANGED
@@ -5,6 +5,78 @@ import { log } from "./log.js";
5
5
  // client-specific manifest data and extension directories (Agent Plugins 5.6/8).
6
6
  const OPENCODE_NS = "dev.opencode";
7
7
  const MODES = new Set(["subagent", "primary", "all"]);
8
+ // opencode accepts a `#RRGGBB` literal or one of its theme tokens; anything else
9
+ // makes the whole config fail to load. Claude Code agent frontmatter, however,
10
+ // uses bare CSS colour names, so translate the ones it emits and drop the rest.
11
+ const COLOR_TOKENS = new Set([
12
+ "primary",
13
+ "secondary",
14
+ "accent",
15
+ "success",
16
+ "warning",
17
+ "error",
18
+ "info",
19
+ ]);
20
+ // CSS named colours where one exists, Tailwind's 500 shade for the names CSS
21
+ // does not define (amber, slate, rose). Covers every bare name observed across
22
+ // shipped Claude Code / Agent Plugins agent frontmatter.
23
+ const COLOR_NAMES = {
24
+ red: "#FF0000",
25
+ orange: "#FFA500",
26
+ amber: "#F59E0B",
27
+ gold: "#FFD700",
28
+ yellow: "#FFFF00",
29
+ olive: "#808000",
30
+ lime: "#00FF00",
31
+ green: "#008000",
32
+ teal: "#008080",
33
+ turquoise: "#40E0D0",
34
+ aqua: "#00FFFF",
35
+ cyan: "#00FFFF",
36
+ "neon-cyan": "#00FFFF",
37
+ "neon-green": "#39FF14",
38
+ blue: "#0000FF",
39
+ navy: "#000080",
40
+ "metallic-blue": "#4682B4",
41
+ indigo: "#4B0082",
42
+ violet: "#EE82EE",
43
+ purple: "#800080",
44
+ magenta: "#FF00FF",
45
+ fuchsia: "#FF00FF",
46
+ pink: "#FFC0CB",
47
+ rose: "#F43F5E",
48
+ crimson: "#DC143C",
49
+ maroon: "#800000",
50
+ brown: "#A52A2A",
51
+ slate: "#64748B",
52
+ silver: "#C0C0C0",
53
+ white: "#FFFFFF",
54
+ gray: "#808080",
55
+ grey: "#808080",
56
+ black: "#000000",
57
+ };
58
+ // Returns a value opencode's config schema will accept, or undefined when the
59
+ // colour is unusable. Never let an unrecognised value through: a single bad
60
+ // colour rejects the entire merged config.
61
+ function normalizeColor(raw) {
62
+ if (!raw)
63
+ return undefined;
64
+ const value = raw.trim();
65
+ if (/^#[0-9a-fA-F]{6}$/.test(value))
66
+ return value;
67
+ // `#RGB` shorthand is valid CSS but not accepted by opencode; expand it.
68
+ if (/^#[0-9a-fA-F]{3}$/.test(value)) {
69
+ return `#${value.slice(1).split("").map((c) => c + c).join("")}`;
70
+ }
71
+ const lower = value.toLowerCase();
72
+ if (COLOR_TOKENS.has(lower))
73
+ return lower;
74
+ const mapped = COLOR_NAMES[lower];
75
+ if (mapped)
76
+ return mapped;
77
+ log(`dropping unsupported agent color ${JSON.stringify(value)}`);
78
+ return undefined;
79
+ }
8
80
  function asRecord(value) {
9
81
  return typeof value === "object" && value !== null
10
82
  ? value
@@ -33,7 +105,7 @@ function toAgentConfig(raw) {
33
105
  const model = stringValue("model");
34
106
  const prompt = stringValue("prompt");
35
107
  const description = stringValue("description");
36
- const color = stringValue("color");
108
+ const color = normalizeColor(stringValue("color"));
37
109
  const temperature = numberValue("temperature");
38
110
  const topP = numberValue("top_p");
39
111
  const maxSteps = numberValue("maxSteps");
@@ -138,6 +210,57 @@ export function readAgents(pkg) {
138
210
  out.set(name, agent);
139
211
  }
140
212
  }
213
+ // Legacy flat agent files: agents/<name>.md. Used by packs (e.g.
214
+ // agency-agents) that ship one markdown file per specialist without
215
+ // declaring an `agents` field in their .claude-plugin manifest.
216
+ const flatAgentsDir = join(pkg.root, "agents");
217
+ let flatEntries;
218
+ try {
219
+ flatEntries = readdirSync(flatAgentsDir);
220
+ }
221
+ catch {
222
+ flatEntries = [];
223
+ }
224
+ for (const entry of flatEntries) {
225
+ if (!entry.endsWith(".md"))
226
+ continue;
227
+ const name = entry.slice(0, -".md".length);
228
+ if (out.has(name))
229
+ continue;
230
+ let content;
231
+ try {
232
+ content = readFileSync(join(flatAgentsDir, entry), "utf8");
233
+ }
234
+ catch {
235
+ continue;
236
+ }
237
+ const { description, color, body } = parseAgentMarkdown(content);
238
+ if (!description && !body)
239
+ continue;
240
+ const agent = {};
241
+ if (description)
242
+ agent.description = description;
243
+ if (color)
244
+ agent.color = color;
245
+ if (body)
246
+ agent.prompt = body;
247
+ out.set(name, agent);
248
+ }
141
249
  return [...out.entries()].map(([name, agent]) => ({ name, agent }));
142
250
  }
251
+ // Extracts frontmatter fields (description, color) and the markdown body from
252
+ // a flat agent file. The body becomes the agent's system prompt.
253
+ function parseAgentMarkdown(content) {
254
+ const m = /^---\s*\n([\s\S]*?)\n---/.exec(content);
255
+ if (!m)
256
+ return { body: content };
257
+ const field = (key) => {
258
+ const fm = new RegExp(`^${key}:[ \\t]*(.*)$`, "m").exec(m[1]);
259
+ return fm ? fm[1].trim().replace(/^["']|["']$/g, "") : undefined;
260
+ };
261
+ const description = field("description");
262
+ const color = normalizeColor(field("color"));
263
+ const body = content.slice(m[0].length).trim();
264
+ return { description: description || undefined, color, body };
265
+ }
143
266
  //# sourceMappingURL=agents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-skill-autodiscovery",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "OpenCode plugin that auto-discovers skills installed by VS Code agent plugins, Claude Code plugins, and Agent Plugins 1.0.0 packages, and registers them with the local opencode config.",
5
5
  "license": "MIT",
6
6
  "repository": {