@open-skills-hub/cli 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 (57) hide show
  1. package/dist/commands/cache.d.ts +6 -0
  2. package/dist/commands/cache.d.ts.map +1 -0
  3. package/dist/commands/cache.js +145 -0
  4. package/dist/commands/cache.js.map +1 -0
  5. package/dist/commands/config.d.ts +6 -0
  6. package/dist/commands/config.d.ts.map +1 -0
  7. package/dist/commands/config.js +128 -0
  8. package/dist/commands/config.js.map +1 -0
  9. package/dist/commands/create.d.ts +7 -0
  10. package/dist/commands/create.d.ts.map +1 -0
  11. package/dist/commands/create.js +449 -0
  12. package/dist/commands/create.js.map +1 -0
  13. package/dist/commands/feedback.d.ts +6 -0
  14. package/dist/commands/feedback.d.ts.map +1 -0
  15. package/dist/commands/feedback.js +137 -0
  16. package/dist/commands/feedback.js.map +1 -0
  17. package/dist/commands/get.d.ts +6 -0
  18. package/dist/commands/get.d.ts.map +1 -0
  19. package/dist/commands/get.js +122 -0
  20. package/dist/commands/get.js.map +1 -0
  21. package/dist/commands/index.d.ts +13 -0
  22. package/dist/commands/index.d.ts.map +1 -0
  23. package/dist/commands/index.js +13 -0
  24. package/dist/commands/index.js.map +1 -0
  25. package/dist/commands/publish.d.ts +7 -0
  26. package/dist/commands/publish.d.ts.map +1 -0
  27. package/dist/commands/publish.js +593 -0
  28. package/dist/commands/publish.js.map +1 -0
  29. package/dist/commands/scan.d.ts +6 -0
  30. package/dist/commands/scan.d.ts.map +1 -0
  31. package/dist/commands/scan.js +165 -0
  32. package/dist/commands/scan.js.map +1 -0
  33. package/dist/commands/search.d.ts +6 -0
  34. package/dist/commands/search.d.ts.map +1 -0
  35. package/dist/commands/search.js +80 -0
  36. package/dist/commands/search.js.map +1 -0
  37. package/dist/commands/validate.d.ts +7 -0
  38. package/dist/commands/validate.d.ts.map +1 -0
  39. package/dist/commands/validate.js +328 -0
  40. package/dist/commands/validate.js.map +1 -0
  41. package/dist/index.d.ts +6 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +107 -0
  44. package/dist/index.js.map +1 -0
  45. package/package.json +51 -0
  46. package/src/commands/cache.ts +166 -0
  47. package/src/commands/config.ts +142 -0
  48. package/src/commands/create.ts +490 -0
  49. package/src/commands/feedback.ts +161 -0
  50. package/src/commands/get.ts +141 -0
  51. package/src/commands/index.ts +13 -0
  52. package/src/commands/publish.ts +688 -0
  53. package/src/commands/scan.ts +190 -0
  54. package/src/commands/search.ts +92 -0
  55. package/src/commands/validate.ts +391 -0
  56. package/src/index.ts +118 -0
  57. package/tsconfig.json +13 -0
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Open Skills Hub CLI - Get Command
3
+ */
4
+ import { Command } from 'commander';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import { getStorage, getConfig, parseSkillFullName, buildSkillFullName, generateUUID, now, } from '@open-skills-hub/core';
10
+ export const getCommand = new Command('get')
11
+ .description('Get skill content')
12
+ .argument('<name>', 'Skill name (e.g., code-reviewer or @scope/skill-name)')
13
+ .option('-v, --version <version>', 'Specific version')
14
+ .option('-o, --output <file>', 'Output to file')
15
+ .option('--json', 'Output as JSON')
16
+ .option('--no-cache', 'Skip cache')
17
+ .action(async (name, options) => {
18
+ const spinner = ora(`Fetching ${name}...`).start();
19
+ try {
20
+ const storage = await getStorage();
21
+ await storage.initialize();
22
+ const config = getConfig();
23
+ // Parse name
24
+ const { scope, name: skillName } = parseSkillFullName(name);
25
+ const fullName = buildSkillFullName(skillName, scope);
26
+ // Get skill
27
+ const skill = await storage.getSkillByName(fullName);
28
+ if (!skill) {
29
+ spinner.fail(`Skill '${fullName}' not found`);
30
+ process.exit(1);
31
+ }
32
+ // Get version
33
+ let version;
34
+ if (options.version) {
35
+ version = await storage.getVersion(skill.id, options.version);
36
+ if (!version) {
37
+ spinner.fail(`Version '${options.version}' not found for '${fullName}'`);
38
+ process.exit(1);
39
+ }
40
+ }
41
+ else {
42
+ version = await storage.getLatestVersion(skill.id);
43
+ if (!version) {
44
+ spinner.fail(`No versions found for '${fullName}'`);
45
+ process.exit(1);
46
+ }
47
+ }
48
+ // Record use
49
+ await storage.incrementSkillUses(skill.id);
50
+ await storage.incrementVersionUses(version.id);
51
+ const useRecord = {
52
+ id: generateUUID(),
53
+ skillId: skill.id,
54
+ versionId: version.id,
55
+ source: 'cli',
56
+ cacheHit: false,
57
+ ip: '127.0.0.1', // Local
58
+ createdAt: now(),
59
+ };
60
+ await storage.createUseRecord(useRecord);
61
+ spinner.succeed(`Fetched ${fullName}@${version.version}`);
62
+ // Output result
63
+ const content = version.content;
64
+ if (options.json) {
65
+ console.log(JSON.stringify({
66
+ skill: {
67
+ name: skill.fullName,
68
+ displayName: skill.displayName,
69
+ description: skill.description,
70
+ securityLevel: skill.securityLevel,
71
+ },
72
+ version: version.version,
73
+ content,
74
+ }, null, 2));
75
+ }
76
+ else if (options.output) {
77
+ // Write to file
78
+ const outputPath = path.resolve(options.output);
79
+ const outputContent = `---
80
+ name: ${content.frontmatter.name}
81
+ ${content.frontmatter.description ? `description: ${content.frontmatter.description}` : ''}
82
+ ${content.frontmatter.allowedTools ? `allowedTools:\n${content.frontmatter.allowedTools.map(t => ` - ${t}`).join('\n')}` : ''}
83
+ ---
84
+
85
+ ${content.markdown}`;
86
+ fs.writeFileSync(outputPath, outputContent, 'utf-8');
87
+ console.log(chalk.green(`\nSaved to ${outputPath}`));
88
+ }
89
+ else {
90
+ // Print to console
91
+ console.log('\n' + chalk.bold.blue('─'.repeat(60)));
92
+ console.log(chalk.bold.white(`${skill.displayName ?? skill.fullName}`));
93
+ console.log(chalk.gray(`v${version.version} • ${skill.description}`));
94
+ console.log(chalk.bold.blue('─'.repeat(60)) + '\n');
95
+ // Security info
96
+ const securityColor = {
97
+ safe: chalk.green,
98
+ low: chalk.blue,
99
+ medium: chalk.yellow,
100
+ high: chalk.red,
101
+ }[skill.securityLevel ?? 'safe'] ?? chalk.white;
102
+ console.log(chalk.gray('Security:'), securityColor(`${skill.securityLevel ?? 'unknown'} (score: ${skill.securityScore ?? 'N/A'})`));
103
+ // Stats
104
+ console.log(chalk.gray('Uses:'), chalk.white(skill.stats.totalUses.toString()));
105
+ console.log(chalk.gray('Rating:'), chalk.white(`${skill.rating.average}/5 (${skill.rating.count} reviews)`));
106
+ console.log();
107
+ // Frontmatter
108
+ if (content.frontmatter.allowedTools?.length) {
109
+ console.log(chalk.cyan('Allowed Tools:'), content.frontmatter.allowedTools.join(', '));
110
+ }
111
+ // Content
112
+ console.log(chalk.bold('\nContent:\n'));
113
+ console.log(content.markdown);
114
+ }
115
+ await storage.close();
116
+ }
117
+ catch (error) {
118
+ spinner.fail('Failed to get skill');
119
+ throw error;
120
+ }
121
+ });
122
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Open Skills Hub CLI - Commands Export
3
+ */
4
+ export { searchCommand } from './search.js';
5
+ export { getCommand } from './get.js';
6
+ export { publishCommand } from './publish.js';
7
+ export { validateCommand } from './validate.js';
8
+ export { createCommand } from './create.js';
9
+ export { scanCommand } from './scan.js';
10
+ export { feedbackCommand } from './feedback.js';
11
+ export { cacheCommand } from './cache.js';
12
+ export { configCommand } from './config.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Open Skills Hub CLI - Commands Export
3
+ */
4
+ export { searchCommand } from './search.js';
5
+ export { getCommand } from './get.js';
6
+ export { publishCommand } from './publish.js';
7
+ export { validateCommand } from './validate.js';
8
+ export { createCommand } from './create.js';
9
+ export { scanCommand } from './scan.js';
10
+ export { feedbackCommand } from './feedback.js';
11
+ export { cacheCommand } from './cache.js';
12
+ export { configCommand } from './config.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Open Skills Hub CLI - Publish Command
3
+ * Supports both single file and directory publishing
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare const publishCommand: Command;
7
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsNpC,eAAO,MAAM,cAAc,SAodvB,CAAC"}