add-skill 1.0.5 → 1.0.7

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.
Files changed (3) hide show
  1. package/README.md +12 -8
  2. package/dist/index.js +33 -4
  3. package/package.json +3 -2
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Install agent skills onto your coding agents from any git repository.
4
4
 
5
- Supports [OpenCode](https://opencode.ai), [Claude Code](https://claude.ai/code), [Codex](https://developers.openai.com/codex), and [Cursor](https://cursor.com).
5
+ Supports [OpenCode](https://opencode.ai), [Claude Code](https://claude.ai/code), [Codex](https://developers.openai.com/codex), [Cursor](https://cursor.com), and [VSCode](https://code.visualstudio.com/docs/copilot/customization/agent-skills).
6
6
 
7
7
  ## Quick Start
8
8
 
@@ -47,7 +47,7 @@ npx add-skill git@github.com:vercel-labs/agent-skills.git
47
47
  | Option | Description |
48
48
  |--------|-------------|
49
49
  | `-g, --global` | Install to user directory instead of project |
50
- | `-a, --agent <agents...>` | Target specific agents: `opencode`, `claude-code`, `codex`, `cursor` |
50
+ | `-a, --agent <agents...>` | Target specific agents: `opencode`, `claude-code`, `codex`, `cursor`, `vscode` |
51
51
  | `-s, --skill <skills...>` | Install specific skills by name |
52
52
  | `-l, --list` | List available skills without installing |
53
53
  | `-y, --yes` | Skip all confirmation prompts |
@@ -87,6 +87,7 @@ Installed in your current working directory. Commit these to share with your tea
87
87
  | Claude Code | `.claude/skills/<name>/` |
88
88
  | Codex | `.codex/skills/<name>/` |
89
89
  | Cursor | `.cursor/skills/<name>/` |
90
+ | VSCode | `.github/skills/<name>/` |
90
91
 
91
92
  ### Global (`--global`)
92
93
 
@@ -98,6 +99,7 @@ Installed in your home directory. Available across all projects.
98
99
  | Claude Code | `~/.claude/skills/<name>/` |
99
100
  | Codex | `~/.codex/skills/<name>/` |
100
101
  | Cursor | `~/.cursor/skills/<name>/` |
102
+ | VSCode | `~/.copilot/skills/<name>/` |
101
103
 
102
104
  ## Agent Detection
103
105
 
@@ -145,6 +147,7 @@ The CLI searches for skills in these locations within a repository:
145
147
  - `.claude/skills/`
146
148
  - `.opencode/skill/`
147
149
  - `.cursor/skills/`
150
+ - `.github/skills/`
148
151
 
149
152
  If no skills are found in standard locations, a recursive search is performed.
150
153
 
@@ -152,12 +155,12 @@ If no skills are found in standard locations, a recursive search is performed.
152
155
 
153
156
  Skills are generally compatible across agents since they follow a shared [Agent Skills specification](https://agentskills.io). However, some features may be agent-specific:
154
157
 
155
- | Feature | OpenCode | Claude Code | Codex | Cursor |
156
- |---------|----------|-------------|-------|--------|
157
- | Basic skills | Yes | Yes | Yes | Yes |
158
- | `allowed-tools` | Yes | Yes | Yes | Yes |
159
- | `context: fork` | No | Yes | No | No |
160
- | Hooks | No | Yes | No | No |
158
+ | Feature | OpenCode | Claude Code | Codex | Cursor | VSCode |
159
+ |---------|----------|-------------|-------|--------|--------|
160
+ | Basic skills | Yes | Yes | Yes | Yes | Yes |
161
+ | `allowed-tools` | Yes | Yes | Yes | Yes | Yes |
162
+ | `context: fork` | No | Yes | No | No | No |
163
+ | Hooks | No | Yes | No | No | No |
161
164
 
162
165
  ## Troubleshooting
163
166
 
@@ -183,6 +186,7 @@ Ensure you have write access to the target directory.
183
186
  - [Claude Code Skills Documentation](https://code.claude.com/docs/en/skills)
184
187
  - [Codex Skills Documentation](https://developers.openai.com/codex/skills/)
185
188
  - [Cursor Skills Documentation](https://cursor.com/docs/context/skills)
189
+ - [VSCode Skills Documentation](https://code.visualstudio.com/docs/copilot/customization/agent-skills)
186
190
 
187
191
  ## License
188
192
 
package/dist/index.js CHANGED
@@ -144,7 +144,8 @@ async function discoverSkills(basePath, subpath) {
144
144
  join2(searchPath, ".codex/skills"),
145
145
  join2(searchPath, ".claude/skills"),
146
146
  join2(searchPath, ".opencode/skill"),
147
- join2(searchPath, ".cursor/skills")
147
+ join2(searchPath, ".cursor/skills"),
148
+ join2(searchPath, ".github/skills")
148
149
  ];
149
150
  for (const dir of prioritySearchDirs) {
150
151
  try {
@@ -225,6 +226,15 @@ var agents = {
225
226
  detectInstalled: async () => {
226
227
  return existsSync(join3(home, ".cursor"));
227
228
  }
229
+ },
230
+ vscode: {
231
+ name: "vscode",
232
+ displayName: "VSCode",
233
+ skillsDir: ".github/skills",
234
+ globalSkillsDir: join3(home, ".copilot/skills"),
235
+ detectInstalled: async () => {
236
+ return existsSync(join3(home, ".copilot")) || existsSync(join3(home, ".vscode"));
237
+ }
228
238
  }
229
239
  };
230
240
  async function detectInstalledAgents() {
@@ -287,9 +297,28 @@ function getInstallPath(skillName, agentType, options = {}) {
287
297
 
288
298
  // src/index.ts
289
299
  var version = "1.0.0";
290
- program.name("add-skill").description("Install skills onto coding agents (OpenCode, Claude Code, Codex, Cursor)").version(version).argument("<source>", "Git repo URL, GitHub shorthand (owner/repo), or direct path to skill").option("-g, --global", "Install skill globally (user-level) instead of project-level").option("-a, --agent <agents...>", "Specify agents to install to (opencode, claude-code, codex, cursor)").option("-s, --skill <skills...>", "Specify skill names to install (skip selection prompt)").option("-l, --list", "List available skills in the repository without installing").option("-y, --yes", "Skip confirmation prompts").action(async (source, options) => {
300
+ program.name("add-skill").description("Install skills onto coding agents (OpenCode, Claude Code, Codex, Cursor, VSCode)").version(version).argument("<source>", "Git repo URL, GitHub shorthand (owner/repo), or direct path to skill").option("-g, --global", "Install skill globally (user-level) instead of project-level").option("-a, --agent <agents...>", "Specify agents to install to (opencode, claude-code, codex, cursor, vscode)").option("-s, --skill <skills...>", "Specify skill names to install (skip selection prompt)").option("-l, --list", "List available skills in the repository without installing").option("-y, --yes", "Skip confirmation prompts").action(async (source, options) => {
291
301
  await main(source, options);
292
302
  });
303
+ program.configureOutput({
304
+ outputError: (str, write) => {
305
+ if (str.includes("missing required argument 'source'")) {
306
+ console.log();
307
+ console.log(chalk.red("Error: Missing skill source"));
308
+ console.log();
309
+ console.log("Usage:");
310
+ console.log(` ${chalk.cyan("npx add-skill <source>")} ${chalk.dim("[options]")}`);
311
+ console.log();
312
+ console.log("Example:");
313
+ console.log(` ${chalk.dim("$")} npx add-skill vercel-labs/agent-skills`);
314
+ console.log();
315
+ console.log(`Run ${chalk.cyan("npx add-skill --help")} for more options.`);
316
+ console.log();
317
+ } else {
318
+ write(str);
319
+ }
320
+ }
321
+ });
293
322
  program.parse();
294
323
  async function main(source, options) {
295
324
  console.log();
@@ -369,7 +398,7 @@ async function main(source, options) {
369
398
  }
370
399
  let targetAgents;
371
400
  if (options.agent && options.agent.length > 0) {
372
- const validAgents = ["opencode", "claude-code", "codex", "cursor"];
401
+ const validAgents = ["opencode", "claude-code", "codex", "cursor", "vscode"];
373
402
  const invalidAgents = options.agent.filter((a) => !validAgents.includes(a));
374
403
  if (invalidAgents.length > 0) {
375
404
  p.log.error(`Invalid agents: ${invalidAgents.join(", ")}`);
@@ -384,7 +413,7 @@ async function main(source, options) {
384
413
  spinner2.stop(`Detected ${installedAgents.length} agent${installedAgents.length !== 1 ? "s" : ""}`);
385
414
  if (installedAgents.length === 0) {
386
415
  if (options.yes) {
387
- targetAgents = ["opencode", "claude-code", "codex", "cursor"];
416
+ targetAgents = ["opencode", "claude-code", "codex", "cursor", "vscode"];
388
417
  p.log.info("Installing to all agents (none detected)");
389
418
  } else {
390
419
  p.log.warn("No coding agents detected. You can still install skills.");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "add-skill",
3
- "version": "1.0.5",
4
- "description": "Install agent skills onto coding agents (OpenCode, Claude Code, Codex, Cursor)",
3
+ "version": "1.0.7",
4
+ "description": "Install agent skills onto coding agents (OpenCode, Claude Code, Codex, Cursor, VSCode)",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "add-skill": "./dist/index.js"
@@ -22,6 +22,7 @@
22
22
  "claude-code",
23
23
  "codex",
24
24
  "cursor",
25
+ "vscode",
25
26
  "ai-agents"
26
27
  ],
27
28
  "repository": {