agent-skills-cli 1.0.6 ā 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.
- package/README.md +41 -24
- package/dist/cli/index.js +188 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/source-parser.d.ts +32 -0
- package/dist/core/source-parser.d.ts.map +1 -0
- package/dist/core/source-parser.js +214 -0
- package/dist/core/source-parser.js.map +1 -0
- package/dist/core/telemetry.d.ts +59 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +98 -0
- package/dist/core/telemetry.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Agent Skills CLI š
|
|
2
2
|
|
|
3
|
-
> **One CLI.
|
|
3
|
+
> **One CLI. 100,000+ skills. 29 AI agents.**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/agent-skills-cli)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
|
-
Install skills from the world's largest marketplace and sync them to **Cursor
|
|
8
|
+
Install skills from the world's largest marketplace and sync them to **29 AI agents** including Cursor, Claude Code, GitHub Copilot, Windsurf, Cline, Gemini CLI, and more ā all with a single command.
|
|
9
9
|
|
|
10
10
|
š **Website:** [agentskills.in](https://agentskills.in)
|
|
11
11
|
|
|
@@ -18,14 +18,14 @@ skills install @anthropic/xlsx
|
|
|
18
18
|
|
|
19
19
|
## ⨠Features
|
|
20
20
|
|
|
21
|
-
- **
|
|
21
|
+
- **100,000+ Skills** ā Access the largest collection of AI agent skills
|
|
22
22
|
- **Interactive Search** ā Search and install in one command: `skills search python`
|
|
23
|
-
- **
|
|
23
|
+
- **29 AI Agents** ā Cursor, Claude, Copilot, Windsurf, Cline, Gemini CLI, and 23 more
|
|
24
24
|
- **Global Install** ā Install globally with `-g` or to project with default
|
|
25
|
-
- **Git URL Support** ā Install from
|
|
25
|
+
- **Git URL Support** ā Install from GitHub, GitLab, or local paths
|
|
26
26
|
- **Platform Targeting** ā Install to specific platforms with `-t claude,cursor`
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
27
|
+
- **Update Tracking** ā Check installed skills with `skills check`
|
|
28
|
+
- **Privacy-First Telemetry** ā Anonymous usage tracking with opt-out
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -77,9 +77,9 @@ skills search react --json
|
|
|
77
77
|
|---------|-------------|
|
|
78
78
|
| `skills install <name>` | Install a skill from marketplace |
|
|
79
79
|
| `skills add <source>` | Install from Git repo (owner/repo or URL) |
|
|
80
|
-
| `skills
|
|
81
|
-
| `skills
|
|
82
|
-
| `skills
|
|
80
|
+
| `skills search <query>` | Search and install skills interactively |
|
|
81
|
+
| `skills check` | Check installed skills across all agents |
|
|
82
|
+
| `skills update` | Update installed skills to latest versions |
|
|
83
83
|
| `skills doctor` | Diagnose issues |
|
|
84
84
|
|
|
85
85
|
### Install Options
|
|
@@ -116,20 +116,37 @@ skills info # Show installation status
|
|
|
116
116
|
|
|
117
117
|
---
|
|
118
118
|
|
|
119
|
-
## š¤ Supported Platforms (
|
|
120
|
-
|
|
121
|
-
| Platform | Project Dir | Global Dir |
|
|
122
|
-
|
|
123
|
-
| **Cursor** | `.cursor/skills/` | `~/.cursor/skills/` |
|
|
124
|
-
| **Claude Code** | `.claude/skills/` | `~/.claude/skills/` |
|
|
125
|
-
| **GitHub Copilot** | `.github/skills/` | `~/.github/skills/` |
|
|
126
|
-
| **OpenAI Codex** | `.codex/skills/` | `~/.codex/skills/` |
|
|
127
|
-
| **
|
|
128
|
-
| **
|
|
129
|
-
| **
|
|
130
|
-
| **
|
|
131
|
-
| **
|
|
132
|
-
| **
|
|
119
|
+
## š¤ Supported Platforms (29 Agents)
|
|
120
|
+
|
|
121
|
+
| Platform | Project Dir | Global Dir |
|
|
122
|
+
|----------|-------------|------------|
|
|
123
|
+
| **Cursor** | `.cursor/skills/` | `~/.cursor/skills/` |
|
|
124
|
+
| **Claude Code** | `.claude/skills/` | `~/.claude/skills/` |
|
|
125
|
+
| **GitHub Copilot** | `.github/skills/` | `~/.github/skills/` |
|
|
126
|
+
| **OpenAI Codex** | `.codex/skills/` | `~/.codex/skills/` |
|
|
127
|
+
| **Windsurf** | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
|
|
128
|
+
| **Cline** | `.cline/skills/` | `~/.cline/skills/` |
|
|
129
|
+
| **Gemini CLI** | `.gemini/skills/` | `~/.gemini/skills/` |
|
|
130
|
+
| **Antigravity** | `.agent/skills/` | `~/.gemini/antigravity/skills/` |
|
|
131
|
+
| **OpenCode** | `.opencode/skill/` | `~/.config/opencode/skill/` |
|
|
132
|
+
| **Amp** | `.agents/skills/` | `~/.config/agents/skills/` |
|
|
133
|
+
|
|
134
|
+
**+19 more agents:** Kilo, Roo, Goose, CodeBuddy, Continue, Crush, Clawdbot, Droid, Kiro, MCPJam, Mux, OpenHands, Pi, Qoder, Qwen Code, Trae, Zencoder, Neovate, Command Code
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## š Privacy & Telemetry
|
|
139
|
+
|
|
140
|
+
The CLI collects anonymous usage data to improve the product. **No personal data is collected.**
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Opt out of telemetry
|
|
144
|
+
export DISABLE_TELEMETRY=1
|
|
145
|
+
# or
|
|
146
|
+
export DO_NOT_TRACK=1
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Telemetry is automatically disabled in CI environments.
|
|
133
150
|
|
|
134
151
|
---
|
|
135
152
|
|
package/dist/cli/index.js
CHANGED
|
@@ -8,7 +8,9 @@ import chalk from 'chalk';
|
|
|
8
8
|
import inquirer from 'inquirer';
|
|
9
9
|
import ora from 'ora';
|
|
10
10
|
import * as p from '@clack/prompts';
|
|
11
|
-
import { discoverSkills, loadSkill, validateMetadata, validateBody, formatValidationResult, generateSkillsPromptXML, generateFullSkillsContext, listSkillResources, listMarketplaceSkills, installSkill, uninstallSkill, searchSkills, getInstalledSkills, listMarketplaces, addMarketplace, checkUpdates, installFromGitHubUrl, getSkillByScoped, getSkillBaseUrl, fetchAssetManifest, getAssetUrl, fetchAsset, fetchSkillsForCLI
|
|
11
|
+
import { discoverSkills, loadSkill, validateMetadata, validateBody, formatValidationResult, generateSkillsPromptXML, generateFullSkillsContext, listSkillResources, listMarketplaceSkills, installSkill, uninstallSkill, searchSkills, getInstalledSkills, listMarketplaces, addMarketplace, checkUpdates, installFromGitHubUrl, getSkillByScoped, getSkillBaseUrl, fetchAssetManifest, getAssetUrl, fetchAsset, fetchSkillsForCLI,
|
|
12
|
+
// Telemetry
|
|
13
|
+
setVersion, trackSearch } from '../core/index.js';
|
|
12
14
|
import { homedir } from 'os';
|
|
13
15
|
// Centralized agent configuration with project and global paths
|
|
14
16
|
const home = homedir();
|
|
@@ -74,6 +76,121 @@ const AGENTS = {
|
|
|
74
76
|
projectDir: '.goose/skills',
|
|
75
77
|
globalDir: `${home}/.config/goose/skills`,
|
|
76
78
|
},
|
|
79
|
+
// New agents from vercel-labs/skills (19 additional)
|
|
80
|
+
'cline': {
|
|
81
|
+
name: 'cline',
|
|
82
|
+
displayName: 'Cline',
|
|
83
|
+
projectDir: '.cline/skills',
|
|
84
|
+
globalDir: `${home}/.cline/skills`,
|
|
85
|
+
},
|
|
86
|
+
'codebuddy': {
|
|
87
|
+
name: 'codebuddy',
|
|
88
|
+
displayName: 'CodeBuddy',
|
|
89
|
+
projectDir: '.codebuddy/skills',
|
|
90
|
+
globalDir: `${home}/.codebuddy/skills`,
|
|
91
|
+
},
|
|
92
|
+
'command-code': {
|
|
93
|
+
name: 'command-code',
|
|
94
|
+
displayName: 'Command Code',
|
|
95
|
+
projectDir: '.commandcode/skills',
|
|
96
|
+
globalDir: `${home}/.commandcode/skills`,
|
|
97
|
+
},
|
|
98
|
+
'continue': {
|
|
99
|
+
name: 'continue',
|
|
100
|
+
displayName: 'Continue',
|
|
101
|
+
projectDir: '.continue/skills',
|
|
102
|
+
globalDir: `${home}/.continue/skills`,
|
|
103
|
+
},
|
|
104
|
+
'crush': {
|
|
105
|
+
name: 'crush',
|
|
106
|
+
displayName: 'Crush',
|
|
107
|
+
projectDir: '.crush/skills',
|
|
108
|
+
globalDir: `${home}/.config/crush/skills`,
|
|
109
|
+
},
|
|
110
|
+
'clawdbot': {
|
|
111
|
+
name: 'clawdbot',
|
|
112
|
+
displayName: 'Clawdbot',
|
|
113
|
+
projectDir: 'skills',
|
|
114
|
+
globalDir: `${home}/.clawdbot/skills`,
|
|
115
|
+
},
|
|
116
|
+
'droid': {
|
|
117
|
+
name: 'droid',
|
|
118
|
+
displayName: 'Droid',
|
|
119
|
+
projectDir: '.factory/skills',
|
|
120
|
+
globalDir: `${home}/.factory/skills`,
|
|
121
|
+
},
|
|
122
|
+
'gemini-cli': {
|
|
123
|
+
name: 'gemini-cli',
|
|
124
|
+
displayName: 'Gemini CLI',
|
|
125
|
+
projectDir: '.gemini/skills',
|
|
126
|
+
globalDir: `${home}/.gemini/skills`,
|
|
127
|
+
},
|
|
128
|
+
'kiro-cli': {
|
|
129
|
+
name: 'kiro-cli',
|
|
130
|
+
displayName: 'Kiro CLI',
|
|
131
|
+
projectDir: '.kiro/skills',
|
|
132
|
+
globalDir: `${home}/.kiro/skills`,
|
|
133
|
+
},
|
|
134
|
+
'mcpjam': {
|
|
135
|
+
name: 'mcpjam',
|
|
136
|
+
displayName: 'MCPJam',
|
|
137
|
+
projectDir: '.mcpjam/skills',
|
|
138
|
+
globalDir: `${home}/.mcpjam/skills`,
|
|
139
|
+
},
|
|
140
|
+
'mux': {
|
|
141
|
+
name: 'mux',
|
|
142
|
+
displayName: 'Mux',
|
|
143
|
+
projectDir: '.mux/skills',
|
|
144
|
+
globalDir: `${home}/.mux/skills`,
|
|
145
|
+
},
|
|
146
|
+
'openhands': {
|
|
147
|
+
name: 'openhands',
|
|
148
|
+
displayName: 'OpenHands',
|
|
149
|
+
projectDir: '.openhands/skills',
|
|
150
|
+
globalDir: `${home}/.openhands/skills`,
|
|
151
|
+
},
|
|
152
|
+
'pi': {
|
|
153
|
+
name: 'pi',
|
|
154
|
+
displayName: 'Pi',
|
|
155
|
+
projectDir: '.pi/skills',
|
|
156
|
+
globalDir: `${home}/.pi/agent/skills`,
|
|
157
|
+
},
|
|
158
|
+
'qoder': {
|
|
159
|
+
name: 'qoder',
|
|
160
|
+
displayName: 'Qoder',
|
|
161
|
+
projectDir: '.qoder/skills',
|
|
162
|
+
globalDir: `${home}/.qoder/skills`,
|
|
163
|
+
},
|
|
164
|
+
'qwen-code': {
|
|
165
|
+
name: 'qwen-code',
|
|
166
|
+
displayName: 'Qwen Code',
|
|
167
|
+
projectDir: '.qwen/skills',
|
|
168
|
+
globalDir: `${home}/.qwen/skills`,
|
|
169
|
+
},
|
|
170
|
+
'trae': {
|
|
171
|
+
name: 'trae',
|
|
172
|
+
displayName: 'Trae',
|
|
173
|
+
projectDir: '.trae/skills',
|
|
174
|
+
globalDir: `${home}/.trae/skills`,
|
|
175
|
+
},
|
|
176
|
+
'windsurf': {
|
|
177
|
+
name: 'windsurf',
|
|
178
|
+
displayName: 'Windsurf',
|
|
179
|
+
projectDir: '.windsurf/skills',
|
|
180
|
+
globalDir: `${home}/.codeium/windsurf/skills`,
|
|
181
|
+
},
|
|
182
|
+
'zencoder': {
|
|
183
|
+
name: 'zencoder',
|
|
184
|
+
displayName: 'Zencoder',
|
|
185
|
+
projectDir: '.zencoder/skills',
|
|
186
|
+
globalDir: `${home}/.zencoder/skills`,
|
|
187
|
+
},
|
|
188
|
+
'neovate': {
|
|
189
|
+
name: 'neovate',
|
|
190
|
+
displayName: 'Neovate',
|
|
191
|
+
projectDir: '.neovate/skills',
|
|
192
|
+
globalDir: `${home}/.neovate/skills`,
|
|
193
|
+
},
|
|
77
194
|
};
|
|
78
195
|
// Helper to get install path
|
|
79
196
|
function getInstallPath(agent, global) {
|
|
@@ -83,6 +200,8 @@ function getInstallPath(agent, global) {
|
|
|
83
200
|
return global ? config.globalDir : config.projectDir;
|
|
84
201
|
}
|
|
85
202
|
const program = new Command();
|
|
203
|
+
// Initialize telemetry with CLI version
|
|
204
|
+
setVersion('1.0.23');
|
|
86
205
|
// Main flow when running `skills` - go straight to install
|
|
87
206
|
async function showMainMenu() {
|
|
88
207
|
console.log('');
|
|
@@ -861,6 +980,8 @@ program
|
|
|
861
980
|
const skills = await searchSkills(query);
|
|
862
981
|
result = { skills: skills.slice(0, limit), total: skills.length };
|
|
863
982
|
}
|
|
983
|
+
// Track search telemetry
|
|
984
|
+
trackSearch(query, result.total);
|
|
864
985
|
if (result.skills.length === 0) {
|
|
865
986
|
if (options.json) {
|
|
866
987
|
console.log(JSON.stringify({ skills: [], total: 0, query }));
|
|
@@ -2502,5 +2623,71 @@ program
|
|
|
2502
2623
|
process.exit(1);
|
|
2503
2624
|
}
|
|
2504
2625
|
});
|
|
2626
|
+
// ============================================
|
|
2627
|
+
// CHECK COMMAND - Check for skill updates
|
|
2628
|
+
// ============================================
|
|
2629
|
+
program
|
|
2630
|
+
.command('check')
|
|
2631
|
+
.description('Check for available skill updates')
|
|
2632
|
+
.option('-a, --agent <agent>', 'Check specific agent only')
|
|
2633
|
+
.option('-g, --global', 'Check globally installed skills')
|
|
2634
|
+
.option('--json', 'Output as JSON')
|
|
2635
|
+
.action(async (options) => {
|
|
2636
|
+
try {
|
|
2637
|
+
const spinner = ora('Checking for updates...').start();
|
|
2638
|
+
// Get list of agents to check
|
|
2639
|
+
const agentsToCheck = options.agent
|
|
2640
|
+
? [options.agent]
|
|
2641
|
+
: Object.keys(AGENTS);
|
|
2642
|
+
const updates = [];
|
|
2643
|
+
for (const agentName of agentsToCheck) {
|
|
2644
|
+
const config = AGENTS[agentName];
|
|
2645
|
+
if (!config)
|
|
2646
|
+
continue;
|
|
2647
|
+
const skillsDir = options.global ? config.globalDir : config.projectDir;
|
|
2648
|
+
try {
|
|
2649
|
+
const { existsSync, readdirSync } = await import('fs');
|
|
2650
|
+
if (!existsSync(skillsDir))
|
|
2651
|
+
continue;
|
|
2652
|
+
const skills = readdirSync(skillsDir, { withFileTypes: true })
|
|
2653
|
+
.filter(d => d.isDirectory())
|
|
2654
|
+
.map(d => d.name);
|
|
2655
|
+
for (const skill of skills) {
|
|
2656
|
+
// Check if skill has updates available
|
|
2657
|
+
// For now, just list installed skills
|
|
2658
|
+
updates.push({
|
|
2659
|
+
skill,
|
|
2660
|
+
agent: config.displayName,
|
|
2661
|
+
currentVersion: 'installed',
|
|
2662
|
+
latestVersion: 'check online',
|
|
2663
|
+
path: `${skillsDir}/${skill}`,
|
|
2664
|
+
});
|
|
2665
|
+
}
|
|
2666
|
+
}
|
|
2667
|
+
catch {
|
|
2668
|
+
// Skip if can't read directory
|
|
2669
|
+
}
|
|
2670
|
+
}
|
|
2671
|
+
spinner.stop();
|
|
2672
|
+
if (options.json) {
|
|
2673
|
+
console.log(JSON.stringify({ updates, count: updates.length }, null, 2));
|
|
2674
|
+
return;
|
|
2675
|
+
}
|
|
2676
|
+
if (updates.length === 0) {
|
|
2677
|
+
console.log(chalk.green('ā No skills installed to check.'));
|
|
2678
|
+
return;
|
|
2679
|
+
}
|
|
2680
|
+
console.log(chalk.bold(`\nš¦ Found ${updates.length} installed skill(s):\n`));
|
|
2681
|
+
for (const update of updates) {
|
|
2682
|
+
console.log(` ${chalk.cyan(update.skill)} ${chalk.gray(`(${update.agent})`)}`);
|
|
2683
|
+
console.log(chalk.gray(` ${update.path}`));
|
|
2684
|
+
}
|
|
2685
|
+
console.log(chalk.gray('\nTip: Run `skills update` to update all skills.\n'));
|
|
2686
|
+
}
|
|
2687
|
+
catch (error) {
|
|
2688
|
+
console.error(chalk.red('Error checking for updates:'), error);
|
|
2689
|
+
process.exit(1);
|
|
2690
|
+
}
|
|
2691
|
+
});
|
|
2505
2692
|
program.parse();
|
|
2506
2693
|
//# sourceMappingURL=index.js.map
|