agent-skills-cli 1.0.7 → 1.0.9

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 (158) hide show
  1. package/README.md +43 -27
  2. package/dist/cli/agents.d.ts +10 -0
  3. package/dist/cli/agents.d.ts.map +1 -0
  4. package/dist/cli/agents.js +270 -0
  5. package/dist/cli/agents.js.map +1 -0
  6. package/dist/cli/commands/audit.d.ts +11 -0
  7. package/dist/cli/commands/audit.d.ts.map +1 -0
  8. package/dist/cli/commands/audit.js +168 -0
  9. package/dist/cli/commands/audit.js.map +1 -0
  10. package/dist/cli/commands/blueprint.d.ts +11 -0
  11. package/dist/cli/commands/blueprint.d.ts.map +1 -0
  12. package/dist/cli/commands/blueprint.js +210 -0
  13. package/dist/cli/commands/blueprint.js.map +1 -0
  14. package/dist/cli/commands/bootstrap.d.ts +11 -0
  15. package/dist/cli/commands/bootstrap.d.ts.map +1 -0
  16. package/dist/cli/commands/bootstrap.js +267 -0
  17. package/dist/cli/commands/bootstrap.js.map +1 -0
  18. package/dist/cli/commands/capture.d.ts +11 -0
  19. package/dist/cli/commands/capture.d.ts.map +1 -0
  20. package/dist/cli/commands/capture.js +109 -0
  21. package/dist/cli/commands/capture.js.map +1 -0
  22. package/dist/cli/commands/ci.d.ts +11 -0
  23. package/dist/cli/commands/ci.d.ts.map +1 -0
  24. package/dist/cli/commands/ci.js +144 -0
  25. package/dist/cli/commands/ci.js.map +1 -0
  26. package/dist/cli/commands/collab.d.ts +11 -0
  27. package/dist/cli/commands/collab.d.ts.map +1 -0
  28. package/dist/cli/commands/collab.js +196 -0
  29. package/dist/cli/commands/collab.js.map +1 -0
  30. package/dist/cli/commands/convert.d.ts +11 -0
  31. package/dist/cli/commands/convert.d.ts.map +1 -0
  32. package/dist/cli/commands/convert.js +219 -0
  33. package/dist/cli/commands/convert.js.map +1 -0
  34. package/dist/cli/commands/craft.d.ts +18 -0
  35. package/dist/cli/commands/craft.d.ts.map +1 -0
  36. package/dist/cli/commands/craft.js +205 -0
  37. package/dist/cli/commands/craft.js.map +1 -0
  38. package/dist/cli/commands/export.d.ts +9 -0
  39. package/dist/cli/commands/export.d.ts.map +1 -0
  40. package/dist/cli/commands/export.js +103 -0
  41. package/dist/cli/commands/export.js.map +1 -0
  42. package/dist/cli/commands/forge.d.ts +11 -0
  43. package/dist/cli/commands/forge.d.ts.map +1 -0
  44. package/dist/cli/commands/forge.js +152 -0
  45. package/dist/cli/commands/forge.js.map +1 -0
  46. package/dist/cli/commands/grid.d.ts +11 -0
  47. package/dist/cli/commands/grid.d.ts.map +1 -0
  48. package/dist/cli/commands/grid.js +217 -0
  49. package/dist/cli/commands/grid.js.map +1 -0
  50. package/dist/cli/commands/insight.d.ts +7 -0
  51. package/dist/cli/commands/insight.d.ts.map +1 -0
  52. package/dist/cli/commands/insight.js +71 -0
  53. package/dist/cli/commands/insight.js.map +1 -0
  54. package/dist/cli/commands/install.d.ts +6 -0
  55. package/dist/cli/commands/install.d.ts.map +1 -0
  56. package/dist/cli/commands/install.js +359 -0
  57. package/dist/cli/commands/install.js.map +1 -0
  58. package/dist/cli/commands/interactive.d.ts +7 -0
  59. package/dist/cli/commands/interactive.d.ts.map +1 -0
  60. package/dist/cli/commands/interactive.js +535 -0
  61. package/dist/cli/commands/interactive.js.map +1 -0
  62. package/dist/cli/commands/list.d.ts +6 -0
  63. package/dist/cli/commands/list.d.ts.map +1 -0
  64. package/dist/cli/commands/list.js +77 -0
  65. package/dist/cli/commands/list.js.map +1 -0
  66. package/dist/cli/commands/lockspec.d.ts +11 -0
  67. package/dist/cli/commands/lockspec.d.ts.map +1 -0
  68. package/dist/cli/commands/lockspec.js +179 -0
  69. package/dist/cli/commands/lockspec.js.map +1 -0
  70. package/dist/cli/commands/marketplace.d.ts +7 -0
  71. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  72. package/dist/cli/commands/marketplace.js +417 -0
  73. package/dist/cli/commands/marketplace.js.map +1 -0
  74. package/dist/cli/commands/method.d.ts +7 -0
  75. package/dist/cli/commands/method.d.ts.map +1 -0
  76. package/dist/cli/commands/method.js +140 -0
  77. package/dist/cli/commands/method.js.map +1 -0
  78. package/dist/cli/commands/mine.d.ts +11 -0
  79. package/dist/cli/commands/mine.d.ts.map +1 -0
  80. package/dist/cli/commands/mine.js +254 -0
  81. package/dist/cli/commands/mine.js.map +1 -0
  82. package/dist/cli/commands/recall.d.ts +11 -0
  83. package/dist/cli/commands/recall.d.ts.map +1 -0
  84. package/dist/cli/commands/recall.js +201 -0
  85. package/dist/cli/commands/recall.js.map +1 -0
  86. package/dist/cli/commands/remove.d.ts +40 -0
  87. package/dist/cli/commands/remove.d.ts.map +1 -0
  88. package/dist/cli/commands/remove.js +161 -0
  89. package/dist/cli/commands/remove.js.map +1 -0
  90. package/dist/cli/commands/rule.d.ts +11 -0
  91. package/dist/cli/commands/rule.d.ts.map +1 -0
  92. package/dist/cli/commands/rule.js +230 -0
  93. package/dist/cli/commands/rule.js.map +1 -0
  94. package/dist/cli/commands/search.d.ts +6 -0
  95. package/dist/cli/commands/search.d.ts.map +1 -0
  96. package/dist/cli/commands/search.js +173 -0
  97. package/dist/cli/commands/search.js.map +1 -0
  98. package/dist/cli/commands/show.d.ts +6 -0
  99. package/dist/cli/commands/show.d.ts.map +1 -0
  100. package/dist/cli/commands/show.js +150 -0
  101. package/dist/cli/commands/show.js.map +1 -0
  102. package/dist/cli/commands/submit.d.ts +15 -0
  103. package/dist/cli/commands/submit.d.ts.map +1 -0
  104. package/dist/cli/commands/submit.js +151 -0
  105. package/dist/cli/commands/submit.js.map +1 -0
  106. package/dist/cli/commands/suggest.d.ts +11 -0
  107. package/dist/cli/commands/suggest.d.ts.map +1 -0
  108. package/dist/cli/commands/suggest.js +164 -0
  109. package/dist/cli/commands/suggest.js.map +1 -0
  110. package/dist/cli/commands/track.d.ts +11 -0
  111. package/dist/cli/commands/track.d.ts.map +1 -0
  112. package/dist/cli/commands/track.js +199 -0
  113. package/dist/cli/commands/track.js.map +1 -0
  114. package/dist/cli/commands/trigger.d.ts +11 -0
  115. package/dist/cli/commands/trigger.d.ts.map +1 -0
  116. package/dist/cli/commands/trigger.js +157 -0
  117. package/dist/cli/commands/trigger.js.map +1 -0
  118. package/dist/cli/commands/utils-commands.d.ts +9 -0
  119. package/dist/cli/commands/utils-commands.d.ts.map +1 -0
  120. package/dist/cli/commands/utils-commands.js +389 -0
  121. package/dist/cli/commands/utils-commands.js.map +1 -0
  122. package/dist/cli/commands/validate.d.ts +6 -0
  123. package/dist/cli/commands/validate.d.ts.map +1 -0
  124. package/dist/cli/commands/validate.js +40 -0
  125. package/dist/cli/commands/validate.js.map +1 -0
  126. package/dist/cli/fzf-search.d.ts +28 -0
  127. package/dist/cli/fzf-search.d.ts.map +1 -0
  128. package/dist/cli/fzf-search.js +211 -0
  129. package/dist/cli/fzf-search.js.map +1 -0
  130. package/dist/cli/index.d.ts +3 -0
  131. package/dist/cli/index.d.ts.map +1 -1
  132. package/dist/cli/index.js +87 -2537
  133. package/dist/cli/index.js.map +1 -1
  134. package/dist/core/audit.d.ts +24 -0
  135. package/dist/core/audit.d.ts.map +1 -0
  136. package/dist/core/audit.js +195 -0
  137. package/dist/core/audit.js.map +1 -0
  138. package/dist/core/index.d.ts +10 -0
  139. package/dist/core/index.d.ts.map +1 -1
  140. package/dist/core/index.js +10 -0
  141. package/dist/core/index.js.map +1 -1
  142. package/dist/core/installer.d.ts +79 -0
  143. package/dist/core/installer.d.ts.map +1 -0
  144. package/dist/core/installer.js +142 -0
  145. package/dist/core/installer.js.map +1 -0
  146. package/dist/core/scanner-rules.d.ts +58 -0
  147. package/dist/core/scanner-rules.d.ts.map +1 -0
  148. package/dist/core/scanner-rules.js +335 -0
  149. package/dist/core/scanner-rules.js.map +1 -0
  150. package/dist/core/skill-lock.d.ts +114 -0
  151. package/dist/core/skill-lock.d.ts.map +1 -0
  152. package/dist/core/skill-lock.js +133 -0
  153. package/dist/core/skill-lock.js.map +1 -0
  154. package/dist/core/suggest.d.ts +51 -0
  155. package/dist/core/suggest.d.ts.map +1 -0
  156. package/dist/core/suggest.js +241 -0
  157. package/dist/core/suggest.js.map +1 -0
  158. package/package.json +2 -2
@@ -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,11 @@
1
+ /**
2
+ * Rule Command
3
+ * Always-on coding rules that persist across sessions
4
+ * (SkillKit calls this "rules" — we call it "rule")
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Register the rule command
9
+ */
10
+ export declare function registerRuleCommand(program: Command): void;
11
+ //# sourceMappingURL=rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/rule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyD1D"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Rule Command
3
+ * Always-on coding rules that persist across sessions
4
+ * (SkillKit calls this "rules" — we call it "rule")
5
+ */
6
+ import chalk from 'chalk';
7
+ import { readFile, writeFile, mkdir } from 'fs/promises';
8
+ import { existsSync } from 'fs';
9
+ import { resolve, join } from 'path';
10
+ import { homedir } from 'os';
11
+ const GLOBAL_RULES_DIR = join(homedir(), '.agent-skills', 'rules');
12
+ const GLOBAL_RULES_FILE = join(GLOBAL_RULES_DIR, 'rules.json');
13
+ const PROJECT_RULES_FILE = '.skills-rules.json';
14
+ /**
15
+ * Register the rule command
16
+ */
17
+ export function registerRuleCommand(program) {
18
+ const rule = program
19
+ .command('rule')
20
+ .alias('rl')
21
+ .description('Manage always-on coding rules');
22
+ rule
23
+ .command('add <name>')
24
+ .description('Add a coding rule')
25
+ .requiredOption('-d, --description <desc>', 'Rule description')
26
+ .option('-c, --category <cat>', 'Category', 'general')
27
+ .option('-g, --global', 'Apply globally')
28
+ .option('--content <content>', 'Rule content/instructions')
29
+ .action(async (name, options) => {
30
+ try {
31
+ await ruleAdd(name, options);
32
+ }
33
+ catch (err) {
34
+ console.error(chalk.red('Error:'), err.message);
35
+ process.exit(1);
36
+ }
37
+ });
38
+ rule
39
+ .command('list')
40
+ .description('List all coding rules')
41
+ .option('-g, --global', 'Show global rules only')
42
+ .option('-p, --project', 'Show project rules only')
43
+ .action(async (options) => {
44
+ try {
45
+ await ruleList(options);
46
+ }
47
+ catch (err) {
48
+ console.error(chalk.red('Error:'), err.message);
49
+ process.exit(1);
50
+ }
51
+ });
52
+ rule
53
+ .command('enable <name>')
54
+ .description('Enable a rule')
55
+ .option('-g, --global', 'Target global rules')
56
+ .action(async (name, options) => {
57
+ try {
58
+ await ruleToggle(name, true, options.global);
59
+ }
60
+ catch (err) {
61
+ console.error(chalk.red('Error:'), err.message);
62
+ process.exit(1);
63
+ }
64
+ });
65
+ rule
66
+ .command('disable <name>')
67
+ .description('Disable a rule')
68
+ .option('-g, --global', 'Target global rules')
69
+ .action(async (name, options) => {
70
+ try {
71
+ await ruleToggle(name, false, options.global);
72
+ }
73
+ catch (err) {
74
+ console.error(chalk.red('Error:'), err.message);
75
+ process.exit(1);
76
+ }
77
+ });
78
+ rule
79
+ .command('remove <name>')
80
+ .description('Remove a rule')
81
+ .option('-g, --global', 'Target global rules')
82
+ .action(async (name, options) => {
83
+ try {
84
+ await ruleRemove(name, options.global);
85
+ }
86
+ catch (err) {
87
+ console.error(chalk.red('Error:'), err.message);
88
+ process.exit(1);
89
+ }
90
+ });
91
+ rule
92
+ .command('export')
93
+ .description('Export rules as a skill')
94
+ .option('-o, --output <dir>', 'Output directory', '.')
95
+ .action(async (options) => {
96
+ try {
97
+ await ruleExport(options.output);
98
+ }
99
+ catch (err) {
100
+ console.error(chalk.red('Error:'), err.message);
101
+ process.exit(1);
102
+ }
103
+ });
104
+ }
105
+ async function loadRules(global) {
106
+ const file = global ? GLOBAL_RULES_FILE : resolve(PROJECT_RULES_FILE);
107
+ if (!existsSync(file))
108
+ return { version: '1.0.0', rules: [] };
109
+ try {
110
+ return JSON.parse(await readFile(file, 'utf-8'));
111
+ }
112
+ catch {
113
+ return { version: '1.0.0', rules: [] };
114
+ }
115
+ }
116
+ async function saveRules(store, global) {
117
+ if (global)
118
+ await mkdir(GLOBAL_RULES_DIR, { recursive: true });
119
+ const file = global ? GLOBAL_RULES_FILE : resolve(PROJECT_RULES_FILE);
120
+ await writeFile(file, JSON.stringify(store, null, 2));
121
+ }
122
+ async function ruleAdd(name, options) {
123
+ const isGlobal = !!options.global;
124
+ const store = await loadRules(isGlobal);
125
+ if (store.rules.some(r => r.name === name)) {
126
+ console.error(chalk.yellow(`Rule "${name}" already exists`));
127
+ return;
128
+ }
129
+ store.rules.push({
130
+ name,
131
+ description: options.description,
132
+ scope: isGlobal ? 'global' : 'project',
133
+ category: options.category || 'general',
134
+ content: options.content || options.description,
135
+ enabled: true,
136
+ createdAt: new Date().toISOString(),
137
+ });
138
+ await saveRules(store, isGlobal);
139
+ console.log(chalk.green(`✓ Added ${isGlobal ? 'global' : 'project'} rule: ${chalk.cyan(name)}`));
140
+ }
141
+ async function ruleList(options) {
142
+ const showGlobal = !options.project;
143
+ const showProject = !options.global;
144
+ let allRules = [];
145
+ if (showGlobal) {
146
+ const global = await loadRules(true);
147
+ allRules.push(...global.rules);
148
+ }
149
+ if (showProject) {
150
+ const project = await loadRules(false);
151
+ allRules.push(...project.rules);
152
+ }
153
+ if (allRules.length === 0) {
154
+ console.log(chalk.dim('No rules configured.'));
155
+ console.log(chalk.dim(' Add one: skills rule add "no-any" -d "Never use TypeScript any type"'));
156
+ return;
157
+ }
158
+ console.log('');
159
+ console.log(chalk.bold(`📏 Coding Rules (${allRules.length})`));
160
+ console.log('');
161
+ const byCategory = {};
162
+ for (const r of allRules) {
163
+ if (!byCategory[r.category])
164
+ byCategory[r.category] = [];
165
+ byCategory[r.category].push(r);
166
+ }
167
+ for (const [cat, rules] of Object.entries(byCategory)) {
168
+ console.log(` ${chalk.bold(cat.toUpperCase())}`);
169
+ for (const r of rules) {
170
+ const status = r.enabled ? chalk.green('●') : chalk.red('○');
171
+ const scope = r.scope === 'global' ? chalk.dim(' [global]') : '';
172
+ console.log(` ${status} ${r.name}${scope} — ${chalk.dim(r.description)}`);
173
+ }
174
+ console.log('');
175
+ }
176
+ }
177
+ async function ruleToggle(name, enabled, global) {
178
+ const scopes = global !== undefined ? [!!global] : [false, true];
179
+ for (const isGlobal of scopes) {
180
+ const store = await loadRules(isGlobal);
181
+ const rule = store.rules.find(r => r.name === name);
182
+ if (rule) {
183
+ rule.enabled = enabled;
184
+ await saveRules(store, isGlobal);
185
+ console.log(chalk.green(`✓ Rule "${name}" ${enabled ? 'enabled' : 'disabled'}`));
186
+ return;
187
+ }
188
+ }
189
+ console.error(chalk.red(`Rule "${name}" not found`));
190
+ }
191
+ async function ruleRemove(name, global) {
192
+ const isGlobal = !!global;
193
+ const store = await loadRules(isGlobal);
194
+ const idx = store.rules.findIndex(r => r.name === name);
195
+ if (idx < 0) {
196
+ console.error(chalk.red(`Rule "${name}" not found`));
197
+ return;
198
+ }
199
+ store.rules.splice(idx, 1);
200
+ await saveRules(store, isGlobal);
201
+ console.log(chalk.green(`✓ Removed rule: ${name}`));
202
+ }
203
+ async function ruleExport(outputDir) {
204
+ const global = await loadRules(true);
205
+ const project = await loadRules(false);
206
+ const allRules = [...global.rules, ...project.rules].filter(r => r.enabled);
207
+ if (allRules.length === 0) {
208
+ console.log(chalk.dim('No enabled rules to export'));
209
+ return;
210
+ }
211
+ const lines = [];
212
+ lines.push('---');
213
+ lines.push('name: coding-rules');
214
+ lines.push('description: Always-on coding rules');
215
+ lines.push('---');
216
+ lines.push('');
217
+ lines.push('# Coding Rules');
218
+ lines.push('');
219
+ for (const r of allRules) {
220
+ lines.push(`## ${r.name}`);
221
+ lines.push('');
222
+ lines.push(r.content);
223
+ lines.push('');
224
+ }
225
+ const outDir = resolve(outputDir, 'coding-rules');
226
+ await mkdir(outDir, { recursive: true });
227
+ await writeFile(join(outDir, 'SKILL.md'), lines.join('\n'));
228
+ console.log(chalk.green(`✓ Exported ${allRules.length} rules to ${outDir}/SKILL.md`));
229
+ }
230
+ //# sourceMappingURL=rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.js","sourceRoot":"","sources":["../../../src/cli/commands/rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `skills search` command — Search and install skills from marketplace (67K+ skills)
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function registerSearchInstallCommand(program: Command): void;
6
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,QAgL5D"}
@@ -0,0 +1,173 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import inquirer from 'inquirer';
4
+ import { fetchSkillsForCLI, installFromGitHubUrl, searchSkills } from '../../core/index.js';
5
+ import { AGENTS } from '../agents.js';
6
+ import { fzfSearch } from '../fzf-search.js';
7
+ /** Install a skill from its database record into a target directory */
8
+ async function installSkillFromDatabase(skill, targetDir) {
9
+ const githubUrl = skill.github_url || skill.githubUrl;
10
+ if (githubUrl) {
11
+ const result = await installFromGitHubUrl(githubUrl, targetDir);
12
+ return result.path;
13
+ }
14
+ throw new Error(`No GitHub URL found for skill ${skill.name}`);
15
+ }
16
+ export function registerSearchInstallCommand(program) {
17
+ program
18
+ .command('search [query...]')
19
+ .alias('s')
20
+ .description('Search and install skills from marketplace (67K+ skills)')
21
+ .option('-l, --limit <n>', 'Maximum results to show', '20')
22
+ .option('-s, --sort <by>', 'Sort by: stars, recent, name', 'stars')
23
+ .option('-i, --interactive', 'Launch interactive FZF-style search')
24
+ .option('--json', 'Output as JSON for scripting (no interactive prompt)')
25
+ .action(async (queryParts, options) => {
26
+ try {
27
+ // Interactive FZF mode
28
+ if (options.interactive || (queryParts.length === 0 && !options.json)) {
29
+ await fzfSearch();
30
+ return;
31
+ }
32
+ const query = queryParts.join(' ');
33
+ const limit = parseInt(options.limit) || 20;
34
+ const sortBy = options.sort || 'stars';
35
+ const spinner = ora('Searching marketplace...').start();
36
+ let skills = [];
37
+ let total = 0;
38
+ try {
39
+ const result = await fetchSkillsForCLI({ search: query || undefined, limit, sortBy });
40
+ skills = result.skills;
41
+ total = result.total;
42
+ }
43
+ catch {
44
+ // Fallback to GitHub search
45
+ const results = await searchSkills(query);
46
+ skills = results.slice(0, limit);
47
+ total = results.length;
48
+ }
49
+ spinner.stop();
50
+ if (skills.length === 0) {
51
+ console.log(chalk.yellow(`\nNo skills found${query ? ` for "${query}"` : ''}.`));
52
+ return;
53
+ }
54
+ // JSON output (no interactive prompt)
55
+ if (options.json) {
56
+ console.log(JSON.stringify({ skills, total, query }, null, 2));
57
+ return;
58
+ }
59
+ console.log(chalk.bold(`\n🔍 ${total.toLocaleString()} skills found${query ? ` for "${query}"` : ''}\n`));
60
+ // Display results with install option
61
+ const choices = skills.map((skill, i) => {
62
+ const stars = skill.stars ? chalk.yellow(`⭐${skill.stars.toLocaleString()}`) : '';
63
+ const desc = skill.description ? skill.description.slice(0, 50) : '';
64
+ return {
65
+ name: `${chalk.cyan(skill.scoped_name || skill.name)} ${stars}\n ${chalk.gray(desc)}`,
66
+ value: skill,
67
+ short: skill.scoped_name || skill.name
68
+ };
69
+ });
70
+ choices.push({ name: chalk.gray('Skip'), value: null, short: 'Skip' });
71
+ const { selected } = await inquirer.prompt([{
72
+ type: 'list',
73
+ name: 'selected',
74
+ message: 'Select skill to install (or skip):',
75
+ choices,
76
+ pageSize: 15
77
+ }]);
78
+ if (!selected)
79
+ return;
80
+ // Select agents
81
+ const agentChoices = Object.entries(AGENTS).map(([key, config]) => ({
82
+ name: config.displayName,
83
+ value: key,
84
+ checked: key === 'cursor' || key === 'claude'
85
+ }));
86
+ const { agents } = await inquirer.prompt([{
87
+ type: 'checkbox',
88
+ name: 'agents',
89
+ message: 'Install to which agents?',
90
+ choices: agentChoices
91
+ }]);
92
+ if (agents.length === 0) {
93
+ console.log(chalk.yellow('No agents selected.'));
94
+ return;
95
+ }
96
+ // Select scope
97
+ const { scope } = await inquirer.prompt([{
98
+ type: 'list',
99
+ name: 'scope',
100
+ message: 'Install scope:',
101
+ choices: [
102
+ { name: 'Global (~/.agent/skills)', value: 'global' },
103
+ { name: 'Project (.agent/skills)', value: 'project' }
104
+ ]
105
+ }]);
106
+ const isGlobal = scope === 'global';
107
+ // Install the skill
108
+ const installSpinner = ora(`Installing ${selected.scoped_name || selected.name}...`).start();
109
+ try {
110
+ const { addSkillToLock, createLockEntry } = await import('../../core/index.js');
111
+ let installDir;
112
+ if (selected.github_url || selected.raw_url) {
113
+ // Install from GitHub URL
114
+ const url = selected.github_url || selected.raw_url;
115
+ for (const agent of agents) {
116
+ const config = AGENTS[agent];
117
+ const targetDir = isGlobal ? config.globalDir : config.projectDir;
118
+ const { mkdir, cp, rm } = await import('fs/promises');
119
+ const { tmpdir } = await import('os');
120
+ const { join } = await import('path');
121
+ const { exec } = await import('child_process');
122
+ const { promisify } = await import('util');
123
+ const execAsync = promisify(exec);
124
+ const tempDir = join(tmpdir(), `skill-install-${Date.now()}`);
125
+ await mkdir(tempDir, { recursive: true });
126
+ await execAsync(`git clone --depth 1 ${url} .`, { cwd: tempDir });
127
+ const skillName = selected.name || url.split('/').pop();
128
+ const skillDir = join(targetDir, skillName);
129
+ await mkdir(skillDir, { recursive: true });
130
+ await cp(tempDir, skillDir, { recursive: true });
131
+ await rm(tempDir, { recursive: true, force: true }).catch(() => { });
132
+ installDir = skillDir;
133
+ }
134
+ }
135
+ else {
136
+ // Database-based install
137
+ for (const agent of agents) {
138
+ const config = AGENTS[agent];
139
+ const targetDir = isGlobal ? config.globalDir : config.projectDir;
140
+ installDir = await installSkillFromDatabase(selected, targetDir);
141
+ }
142
+ }
143
+ // Add to lock file
144
+ const lockEntry = createLockEntry({
145
+ name: selected.name,
146
+ scopedName: selected.scoped_name || selected.name,
147
+ source: selected.github_url || selected.raw_url || `database:${selected.name}`,
148
+ sourceType: selected.github_url ? 'github' : 'database',
149
+ version: selected.version,
150
+ agents,
151
+ canonicalPath: installDir,
152
+ isGlobal,
153
+ });
154
+ await addSkillToLock(lockEntry);
155
+ installSpinner.succeed(`Installed ${selected.scoped_name || selected.name}`);
156
+ for (const agent of agents) {
157
+ const config = AGENTS[agent];
158
+ const dir = isGlobal ? config.globalDir : config.projectDir;
159
+ console.log(chalk.gray(` → ${config.displayName}: ${dir}/${selected.name}`));
160
+ }
161
+ console.log('');
162
+ }
163
+ catch (err) {
164
+ installSpinner.fail(`Failed to install: ${err.message || err}`);
165
+ }
166
+ }
167
+ catch (error) {
168
+ console.error(chalk.red('Error:'), error);
169
+ process.exit(1);
170
+ }
171
+ });
172
+ }
173
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `skills show`, `skills prompt`, and `skills init` commands
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function registerShowCommand(program: Command): void;
6
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/show.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA8JnD"}