overskill 1.0.0

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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/dist/commands/add.d.ts +3 -0
  4. package/dist/commands/add.d.ts.map +1 -0
  5. package/dist/commands/add.js +121 -0
  6. package/dist/commands/add.js.map +1 -0
  7. package/dist/commands/bundle.d.ts +3 -0
  8. package/dist/commands/bundle.d.ts.map +1 -0
  9. package/dist/commands/bundle.js +58 -0
  10. package/dist/commands/bundle.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +109 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/delete.d.ts +3 -0
  16. package/dist/commands/delete.d.ts.map +1 -0
  17. package/dist/commands/delete.js +64 -0
  18. package/dist/commands/delete.js.map +1 -0
  19. package/dist/commands/diff.d.ts +3 -0
  20. package/dist/commands/diff.d.ts.map +1 -0
  21. package/dist/commands/diff.js +93 -0
  22. package/dist/commands/diff.js.map +1 -0
  23. package/dist/commands/edit.d.ts +3 -0
  24. package/dist/commands/edit.d.ts.map +1 -0
  25. package/dist/commands/edit.js +69 -0
  26. package/dist/commands/edit.js.map +1 -0
  27. package/dist/commands/import.d.ts +3 -0
  28. package/dist/commands/import.d.ts.map +1 -0
  29. package/dist/commands/import.js +514 -0
  30. package/dist/commands/import.js.map +1 -0
  31. package/dist/commands/info.d.ts +3 -0
  32. package/dist/commands/info.d.ts.map +1 -0
  33. package/dist/commands/info.js +89 -0
  34. package/dist/commands/info.js.map +1 -0
  35. package/dist/commands/init.d.ts +3 -0
  36. package/dist/commands/init.d.ts.map +1 -0
  37. package/dist/commands/init.js +88 -0
  38. package/dist/commands/init.js.map +1 -0
  39. package/dist/commands/list.d.ts +3 -0
  40. package/dist/commands/list.d.ts.map +1 -0
  41. package/dist/commands/list.js +84 -0
  42. package/dist/commands/list.js.map +1 -0
  43. package/dist/commands/login.d.ts +3 -0
  44. package/dist/commands/login.d.ts.map +1 -0
  45. package/dist/commands/login.js +143 -0
  46. package/dist/commands/login.js.map +1 -0
  47. package/dist/commands/new.d.ts +3 -0
  48. package/dist/commands/new.d.ts.map +1 -0
  49. package/dist/commands/new.js +262 -0
  50. package/dist/commands/new.js.map +1 -0
  51. package/dist/commands/publish.d.ts +3 -0
  52. package/dist/commands/publish.d.ts.map +1 -0
  53. package/dist/commands/publish.js +215 -0
  54. package/dist/commands/publish.js.map +1 -0
  55. package/dist/commands/push.d.ts +3 -0
  56. package/dist/commands/push.d.ts.map +1 -0
  57. package/dist/commands/push.js +151 -0
  58. package/dist/commands/push.js.map +1 -0
  59. package/dist/commands/registry.d.ts +3 -0
  60. package/dist/commands/registry.d.ts.map +1 -0
  61. package/dist/commands/registry.js +169 -0
  62. package/dist/commands/registry.js.map +1 -0
  63. package/dist/commands/remove.d.ts +3 -0
  64. package/dist/commands/remove.d.ts.map +1 -0
  65. package/dist/commands/remove.js +48 -0
  66. package/dist/commands/remove.js.map +1 -0
  67. package/dist/commands/search.d.ts +3 -0
  68. package/dist/commands/search.d.ts.map +1 -0
  69. package/dist/commands/search.js +48 -0
  70. package/dist/commands/search.js.map +1 -0
  71. package/dist/commands/sync.d.ts +3 -0
  72. package/dist/commands/sync.d.ts.map +1 -0
  73. package/dist/commands/sync.js +160 -0
  74. package/dist/commands/sync.js.map +1 -0
  75. package/dist/commands/update.d.ts +3 -0
  76. package/dist/commands/update.d.ts.map +1 -0
  77. package/dist/commands/update.js +130 -0
  78. package/dist/commands/update.js.map +1 -0
  79. package/dist/commands/validate.d.ts +3 -0
  80. package/dist/commands/validate.d.ts.map +1 -0
  81. package/dist/commands/validate.js +94 -0
  82. package/dist/commands/validate.js.map +1 -0
  83. package/dist/index.d.ts +3 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +56 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/lib/api.d.ts +60 -0
  88. package/dist/lib/api.d.ts.map +1 -0
  89. package/dist/lib/api.js +340 -0
  90. package/dist/lib/api.js.map +1 -0
  91. package/dist/lib/auth.d.ts +78 -0
  92. package/dist/lib/auth.d.ts.map +1 -0
  93. package/dist/lib/auth.js +241 -0
  94. package/dist/lib/auth.js.map +1 -0
  95. package/dist/lib/config.d.ts +94 -0
  96. package/dist/lib/config.d.ts.map +1 -0
  97. package/dist/lib/config.js +294 -0
  98. package/dist/lib/config.js.map +1 -0
  99. package/dist/lib/editor.d.ts +6 -0
  100. package/dist/lib/editor.d.ts.map +1 -0
  101. package/dist/lib/editor.js +60 -0
  102. package/dist/lib/editor.js.map +1 -0
  103. package/dist/lib/fs.d.ts +74 -0
  104. package/dist/lib/fs.d.ts.map +1 -0
  105. package/dist/lib/fs.js +235 -0
  106. package/dist/lib/fs.js.map +1 -0
  107. package/dist/lib/index-gen.d.ts +18 -0
  108. package/dist/lib/index-gen.d.ts.map +1 -0
  109. package/dist/lib/index-gen.js +75 -0
  110. package/dist/lib/index-gen.js.map +1 -0
  111. package/dist/lib/local-registry/index.d.ts +15 -0
  112. package/dist/lib/local-registry/index.d.ts.map +1 -0
  113. package/dist/lib/local-registry/index.js +18 -0
  114. package/dist/lib/local-registry/index.js.map +1 -0
  115. package/dist/lib/local-registry/objects.d.ts +51 -0
  116. package/dist/lib/local-registry/objects.d.ts.map +1 -0
  117. package/dist/lib/local-registry/objects.js +148 -0
  118. package/dist/lib/local-registry/objects.js.map +1 -0
  119. package/dist/lib/local-registry/paths.d.ts +53 -0
  120. package/dist/lib/local-registry/paths.d.ts.map +1 -0
  121. package/dist/lib/local-registry/paths.js +85 -0
  122. package/dist/lib/local-registry/paths.js.map +1 -0
  123. package/dist/lib/local-registry/skills.d.ts +83 -0
  124. package/dist/lib/local-registry/skills.d.ts.map +1 -0
  125. package/dist/lib/local-registry/skills.js +261 -0
  126. package/dist/lib/local-registry/skills.js.map +1 -0
  127. package/dist/lib/local-registry/types.d.ts +79 -0
  128. package/dist/lib/local-registry/types.d.ts.map +1 -0
  129. package/dist/lib/local-registry/types.js +5 -0
  130. package/dist/lib/local-registry/types.js.map +1 -0
  131. package/dist/lib/local-registry/versions.d.ts +61 -0
  132. package/dist/lib/local-registry/versions.d.ts.map +1 -0
  133. package/dist/lib/local-registry/versions.js +163 -0
  134. package/dist/lib/local-registry/versions.js.map +1 -0
  135. package/dist/lib/lockfile.d.ts +38 -0
  136. package/dist/lib/lockfile.d.ts.map +1 -0
  137. package/dist/lib/lockfile.js +102 -0
  138. package/dist/lib/lockfile.js.map +1 -0
  139. package/dist/lib/meta-skill.d.ts +6 -0
  140. package/dist/lib/meta-skill.d.ts.map +1 -0
  141. package/dist/lib/meta-skill.js +72 -0
  142. package/dist/lib/meta-skill.js.map +1 -0
  143. package/dist/lib/semver.d.ts +63 -0
  144. package/dist/lib/semver.d.ts.map +1 -0
  145. package/dist/lib/semver.js +107 -0
  146. package/dist/lib/semver.js.map +1 -0
  147. package/dist/types.d.ts +147 -0
  148. package/dist/types.d.ts.map +1 -0
  149. package/dist/types.js +8 -0
  150. package/dist/types.js.map +1 -0
  151. package/package.json +57 -0
@@ -0,0 +1,514 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import * as yaml from 'yaml';
8
+ import * as readline from 'readline';
9
+ import * as localRegistry from '../lib/local-registry/index.js';
10
+ import * as config from '../lib/config.js';
11
+ /**
12
+ * Get common locations to scan for skills
13
+ */
14
+ function getCommonLocations(cwd) {
15
+ const home = os.homedir();
16
+ return [
17
+ // Claude Code skills directories
18
+ {
19
+ path: path.join(cwd, '.claude', 'skills'),
20
+ type: 'claude-skills',
21
+ label: 'Claude Skills (.claude/skills)',
22
+ pattern: 'skill-dirs',
23
+ },
24
+ {
25
+ path: path.join(home, '.claude', 'skills'),
26
+ type: 'claude-skills',
27
+ label: 'Claude Skills (global)',
28
+ pattern: 'skill-dirs',
29
+ },
30
+ // Generic skills directory in project root
31
+ {
32
+ path: path.join(cwd, 'skills'),
33
+ type: 'claude-skills',
34
+ label: 'Skills (./skills)',
35
+ pattern: 'skill-dirs',
36
+ },
37
+ // Claude Code commands
38
+ {
39
+ path: path.join(cwd, '.claude', 'commands'),
40
+ type: 'claude-commands',
41
+ label: 'Claude Commands (project)',
42
+ pattern: 'directory',
43
+ },
44
+ {
45
+ path: path.join(home, '.claude', 'commands'),
46
+ type: 'claude-commands',
47
+ label: 'Claude Commands (global)',
48
+ pattern: 'directory',
49
+ },
50
+ // OpenAI Codex AGENTS.md
51
+ {
52
+ path: path.join(cwd, 'AGENTS.md'),
53
+ type: 'agents-md',
54
+ label: 'OpenAI Codex (AGENTS.md)',
55
+ pattern: 'file',
56
+ },
57
+ // Cursor rules
58
+ {
59
+ path: path.join(cwd, '.cursorrules'),
60
+ type: 'cursorrules',
61
+ label: 'Cursor Rules',
62
+ pattern: 'file',
63
+ },
64
+ {
65
+ path: path.join(cwd, '.cursor', 'rules'),
66
+ type: 'cursorrules',
67
+ label: 'Cursor Rules (directory)',
68
+ pattern: 'directory',
69
+ },
70
+ ];
71
+ }
72
+ /**
73
+ * Parse YAML frontmatter from markdown content
74
+ */
75
+ function parseFrontmatter(content) {
76
+ const match = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
77
+ if (!match) {
78
+ return { frontmatter: {}, body: content };
79
+ }
80
+ try {
81
+ const frontmatter = yaml.parse(match[1]) || {};
82
+ return { frontmatter, body: match[2] };
83
+ }
84
+ catch {
85
+ return { frontmatter: {}, body: content };
86
+ }
87
+ }
88
+ /**
89
+ * Extract skill metadata from frontmatter
90
+ */
91
+ function extractMetadata(frontmatter, slug) {
92
+ const name = typeof frontmatter.name === 'string'
93
+ ? frontmatter.name
94
+ : slug.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
95
+ const description = typeof frontmatter.description === 'string'
96
+ ? frontmatter.description
97
+ : '';
98
+ let tags = [];
99
+ if (Array.isArray(frontmatter.tags)) {
100
+ tags = frontmatter.tags.filter((t) => typeof t === 'string');
101
+ }
102
+ else if (typeof frontmatter.tags === 'string') {
103
+ tags = frontmatter.tags.split(',').map(t => t.trim());
104
+ }
105
+ let compat = [];
106
+ if (Array.isArray(frontmatter.compat)) {
107
+ compat = frontmatter.compat.filter((c) => typeof c === 'string');
108
+ }
109
+ else if (typeof frontmatter.compat === 'string') {
110
+ compat = frontmatter.compat.split(',').map(c => c.trim());
111
+ }
112
+ return { name, description, tags, compat };
113
+ }
114
+ /**
115
+ * Scan a skill-dirs location (directories containing SKILL.md)
116
+ */
117
+ function scanSkillDirs(location) {
118
+ const skills = [];
119
+ if (!fs.existsSync(location.path)) {
120
+ return skills;
121
+ }
122
+ const entries = fs.readdirSync(location.path, { withFileTypes: true });
123
+ for (const entry of entries) {
124
+ if (!entry.isDirectory())
125
+ continue;
126
+ const skillPath = path.join(location.path, entry.name, 'SKILL.md');
127
+ if (!fs.existsSync(skillPath))
128
+ continue;
129
+ try {
130
+ const content = fs.readFileSync(skillPath, 'utf-8');
131
+ const { frontmatter, body } = parseFrontmatter(content);
132
+ const metadata = extractMetadata(frontmatter, entry.name);
133
+ skills.push({
134
+ slug: entry.name,
135
+ name: metadata.name,
136
+ description: metadata.description,
137
+ tags: metadata.tags,
138
+ compat: metadata.compat,
139
+ content,
140
+ sourcePath: skillPath,
141
+ sourceType: location.type,
142
+ sourceLabel: location.label,
143
+ });
144
+ }
145
+ catch (error) {
146
+ // Skip files that can't be read
147
+ }
148
+ }
149
+ return skills;
150
+ }
151
+ /**
152
+ * Scan a directory for .md files
153
+ */
154
+ function scanDirectory(location) {
155
+ const skills = [];
156
+ if (!fs.existsSync(location.path)) {
157
+ return skills;
158
+ }
159
+ const entries = fs.readdirSync(location.path, { withFileTypes: true });
160
+ for (const entry of entries) {
161
+ if (!entry.isFile() || !entry.name.endsWith('.md'))
162
+ continue;
163
+ const filePath = path.join(location.path, entry.name);
164
+ const slug = entry.name.replace(/\.md$/, '');
165
+ // Skip invalid slugs
166
+ if (!/^[a-z0-9-]+$/i.test(slug))
167
+ continue;
168
+ try {
169
+ const content = fs.readFileSync(filePath, 'utf-8');
170
+ const { frontmatter } = parseFrontmatter(content);
171
+ const metadata = extractMetadata(frontmatter, slug.toLowerCase());
172
+ skills.push({
173
+ slug: slug.toLowerCase(),
174
+ name: metadata.name,
175
+ description: metadata.description,
176
+ tags: metadata.tags,
177
+ compat: metadata.compat,
178
+ content,
179
+ sourcePath: filePath,
180
+ sourceType: location.type,
181
+ sourceLabel: location.label,
182
+ });
183
+ }
184
+ catch (error) {
185
+ // Skip files that can't be read
186
+ }
187
+ }
188
+ return skills;
189
+ }
190
+ /**
191
+ * Scan a single file
192
+ */
193
+ function scanFile(location) {
194
+ if (!fs.existsSync(location.path)) {
195
+ return [];
196
+ }
197
+ const slug = path.basename(location.path, '.md').toLowerCase().replace(/[^a-z0-9-]/g, '-');
198
+ try {
199
+ const content = fs.readFileSync(location.path, 'utf-8');
200
+ const { frontmatter } = parseFrontmatter(content);
201
+ const metadata = extractMetadata(frontmatter, slug);
202
+ return [{
203
+ slug,
204
+ name: metadata.name || location.label,
205
+ description: metadata.description,
206
+ tags: metadata.tags,
207
+ compat: metadata.compat,
208
+ content,
209
+ sourcePath: location.path,
210
+ sourceType: location.type,
211
+ sourceLabel: location.label,
212
+ }];
213
+ }
214
+ catch {
215
+ return [];
216
+ }
217
+ }
218
+ /**
219
+ * Scan all locations for skills
220
+ */
221
+ function scanAllLocations(locations) {
222
+ const allSkills = [];
223
+ for (const location of locations) {
224
+ let skills = [];
225
+ switch (location.pattern) {
226
+ case 'skill-dirs':
227
+ skills = scanSkillDirs(location);
228
+ break;
229
+ case 'directory':
230
+ skills = scanDirectory(location);
231
+ break;
232
+ case 'file':
233
+ skills = scanFile(location);
234
+ break;
235
+ }
236
+ allSkills.push(...skills);
237
+ }
238
+ // Deduplicate by slug, keeping the first occurrence
239
+ const seen = new Set();
240
+ return allSkills.filter(skill => {
241
+ if (seen.has(skill.slug)) {
242
+ return false;
243
+ }
244
+ seen.add(skill.slug);
245
+ return true;
246
+ });
247
+ }
248
+ /**
249
+ * Interactive skill selection using readline
250
+ */
251
+ async function selectSkills(skills) {
252
+ const rl = readline.createInterface({
253
+ input: process.stdin,
254
+ output: process.stdout,
255
+ });
256
+ const question = (prompt) => {
257
+ return new Promise((resolve) => {
258
+ rl.question(prompt, resolve);
259
+ });
260
+ };
261
+ console.log('');
262
+ console.log(chalk.bold('Found skills:'));
263
+ console.log('');
264
+ // Group skills by source
265
+ const bySource = new Map();
266
+ for (const skill of skills) {
267
+ const existing = bySource.get(skill.sourceLabel) || [];
268
+ existing.push(skill);
269
+ bySource.set(skill.sourceLabel, existing);
270
+ }
271
+ let index = 1;
272
+ const indexToSkill = new Map();
273
+ for (const [source, sourceSkills] of bySource) {
274
+ console.log(chalk.cyan(` ${source}:`));
275
+ for (const skill of sourceSkills) {
276
+ const alreadyExists = localRegistry.skillExists(skill.slug);
277
+ const existsMarker = alreadyExists ? chalk.yellow(' (exists)') : '';
278
+ console.log(` ${chalk.gray(`[${index}]`)} ${skill.slug}${existsMarker}`);
279
+ if (skill.description) {
280
+ console.log(` ${chalk.gray(skill.description.substring(0, 60))}${skill.description.length > 60 ? '...' : ''}`);
281
+ }
282
+ indexToSkill.set(index, skill);
283
+ index++;
284
+ }
285
+ console.log('');
286
+ }
287
+ console.log(chalk.gray('Enter skill numbers to import (comma-separated), "all" for all, or "q" to quit:'));
288
+ const answer = await question('> ');
289
+ rl.close();
290
+ if (answer.toLowerCase() === 'q' || answer.toLowerCase() === 'quit') {
291
+ return [];
292
+ }
293
+ if (answer.toLowerCase() === 'all') {
294
+ return skills;
295
+ }
296
+ // Parse comma-separated numbers and ranges
297
+ const selected = [];
298
+ const parts = answer.split(',').map(p => p.trim());
299
+ for (const part of parts) {
300
+ if (part.includes('-')) {
301
+ // Range like "1-5"
302
+ const [start, end] = part.split('-').map(n => parseInt(n.trim(), 10));
303
+ if (!isNaN(start) && !isNaN(end)) {
304
+ for (let i = start; i <= end; i++) {
305
+ const skill = indexToSkill.get(i);
306
+ if (skill && !selected.includes(skill)) {
307
+ selected.push(skill);
308
+ }
309
+ }
310
+ }
311
+ }
312
+ else {
313
+ // Single number
314
+ const num = parseInt(part, 10);
315
+ const skill = indexToSkill.get(num);
316
+ if (skill && !selected.includes(skill)) {
317
+ selected.push(skill);
318
+ }
319
+ }
320
+ }
321
+ return selected;
322
+ }
323
+ /**
324
+ * Import a single skill to the local registry
325
+ */
326
+ function importSkill(skill, options) {
327
+ const exists = localRegistry.skillExists(skill.slug);
328
+ if (exists && !options.force) {
329
+ return {
330
+ success: false,
331
+ message: `Skill '${skill.slug}' already exists. Use --force to overwrite.`,
332
+ };
333
+ }
334
+ try {
335
+ const version = '1.0.0';
336
+ localRegistry.putVersion({
337
+ slug: skill.slug,
338
+ version,
339
+ content: skill.content,
340
+ meta: {
341
+ name: skill.name,
342
+ description: skill.description || undefined,
343
+ tags: skill.tags,
344
+ compat: skill.compat,
345
+ },
346
+ provenance: {
347
+ kind: 'local',
348
+ source: `imported from ${skill.sourcePath}`,
349
+ },
350
+ });
351
+ return {
352
+ success: true,
353
+ message: `Imported ${skill.slug}@${version}`,
354
+ };
355
+ }
356
+ catch (error) {
357
+ return {
358
+ success: false,
359
+ message: `Failed to import '${skill.slug}': ${error instanceof Error ? error.message : error}`,
360
+ };
361
+ }
362
+ }
363
+ export const importCommand = new Command('import')
364
+ .description('Import skills from common AI tool locations (Claude, Cursor, Codex)')
365
+ .argument('[path]', 'Custom path to scan for skills')
366
+ .option('-f, --force', 'Overwrite existing skills')
367
+ .option('--sync', 'Run sync after importing')
368
+ .option('--dry-run', 'Show what would be imported without making changes')
369
+ .option('-y, --yes', 'Import all found skills without prompting')
370
+ .action(async (customPath, options) => {
371
+ try {
372
+ const cwd = process.cwd();
373
+ // Build list of locations to scan
374
+ let locations = getCommonLocations(cwd);
375
+ // Add custom path if provided
376
+ if (customPath) {
377
+ const fullPath = path.resolve(cwd, customPath);
378
+ if (!fs.existsSync(fullPath)) {
379
+ console.log(chalk.red(`Error: Path not found: ${fullPath}`));
380
+ process.exit(1);
381
+ }
382
+ const stat = fs.statSync(fullPath);
383
+ if (stat.isDirectory()) {
384
+ // Check if it's a skill-dirs pattern (contains subdirs with SKILL.md)
385
+ const entries = fs.readdirSync(fullPath, { withFileTypes: true });
386
+ const hasSkillDirs = entries.some(e => {
387
+ if (!e.isDirectory())
388
+ return false;
389
+ return fs.existsSync(path.join(fullPath, e.name, 'SKILL.md'));
390
+ });
391
+ locations = [{
392
+ path: fullPath,
393
+ type: 'custom',
394
+ label: `Custom (${customPath})`,
395
+ pattern: hasSkillDirs ? 'skill-dirs' : 'directory',
396
+ }];
397
+ }
398
+ else {
399
+ locations = [{
400
+ path: fullPath,
401
+ type: 'custom',
402
+ label: `Custom (${customPath})`,
403
+ pattern: 'file',
404
+ }];
405
+ }
406
+ }
407
+ // Scan for skills
408
+ const spinner = ora('Scanning for skills...').start();
409
+ const discoveredSkills = scanAllLocations(locations);
410
+ spinner.stop();
411
+ if (discoveredSkills.length === 0) {
412
+ console.log(chalk.yellow('No skills found in common locations.'));
413
+ console.log('');
414
+ console.log('Locations searched:');
415
+ for (const loc of locations) {
416
+ const exists = fs.existsSync(loc.path);
417
+ console.log(` ${exists ? chalk.green('✓') : chalk.gray('✗')} ${loc.path}`);
418
+ }
419
+ console.log('');
420
+ console.log(`Tip: Use ${chalk.cyan('skill import <path>')} to import from a custom location.`);
421
+ process.exit(0);
422
+ }
423
+ console.log(chalk.green(`Found ${discoveredSkills.length} skill(s)`));
424
+ // Select skills to import
425
+ let skillsToImport;
426
+ if (options.yes) {
427
+ skillsToImport = discoveredSkills;
428
+ }
429
+ else {
430
+ skillsToImport = await selectSkills(discoveredSkills);
431
+ }
432
+ if (skillsToImport.length === 0) {
433
+ console.log(chalk.yellow('No skills selected for import.'));
434
+ process.exit(0);
435
+ }
436
+ // Dry run mode
437
+ if (options.dryRun) {
438
+ console.log('');
439
+ console.log(chalk.cyan('Dry run - would import:'));
440
+ for (const skill of skillsToImport) {
441
+ const exists = localRegistry.skillExists(skill.slug);
442
+ const action = exists ? (options.force ? 'overwrite' : 'skip (exists)') : 'create';
443
+ console.log(` ${skill.slug} → ${action}`);
444
+ }
445
+ process.exit(0);
446
+ }
447
+ // Import skills
448
+ console.log('');
449
+ const importSpinner = ora('Importing skills...').start();
450
+ const results = [];
451
+ for (const skill of skillsToImport) {
452
+ const result = importSkill(skill, { force: options.force || false });
453
+ results.push({ skill, ...result });
454
+ }
455
+ importSpinner.stop();
456
+ // Show results
457
+ const successful = results.filter(r => r.success);
458
+ const failed = results.filter(r => !r.success);
459
+ if (successful.length > 0) {
460
+ console.log(chalk.green(`✓ Imported ${successful.length} skill(s):`));
461
+ for (const r of successful) {
462
+ console.log(` ${chalk.cyan(r.skill.slug)}`);
463
+ }
464
+ }
465
+ if (failed.length > 0) {
466
+ console.log('');
467
+ console.log(chalk.yellow(`⚠ Skipped ${failed.length} skill(s):`));
468
+ for (const r of failed) {
469
+ console.log(` ${r.skill.slug}: ${r.message}`);
470
+ }
471
+ }
472
+ // Add to project
473
+ if (successful.length > 0) {
474
+ if (!config.configExists()) {
475
+ console.log('');
476
+ console.log(chalk.yellow('Warning: No .skills.yaml found. Run `skill init` first to add skills to project.'));
477
+ }
478
+ else {
479
+ const skillsConfig = config.readConfig();
480
+ let added = 0;
481
+ for (const r of successful) {
482
+ const exists = skillsConfig.skills.find(s => s.slug === r.skill.slug);
483
+ if (!exists) {
484
+ const entry = { slug: r.skill.slug };
485
+ config.addSkill(entry);
486
+ added++;
487
+ }
488
+ }
489
+ if (added > 0) {
490
+ console.log('');
491
+ console.log(chalk.green(`Added ${added} skill(s) to .skills.yaml`));
492
+ // Run sync if requested
493
+ if (options.sync) {
494
+ console.log('');
495
+ console.log('Running sync...');
496
+ const { syncCommand } = await import('./sync.js');
497
+ await syncCommand.parseAsync(['node', 'skill', 'sync']);
498
+ }
499
+ }
500
+ }
501
+ }
502
+ // Show next steps
503
+ console.log('');
504
+ console.log('Next steps:');
505
+ console.log(` ${chalk.cyan('skill sync')} Install skills to your project`);
506
+ console.log(` ${chalk.cyan('skill list --local')} View all local skills`);
507
+ console.log(` ${chalk.cyan('skill info <slug>')} View skill details`);
508
+ }
509
+ catch (error) {
510
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
511
+ process.exit(1);
512
+ }
513
+ });
514
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const infoCommand: Command;
3
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SAgGpB,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import * as localRegistry from '../lib/local-registry/index.js';
4
+ export const infoCommand = new Command('info')
5
+ .description('Show detailed information about a skill')
6
+ .argument('<slug>', 'Skill slug')
7
+ .option('-v, --version <version>', 'Show info for a specific version')
8
+ .action(async (slug, options) => {
9
+ try {
10
+ // Check if skill exists in local registry
11
+ if (!localRegistry.skillExists(slug)) {
12
+ console.log(chalk.red(`Error: Skill '${slug}' not found in local cache.`));
13
+ console.log('');
14
+ console.log('To create this skill:');
15
+ console.log(` ${chalk.cyan(`skills new ${slug}`)}`);
16
+ process.exit(1);
17
+ }
18
+ // Get skill info
19
+ const skillInfo = localRegistry.getSkillInfo(slug);
20
+ if (!skillInfo) {
21
+ console.log(chalk.red(`Error: Could not read skill '${slug}'.`));
22
+ process.exit(1);
23
+ }
24
+ const latestVersion = localRegistry.getLatestVersion(slug);
25
+ // Display info
26
+ console.log('');
27
+ console.log(chalk.bold.cyan(slug));
28
+ console.log('');
29
+ console.log(`${chalk.bold('Name:')} ${skillInfo.meta.name}`);
30
+ console.log(`${chalk.bold('Latest:')} ${latestVersion}`);
31
+ if (skillInfo.meta.description) {
32
+ console.log(`${chalk.bold('Description:')} ${skillInfo.meta.description}`);
33
+ }
34
+ if (skillInfo.meta.tags.length > 0) {
35
+ console.log(`${chalk.bold('Tags:')} ${skillInfo.meta.tags.join(', ')}`);
36
+ }
37
+ if (skillInfo.meta.compat.length > 0) {
38
+ console.log(`${chalk.bold('Compat:')} ${skillInfo.meta.compat.join(', ')}`);
39
+ }
40
+ console.log(`${chalk.bold('Updated:')} ${new Date(skillInfo.meta.updatedAt).toLocaleString()}`);
41
+ // Version history
42
+ if (skillInfo.versions.length > 0) {
43
+ console.log('');
44
+ console.log(chalk.bold('Cached Versions:'));
45
+ const versionsToShow = options.version
46
+ ? skillInfo.versions.filter((v) => v.version === options.version)
47
+ : skillInfo.versions.slice(0, 5);
48
+ if (options.version && versionsToShow.length === 0) {
49
+ console.log(chalk.yellow(` Version '${options.version}' not cached.`));
50
+ console.log(` Available: ${skillInfo.versions.map((v) => v.version).join(', ')}`);
51
+ }
52
+ else {
53
+ for (const ver of versionsToShow) {
54
+ const isLatest = ver.version === latestVersion;
55
+ const latest = isLatest ? chalk.green(' (latest)') : '';
56
+ const date = new Date(ver.createdAt).toLocaleDateString();
57
+ const provenance = ver.provenance.kind === 'local'
58
+ ? chalk.gray(` [${ver.provenance.source}]`)
59
+ : chalk.blue(` [from ${ver.provenance.source}]`);
60
+ console.log(` v${ver.version}${latest} - ${date}${provenance}`);
61
+ if (ver.changelog) {
62
+ console.log(chalk.gray(` ${ver.changelog}`));
63
+ }
64
+ }
65
+ if (!options.version && skillInfo.versions.length > 5) {
66
+ console.log(chalk.gray(` ... and ${skillInfo.versions.length - 5} more versions`));
67
+ }
68
+ }
69
+ }
70
+ // Show content preview for specific version
71
+ if (options.version) {
72
+ const versionData = localRegistry.getVersion(slug, options.version);
73
+ if (versionData) {
74
+ console.log('');
75
+ console.log(chalk.bold('Content Preview:'));
76
+ const preview = versionData.content.split('\n').slice(0, 10).join('\n');
77
+ console.log(chalk.gray(preview));
78
+ if (versionData.content.split('\n').length > 10) {
79
+ console.log(chalk.gray('...'));
80
+ }
81
+ }
82
+ }
83
+ }
84
+ catch (error) {
85
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
86
+ process.exit(1);
87
+ }
88
+ });
89
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,WAAW,SA4FpB,CAAC"}