agent-skills-cli 1.0.6 → 1.0.8
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 +58 -26
- package/dist/cli/commands/remove.d.ts +40 -0
- package/dist/cli/commands/remove.d.ts.map +1 -0
- package/dist/cli/commands/remove.js +161 -0
- package/dist/cli/commands/remove.js.map +1 -0
- package/dist/cli/fzf-search.d.ts +28 -0
- package/dist/cli/fzf-search.d.ts.map +1 -0
- package/dist/cli/fzf-search.js +211 -0
- package/dist/cli/fzf-search.js.map +1 -0
- package/dist/cli/index.js +486 -90
- package/dist/cli/index.js.map +1 -1
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/installer.d.ts +79 -0
- package/dist/core/installer.d.ts.map +1 -0
- package/dist/core/installer.js +142 -0
- package/dist/core/installer.js.map +1 -0
- package/dist/core/skill-lock.d.ts +114 -0
- package/dist/core/skill-lock.d.ts.map +1 -0
- package/dist/core/skill-lock.js +133 -0
- package/dist/core/skill-lock.js.map +1 -0
- 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 +2 -2
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Agent Skills CLI 🚀
|
|
2
2
|
|
|
3
|
-
> **One CLI.
|
|
3
|
+
> **One CLI. 100,000+ skills. 42 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 **42 AI agents** including Cursor, Claude Code, GitHub Copilot, Windsurf, Cline, Gemini CLI, Zed, 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
|
-
- **
|
|
22
|
-
- **Interactive Search** —
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
- **Git URL Support** — Install from
|
|
21
|
+
- **100,000+ Skills** — Access the largest collection of AI agent skills
|
|
22
|
+
- **FZF Interactive Search** — Real-time search with keyboard navigation: `skills search -i`
|
|
23
|
+
- **42 AI Agents** — Cursor, Claude, Copilot, Windsurf, Cline, Gemini CLI, Zed, and 35+ more
|
|
24
|
+
- **Lock File Tracking** — Track all installations in `~/.skills/skills.lock`
|
|
25
|
+
- **Git URL Support** — Install from GitHub, GitLab, or repos: `skills add owner/repo@skill`
|
|
26
26
|
- **Platform Targeting** — Install to specific platforms with `-t claude,cursor`
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
27
|
+
- **Update & Remove** — Full lifecycle: `skills update`, `skills check`, `skills remove`
|
|
28
|
+
- **Privacy-First Telemetry** — Anonymous usage tracking with opt-out
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -57,9 +57,21 @@ skills install docx --all
|
|
|
57
57
|
# Install from Git repo
|
|
58
58
|
skills add vercel-labs/agent-skills
|
|
59
59
|
|
|
60
|
+
# Install specific skill from repo (new @skill syntax)
|
|
61
|
+
skills add anthropic/skills@xlsx
|
|
62
|
+
|
|
60
63
|
# List skills in a repo
|
|
61
64
|
skills add owner/repo --list
|
|
62
65
|
|
|
66
|
+
# Remove installed skills
|
|
67
|
+
skills remove xlsx
|
|
68
|
+
|
|
69
|
+
# Check installed skills
|
|
70
|
+
skills check
|
|
71
|
+
|
|
72
|
+
# Update skills from source
|
|
73
|
+
skills update --all
|
|
74
|
+
|
|
63
75
|
# Search and install skills interactively
|
|
64
76
|
skills search python
|
|
65
77
|
|
|
@@ -77,9 +89,11 @@ skills search react --json
|
|
|
77
89
|
|---------|-------------|
|
|
78
90
|
| `skills install <name>` | Install a skill from marketplace |
|
|
79
91
|
| `skills add <source>` | Install from Git repo (owner/repo or URL) |
|
|
80
|
-
| `skills
|
|
81
|
-
| `skills search
|
|
82
|
-
| `skills
|
|
92
|
+
| `skills search <query>` | Search and install skills interactively |
|
|
93
|
+
| `skills search -i` | FZF-style interactive search with keyboard navigation |
|
|
94
|
+
| `skills check` | Check installed skills with source and version info |
|
|
95
|
+
| `skills update` | Update skills from their source repos |
|
|
96
|
+
| `skills remove` | Remove installed skills (interactive multi-select) |
|
|
83
97
|
| `skills doctor` | Diagnose issues |
|
|
84
98
|
|
|
85
99
|
### Install Options
|
|
@@ -97,6 +111,7 @@ skills install <name> --list # Show details without installing
|
|
|
97
111
|
|
|
98
112
|
```bash
|
|
99
113
|
skills add owner/repo # GitHub shorthand
|
|
114
|
+
skills add owner/repo@skill-name # NEW: Install specific skill directly
|
|
100
115
|
skills add https://github.com/user/repo # Full URL
|
|
101
116
|
skills add https://gitlab.com/org/repo # GitLab
|
|
102
117
|
skills add owner/repo --list # List skills in repo
|
|
@@ -116,20 +131,37 @@ skills info # Show installation status
|
|
|
116
131
|
|
|
117
132
|
---
|
|
118
133
|
|
|
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
|
-
| **
|
|
134
|
+
## 🤖 Supported Platforms (42 Agents)
|
|
135
|
+
|
|
136
|
+
| Platform | Project Dir | Global Dir |
|
|
137
|
+
|----------|-------------|------------|
|
|
138
|
+
| **Cursor** | `.cursor/skills/` | `~/.cursor/skills/` |
|
|
139
|
+
| **Claude Code** | `.claude/skills/` | `~/.claude/skills/` |
|
|
140
|
+
| **GitHub Copilot** | `.github/skills/` | `~/.github/skills/` |
|
|
141
|
+
| **OpenAI Codex** | `.codex/skills/` | `~/.codex/skills/` |
|
|
142
|
+
| **Windsurf** | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
|
|
143
|
+
| **Cline** | `.cline/skills/` | `~/.cline/skills/` |
|
|
144
|
+
| **Gemini CLI** | `.gemini/skills/` | `~/.gemini/skills/` |
|
|
145
|
+
| **Zed** | `.zed/skills/` | `~/.config/zed/skills/` |
|
|
146
|
+
| **Antigravity** | `.agent/skills/` | `~/.gemini/antigravity/skills/` |
|
|
147
|
+
| **OpenCode** | `.opencode/skill/` | `~/.config/opencode/skill/` |
|
|
148
|
+
|
|
149
|
+
**+32 more agents:** Amp, Kilo, Roo, Goose, CodeBuddy, Continue, Crush, Clawdbot, Droid, Kiro, MCPJam, Mux, OpenHands, Pi, Qoder, Qwen Code, Trae, Zencoder, Neovate, Command Code, Ara, Aide, Alex, BB, CodeStory, Helix AI, Meekia, Pear AI, Adal, Pochi, Sourcegraph Cody, Void AI
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 🔒 Privacy & Telemetry
|
|
154
|
+
|
|
155
|
+
The CLI collects anonymous usage data to improve the product. **No personal data is collected.**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# Opt out of telemetry
|
|
159
|
+
export DISABLE_TELEMETRY=1
|
|
160
|
+
# or
|
|
161
|
+
export DO_NOT_TRACK=1
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Telemetry is automatically disabled in CI environments.
|
|
133
165
|
|
|
134
166
|
---
|
|
135
167
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove Command
|
|
3
|
+
* Interactively remove installed skills
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Agent configuration (imported from main CLI)
|
|
7
|
+
*/
|
|
8
|
+
interface AgentConfig {
|
|
9
|
+
name: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
projectDir: string;
|
|
12
|
+
globalDir: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Remove command options
|
|
16
|
+
*/
|
|
17
|
+
export interface RemoveOptions {
|
|
18
|
+
/** Remove from global installation */
|
|
19
|
+
global?: boolean;
|
|
20
|
+
/** Target specific agent only */
|
|
21
|
+
agent?: string;
|
|
22
|
+
/** Skip confirmation prompt */
|
|
23
|
+
yes?: boolean;
|
|
24
|
+
/** Remove all installed skills */
|
|
25
|
+
all?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Remove installed skills
|
|
29
|
+
*
|
|
30
|
+
* @param skillNames - Optional list of skill names to remove
|
|
31
|
+
* @param options - Remove options
|
|
32
|
+
* @param agentConfigs - Agent configurations
|
|
33
|
+
*/
|
|
34
|
+
export declare function removeCommand(skillNames: string[] | undefined, options: RemoveOptions | undefined, agentConfigs: Record<string, AgentConfig>): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Register the remove command with commander
|
|
37
|
+
*/
|
|
38
|
+
export declare function registerRemoveCommand(program: any, agentConfigs: Record<string, AgentConfig>): void;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;GAEG;AACH,UAAU,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kCAAkC;IAClC,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAC/B,UAAU,EAAE,MAAM,EAAE,YAAK,EACzB,OAAO,EAAE,aAAa,YAAK,EAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAqJf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAC1C,IAAI,CAkBN"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove Command
|
|
3
|
+
* Interactively remove installed skills
|
|
4
|
+
*/
|
|
5
|
+
import * as p from '@clack/prompts';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { rm } from 'fs/promises';
|
|
8
|
+
import { existsSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
import { removeSkillFromLock, listInstalledSkills } from '../../core/skill-lock.js';
|
|
12
|
+
/**
|
|
13
|
+
* Remove installed skills
|
|
14
|
+
*
|
|
15
|
+
* @param skillNames - Optional list of skill names to remove
|
|
16
|
+
* @param options - Remove options
|
|
17
|
+
* @param agentConfigs - Agent configurations
|
|
18
|
+
*/
|
|
19
|
+
export async function removeCommand(skillNames = [], options = {}, agentConfigs) {
|
|
20
|
+
const spinner = p.spinner();
|
|
21
|
+
// 1. Get installed skills from lock file
|
|
22
|
+
spinner.start('Scanning installed skills...');
|
|
23
|
+
const installed = await listInstalledSkills({
|
|
24
|
+
global: options.global,
|
|
25
|
+
agent: options.agent
|
|
26
|
+
});
|
|
27
|
+
spinner.stop(`Found ${installed.length} installed skill(s)`);
|
|
28
|
+
if (installed.length === 0) {
|
|
29
|
+
p.outro(chalk.yellow('No skills found to remove.'));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// 2. Determine which skills to remove
|
|
33
|
+
let selectedSkills = [];
|
|
34
|
+
if (options.all) {
|
|
35
|
+
// Remove all
|
|
36
|
+
selectedSkills = installed;
|
|
37
|
+
}
|
|
38
|
+
else if (skillNames.length > 0) {
|
|
39
|
+
// Filter by provided names
|
|
40
|
+
const namesLower = skillNames.map(n => n.toLowerCase().replace(/^@/, ''));
|
|
41
|
+
selectedSkills = installed.filter(s => {
|
|
42
|
+
const nameMatch = namesLower.includes(s.name.toLowerCase());
|
|
43
|
+
const scopedMatch = namesLower.includes(s.scopedName?.toLowerCase().replace(/^@/, '') || '');
|
|
44
|
+
return nameMatch || scopedMatch;
|
|
45
|
+
});
|
|
46
|
+
if (selectedSkills.length === 0) {
|
|
47
|
+
const notFound = skillNames.join(', ');
|
|
48
|
+
p.outro(chalk.yellow(`No installed skills match: ${notFound}`));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Interactive selection
|
|
54
|
+
const choices = installed.map(s => ({
|
|
55
|
+
value: s.name,
|
|
56
|
+
label: `${s.name} ${chalk.dim(`(${s.agents.join(', ')})`)}`,
|
|
57
|
+
hint: s.scopedName || s.source
|
|
58
|
+
}));
|
|
59
|
+
console.log('');
|
|
60
|
+
const selected = await p.multiselect({
|
|
61
|
+
message: `Select skills to remove ${chalk.dim('(space to toggle, enter to confirm)')}`,
|
|
62
|
+
options: choices,
|
|
63
|
+
required: true
|
|
64
|
+
});
|
|
65
|
+
if (p.isCancel(selected)) {
|
|
66
|
+
p.cancel('Removal cancelled');
|
|
67
|
+
process.exit(0);
|
|
68
|
+
}
|
|
69
|
+
selectedSkills = installed.filter(s => selected.includes(s.name));
|
|
70
|
+
}
|
|
71
|
+
if (selectedSkills.length === 0) {
|
|
72
|
+
p.outro(chalk.yellow('No skills selected.'));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// 3. Show confirmation
|
|
76
|
+
if (!options.yes) {
|
|
77
|
+
console.log('');
|
|
78
|
+
p.log.info(chalk.bold('Skills to remove:'));
|
|
79
|
+
for (const skill of selectedSkills) {
|
|
80
|
+
const location = skill.isGlobal ? 'global' : 'project';
|
|
81
|
+
p.log.message(` ${chalk.red('×')} ${skill.name} ` +
|
|
82
|
+
`${chalk.dim(`→ ${skill.agents.join(', ')}`)} ` +
|
|
83
|
+
`${chalk.dim(`[${location}]`)}`);
|
|
84
|
+
}
|
|
85
|
+
console.log('');
|
|
86
|
+
const confirmed = await p.confirm({
|
|
87
|
+
message: `Remove ${selectedSkills.length} skill(s)?`,
|
|
88
|
+
initialValue: false
|
|
89
|
+
});
|
|
90
|
+
if (p.isCancel(confirmed) || !confirmed) {
|
|
91
|
+
p.cancel('Removal cancelled');
|
|
92
|
+
process.exit(0);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// 4. Remove each skill
|
|
96
|
+
spinner.start('Removing skills...');
|
|
97
|
+
let removed = 0;
|
|
98
|
+
let failed = 0;
|
|
99
|
+
const cwd = process.cwd();
|
|
100
|
+
const home = homedir();
|
|
101
|
+
for (const skill of selectedSkills) {
|
|
102
|
+
try {
|
|
103
|
+
// Remove from each agent directory
|
|
104
|
+
for (const agentName of skill.agents) {
|
|
105
|
+
const agentConfig = agentConfigs[agentName];
|
|
106
|
+
if (!agentConfig)
|
|
107
|
+
continue;
|
|
108
|
+
const agentPath = skill.isGlobal
|
|
109
|
+
? join(agentConfig.globalDir, skill.name)
|
|
110
|
+
: join(cwd, agentConfig.projectDir, skill.name);
|
|
111
|
+
if (existsSync(agentPath)) {
|
|
112
|
+
await rm(agentPath, { recursive: true, force: true });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Remove canonical copy
|
|
116
|
+
if (skill.canonicalPath && existsSync(skill.canonicalPath)) {
|
|
117
|
+
await rm(skill.canonicalPath, { recursive: true, force: true });
|
|
118
|
+
}
|
|
119
|
+
// Remove from lock file
|
|
120
|
+
await removeSkillFromLock(skill.name);
|
|
121
|
+
removed++;
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
p.log.warn(`Failed to remove ${skill.name}: ${err.message}`);
|
|
125
|
+
failed++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
spinner.stop('Removal complete');
|
|
129
|
+
// 5. Show results
|
|
130
|
+
console.log('');
|
|
131
|
+
if (removed > 0) {
|
|
132
|
+
p.log.success(chalk.green(`✓ Removed ${removed} skill(s)`));
|
|
133
|
+
}
|
|
134
|
+
if (failed > 0) {
|
|
135
|
+
p.log.warn(chalk.yellow(`⚠ Failed to remove ${failed} skill(s)`));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Register the remove command with commander
|
|
140
|
+
*/
|
|
141
|
+
export function registerRemoveCommand(program, agentConfigs) {
|
|
142
|
+
program
|
|
143
|
+
.command('remove [skills...]')
|
|
144
|
+
.alias('rm')
|
|
145
|
+
.alias('uninstall')
|
|
146
|
+
.description('Remove installed skills')
|
|
147
|
+
.option('-g, --global', 'Remove from global installation')
|
|
148
|
+
.option('-a, --agent <agent>', 'Remove from specific agent only')
|
|
149
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
150
|
+
.option('--all', 'Remove all installed skills')
|
|
151
|
+
.action(async (skills, options) => {
|
|
152
|
+
try {
|
|
153
|
+
await removeCommand(skills, options, agentConfigs);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
console.error(chalk.red('Error:'), err.message);
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FZF-Style Interactive Search
|
|
3
|
+
* Real-time fuzzy search with keyboard navigation
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Search result from API
|
|
7
|
+
*/
|
|
8
|
+
export interface SearchResult {
|
|
9
|
+
name: string;
|
|
10
|
+
scopedName: string;
|
|
11
|
+
description: string;
|
|
12
|
+
author: string;
|
|
13
|
+
stars: number;
|
|
14
|
+
githubUrl: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run FZF-style interactive search
|
|
18
|
+
* Returns the selected skill or null if cancelled
|
|
19
|
+
*/
|
|
20
|
+
export declare function fzfSearch(initialQuery?: string): Promise<SearchResult | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Simple non-interactive search for --json mode
|
|
23
|
+
*/
|
|
24
|
+
export declare function searchSkillsAPI(query: string, options?: {
|
|
25
|
+
limit?: number;
|
|
26
|
+
sortBy?: string;
|
|
27
|
+
}): Promise<SearchResult[]>;
|
|
28
|
+
//# sourceMappingURL=fzf-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fzf-search.d.ts","sourceRoot":"","sources":["../../src/cli/fzf-search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACrB;AAYD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,YAAY,SAAK,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0M/E;AAED;;GAEG;AACH,wBAAsB,eAAe,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,YAAY,EAAE,CAAC,CAqBzB"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FZF-Style Interactive Search
|
|
3
|
+
* Real-time fuzzy search with keyboard navigation
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import * as readline from 'readline';
|
|
7
|
+
const API_URL = 'https://agentskills.in/api/skills';
|
|
8
|
+
/**
|
|
9
|
+
* Run FZF-style interactive search
|
|
10
|
+
* Returns the selected skill or null if cancelled
|
|
11
|
+
*/
|
|
12
|
+
export async function fzfSearch(initialQuery = '') {
|
|
13
|
+
const state = {
|
|
14
|
+
query: initialQuery,
|
|
15
|
+
results: [],
|
|
16
|
+
selectedIndex: 0,
|
|
17
|
+
loading: false
|
|
18
|
+
};
|
|
19
|
+
let debounceTimer = null;
|
|
20
|
+
// Setup terminal
|
|
21
|
+
if (process.stdin.isTTY) {
|
|
22
|
+
process.stdin.setRawMode(true);
|
|
23
|
+
}
|
|
24
|
+
readline.emitKeypressEvents(process.stdin);
|
|
25
|
+
process.stdin.resume();
|
|
26
|
+
// Hide cursor
|
|
27
|
+
process.stdout.write('\x1b[?25l');
|
|
28
|
+
/**
|
|
29
|
+
* Render the search UI
|
|
30
|
+
*/
|
|
31
|
+
function render() {
|
|
32
|
+
// Clear screen and move to top
|
|
33
|
+
process.stdout.write('\x1b[2J\x1b[H');
|
|
34
|
+
// Header
|
|
35
|
+
console.log(chalk.bold.cyan('🔍 Search Skills'));
|
|
36
|
+
console.log(chalk.dim('Type to search • ↑↓ navigate • Enter select • Esc cancel'));
|
|
37
|
+
console.log('');
|
|
38
|
+
// Search input with cursor
|
|
39
|
+
console.log(`${chalk.cyan('>')} ${state.query}${chalk.dim('|')}`);
|
|
40
|
+
console.log('');
|
|
41
|
+
// Results or status
|
|
42
|
+
if (state.query.length < 2) {
|
|
43
|
+
console.log(chalk.dim(' Start typing to search (min 2 chars)'));
|
|
44
|
+
}
|
|
45
|
+
else if (state.loading) {
|
|
46
|
+
console.log(chalk.dim(' Searching...'));
|
|
47
|
+
}
|
|
48
|
+
else if (state.results.length === 0) {
|
|
49
|
+
console.log(chalk.dim(' No skills found'));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const displayCount = Math.min(state.results.length, 10);
|
|
53
|
+
for (let i = 0; i < displayCount; i++) {
|
|
54
|
+
const skill = state.results[i];
|
|
55
|
+
const isSelected = i === state.selectedIndex;
|
|
56
|
+
const prefix = isSelected ? chalk.cyan('❯') : ' ';
|
|
57
|
+
const name = isSelected
|
|
58
|
+
? chalk.bold.white(skill.name)
|
|
59
|
+
: skill.name;
|
|
60
|
+
const author = chalk.dim(`@${skill.author}`);
|
|
61
|
+
const stars = chalk.yellow(`★${skill.stars.toLocaleString()}`);
|
|
62
|
+
console.log(` ${prefix} ${name} ${author} ${stars}`);
|
|
63
|
+
// Show description for selected item
|
|
64
|
+
if (isSelected && skill.description) {
|
|
65
|
+
const desc = skill.description.length > 70
|
|
66
|
+
? skill.description.slice(0, 67) + '...'
|
|
67
|
+
: skill.description;
|
|
68
|
+
console.log(chalk.dim(` ${desc}`));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (state.results.length > 10) {
|
|
72
|
+
console.log('');
|
|
73
|
+
console.log(chalk.dim(` ... and ${state.results.length - 10} more results`));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Search the API
|
|
79
|
+
*/
|
|
80
|
+
async function search(query) {
|
|
81
|
+
if (query.length < 2) {
|
|
82
|
+
state.results = [];
|
|
83
|
+
render();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
state.loading = true;
|
|
87
|
+
render();
|
|
88
|
+
try {
|
|
89
|
+
const url = `${API_URL}?search=${encodeURIComponent(query)}&limit=20&sortBy=stars`;
|
|
90
|
+
const response = await fetch(url);
|
|
91
|
+
const data = await response.json();
|
|
92
|
+
const apiData = data;
|
|
93
|
+
state.results = (apiData.skills || []).map((s) => ({
|
|
94
|
+
name: s.name,
|
|
95
|
+
scopedName: s.scopedName || `@${s.author}/${s.name}`,
|
|
96
|
+
description: s.description || '',
|
|
97
|
+
author: s.author,
|
|
98
|
+
stars: s.stars || 0,
|
|
99
|
+
githubUrl: s.githubUrl || s.github_url || ''
|
|
100
|
+
}));
|
|
101
|
+
state.selectedIndex = 0;
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
state.results = [];
|
|
105
|
+
}
|
|
106
|
+
state.loading = false;
|
|
107
|
+
render();
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Trigger debounced search
|
|
111
|
+
*/
|
|
112
|
+
function triggerSearch() {
|
|
113
|
+
if (debounceTimer)
|
|
114
|
+
clearTimeout(debounceTimer);
|
|
115
|
+
render();
|
|
116
|
+
debounceTimer = setTimeout(() => search(state.query), 200);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Cleanup terminal state
|
|
120
|
+
*/
|
|
121
|
+
function cleanup() {
|
|
122
|
+
process.stdin.removeListener('keypress', handleKeypress);
|
|
123
|
+
if (process.stdin.isTTY) {
|
|
124
|
+
process.stdin.setRawMode(false);
|
|
125
|
+
}
|
|
126
|
+
process.stdout.write('\x1b[?25h'); // Show cursor
|
|
127
|
+
console.clear();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Handle keypress events
|
|
131
|
+
*/
|
|
132
|
+
function handleKeypress(_char, key) {
|
|
133
|
+
if (!key)
|
|
134
|
+
return;
|
|
135
|
+
// Escape or Ctrl+C to cancel
|
|
136
|
+
if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {
|
|
137
|
+
cleanup();
|
|
138
|
+
resolvePromise(null);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// Enter to select
|
|
142
|
+
if (key.name === 'return' && state.results.length > 0) {
|
|
143
|
+
cleanup();
|
|
144
|
+
resolvePromise(state.results[state.selectedIndex]);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
// Up arrow
|
|
148
|
+
if (key.name === 'up') {
|
|
149
|
+
state.selectedIndex = Math.max(0, state.selectedIndex - 1);
|
|
150
|
+
render();
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Down arrow
|
|
154
|
+
if (key.name === 'down') {
|
|
155
|
+
state.selectedIndex = Math.min(state.results.length - 1, state.selectedIndex + 1);
|
|
156
|
+
render();
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Backspace
|
|
160
|
+
if (key.name === 'backspace') {
|
|
161
|
+
state.query = state.query.slice(0, -1);
|
|
162
|
+
triggerSearch();
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Regular character input
|
|
166
|
+
if (key.sequence && key.sequence.length === 1 && !key.ctrl && !key.meta) {
|
|
167
|
+
state.query += key.sequence;
|
|
168
|
+
triggerSearch();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Promise to return result
|
|
172
|
+
let resolvePromise;
|
|
173
|
+
const promise = new Promise((resolve) => {
|
|
174
|
+
resolvePromise = resolve;
|
|
175
|
+
});
|
|
176
|
+
// Start listening for keypresses
|
|
177
|
+
process.stdin.on('keypress', handleKeypress);
|
|
178
|
+
// Initial render
|
|
179
|
+
if (initialQuery) {
|
|
180
|
+
triggerSearch();
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
render();
|
|
184
|
+
}
|
|
185
|
+
return promise;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Simple non-interactive search for --json mode
|
|
189
|
+
*/
|
|
190
|
+
export async function searchSkillsAPI(query, options = {}) {
|
|
191
|
+
const limit = options.limit || 20;
|
|
192
|
+
const sortBy = options.sortBy || 'stars';
|
|
193
|
+
try {
|
|
194
|
+
const url = `${API_URL}?search=${encodeURIComponent(query)}&limit=${limit}&sortBy=${sortBy}`;
|
|
195
|
+
const response = await fetch(url);
|
|
196
|
+
const data = await response.json();
|
|
197
|
+
const apiData = data;
|
|
198
|
+
return (apiData.skills || []).map((s) => ({
|
|
199
|
+
name: s.name,
|
|
200
|
+
scopedName: s.scopedName || `@${s.author}/${s.name}`,
|
|
201
|
+
description: s.description || '',
|
|
202
|
+
author: s.author,
|
|
203
|
+
stars: s.stars || 0,
|
|
204
|
+
githubUrl: s.githubUrl || s.github_url || ''
|
|
205
|
+
}));
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=fzf-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fzf-search.js","sourceRoot":"","sources":["../../src/cli/fzf-search.ts"],"names":[],"mappings":"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"}
|