opencode-skill-autodiscovery 1.0.1 → 1.1.0

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
@@ -6,17 +6,28 @@ registers them with opencode's `skills.paths` so they appear in every session.
6
6
 
7
7
  ## Why
8
8
 
9
- Skills live in different places depending on the tool that installed them:
10
-
11
- - VS Code agent plugins: `~/.vscode/agent-plugins/installed.json`
9
+ Skills live in different places depending on the tool, OS, and local vs remote
10
+ setup:
11
+
12
+ - VS Code agent plugins, local client: `~/.vscode/agent-plugins` (Windows /
13
+ older builds), `~/.config/Code/agentPlugins` (Linux),
14
+ `~/Library/Application Support/Code/agentPlugins` (macOS), and
15
+ `%APPDATA%\Code\agentPlugins` (Windows), plus `Code - Insiders` variants.
16
+ The install layout is `{host}/{org}/{repo}`, with optional `installed.json`
17
+ and `cache.json` manifests alongside.
12
18
  - VS Code agent plugins on a remote host (Remote-SSH, Codespaces, Dev
13
- Containers): `~/.vscode-server/agent-plugins/installed.json`,
14
- `~/.vscode-server-insiders/...`, or `~/.vscode-remote/...`
19
+ Containers, WSL): `~/.vscode-server/data/agentPlugins`. VS Code syncs the
20
+ enabled skills from your local client into a synthetic "VS Code Synced
21
+ Data" plugin materialized at
22
+ `~/.vscode-server/data/agentPlugins/{sanitizedUri}/{nonce}/skills/...`, and
23
+ records each synced bundle in `~/.vscode-server/data/agentPlugins/cache.json`.
15
24
  - Claude Code plugins: `~/.claude/plugins/installed_plugins.json`
25
+ - Claude Code plugins on a remote host (SSH/remote sessions):
26
+ `~/.claude/remote/plugins/installed_plugins.json`
16
27
 
17
28
  Each points at plugin directories that contain `SKILL.md` files. This plugin
18
- walks those manifests, finds every skill directory, and adds them to the
19
- opencode config.
29
+ reads the manifests (including the remote `cache.json` LRU), resolves each
30
+ entry to its on-disk skill directories, and registers them with opencode.
20
31
 
21
32
  ## Install
22
33
 
@@ -47,8 +58,19 @@ VS Code data location on a remote host):
47
58
  - Discovery is inherently **machine-local**: it reads manifests from the home
48
59
  directory of the machine opencode is running on. Remote sessions on a
49
60
  different machine will discover that machine's skills.
61
+ - On a remote host, VS Code does **not** copy your marketplace plugins over.
62
+ It syncs only the enabled skills/agents/etc. from your client as a single
63
+ flattened "VS Code Synced Data" bundle under
64
+ `~/.vscode-server/data/agentPlugins/`. That is why you won't see the
65
+ original `{org}/{repo}` layout on the remote — the skill directories are
66
+ named after the skills instead. This plugin reads `cache.json` to locate
67
+ those materialized bundles.
68
+ - Newer VS Code layouts have no `installed.json` at all; marketplaces are
69
+ cloned directly under the agent plugin dir. The plugin falls back to a tree
70
+ walk only when no manifest is present, so it never surfaces skills from
71
+ cloned-but-uninstalled marketplaces on setups that do have a manifest.
50
72
  - VS Code account sync only syncs your marketplace extension list; each machine
51
- still has its own `installed.json` that this plugin reads.
73
+ still has its own `installed.json`/`cache.json` that this plugin reads.
52
74
  - The plugin is a no-op when no VS Code or Claude plugin manifests exist, or
53
75
  when they contain no skills.
54
76
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,qBAAqB,CAAC;;kBA4GlC,MAAM;;AAF9B,wBA2BoB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,qBAAqB,CAAC;;kBAoMlC,MAAM;;AAF9B,wBA0BoB"}
package/dist/index.js CHANGED
@@ -1,13 +1,47 @@
1
1
  import { readFileSync, existsSync, readdirSync, statSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
- import { join } from "node:path";
4
- const VSCODE_ROOTS = [
5
- join(homedir(), ".vscode"),
6
- join(homedir(), ".vscode-server"),
7
- join(homedir(), ".vscode-server-insiders"),
8
- join(homedir(), ".vscode-remote"),
9
- ];
10
- const CLAUDE_INSTALLED = join(homedir(), ".claude", "plugins", "installed_plugins.json");
3
+ import { dirname, join } from "node:path";
4
+ // VS Code keeps agent plugins in a per-platform "data dir". The holding
5
+ // folder is named `agent-plugins` on older builds (e.g. ~/.vscode) and
6
+ // `agentPlugins` on newer builds; remote servers nest theirs under `data/`
7
+ // (~/.vscode-server/data/agentPlugins). We list every known candidate so the
8
+ // discovery works regardless of OS, build channel, or local/remote setup.
9
+ function vsCodeDataRoots(extra) {
10
+ const home = homedir();
11
+ const roots = new Set([
12
+ join(home, ".vscode"),
13
+ // Linux
14
+ join(home, ".config", "Code"),
15
+ join(home, ".config", "Code - Insiders"),
16
+ // macOS
17
+ join(home, "Library", "Application Support", "Code"),
18
+ join(home, "Library", "Application Support", "Code - Insiders"),
19
+ // Windows
20
+ ...(process.env.APPDATA
21
+ ? [
22
+ join(process.env.APPDATA, "Code"),
23
+ join(process.env.APPDATA, "Code - Insiders"),
24
+ ]
25
+ : []),
26
+ // Remote hosts (Remote-SSH, Dev Containers, Codespaces, WSL)
27
+ join(home, ".vscode-server"),
28
+ join(home, ".vscode-server-insiders"),
29
+ join(home, ".vscode-remote"),
30
+ ]);
31
+ for (const root of extra)
32
+ roots.add(root);
33
+ return [...roots];
34
+ }
35
+ function agentPluginDirs(roots) {
36
+ const dirs = new Set();
37
+ for (const root of roots) {
38
+ dirs.add(join(root, "agent-plugins"));
39
+ dirs.add(join(root, "agentPlugins"));
40
+ dirs.add(join(root, "data", "agent-plugins"));
41
+ dirs.add(join(root, "data", "agentPlugins"));
42
+ }
43
+ return [...dirs];
44
+ }
11
45
  function findSkillDirs(root, out, seen) {
12
46
  const resolved = join(root);
13
47
  if (seen.has(resolved))
@@ -21,6 +55,8 @@ function findSkillDirs(root, out, seen) {
21
55
  return;
22
56
  }
23
57
  for (const entry of entries) {
58
+ if (entry === ".git")
59
+ continue;
24
60
  const full = join(resolved, entry);
25
61
  let isDir = false;
26
62
  try {
@@ -72,18 +108,68 @@ function collectVscodeManifest(out, installedJson) {
72
108
  findSkillDirs(dir, out, new Set());
73
109
  }
74
110
  }
75
- function collectVscode(out, roots) {
76
- for (const root of roots) {
77
- collectVscodeManifest(out, join(root, "agent-plugins", "installed.json"));
78
- collectVscodeManifest(out, join(root, "data", "agent-plugins", "installed.json"));
111
+ // Remote hosts: VS Code syncs client skills into
112
+ // {data}/agentPlugins/{sanitizedUri}/{nonce}/ and records the LRU in
113
+ // cache.json. Resolve each entry so the materialized synced-customization
114
+ // bundle ("VS Code Synced Data" Open Plugin, skills/<name>/SKILL.md) is
115
+ // discovered.
116
+ function collectVscodeCache(out, cacheJson) {
117
+ if (!existsSync(cacheJson))
118
+ return;
119
+ let entries;
120
+ try {
121
+ entries = JSON.parse(readFileSync(cacheJson, "utf8"));
122
+ }
123
+ catch {
124
+ return;
125
+ }
126
+ if (!Array.isArray(entries))
127
+ return;
128
+ const parent = dirname(cacheJson);
129
+ for (const entry of entries) {
130
+ if (typeof entry?.uri !== "string")
131
+ continue;
132
+ const key = sanitizeKey(entry.uri) || "default";
133
+ const nonce = typeof entry.nonce === "string" && entry.nonce
134
+ ? sanitizeKey(entry.nonce)
135
+ : "default";
136
+ findSkillDirs(join(parent, key, nonce), out, new Set());
79
137
  }
80
138
  }
81
- function collectClaude(out) {
82
- if (!existsSync(CLAUDE_INSTALLED))
139
+ // Mirrors the server-side AgentPluginManager sanitizer so we can resolve the
140
+ // cache.json entries to their on-disk directories.
141
+ function sanitizeKey(value) {
142
+ return value
143
+ .replace(/[^a-zA-Z0-9]/g, "-")
144
+ .replace(/-+/g, "-")
145
+ .replace(/^-|-$/g, "")
146
+ .substring(0, 128);
147
+ }
148
+ function collectAgentPluginRoot(out, root) {
149
+ const installedJson = join(root, "installed.json");
150
+ const cacheJson = join(root, "cache.json");
151
+ const hasManifest = existsSync(installedJson) || existsSync(cacheJson);
152
+ collectVscodeManifest(out, installedJson);
153
+ collectVscodeCache(out, cacheJson);
154
+ // Newer VS Code installs marketplaces directly as {host}/{org}/{repo}
155
+ // subdirectories with no manifest file at all. Fall back to a full tree walk
156
+ // only when no metadata exists, so we don't surface skills from cloned-but-
157
+ // not-installed marketplaces on setups that do have a manifest.
158
+ if (!hasManifest) {
159
+ findSkillDirs(root, out, new Set());
160
+ }
161
+ }
162
+ function collectVscode(out, extra) {
163
+ for (const dir of agentPluginDirs(vsCodeDataRoots(extra))) {
164
+ collectAgentPluginRoot(out, dir);
165
+ }
166
+ }
167
+ function collectClaudeManifest(out, installedJson) {
168
+ if (!existsSync(installedJson))
83
169
  return;
84
170
  let manifest;
85
171
  try {
86
- manifest = JSON.parse(readFileSync(CLAUDE_INSTALLED, "utf8"));
172
+ manifest = JSON.parse(readFileSync(installedJson, "utf8"));
87
173
  }
88
174
  catch {
89
175
  return;
@@ -96,14 +182,22 @@ function collectClaude(out) {
96
182
  }
97
183
  }
98
184
  }
185
+ function collectClaude(out) {
186
+ const home = homedir();
187
+ for (const installedJson of [
188
+ join(home, ".claude", "plugins", "installed_plugins.json"),
189
+ join(home, ".claude", "remote", "plugins", "installed_plugins.json"),
190
+ ]) {
191
+ collectClaudeManifest(out, installedJson);
192
+ }
193
+ }
99
194
  export default (async (_input, options) => {
100
195
  return {
101
196
  config: async (cfg) => {
102
197
  const config = cfg;
103
- const roots = VSCODE_ROOTS;
104
198
  const extra = Array.isArray(options?.extraRoots) ? options.extraRoots : [];
105
199
  const dirs = new Set();
106
- collectVscode(dirs, [...roots, ...extra]);
200
+ collectVscode(dirs, extra);
107
201
  collectClaude(dirs);
108
202
  if (dirs.size === 0)
109
203
  return;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "OpenCode plugin that auto-discovers skills installed by VS Code agent plugins and Claude Code plugins, and registers them with the local opencode config.",
5
5
  "license": "MIT",
6
6
  "repository": {