@supertiny99/easy-skill 1.0.1

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.
@@ -0,0 +1,618 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.quickSelect = quickSelect;
7
+ const prompts_1 = __importDefault(require("prompts"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const downloader_1 = require("../lib/skill/downloader");
12
+ const linker_1 = require("../lib/skill/linker");
13
+ const explorer_1 = require("../lib/skill/explorer");
14
+ const SKILLS_DIR = 'skills';
15
+ async function quickSelect() {
16
+ const { action } = await (0, prompts_1.default)({
17
+ type: 'select',
18
+ name: 'action',
19
+ message: 'What would you like to do?',
20
+ choices: [
21
+ { title: 'šŸ“„ Download skill', value: 'download' },
22
+ { title: 'šŸ”— Link skill to IDE', value: 'link' },
23
+ { title: 'šŸ—‘ļø Unlink skill from IDE', value: 'unlink' },
24
+ { title: 'šŸ“‹ List skills', value: 'list' },
25
+ { title: 'āŒ Remove skill', value: 'remove' },
26
+ { title: '🚪 Exit', value: 'exit' }
27
+ ]
28
+ });
29
+ if (!action || action === 'exit')
30
+ return;
31
+ switch (action) {
32
+ case 'download':
33
+ await downloadAction();
34
+ break;
35
+ case 'link':
36
+ await linkAction();
37
+ break;
38
+ case 'unlink':
39
+ await unlinkAction();
40
+ break;
41
+ case 'list':
42
+ await listAction();
43
+ break;
44
+ case 'remove':
45
+ await removeAction();
46
+ break;
47
+ }
48
+ }
49
+ async function downloadAction() {
50
+ const { sourceType } = await (0, prompts_1.default)({
51
+ type: 'select',
52
+ name: 'sourceType',
53
+ message: 'Select source type:',
54
+ choices: [
55
+ { title: 'šŸ™ Git repository (smart explore)', value: 'git' },
56
+ { title: 'šŸ“ Local directory', value: 'local' }
57
+ ]
58
+ });
59
+ if (!sourceType)
60
+ return;
61
+ if (sourceType === 'git') {
62
+ await downloadFromGitAction();
63
+ }
64
+ else {
65
+ await downloadFromLocalAction();
66
+ }
67
+ }
68
+ async function downloadFromGitAction() {
69
+ // Step 1: Get Git URL
70
+ const { url } = await (0, prompts_1.default)({
71
+ type: 'text',
72
+ name: 'url',
73
+ message: 'Git repository URL:',
74
+ validate: (val) => val.trim().length > 0 || 'URL is required'
75
+ });
76
+ if (!url)
77
+ return;
78
+ // Step 2: Fetch and select branch
79
+ console.log(chalk_1.default.blue('\nšŸ” Fetching branches...'));
80
+ let selectedBranch;
81
+ try {
82
+ const branches = await (0, explorer_1.getRemoteBranches)(url);
83
+ if (branches.length > 1) {
84
+ const { branch } = await (0, prompts_1.default)({
85
+ type: 'select',
86
+ name: 'branch',
87
+ message: 'Select branch:',
88
+ choices: branches.map(b => ({
89
+ title: b.isDefault ? `⭐ ${b.name} (default)` : ` ${b.name}`,
90
+ value: b.name
91
+ }))
92
+ });
93
+ if (!branch)
94
+ return;
95
+ selectedBranch = branch;
96
+ }
97
+ else if (branches.length === 1) {
98
+ selectedBranch = branches[0].name;
99
+ console.log(chalk_1.default.gray(` Using branch: ${selectedBranch}`));
100
+ }
101
+ }
102
+ catch (err) {
103
+ console.log(chalk_1.default.yellow(` Could not fetch branches: ${err.message}`));
104
+ console.log(chalk_1.default.gray(' Will use default branch'));
105
+ }
106
+ // Step 3: Explore repository and find skills
107
+ console.log(chalk_1.default.blue('\nšŸ” Exploring repository...'));
108
+ let exploreResult;
109
+ try {
110
+ exploreResult = await (0, explorer_1.exploreRepository)(url, selectedBranch);
111
+ }
112
+ catch (err) {
113
+ console.error(chalk_1.default.red(`Error: ${err.message}`));
114
+ return;
115
+ }
116
+ if (exploreResult.skills.length === 0) {
117
+ console.log(chalk_1.default.yellow(' No skill candidates found in repository'));
118
+ await (0, explorer_1.cleanupExplore)(exploreResult.tempPath);
119
+ // Fallback to manual input
120
+ const { manualInput } = await (0, prompts_1.default)({
121
+ type: 'confirm',
122
+ name: 'manualInput',
123
+ message: 'Enter skill path manually?',
124
+ initial: true
125
+ });
126
+ if (manualInput) {
127
+ await downloadFromGitManual(url, selectedBranch);
128
+ }
129
+ return;
130
+ }
131
+ // Step 4: Let user select skill(s) - multiselect with toggle all
132
+ console.log(chalk_1.default.green(` Found ${exploreResult.skills.length} skill candidate(s)`));
133
+ console.log(chalk_1.default.gray(' Press [a] to toggle all, [space] to select, [enter] to confirm\n'));
134
+ const skillChoices = exploreResult.skills.map(s => ({
135
+ title: s.hasSkillFile ? `✨ ${s.name}` : `šŸ“ ${s.name}`,
136
+ description: s.description || `Path: ${s.path}`,
137
+ value: s,
138
+ selected: false
139
+ }));
140
+ const { selectedSkills } = await (0, prompts_1.default)({
141
+ type: 'multiselect',
142
+ name: 'selectedSkills',
143
+ message: 'Select skills to download:',
144
+ choices: skillChoices,
145
+ instructions: false,
146
+ hint: '- [space] select, [a] toggle all, [enter] confirm',
147
+ onState: (state) => {
148
+ // Handle 'a' key for toggle all
149
+ if (state.value && state._) {
150
+ // This is handled by the prompt internally for some versions
151
+ }
152
+ }
153
+ });
154
+ if (!selectedSkills || selectedSkills.length === 0) {
155
+ console.log(chalk_1.default.yellow('No skills selected'));
156
+ await (0, explorer_1.cleanupExplore)(exploreResult.tempPath);
157
+ return;
158
+ }
159
+ const targetDir = path_1.default.join(process.cwd(), SKILLS_DIR);
160
+ // Step 5: Pre-check for conflicts and let user resolve
161
+ const skillsToInstall = [];
162
+ const existingSkills = [];
163
+ for (const skill of selectedSkills) {
164
+ if (await (0, downloader_1.skillExists)(targetDir, skill.name)) {
165
+ existingSkills.push(skill);
166
+ }
167
+ else {
168
+ skillsToInstall.push({ skill, finalId: skill.name });
169
+ }
170
+ }
171
+ // Handle conflicts if any
172
+ if (existingSkills.length > 0) {
173
+ console.log(chalk_1.default.yellow(`\n⚠ ${existingSkills.length} skill(s) already exist:`));
174
+ existingSkills.forEach((s) => console.log(chalk_1.default.gray(` - ${s.name}`)));
175
+ const { conflictAction } = await (0, prompts_1.default)({
176
+ type: 'select',
177
+ name: 'conflictAction',
178
+ message: 'How to handle existing skills?',
179
+ choices: [
180
+ { title: 'šŸ”„ Overwrite all', value: 'overwrite' },
181
+ { title: 'āœļø Rename conflicting skills', value: 'rename' },
182
+ { title: 'ā­ļø Skip existing, install new only', value: 'skip' },
183
+ { title: 'ā†©ļø Go back and reselect', value: 'reselect' },
184
+ { title: 'āŒ Cancel', value: 'cancel' }
185
+ ]
186
+ });
187
+ if (!conflictAction || conflictAction === 'cancel') {
188
+ await (0, explorer_1.cleanupExplore)(exploreResult.tempPath);
189
+ return;
190
+ }
191
+ if (conflictAction === 'reselect') {
192
+ // Recursive call to reselect
193
+ return downloadFromGitAction();
194
+ }
195
+ if (conflictAction === 'overwrite') {
196
+ for (const skill of existingSkills) {
197
+ skillsToInstall.push({ skill, finalId: skill.name });
198
+ }
199
+ }
200
+ else if (conflictAction === 'rename') {
201
+ for (const skill of existingSkills) {
202
+ const { newName } = await (0, prompts_1.default)({
203
+ type: 'text',
204
+ name: 'newName',
205
+ message: `Rename "${skill.name}" to:`,
206
+ initial: `${skill.name}-new`,
207
+ validate: async (val) => {
208
+ if (!val.trim())
209
+ return 'Name is required';
210
+ if (await (0, downloader_1.skillExists)(targetDir, val.trim()))
211
+ return `"${val}" also exists`;
212
+ return true;
213
+ }
214
+ });
215
+ if (newName) {
216
+ skillsToInstall.push({ skill, finalId: newName.trim() });
217
+ }
218
+ }
219
+ }
220
+ // 'skip' - existing skills not added to skillsToInstall
221
+ }
222
+ if (skillsToInstall.length === 0) {
223
+ console.log(chalk_1.default.yellow('\nNo skills to install'));
224
+ await (0, explorer_1.cleanupExplore)(exploreResult.tempPath);
225
+ return;
226
+ }
227
+ console.log(chalk_1.default.blue(`\nšŸ“¦ Installing ${skillsToInstall.length} skill(s)...`));
228
+ const installedSkills = [];
229
+ // Step 6: Install each skill
230
+ for (const { skill, finalId } of skillsToInstall) {
231
+ console.log(chalk_1.default.gray(` Installing "${finalId}"...`));
232
+ try {
233
+ const destPath = await (0, explorer_1.copySkillFromExplore)(exploreResult.tempPath, skill.path, targetDir, finalId);
234
+ console.log(chalk_1.default.green(` āœ“ ${finalId}`));
235
+ installedSkills.push({ path: destPath, id: finalId });
236
+ }
237
+ catch (err) {
238
+ console.error(chalk_1.default.red(` āœ— ${finalId}: ${err.message}`));
239
+ }
240
+ }
241
+ // Cleanup temp directory
242
+ await (0, explorer_1.cleanupExplore)(exploreResult.tempPath);
243
+ if (installedSkills.length === 0) {
244
+ console.log(chalk_1.default.yellow('\nNo skills were installed'));
245
+ return;
246
+ }
247
+ console.log(chalk_1.default.green(`\nāœ“ Installed ${installedSkills.length} skill(s)`));
248
+ // Ask about symlinks for all installed skills
249
+ const { createLinks } = await (0, prompts_1.default)({
250
+ type: 'confirm',
251
+ name: 'createLinks',
252
+ message: 'Create symlinks to IDE skill directories?',
253
+ initial: true
254
+ });
255
+ if (createLinks) {
256
+ const { ides } = await (0, prompts_1.default)({
257
+ type: 'multiselect',
258
+ name: 'ides',
259
+ message: 'Select IDEs to link:',
260
+ choices: linker_1.SUPPORTED_IDES.map(ide => ({
261
+ title: ide === 'claude' ? 'šŸ¤– Claude (.claude/skills)' : 'šŸš€ Trae (.trae/skills)',
262
+ value: ide,
263
+ selected: true
264
+ })),
265
+ instructions: false,
266
+ hint: '- Space to select. Return to submit'
267
+ });
268
+ if (ides && ides.length > 0) {
269
+ for (const { path: skillPath, id: skillId } of installedSkills) {
270
+ for (const ide of ides) {
271
+ try {
272
+ await (0, linker_1.linkSkillToIDE)(skillPath, skillId, ide);
273
+ console.log(chalk_1.default.green(` āœ“ ${skillId} -> ${ide}`));
274
+ }
275
+ catch (err) {
276
+ console.error(chalk_1.default.red(` āœ— ${skillId} -> ${ide}: ${err.message}`));
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ }
283
+ async function downloadFromGitManual(url, branch) {
284
+ const answers = await (0, prompts_1.default)([
285
+ {
286
+ type: 'text',
287
+ name: 'subdir',
288
+ message: 'Subdirectory (optional, for monorepos):'
289
+ },
290
+ {
291
+ type: 'text',
292
+ name: 'skillId',
293
+ message: 'Skill ID (folder name):',
294
+ validate: (val) => val.trim().length > 0 || 'Skill ID is required'
295
+ }
296
+ ]);
297
+ if (!answers.skillId)
298
+ return;
299
+ const source = {
300
+ type: 'git',
301
+ url,
302
+ branch: branch || undefined,
303
+ subdir: answers.subdir || undefined
304
+ };
305
+ const targetDir = path_1.default.join(process.cwd(), SKILLS_DIR);
306
+ if (await (0, downloader_1.skillExists)(targetDir, answers.skillId)) {
307
+ const { overwrite } = await (0, prompts_1.default)({
308
+ type: 'confirm',
309
+ name: 'overwrite',
310
+ message: `Skill "${answers.skillId}" already exists. Overwrite?`,
311
+ initial: false
312
+ });
313
+ if (!overwrite) {
314
+ console.log(chalk_1.default.yellow('Cancelled'));
315
+ return;
316
+ }
317
+ }
318
+ console.log(chalk_1.default.blue(`\nDownloading skill "${answers.skillId}"...`));
319
+ try {
320
+ const skill = await (0, downloader_1.downloadSkill)(source, targetDir, answers.skillId);
321
+ console.log(chalk_1.default.green(`āœ“ Skill downloaded to: ${skill.localPath}`));
322
+ const { createLinks } = await (0, prompts_1.default)({
323
+ type: 'confirm',
324
+ name: 'createLinks',
325
+ message: 'Create symlinks to IDE skill directories?',
326
+ initial: true
327
+ });
328
+ if (createLinks) {
329
+ await createLinksForSkill(skill.localPath, answers.skillId);
330
+ }
331
+ }
332
+ catch (err) {
333
+ console.error(chalk_1.default.red(`Error: ${err.message}`));
334
+ }
335
+ }
336
+ async function downloadFromLocalAction() {
337
+ const answers = await (0, prompts_1.default)([
338
+ {
339
+ type: 'text',
340
+ name: 'path',
341
+ message: 'Local path:',
342
+ validate: (val) => val.trim().length > 0 || 'Path is required'
343
+ },
344
+ {
345
+ type: 'text',
346
+ name: 'skillId',
347
+ message: 'Skill ID (folder name):',
348
+ validate: (val) => val.trim().length > 0 || 'Skill ID is required'
349
+ }
350
+ ]);
351
+ if (!answers.path || !answers.skillId)
352
+ return;
353
+ const source = { type: 'local', url: answers.path };
354
+ const targetDir = path_1.default.join(process.cwd(), SKILLS_DIR);
355
+ if (await (0, downloader_1.skillExists)(targetDir, answers.skillId)) {
356
+ const { overwrite } = await (0, prompts_1.default)({
357
+ type: 'confirm',
358
+ name: 'overwrite',
359
+ message: `Skill "${answers.skillId}" already exists. Overwrite?`,
360
+ initial: false
361
+ });
362
+ if (!overwrite) {
363
+ console.log(chalk_1.default.yellow('Cancelled'));
364
+ return;
365
+ }
366
+ }
367
+ console.log(chalk_1.default.blue(`\nDownloading skill "${answers.skillId}"...`));
368
+ try {
369
+ const skill = await (0, downloader_1.downloadSkill)(source, targetDir, answers.skillId);
370
+ console.log(chalk_1.default.green(`āœ“ Skill downloaded to: ${skill.localPath}`));
371
+ const { createLinks } = await (0, prompts_1.default)({
372
+ type: 'confirm',
373
+ name: 'createLinks',
374
+ message: 'Create symlinks to IDE skill directories?',
375
+ initial: true
376
+ });
377
+ if (createLinks) {
378
+ await createLinksForSkill(skill.localPath, answers.skillId);
379
+ }
380
+ }
381
+ catch (err) {
382
+ console.error(chalk_1.default.red(`Error: ${err.message}`));
383
+ }
384
+ }
385
+ async function createLinksForSkill(skillPath, skillId) {
386
+ const { ides } = await (0, prompts_1.default)({
387
+ type: 'multiselect',
388
+ name: 'ides',
389
+ message: 'Select IDEs to link:',
390
+ choices: linker_1.SUPPORTED_IDES.map(ide => ({
391
+ title: ide === 'claude' ? 'šŸ¤– Claude (.claude/skills)' : 'šŸš€ Trae (.trae/skills)',
392
+ value: ide,
393
+ selected: true
394
+ })),
395
+ instructions: false,
396
+ hint: '- Space to select. Return to submit'
397
+ });
398
+ if (!ides || ides.length === 0) {
399
+ console.log(chalk_1.default.yellow('No IDEs selected'));
400
+ return;
401
+ }
402
+ for (const ide of ides) {
403
+ try {
404
+ const link = await (0, linker_1.linkSkillToIDE)(skillPath, skillId, ide);
405
+ console.log(chalk_1.default.green(`āœ“ Linked to ${ide}: ${link.targetPath}`));
406
+ }
407
+ catch (err) {
408
+ console.error(chalk_1.default.red(`āœ— Failed to link to ${ide}: ${err.message}`));
409
+ }
410
+ }
411
+ }
412
+ async function linkAction() {
413
+ const targetDir = path_1.default.join(process.cwd(), SKILLS_DIR);
414
+ const skills = await (0, downloader_1.listLocalSkills)(targetDir);
415
+ if (skills.length === 0) {
416
+ console.log(chalk_1.default.yellow('No skills found. Download a skill first.'));
417
+ return;
418
+ }
419
+ console.log(chalk_1.default.gray(' Press [a] to toggle all, [space] to select, [enter] to confirm\n'));
420
+ const { selectedSkills } = await (0, prompts_1.default)({
421
+ type: 'multiselect',
422
+ name: 'selectedSkills',
423
+ message: 'Select skills to link:',
424
+ choices: skills.map(s => ({ title: `šŸ“¦ ${s}`, value: s, selected: false })),
425
+ instructions: false,
426
+ hint: '- [space] select, [a] toggle all, [enter] confirm'
427
+ });
428
+ if (!selectedSkills || selectedSkills.length === 0) {
429
+ console.log(chalk_1.default.yellow('No skills selected'));
430
+ return;
431
+ }
432
+ // Select IDEs
433
+ const { ides } = await (0, prompts_1.default)({
434
+ type: 'multiselect',
435
+ name: 'ides',
436
+ message: 'Select IDEs to link:',
437
+ choices: linker_1.SUPPORTED_IDES.map(ide => ({
438
+ title: ide === 'claude' ? 'šŸ¤– Claude (.claude/skills)' : 'šŸš€ Trae (.trae/skills)',
439
+ value: ide,
440
+ selected: true
441
+ })),
442
+ instructions: false,
443
+ hint: '- [space] select, [a] toggle all, [enter] confirm'
444
+ });
445
+ if (!ides || ides.length === 0) {
446
+ console.log(chalk_1.default.yellow('No IDEs selected'));
447
+ return;
448
+ }
449
+ console.log(chalk_1.default.blue(`\nšŸ”— Linking ${selectedSkills.length} skill(s) to ${ides.length} IDE(s)...`));
450
+ for (const skillId of selectedSkills) {
451
+ const skillPath = path_1.default.join(targetDir, skillId);
452
+ for (const ide of ides) {
453
+ try {
454
+ await (0, linker_1.linkSkillToIDE)(skillPath, skillId, ide);
455
+ console.log(chalk_1.default.green(` āœ“ ${skillId} -> ${ide}`));
456
+ }
457
+ catch (err) {
458
+ console.error(chalk_1.default.red(` āœ— ${skillId} -> ${ide}: ${err.message}`));
459
+ }
460
+ }
461
+ }
462
+ console.log(chalk_1.default.green(`\nāœ“ Linked ${selectedSkills.length} skill(s)`));
463
+ }
464
+ async function unlinkAction() {
465
+ // Select IDEs first
466
+ const { ides } = await (0, prompts_1.default)({
467
+ type: 'multiselect',
468
+ name: 'ides',
469
+ message: 'Select IDEs to unlink from:',
470
+ choices: linker_1.SUPPORTED_IDES.map(ide => ({
471
+ title: ide === 'claude' ? 'šŸ¤– Claude' : 'šŸš€ Trae',
472
+ value: ide,
473
+ selected: true
474
+ })),
475
+ instructions: false,
476
+ hint: '- [space] select, [a] toggle all, [enter] confirm'
477
+ });
478
+ if (!ides || ides.length === 0) {
479
+ console.log(chalk_1.default.yellow('No IDEs selected'));
480
+ return;
481
+ }
482
+ // Collect all linked skills from selected IDEs
483
+ const allLinks = [];
484
+ for (const ide of ides) {
485
+ const linkedSkills = await (0, linker_1.getLinkedSkills)(ide);
486
+ for (const link of linkedSkills) {
487
+ allLinks.push({ skillId: link.skillId, ide, sourcePath: link.sourcePath || undefined });
488
+ }
489
+ }
490
+ if (allLinks.length === 0) {
491
+ console.log(chalk_1.default.yellow('No skills linked to selected IDEs'));
492
+ return;
493
+ }
494
+ // Dedupe by skillId for display, but track which IDEs
495
+ const skillMap = new Map();
496
+ for (const link of allLinks) {
497
+ if (!skillMap.has(link.skillId)) {
498
+ skillMap.set(link.skillId, { ides: [link.ide], sourcePath: link.sourcePath });
499
+ }
500
+ else {
501
+ skillMap.get(link.skillId).ides.push(link.ide);
502
+ }
503
+ }
504
+ console.log(chalk_1.default.gray(' Press [a] to toggle all, [space] to select, [enter] to confirm\n'));
505
+ const { selectedSkills } = await (0, prompts_1.default)({
506
+ type: 'multiselect',
507
+ name: 'selectedSkills',
508
+ message: 'Select skills to unlink:',
509
+ choices: Array.from(skillMap.entries()).map(([skillId, info]) => ({
510
+ title: `šŸ”— ${skillId}`,
511
+ description: `IDEs: ${info.ides.join(', ')}`,
512
+ value: skillId,
513
+ selected: false
514
+ })),
515
+ instructions: false,
516
+ hint: '- [space] select, [a] toggle all, [enter] confirm'
517
+ });
518
+ if (!selectedSkills || selectedSkills.length === 0) {
519
+ console.log(chalk_1.default.yellow('No skills selected'));
520
+ return;
521
+ }
522
+ console.log(chalk_1.default.blue(`\nšŸ”“ Unlinking ${selectedSkills.length} skill(s)...`));
523
+ for (const skillId of selectedSkills) {
524
+ const info = skillMap.get(skillId);
525
+ if (info) {
526
+ for (const ide of info.ides) {
527
+ try {
528
+ await (0, linker_1.unlinkSkillFromIDE)(skillId, ide);
529
+ console.log(chalk_1.default.green(` āœ“ ${skillId} <- ${ide}`));
530
+ }
531
+ catch (err) {
532
+ console.error(chalk_1.default.red(` āœ— ${skillId} <- ${ide}: ${err.message}`));
533
+ }
534
+ }
535
+ }
536
+ }
537
+ console.log(chalk_1.default.green(`\nāœ“ Unlinked ${selectedSkills.length} skill(s)`));
538
+ }
539
+ async function listAction() {
540
+ const targetDir = path_1.default.join(process.cwd(), SKILLS_DIR);
541
+ const skills = await (0, downloader_1.listLocalSkills)(targetDir);
542
+ console.log(chalk_1.default.bold('\nšŸ“¦ Local Skills:'));
543
+ if (skills.length === 0) {
544
+ console.log(chalk_1.default.gray(' No skills found'));
545
+ }
546
+ else {
547
+ for (const skillId of skills) {
548
+ console.log(` - ${skillId}`);
549
+ // Check symlink status for each IDE
550
+ for (const ide of linker_1.SUPPORTED_IDES) {
551
+ const status = await (0, linker_1.checkSymlinkStatus)(skillId, ide);
552
+ if (status.exists) {
553
+ const icon = status.valid ? chalk_1.default.green('āœ“') : chalk_1.default.red('āœ—');
554
+ console.log(chalk_1.default.gray(` ${icon} ${ide}: linked`));
555
+ }
556
+ }
557
+ }
558
+ }
559
+ // Show linked skills per IDE
560
+ console.log(chalk_1.default.bold('\nšŸ”— IDE Links:'));
561
+ for (const ide of linker_1.SUPPORTED_IDES) {
562
+ const linkedSkills = await (0, linker_1.getLinkedSkills)(ide);
563
+ const ideName = ide === 'claude' ? 'Claude' : 'Trae';
564
+ console.log(chalk_1.default.cyan(` ${ideName}:`));
565
+ if (linkedSkills.length === 0) {
566
+ console.log(chalk_1.default.gray(' No skills linked'));
567
+ }
568
+ else {
569
+ for (const link of linkedSkills) {
570
+ const valid = link.sourcePath && await fs_extra_1.default.pathExists(link.sourcePath);
571
+ const icon = valid ? chalk_1.default.green('āœ“') : chalk_1.default.red('āœ—');
572
+ console.log(` ${icon} ${link.skillId}`);
573
+ if (link.sourcePath) {
574
+ console.log(chalk_1.default.gray(` -> ${link.sourcePath}`));
575
+ }
576
+ }
577
+ }
578
+ }
579
+ console.log('');
580
+ }
581
+ async function removeAction() {
582
+ const targetDir = path_1.default.join(process.cwd(), SKILLS_DIR);
583
+ const skills = await (0, downloader_1.listLocalSkills)(targetDir);
584
+ if (skills.length === 0) {
585
+ console.log(chalk_1.default.yellow('No skills found.'));
586
+ return;
587
+ }
588
+ const { skillId } = await (0, prompts_1.default)({
589
+ type: 'select',
590
+ name: 'skillId',
591
+ message: 'Select skill to remove:',
592
+ choices: skills.map(s => ({ title: `šŸ“¦ ${s}`, value: s }))
593
+ });
594
+ if (!skillId)
595
+ return;
596
+ const { confirm } = await (0, prompts_1.default)({
597
+ type: 'confirm',
598
+ name: 'confirm',
599
+ message: `Remove skill "${skillId}" and its symlinks?`,
600
+ initial: false
601
+ });
602
+ if (!confirm) {
603
+ console.log(chalk_1.default.yellow('Cancelled'));
604
+ return;
605
+ }
606
+ // Remove symlinks first
607
+ for (const ide of linker_1.SUPPORTED_IDES) {
608
+ const status = await (0, linker_1.checkSymlinkStatus)(skillId, ide);
609
+ if (status.exists) {
610
+ await (0, linker_1.unlinkSkillFromIDE)(skillId, ide);
611
+ console.log(chalk_1.default.gray(` Unlinked from ${ide}`));
612
+ }
613
+ }
614
+ // Remove skill directory
615
+ await (0, downloader_1.removeSkill)(targetDir, skillId);
616
+ console.log(chalk_1.default.green(`āœ“ Removed skill "${skillId}"`));
617
+ }
618
+ //# sourceMappingURL=quick-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-select.js","sourceRoot":"","sources":["../../src/ui/quick-select.ts"],"names":[],"mappings":"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"}