opencode-skill-autodiscovery 1.0.2 → 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 +28 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +104 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
10
|
-
|
|
11
|
-
|
|
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/
|
|
14
|
-
|
|
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
|
-
|
|
21
|
-
opencode
|
|
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
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;;
|
|
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,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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
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,60 @@ function collectVscodeManifest(out, installedJson) {
|
|
|
75
108
|
findSkillDirs(dir, out, new Set());
|
|
76
109
|
}
|
|
77
110
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
+
}
|
|
138
|
+
}
|
|
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);
|
|
82
165
|
}
|
|
83
166
|
}
|
|
84
167
|
function collectClaudeManifest(out, installedJson) {
|
|
@@ -100,7 +183,11 @@ function collectClaudeManifest(out, installedJson) {
|
|
|
100
183
|
}
|
|
101
184
|
}
|
|
102
185
|
function collectClaude(out) {
|
|
103
|
-
|
|
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
|
+
]) {
|
|
104
191
|
collectClaudeManifest(out, installedJson);
|
|
105
192
|
}
|
|
106
193
|
}
|
|
@@ -108,10 +195,9 @@ export default (async (_input, options) => {
|
|
|
108
195
|
return {
|
|
109
196
|
config: async (cfg) => {
|
|
110
197
|
const config = cfg;
|
|
111
|
-
const roots = VSCODE_ROOTS;
|
|
112
198
|
const extra = Array.isArray(options?.extraRoots) ? options.extraRoots : [];
|
|
113
199
|
const dirs = new Set();
|
|
114
|
-
collectVscode(dirs,
|
|
200
|
+
collectVscode(dirs, extra);
|
|
115
201
|
collectClaude(dirs);
|
|
116
202
|
if (dirs.size === 0)
|
|
117
203
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
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
|
|
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": {
|