agent-skills-cli 1.0.8 → 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 (142) hide show
  1. package/README.md +18 -17
  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/rule.d.ts +11 -0
  87. package/dist/cli/commands/rule.d.ts.map +1 -0
  88. package/dist/cli/commands/rule.js +230 -0
  89. package/dist/cli/commands/rule.js.map +1 -0
  90. package/dist/cli/commands/search.d.ts +6 -0
  91. package/dist/cli/commands/search.d.ts.map +1 -0
  92. package/dist/cli/commands/search.js +173 -0
  93. package/dist/cli/commands/search.js.map +1 -0
  94. package/dist/cli/commands/show.d.ts +6 -0
  95. package/dist/cli/commands/show.d.ts.map +1 -0
  96. package/dist/cli/commands/show.js +150 -0
  97. package/dist/cli/commands/show.js.map +1 -0
  98. package/dist/cli/commands/submit.d.ts +15 -0
  99. package/dist/cli/commands/submit.d.ts.map +1 -0
  100. package/dist/cli/commands/submit.js +151 -0
  101. package/dist/cli/commands/submit.js.map +1 -0
  102. package/dist/cli/commands/suggest.d.ts +11 -0
  103. package/dist/cli/commands/suggest.d.ts.map +1 -0
  104. package/dist/cli/commands/suggest.js +164 -0
  105. package/dist/cli/commands/suggest.js.map +1 -0
  106. package/dist/cli/commands/track.d.ts +11 -0
  107. package/dist/cli/commands/track.d.ts.map +1 -0
  108. package/dist/cli/commands/track.js +199 -0
  109. package/dist/cli/commands/track.js.map +1 -0
  110. package/dist/cli/commands/trigger.d.ts +11 -0
  111. package/dist/cli/commands/trigger.d.ts.map +1 -0
  112. package/dist/cli/commands/trigger.js +157 -0
  113. package/dist/cli/commands/trigger.js.map +1 -0
  114. package/dist/cli/commands/utils-commands.d.ts +9 -0
  115. package/dist/cli/commands/utils-commands.d.ts.map +1 -0
  116. package/dist/cli/commands/utils-commands.js +389 -0
  117. package/dist/cli/commands/utils-commands.js.map +1 -0
  118. package/dist/cli/commands/validate.d.ts +6 -0
  119. package/dist/cli/commands/validate.d.ts.map +1 -0
  120. package/dist/cli/commands/validate.js +40 -0
  121. package/dist/cli/commands/validate.js.map +1 -0
  122. package/dist/cli/index.d.ts +3 -0
  123. package/dist/cli/index.d.ts.map +1 -1
  124. package/dist/cli/index.js +84 -2743
  125. package/dist/cli/index.js.map +1 -1
  126. package/dist/core/audit.d.ts +24 -0
  127. package/dist/core/audit.d.ts.map +1 -0
  128. package/dist/core/audit.js +195 -0
  129. package/dist/core/audit.js.map +1 -0
  130. package/dist/core/index.d.ts +6 -0
  131. package/dist/core/index.d.ts.map +1 -1
  132. package/dist/core/index.js +6 -0
  133. package/dist/core/index.js.map +1 -1
  134. package/dist/core/scanner-rules.d.ts +58 -0
  135. package/dist/core/scanner-rules.d.ts.map +1 -0
  136. package/dist/core/scanner-rules.js +335 -0
  137. package/dist/core/scanner-rules.js.map +1 -0
  138. package/dist/core/suggest.d.ts +51 -0
  139. package/dist/core/suggest.d.ts.map +1 -0
  140. package/dist/core/suggest.js +241 -0
  141. package/dist/core/suggest.js.map +1 -0
  142. package/package.json +1 -1
@@ -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":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAiB7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAC/D,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO;SACf,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAElD,IAAI;SACC,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,mBAAmB,CAAC;SAChC,cAAc,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;SAC9D,MAAM,CAAC,sBAAsB,EAAE,UAAU,EAAE,SAAS,CAAC;SACrD,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;SACxC,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QACzC,IAAI,CAAC;YAAC,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAChI,CAAC,CAAC,CAAC;IAEP,IAAI;SACC,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,cAAc,EAAE,wBAAwB,CAAC;SAChD,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;QAC3B,IAAI,CAAC;YAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAC3H,CAAC,CAAC,CAAC;IAEP,IAAI;SACC,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QACzC,IAAI,CAAC;YAAC,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAChJ,CAAC,CAAC,CAAC;IAEP,IAAI;SACC,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,gBAAgB,CAAC;SAC7B,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QACzC,IAAI,CAAC;YAAC,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IACjJ,CAAC,CAAC,CAAC;IAEP,IAAI;SACC,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QACzC,IAAI,CAAC;YAAC,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAC1I,CAAC,CAAC,CAAC;IAEP,IAAI;SACC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,GAAG,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;QAC3B,IAAI,CAAC;YAAC,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IACpI,CAAC,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAe;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC9D,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAAC,CAAC;AAC/G,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAiB,EAAE,MAAe;IACvD,IAAI,MAAM;QAAE,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtE,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,OAAY;IAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC,CAAC;QAC7D,OAAO;IACX,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACb,IAAI;QACJ,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;QACvC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW;QAC/C,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAY;IAChC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACpC,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,IAAI,QAAQ,GAAiB,EAAE,CAAC;IAEhC,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;QACjG,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAiC,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACzD,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,OAAgB,EAAE,MAAgB;IACtE,MAAM,MAAM,GAAc,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5E,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACpD,IAAI,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YAAC,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;IACrK,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,MAAgB;IACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC9E,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3B,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,SAAiB;IACvC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAE5E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,aAAa,MAAM,WAAW,CAAC,CAAC,CAAC;AAC1F,CAAC"}
@@ -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"}
@@ -0,0 +1,150 @@
1
+ import chalk from 'chalk';
2
+ import { discoverSkills, loadSkill, listSkillResources, generateSkillsPromptXML, generateFullSkillsContext, } from '../../core/index.js';
3
+ export function registerShowCommand(program) {
4
+ // Show command
5
+ program
6
+ .command('show <name>')
7
+ .description('Show detailed information about a skill')
8
+ .action(async (name) => {
9
+ try {
10
+ const skills = await discoverSkills();
11
+ const skillRef = skills.find(s => s.name === name);
12
+ if (!skillRef) {
13
+ console.error(chalk.red(`Skill not found: ${name}`));
14
+ console.log(chalk.gray('Available skills:'), skills.map(s => s.name).join(', ') || 'none');
15
+ process.exit(1);
16
+ }
17
+ const skill = await loadSkill(skillRef.path);
18
+ if (!skill) {
19
+ console.error(chalk.red(`Could not load skill: ${name}`));
20
+ process.exit(1);
21
+ }
22
+ console.log(chalk.bold(`\n${skill.metadata.name}`));
23
+ console.log('─'.repeat(40));
24
+ console.log(chalk.cyan('Description:'), skill.metadata.description);
25
+ console.log(chalk.cyan('Path:'), skill.path);
26
+ if (skill.metadata.license) {
27
+ console.log(chalk.cyan('License:'), skill.metadata.license);
28
+ }
29
+ if (skill.metadata.compatibility) {
30
+ console.log(chalk.cyan('Compatibility:'), skill.metadata.compatibility);
31
+ }
32
+ // List resources
33
+ const resources = await listSkillResources(skill.path);
34
+ if (resources.scripts.length > 0) {
35
+ console.log(chalk.cyan('\nScripts:'));
36
+ resources.scripts.forEach(s => console.log(chalk.gray(` - ${s}`)));
37
+ }
38
+ if (resources.references.length > 0) {
39
+ console.log(chalk.cyan('\nReferences:'));
40
+ resources.references.forEach(r => console.log(chalk.gray(` - ${r}`)));
41
+ }
42
+ if (resources.assets.length > 0) {
43
+ console.log(chalk.cyan('\nAssets:'));
44
+ resources.assets.forEach(a => console.log(chalk.gray(` - ${a}`)));
45
+ }
46
+ // Body preview
47
+ const bodyLines = skill.body.split('\n').slice(0, 10);
48
+ console.log(chalk.cyan('\nInstructions (preview):'));
49
+ console.log(chalk.gray(bodyLines.join('\n')));
50
+ if (skill.body.split('\n').length > 10) {
51
+ console.log(chalk.gray('...'));
52
+ }
53
+ console.log('');
54
+ }
55
+ catch (error) {
56
+ console.error(chalk.red('Error showing skill:'), error);
57
+ process.exit(1);
58
+ }
59
+ });
60
+ // Prompt command - generate system prompt XML
61
+ program
62
+ .command('prompt')
63
+ .description('Generate system prompt XML for discovered skills')
64
+ .option('-f, --full', 'Include full skill system instructions')
65
+ .action(async (options) => {
66
+ try {
67
+ const skills = await discoverSkills();
68
+ if (skills.length === 0) {
69
+ console.log(chalk.yellow('No skills found.'));
70
+ return;
71
+ }
72
+ if (options.full) {
73
+ const context = generateFullSkillsContext(skills);
74
+ console.log(context);
75
+ }
76
+ else {
77
+ const { xml, skillCount, estimatedTokens } = generateSkillsPromptXML(skills);
78
+ console.log(xml);
79
+ console.log(chalk.gray(`\n# ${skillCount} skills, ~${estimatedTokens} tokens`));
80
+ }
81
+ }
82
+ catch (error) {
83
+ console.error(chalk.red('Error generating prompt:'), error);
84
+ process.exit(1);
85
+ }
86
+ });
87
+ // Init command - create a new skill
88
+ program
89
+ .command('init <name>')
90
+ .description('Create a new skill from template')
91
+ .option('-d, --directory <dir>', 'Directory to create skill in', './skills')
92
+ .action(async (name, options) => {
93
+ try {
94
+ const { mkdir, writeFile } = await import('fs/promises');
95
+ const { join } = await import('path');
96
+ const skillDir = join(options.directory, name);
97
+ // Create directories
98
+ await mkdir(join(skillDir, 'scripts'), { recursive: true });
99
+ await mkdir(join(skillDir, 'references'), { recursive: true });
100
+ await mkdir(join(skillDir, 'assets'), { recursive: true });
101
+ // Create SKILL.md
102
+ const skillMd = `---
103
+ name: ${name}
104
+ description: Brief description of what this skill does and when to use it.
105
+ license: MIT
106
+ metadata:
107
+ author: your-name
108
+ version: "1.0"
109
+ ---
110
+
111
+ # ${name.split('-').map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')}
112
+
113
+ ## When to use this skill
114
+
115
+ Use this skill when the user needs to...
116
+
117
+ ## Instructions
118
+
119
+ 1. First step
120
+ 2. Second step
121
+ 3. Third step
122
+
123
+ ## Examples
124
+
125
+ ### Example 1
126
+
127
+ \`\`\`
128
+ Example input or command
129
+ \`\`\`
130
+
131
+ ## Best practices
132
+
133
+ - Best practice 1
134
+ - Best practice 2
135
+ `;
136
+ await writeFile(join(skillDir, 'SKILL.md'), skillMd);
137
+ console.log(chalk.green(`✓ Created skill: ${name}`));
138
+ console.log(chalk.gray(` Path: ${skillDir}`));
139
+ console.log(chalk.gray('\nNext steps:'));
140
+ console.log(chalk.gray(' 1. Edit SKILL.md with your instructions'));
141
+ console.log(chalk.gray(' 2. Add scripts to scripts/'));
142
+ console.log(chalk.gray(' 3. Run: skills validate ' + skillDir));
143
+ }
144
+ catch (error) {
145
+ console.error(chalk.red('Error creating skill:'), error);
146
+ process.exit(1);
147
+ }
148
+ });
149
+ }
150
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/cli/commands/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Submit Command
3
+ * Submit skills to the marketplace
4
+ * (SkillKit calls this "publish submit" — we call it "submit")
5
+ */
6
+ import { Command } from 'commander';
7
+ export interface SubmitOptions {
8
+ dryRun?: boolean;
9
+ name?: string;
10
+ }
11
+ /**
12
+ * Register the submit command with commander
13
+ */
14
+ export declare function registerSubmitCommand(program: Command): void;
15
+ //# sourceMappingURL=submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/submit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc5D"}