opencode-skill-autodiscovery 1.0.2 → 1.1.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/README.md CHANGED
@@ -6,19 +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`
16
25
  - Claude Code plugins on a remote host (SSH/remote sessions):
17
26
  `~/.claude/remote/plugins/installed_plugins.json`
18
27
 
19
28
  Each points at plugin directories that contain `SKILL.md` files. This plugin
20
- walks those manifests, finds every skill directory, and adds them to the
21
- 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.
22
31
 
23
32
  ## Install
24
33
 
@@ -49,8 +58,19 @@ VS Code data location on a remote host):
49
58
  - Discovery is inherently **machine-local**: it reads manifests from the home
50
59
  directory of the machine opencode is running on. Remote sessions on a
51
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.
52
72
  - VS Code account sync only syncs your marketplace extension list; each machine
53
- still has its own `installed.json` that this plugin reads.
73
+ still has its own `installed.json`/`cache.json` that this plugin reads.
54
74
  - The plugin is a no-op when no VS Code or Claude plugin manifests exist, or
55
75
  when they contain no skills.
56
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;;kBAgHlC,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;;kBAqNlC,MAAM;;AAF9B,wBA0BoB"}
package/dist/index.js CHANGED
@@ -1,16 +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_MANIFESTS = [
11
- join(homedir(), ".claude", "plugins", "installed_plugins.json"),
12
- join(homedir(), ".claude", "remote", "plugins", "installed_plugins.json"),
13
- ];
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
+ }
14
45
  function findSkillDirs(root, out, seen) {
15
46
  const resolved = join(root);
16
47
  if (seen.has(resolved))
@@ -24,6 +55,8 @@ function findSkillDirs(root, out, seen) {
24
55
  return;
25
56
  }
26
57
  for (const entry of entries) {
58
+ if (entry === ".git")
59
+ continue;
27
60
  const full = join(resolved, entry);
28
61
  let isDir = false;
29
62
  try {
@@ -75,10 +108,63 @@ function collectVscodeManifest(out, installedJson) {
75
108
  findSkillDirs(dir, out, new Set());
76
109
  }
77
110
  }
78
- function collectVscode(out, roots) {
79
- for (const root of roots) {
80
- collectVscodeManifest(out, join(root, "agent-plugins", "installed.json"));
81
- 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());
137
+ // Some remote builds materialize the synced bundle directly as
138
+ // {parent}/{key}/skills/... without the {nonce} subdirectory.
139
+ findSkillDirs(join(parent, key), out, new Set());
140
+ }
141
+ }
142
+ // Mirrors the server-side AgentPluginManager sanitizer so we can resolve the
143
+ // cache.json entries to their on-disk directories.
144
+ function sanitizeKey(value) {
145
+ return value
146
+ .replace(/[^a-zA-Z0-9]/g, "-")
147
+ .replace(/-+/g, "-")
148
+ .replace(/^-|-$/g, "")
149
+ .substring(0, 128);
150
+ }
151
+ function collectAgentPluginRoot(out, root) {
152
+ const installedJson = join(root, "installed.json");
153
+ const cacheJson = join(root, "cache.json");
154
+ const hasManifest = existsSync(installedJson) || existsSync(cacheJson);
155
+ collectVscodeManifest(out, installedJson);
156
+ collectVscodeCache(out, cacheJson);
157
+ // Newer VS Code installs marketplaces directly as {host}/{org}/{repo}
158
+ // subdirectories with no manifest file at all. Fall back to a full tree walk
159
+ // only when no metadata exists, so we don't surface skills from cloned-but-
160
+ // not-installed marketplaces on setups that do have a manifest.
161
+ if (!hasManifest) {
162
+ findSkillDirs(root, out, new Set());
163
+ }
164
+ }
165
+ function collectVscode(out, extra) {
166
+ for (const dir of agentPluginDirs(vsCodeDataRoots(extra))) {
167
+ collectAgentPluginRoot(out, dir);
82
168
  }
83
169
  }
84
170
  function collectClaudeManifest(out, installedJson) {
@@ -100,18 +186,35 @@ function collectClaudeManifest(out, installedJson) {
100
186
  }
101
187
  }
102
188
  function collectClaude(out) {
103
- for (const installedJson of CLAUDE_MANIFESTS) {
104
- collectClaudeManifest(out, installedJson);
189
+ const home = homedir();
190
+ const installedJsons = [
191
+ join(home, ".claude", "plugins", "installed_plugins.json"),
192
+ join(home, ".claude", "remote", "plugins", "installed_plugins.json"),
193
+ ];
194
+ let found = false;
195
+ for (const installedJson of installedJsons) {
196
+ if (existsSync(installedJson)) {
197
+ found = true;
198
+ collectClaudeManifest(out, installedJson);
199
+ }
200
+ }
201
+ // Remote hosts sync Claude plugins as {nonce}/ dirs with per-plugin
202
+ // manifest.json but no installed_plugins.json; tree-walk the remote plugins
203
+ // dir as a fallback so those skills are discovered too.
204
+ if (!found) {
205
+ const remoteRoot = join(home, ".claude", "remote", "plugins");
206
+ if (existsSync(remoteRoot)) {
207
+ findSkillDirs(remoteRoot, out, new Set());
208
+ }
105
209
  }
106
210
  }
107
211
  export default (async (_input, options) => {
108
212
  return {
109
213
  config: async (cfg) => {
110
214
  const config = cfg;
111
- const roots = VSCODE_ROOTS;
112
215
  const extra = Array.isArray(options?.extraRoots) ? options.extraRoots : [];
113
216
  const dirs = new Set();
114
- collectVscode(dirs, [...roots, ...extra]);
217
+ collectVscode(dirs, extra);
115
218
  collectClaude(dirs);
116
219
  if (dirs.size === 0)
117
220
  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,46 +1,46 @@
1
- {
2
- "name": "opencode-skill-autodiscovery",
3
- "version": "1.0.2",
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
- "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/Marinski/opencode-skill-autodiscovery.git"
9
- },
10
- "homepage": "https://github.com/Marinski/opencode-skill-autodiscovery",
11
- "bugs": {
12
- "url": "https://github.com/Marinski/opencode-skill-autodiscovery/issues"
13
- },
14
- "type": "module",
15
- "main": "./dist/index.js",
16
- "types": "./dist/index.d.ts",
17
- "exports": {
18
- ".": {
19
- "types": "./dist/index.d.ts",
20
- "import": "./dist/index.js"
21
- }
22
- },
23
- "files": [
24
- "dist"
25
- ],
26
- "engines": {
27
- "node": ">=18"
28
- },
29
- "scripts": {
30
- "build": "tsc -p tsconfig.json",
31
- "prepublishOnly": "npm run build"
32
- },
33
- "keywords": [
34
- "opencode",
35
- "plugin",
36
- "skill",
37
- "autodiscovery",
38
- "claude",
39
- "vscode"
40
- ],
41
- "devDependencies": {
42
- "@opencode-ai/plugin": "1.18.13",
43
- "typescript": "^5.5.0",
44
- "@types/node": "^20.0.0"
45
- }
46
- }
1
+ {
2
+ "name": "opencode-skill-autodiscovery",
3
+ "version": "1.1.2",
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
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Marinski/opencode-skill-autodiscovery.git"
9
+ },
10
+ "homepage": "https://github.com/Marinski/opencode-skill-autodiscovery",
11
+ "bugs": {
12
+ "url": "https://github.com/Marinski/opencode-skill-autodiscovery/issues"
13
+ },
14
+ "type": "module",
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ }
22
+ },
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "engines": {
27
+ "node": ">=18"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc -p tsconfig.json",
31
+ "prepublishOnly": "npm run build"
32
+ },
33
+ "keywords": [
34
+ "opencode",
35
+ "plugin",
36
+ "skill",
37
+ "autodiscovery",
38
+ "claude",
39
+ "vscode"
40
+ ],
41
+ "devDependencies": {
42
+ "@opencode-ai/plugin": "1.18.13",
43
+ "typescript": "^5.5.0",
44
+ "@types/node": "^20.0.0"
45
+ }
46
+ }