skilldex-cli 0.1.0 → 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 (116) hide show
  1. package/README.md +147 -5
  2. package/dist/cli/commands/config.d.ts +3 -0
  3. package/dist/cli/commands/config.d.ts.map +1 -0
  4. package/dist/cli/commands/config.js +115 -0
  5. package/dist/cli/commands/config.js.map +1 -0
  6. package/dist/cli/commands/install-action.d.ts.map +1 -1
  7. package/dist/cli/commands/install-action.js +71 -0
  8. package/dist/cli/commands/install-action.js.map +1 -1
  9. package/dist/cli/commands/install.d.ts.map +1 -1
  10. package/dist/cli/commands/install.js +4 -1
  11. package/dist/cli/commands/install.js.map +1 -1
  12. package/dist/cli/commands/list-action.d.ts.map +1 -1
  13. package/dist/cli/commands/list-action.js +5 -1
  14. package/dist/cli/commands/list-action.js.map +1 -1
  15. package/dist/cli/commands/publish.d.ts.map +1 -1
  16. package/dist/cli/commands/publish.js +118 -4
  17. package/dist/cli/commands/publish.js.map +1 -1
  18. package/dist/cli/commands/search-action.d.ts +7 -0
  19. package/dist/cli/commands/search-action.d.ts.map +1 -0
  20. package/dist/cli/commands/search-action.js +61 -0
  21. package/dist/cli/commands/search-action.js.map +1 -0
  22. package/dist/cli/commands/search.d.ts +3 -0
  23. package/dist/cli/commands/search.d.ts.map +1 -0
  24. package/dist/cli/commands/search.js +14 -0
  25. package/dist/cli/commands/search.js.map +1 -0
  26. package/dist/cli/commands/skillset-init-action.d.ts +2 -0
  27. package/dist/cli/commands/skillset-init-action.d.ts.map +1 -0
  28. package/dist/cli/commands/skillset-init-action.js +65 -0
  29. package/dist/cli/commands/skillset-init-action.js.map +1 -0
  30. package/dist/cli/commands/skillset-install-action.d.ts +7 -0
  31. package/dist/cli/commands/skillset-install-action.d.ts.map +1 -0
  32. package/dist/cli/commands/skillset-install-action.js +174 -0
  33. package/dist/cli/commands/skillset-install-action.js.map +1 -0
  34. package/dist/cli/commands/skillset-list-action.d.ts +6 -0
  35. package/dist/cli/commands/skillset-list-action.d.ts.map +1 -0
  36. package/dist/cli/commands/skillset-list-action.js +46 -0
  37. package/dist/cli/commands/skillset-list-action.js.map +1 -0
  38. package/dist/cli/commands/skillset-publish-action.d.ts +7 -0
  39. package/dist/cli/commands/skillset-publish-action.d.ts.map +1 -0
  40. package/dist/cli/commands/skillset-publish-action.js +113 -0
  41. package/dist/cli/commands/skillset-publish-action.js.map +1 -0
  42. package/dist/cli/commands/skillset-uninstall-action.d.ts +6 -0
  43. package/dist/cli/commands/skillset-uninstall-action.d.ts.map +1 -0
  44. package/dist/cli/commands/skillset-uninstall-action.js +24 -0
  45. package/dist/cli/commands/skillset-uninstall-action.js.map +1 -0
  46. package/dist/cli/commands/skillset-update-action.d.ts +7 -0
  47. package/dist/cli/commands/skillset-update-action.d.ts.map +1 -0
  48. package/dist/cli/commands/skillset-update-action.js +84 -0
  49. package/dist/cli/commands/skillset-update-action.js.map +1 -0
  50. package/dist/cli/commands/skillset-validate-action.d.ts +4 -0
  51. package/dist/cli/commands/skillset-validate-action.d.ts.map +1 -0
  52. package/dist/cli/commands/skillset-validate-action.js +49 -0
  53. package/dist/cli/commands/skillset-validate-action.js.map +1 -0
  54. package/dist/cli/commands/skillset.d.ts +3 -0
  55. package/dist/cli/commands/skillset.d.ts.map +1 -0
  56. package/dist/cli/commands/skillset.js +70 -0
  57. package/dist/cli/commands/skillset.js.map +1 -0
  58. package/dist/cli/commands/update-action.d.ts +7 -0
  59. package/dist/cli/commands/update-action.d.ts.map +1 -0
  60. package/dist/cli/commands/update-action.js +65 -0
  61. package/dist/cli/commands/update-action.js.map +1 -0
  62. package/dist/cli/commands/update.d.ts +3 -0
  63. package/dist/cli/commands/update.d.ts.map +1 -0
  64. package/dist/cli/commands/update.js +13 -0
  65. package/dist/cli/commands/update.js.map +1 -0
  66. package/dist/cli/index.d.ts.map +1 -1
  67. package/dist/cli/index.js +9 -1
  68. package/dist/cli/index.js.map +1 -1
  69. package/dist/core/config.d.ts +18 -0
  70. package/dist/core/config.d.ts.map +1 -0
  71. package/dist/core/config.js +42 -0
  72. package/dist/core/config.js.map +1 -0
  73. package/dist/core/installer.d.ts +2 -0
  74. package/dist/core/installer.d.ts.map +1 -1
  75. package/dist/core/installer.js.map +1 -1
  76. package/dist/core/manifest.d.ts +3 -1
  77. package/dist/core/manifest.d.ts.map +1 -1
  78. package/dist/core/manifest.js +27 -0
  79. package/dist/core/manifest.js.map +1 -1
  80. package/dist/core/resolver.d.ts.map +1 -1
  81. package/dist/core/resolver.js +2 -0
  82. package/dist/core/resolver.js.map +1 -1
  83. package/dist/core/skillset-installer.d.ts +21 -0
  84. package/dist/core/skillset-installer.d.ts.map +1 -0
  85. package/dist/core/skillset-installer.js +116 -0
  86. package/dist/core/skillset-installer.js.map +1 -0
  87. package/dist/core/skillset-validator.d.ts +4 -0
  88. package/dist/core/skillset-validator.d.ts.map +1 -0
  89. package/dist/core/skillset-validator.js +272 -0
  90. package/dist/core/skillset-validator.js.map +1 -0
  91. package/dist/core/suggest-agent.d.ts.map +1 -1
  92. package/dist/core/suggest-agent.js +23 -22
  93. package/dist/core/suggest-agent.js.map +1 -1
  94. package/dist/mcp/server.d.ts.map +1 -1
  95. package/dist/mcp/server.js +111 -6
  96. package/dist/mcp/server.js.map +1 -1
  97. package/dist/registry/index.d.ts +2 -0
  98. package/dist/registry/index.d.ts.map +1 -1
  99. package/dist/registry/index.js +1 -1
  100. package/dist/registry/index.js.map +1 -1
  101. package/dist/registry/sources/github.d.ts.map +1 -1
  102. package/dist/registry/sources/github.js +11 -3
  103. package/dist/registry/sources/github.js.map +1 -1
  104. package/dist/registry/sources/registry.d.ts +108 -0
  105. package/dist/registry/sources/registry.d.ts.map +1 -0
  106. package/dist/registry/sources/registry.js +124 -0
  107. package/dist/registry/sources/registry.js.map +1 -0
  108. package/dist/types/manifest.d.ts +13 -0
  109. package/dist/types/manifest.d.ts.map +1 -1
  110. package/dist/types/scope.d.ts +1 -0
  111. package/dist/types/scope.d.ts.map +1 -1
  112. package/dist/types/skillset.d.ts +26 -0
  113. package/dist/types/skillset.d.ts.map +1 -0
  114. package/dist/types/skillset.js +2 -0
  115. package/dist/types/skillset.js.map +1 -0
  116. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/cli/commands/publish.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/cli/commands/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function runSearch(query: string, options: {
2
+ tier?: string;
3
+ sort: string;
4
+ limit: string;
5
+ json: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=search-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search-action.ts"],"names":[],"mappings":"AA+BA,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACrE,OAAO,CAAC,IAAI,CAAC,CAkCf"}
@@ -0,0 +1,61 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { searchRegistry } from '../../registry/sources/registry.js';
4
+ import { printJson, printError, printInfo } from '../ui/output.js';
5
+ function tierBadge(tier) {
6
+ return tier === 'verified'
7
+ ? chalk.blue('[verified]')
8
+ : chalk.dim('[community]');
9
+ }
10
+ function scoreLabel(score) {
11
+ if (score === null)
12
+ return chalk.dim('no score');
13
+ if (score >= 80)
14
+ return chalk.green(`${score}/100`);
15
+ if (score >= 50)
16
+ return chalk.yellow(`${score}/100`);
17
+ return chalk.red(`${score}/100`);
18
+ }
19
+ function renderSkillCard(skill, index) {
20
+ console.log(`\n${chalk.bold(skill.name)} ${tierBadge(skill.trust_tier)}`);
21
+ console.log(` ${skill.description}`);
22
+ console.log(` Score: ${scoreLabel(skill.score)} · Installs: ${skill.install_count} · Spec: v${skill.spec_version}`);
23
+ if (skill.tags.length > 0) {
24
+ console.log(` Tags: ${skill.tags.map(t => chalk.cyan(t)).join(', ')}`);
25
+ }
26
+ console.log(` ${chalk.dim(`skillpm install ${skill.name}`)}`);
27
+ }
28
+ export async function runSearch(query, options) {
29
+ const limit = Math.min(parseInt(options.limit, 10) || 10, 50);
30
+ const spinner = options.json ? null : ora(`Searching registry for "${query}"...`).start();
31
+ try {
32
+ const result = await searchRegistry({
33
+ q: query,
34
+ tier: options.tier,
35
+ sort: options.sort,
36
+ limit,
37
+ });
38
+ if (spinner)
39
+ spinner.stop();
40
+ if (options.json) {
41
+ printJson(result);
42
+ return;
43
+ }
44
+ if (result.skills.length === 0) {
45
+ printInfo(`No skills found for "${query}"`);
46
+ return;
47
+ }
48
+ console.log(chalk.bold(`\nFound ${result.total} skill${result.total === 1 ? '' : 's'} for "${query}" (showing ${result.skills.length})`));
49
+ for (const skill of result.skills) {
50
+ renderSkillCard(skill, 0);
51
+ }
52
+ console.log('');
53
+ }
54
+ catch (e) {
55
+ if (spinner)
56
+ spinner.fail();
57
+ printError(e instanceof Error ? e.message : String(e));
58
+ process.exit(1);
59
+ }
60
+ }
61
+ //# sourceMappingURL=search-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-action.js","sourceRoot":"","sources":["../../../src/cli/commands/search-action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerSearch(program: Command): void;
3
+ //# 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,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAYrD"}
@@ -0,0 +1,14 @@
1
+ export function registerSearch(program) {
2
+ program
3
+ .command('search <query>')
4
+ .description('Search the Skilldex registry for skills')
5
+ .option('--tier <tier>', 'Filter by trust tier: verified or community')
6
+ .option('--sort <sort>', 'Sort by: installs, score, recent, name', 'installs')
7
+ .option('--limit <n>', 'Number of results (max 50)', '10')
8
+ .option('--json', 'Output as JSON')
9
+ .action(async (query, options) => {
10
+ const { runSearch } = await import('./search-action.js');
11
+ await runSearch(query, options);
12
+ });
13
+ }
14
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,eAAe,EAAE,wCAAwC,EAAE,UAAU,CAAC;SAC7E,MAAM,CAAC,aAAa,EAAE,4BAA4B,EAAE,IAAI,CAAC;SACzD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAsE,EAAE,EAAE;QACtG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACxD,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runSkillsetInit(name?: string): Promise<void>;
2
+ //# sourceMappingURL=skillset-init-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-init-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-init-action.ts"],"names":[],"mappings":"AA0BA,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyClE"}
@@ -0,0 +1,65 @@
1
+ import { mkdir, writeFile, stat } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { printError, printSuccess, printInfo } from '../ui/output.js';
4
+ const TEMPLATE = (name) => `---
5
+ name: ${name}
6
+ description: "Describe what this skillset does and which agent use-case it targets. Aim for 30+ words to pass validation."
7
+ version: "1.0.0"
8
+ tags: []
9
+ author: ""
10
+ spec_version: "1.0"
11
+ # List remote skills that are not embedded in this directory:
12
+ # skills:
13
+ # - name: some-remote-skill
14
+ # source_url: https://github.com/user/some-remote-skill
15
+ ---
16
+
17
+ # ${name}
18
+
19
+ Add a description of this skillset and the agent it is designed for.
20
+
21
+ ## Skills included
22
+
23
+ List what each embedded skill does and how they work together.
24
+ `;
25
+ export async function runSkillsetInit(name) {
26
+ const skillsetName = name ?? path.basename(process.cwd());
27
+ const targetDir = name ? path.join(process.cwd(), skillsetName) : process.cwd();
28
+ try {
29
+ if (name) {
30
+ try {
31
+ await stat(targetDir);
32
+ printError(`Directory "${skillsetName}" already exists`);
33
+ process.exit(1);
34
+ }
35
+ catch {
36
+ await mkdir(targetDir, { recursive: true });
37
+ }
38
+ }
39
+ const skillsetMdPath = path.join(targetDir, 'SKILLSET.md');
40
+ try {
41
+ await stat(skillsetMdPath);
42
+ printError('SKILLSET.md already exists in this directory');
43
+ process.exit(1);
44
+ }
45
+ catch {
46
+ // good — doesn't exist yet
47
+ }
48
+ await writeFile(skillsetMdPath, TEMPLATE(skillsetName), 'utf8');
49
+ await mkdir(path.join(targetDir, 'assets'), { recursive: true });
50
+ printSuccess(`Skillset "${skillsetName}" initialized`);
51
+ printInfo(` ${path.relative(process.cwd(), skillsetMdPath)}`);
52
+ printInfo(` ${path.relative(process.cwd(), path.join(targetDir, 'assets'))}/`);
53
+ printInfo('');
54
+ printInfo('Next steps:');
55
+ printInfo(' 1. Edit SKILLSET.md with your description and remote skill references');
56
+ printInfo(' 2. Add embedded skills as subdirectories (each with their own SKILL.md)');
57
+ printInfo(' 3. Run "skillpm skillset validate" to check your skillset');
58
+ printInfo(' 4. Run "skillpm skillset publish" to publish to the registry');
59
+ }
60
+ catch (e) {
61
+ printError(e instanceof Error ? e.message : String(e));
62
+ process.exit(1);
63
+ }
64
+ }
65
+ //# sourceMappingURL=skillset-init-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-init-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-init-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAErE,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC;QAC3B,IAAI;;;;;;;;;;;;IAYR,IAAI;;;;;;;CAOP,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAa;IACjD,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IAE/E,IAAI,CAAC;QACH,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,CAAA;gBACrB,UAAU,CAAC,cAAc,YAAY,kBAAkB,CAAC,CAAA;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QAC1D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,CAAA;YAC1B,UAAU,CAAC,8CAA8C,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;QAED,MAAM,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAAA;QAC/D,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAEhE,YAAY,CAAC,aAAa,YAAY,eAAe,CAAC,CAAA;QACtD,SAAS,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,CAAA;QAC9D,SAAS,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA;QAC/E,SAAS,CAAC,EAAE,CAAC,CAAA;QACb,SAAS,CAAC,aAAa,CAAC,CAAA;QACxB,SAAS,CAAC,yEAAyE,CAAC,CAAA;QACpF,SAAS,CAAC,2EAA2E,CAAC,CAAA;QACtF,SAAS,CAAC,6DAA6D,CAAC,CAAA;QACxE,SAAS,CAAC,gEAAgE,CAAC,CAAA;IAC7E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ScopeLevel } from '../../types/scope.js';
2
+ export declare function runSkillsetInstall(source: string, options: {
3
+ scope: ScopeLevel;
4
+ force: boolean;
5
+ json: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=skillset-install-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-install-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-install-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAetD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC5D,OAAO,CAAC,IAAI,CAAC,CAkDf"}
@@ -0,0 +1,174 @@
1
+ import ora from 'ora';
2
+ import { installSkillsetFromPath } from '../../core/skillset-installer.js';
3
+ import { printJson, printError, printSuccess, printInfo } from '../ui/output.js';
4
+ function isRegistryName(source) {
5
+ return (!source.startsWith('git+') &&
6
+ !source.startsWith('/') &&
7
+ !source.startsWith('./') &&
8
+ !source.startsWith('../') &&
9
+ !source.includes('://') &&
10
+ !source.endsWith('.md'));
11
+ }
12
+ export async function runSkillsetInstall(source, options) {
13
+ const isGitUrl = source.startsWith('git+');
14
+ if (!isGitUrl && isRegistryName(source)) {
15
+ await runRegistrySkillsetInstall(source, options);
16
+ return;
17
+ }
18
+ if (isGitUrl) {
19
+ await runGitSkillsetInstall(source, options);
20
+ return;
21
+ }
22
+ const spinner = options.json ? null : ora(`Validating ${source}...`).start();
23
+ try {
24
+ if (spinner)
25
+ spinner.text = `Installing skillset from ${source}...`;
26
+ const result = await installSkillsetFromPath(source, {
27
+ scope: options.scope,
28
+ force: options.force,
29
+ });
30
+ if (spinner)
31
+ spinner.succeed(`Installed skillset "${result.skillsetName}" at ${result.scope} scope`);
32
+ if (options.json) {
33
+ printJson({
34
+ installed: true,
35
+ skillsetName: result.skillsetName,
36
+ scope: result.scope,
37
+ score: result.validation.score,
38
+ embeddedSkills: result.embeddedResults.map((r) => r.skillName),
39
+ remoteSkills: result.remoteResults.map((r) => r.skillName),
40
+ diagnostics: result.validation.diagnostics,
41
+ });
42
+ }
43
+ else {
44
+ printSuccess(`Score: ${result.validation.score}/100`);
45
+ const allSkills = [
46
+ ...result.embeddedResults.map((r) => r.skillName),
47
+ ...result.remoteResults.map((r) => r.skillName),
48
+ ];
49
+ if (allSkills.length > 0) {
50
+ printInfo(` Skills installed: ${allSkills.join(', ')}`);
51
+ }
52
+ }
53
+ }
54
+ catch (e) {
55
+ if (spinner)
56
+ spinner.fail();
57
+ printError(e instanceof Error ? e.message : String(e));
58
+ process.exit(1);
59
+ }
60
+ }
61
+ async function runRegistrySkillsetInstall(name, options) {
62
+ const { mkdtemp, rm } = await import('node:fs/promises');
63
+ const path = await import('node:path');
64
+ const os = await import('node:os');
65
+ const { simpleGit } = await import('simple-git');
66
+ const { parseGitUrl } = await import('../../registry/sources/github.js');
67
+ const { getSkillsetInstallInfo } = await import('../../registry/sources/registry.js');
68
+ const spinner = options.json ? null : ora(`Looking up skillset "${name}" in registry...`).start();
69
+ const tmpDir = await mkdtemp(path.join(os.tmpdir(), 'skilldex-skillset-'));
70
+ try {
71
+ const info = await getSkillsetInstallInfo(name);
72
+ if (spinner)
73
+ spinner.text = `Cloning skillset "${name}" from ${info.source_url}...`;
74
+ const parsed = parseGitUrl(`git+${info.source_url}`);
75
+ const git = simpleGit();
76
+ const cloneOptions = parsed.branch ? ['--branch', parsed.branch, '--depth', '1'] : ['--depth', '1'];
77
+ await git.clone(parsed.repoUrl, tmpDir, cloneOptions);
78
+ const searchRoot = parsed.subPath ? path.join(tmpDir, parsed.subPath) : tmpDir;
79
+ if (spinner)
80
+ spinner.text = `Installing skillset "${name}"...`;
81
+ const result = await installSkillsetFromPath(searchRoot, {
82
+ scope: options.scope,
83
+ force: options.force,
84
+ sourceUrl: info.source_url,
85
+ });
86
+ if (spinner)
87
+ spinner.succeed(`Installed skillset "${name}" at ${options.scope} scope`);
88
+ if (options.json) {
89
+ printJson({
90
+ installed: true,
91
+ skillsetName: result.skillsetName,
92
+ scope: result.scope,
93
+ score: result.validation.score,
94
+ embeddedSkills: result.embeddedResults.map((r) => r.skillName),
95
+ remoteSkills: result.remoteResults.map((r) => r.skillName),
96
+ trust_tier: info.trust_tier,
97
+ });
98
+ }
99
+ else {
100
+ printSuccess(`Score: ${result.validation.score}/100 · Trust: ${info.trust_tier}`);
101
+ const allSkills = [
102
+ ...result.embeddedResults.map((r) => r.skillName),
103
+ ...result.remoteResults.map((r) => r.skillName),
104
+ ];
105
+ if (allSkills.length > 0) {
106
+ printInfo(` Skills installed: ${allSkills.join(', ')}`);
107
+ }
108
+ }
109
+ }
110
+ catch (e) {
111
+ if (spinner)
112
+ spinner.fail();
113
+ printError(e instanceof Error ? e.message : String(e));
114
+ process.exit(1);
115
+ }
116
+ finally {
117
+ await rm(tmpDir, { recursive: true, force: true });
118
+ }
119
+ }
120
+ async function runGitSkillsetInstall(gitUrl, options) {
121
+ const { mkdtemp, rm } = await import('node:fs/promises');
122
+ const path = await import('node:path');
123
+ const os = await import('node:os');
124
+ const { simpleGit } = await import('simple-git');
125
+ const { parseGitUrl } = await import('../../registry/sources/github.js');
126
+ const spinner = options.json ? null : ora(`Cloning ${gitUrl}...`).start();
127
+ const tmpDir = await mkdtemp(path.join(os.tmpdir(), 'skilldex-skillset-'));
128
+ try {
129
+ const parsed = parseGitUrl(gitUrl);
130
+ const git = simpleGit();
131
+ const cloneOptions = parsed.branch ? ['--branch', parsed.branch, '--depth', '1'] : ['--depth', '1'];
132
+ await git.clone(parsed.repoUrl, tmpDir, cloneOptions);
133
+ const searchRoot = parsed.subPath ? path.join(tmpDir, parsed.subPath) : tmpDir;
134
+ if (spinner)
135
+ spinner.text = `Installing skillset from ${gitUrl}...`;
136
+ const result = await installSkillsetFromPath(searchRoot, {
137
+ scope: options.scope,
138
+ force: options.force,
139
+ sourceUrl: gitUrl,
140
+ });
141
+ if (spinner)
142
+ spinner.succeed(`Installed skillset "${result.skillsetName}" at ${result.scope} scope`);
143
+ if (options.json) {
144
+ printJson({
145
+ installed: true,
146
+ skillsetName: result.skillsetName,
147
+ scope: result.scope,
148
+ score: result.validation.score,
149
+ embeddedSkills: result.embeddedResults.map((r) => r.skillName),
150
+ remoteSkills: result.remoteResults.map((r) => r.skillName),
151
+ });
152
+ }
153
+ else {
154
+ printSuccess(`Score: ${result.validation.score}/100`);
155
+ const allSkills = [
156
+ ...result.embeddedResults.map((r) => r.skillName),
157
+ ...result.remoteResults.map((r) => r.skillName),
158
+ ];
159
+ if (allSkills.length > 0) {
160
+ printInfo(` Skills installed: ${allSkills.join(', ')}`);
161
+ }
162
+ }
163
+ }
164
+ catch (e) {
165
+ if (spinner)
166
+ spinner.fail();
167
+ printError(e instanceof Error ? e.message : String(e));
168
+ process.exit(1);
169
+ }
170
+ finally {
171
+ await rm(tmpDir, { recursive: true, force: true });
172
+ }
173
+ }
174
+ //# sourceMappingURL=skillset-install-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-install-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-install-action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ScopeLevel } from '../../types/scope.js';
2
+ export declare function runSkillsetList(options: {
3
+ scope?: ScopeLevel;
4
+ json: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=skillset-list-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-list-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-list-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAKtD,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CnG"}
@@ -0,0 +1,46 @@
1
+ import chalk from 'chalk';
2
+ import { resolveAllScopes, resolveScope } from '../../core/resolver.js';
3
+ import { readManifest } from '../../core/manifest.js';
4
+ import { printJson, printError } from '../ui/output.js';
5
+ export async function runSkillsetList(options) {
6
+ try {
7
+ const scopeConfigs = options.scope
8
+ ? [await resolveScope(options.scope)]
9
+ : await resolveAllScopes();
10
+ const results = [];
11
+ for (const sc of scopeConfigs) {
12
+ const manifest = await readManifest(sc);
13
+ results.push({ level: sc.level, skillsets: Object.values(manifest.skillsets) });
14
+ }
15
+ if (options.json) {
16
+ printJson(results);
17
+ return;
18
+ }
19
+ let total = 0;
20
+ for (const { level, skillsets } of results) {
21
+ total += skillsets.length;
22
+ console.log(chalk.bold(`\n${level} scope`));
23
+ if (skillsets.length === 0) {
24
+ console.log(chalk.dim(' (no skillsets installed)'));
25
+ }
26
+ else {
27
+ for (const skillset of skillsets) {
28
+ const score = skillset.score >= 80
29
+ ? chalk.green(`${skillset.score}`)
30
+ : skillset.score >= 50
31
+ ? chalk.yellow(`${skillset.score}`)
32
+ : chalk.red(`${skillset.score}`);
33
+ const skillCount = skillset.embeddedSkills.length + skillset.remoteSkills.length;
34
+ console.log(` ${chalk.cyan(skillset.name.padEnd(30))} score: ${score}/100 skills: ${skillCount} source: ${chalk.dim(skillset.source)}`);
35
+ }
36
+ }
37
+ }
38
+ console.log('');
39
+ console.log(chalk.dim(`${total} skillset(s) installed across ${results.length} scope(s)`));
40
+ }
41
+ catch (e) {
42
+ printError(e instanceof Error ? e.message : String(e));
43
+ process.exit(1);
44
+ }
45
+ }
46
+ //# sourceMappingURL=skillset-list-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-list-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-list-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEvD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA8C;IAClF,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;YAChC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAA;QAE5B,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACjF,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,OAAO,CAAC,CAAA;YAClB,OAAM;QACR,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC;YAC3C,KAAK,IAAI,SAAS,CAAC,MAAM,CAAA;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAA;YAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAA;YACtD,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,KAAK,GACT,QAAQ,CAAC,KAAK,IAAI,EAAE;wBAClB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAClC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;4BACpB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;4BACnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;oBACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAA;oBAChF,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,iBAAiB,UAAU,aAAa,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAC9H,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,iCAAiC,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC,CAAA;IAC5F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function runSkillsetPublish(options: {
2
+ sourceUrl?: string;
3
+ tags?: string;
4
+ update?: boolean;
5
+ json: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=skillset-publish-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-publish-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-publish-action.ts"],"names":[],"mappings":"AAoCA,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EhB"}
@@ -0,0 +1,113 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import ora from 'ora';
4
+ import { parse as parseYaml } from 'yaml';
5
+ import { simpleGit } from 'simple-git';
6
+ import { publishSkillset, updateSkillset } from '../../registry/sources/registry.js';
7
+ import { printJson, printError, printSuccess, printWarning, printInfo } from '../ui/output.js';
8
+ async function detectSourceUrl(skillsetPath) {
9
+ try {
10
+ const git = simpleGit(skillsetPath);
11
+ const remotes = await git.getRemotes(true);
12
+ const origin = remotes.find((r) => r.name === 'origin');
13
+ if (!origin?.refs?.fetch)
14
+ return null;
15
+ let url = origin.refs.fetch;
16
+ url = url.replace(/^git@github\.com:/, 'https://github.com/');
17
+ url = url.replace(/\.git$/, '');
18
+ return url;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ async function readSkillsetName(skillsetPath) {
25
+ try {
26
+ const content = await readFile(join(skillsetPath, 'SKILLSET.md'), 'utf-8');
27
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
28
+ if (!match)
29
+ return null;
30
+ const fm = parseYaml(match[1]);
31
+ return typeof fm['name'] === 'string' ? fm['name'] : null;
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ export async function runSkillsetPublish(options) {
38
+ const { getConfigValue } = await import('../../core/config.js');
39
+ const token = await getConfigValue('token');
40
+ if (!token) {
41
+ printError('No auth token found. Get your token from https://registry.skilldex.dev/auth/github, then run: skillpm config set token <token>');
42
+ process.exit(1);
43
+ }
44
+ const skillsetPath = process.cwd();
45
+ const spinner = options.json ? null : ora('Reading skillset...').start();
46
+ try {
47
+ const skillsetName = await readSkillsetName(skillsetPath);
48
+ if (!skillsetName) {
49
+ if (spinner)
50
+ spinner.fail();
51
+ printError('Could not read skillset name from SKILLSET.md frontmatter. Make sure you are in a skillset folder.');
52
+ process.exit(1);
53
+ return;
54
+ }
55
+ if (options.update) {
56
+ if (spinner)
57
+ spinner.text = `Re-fetching and re-scoring "${skillsetName}"...`;
58
+ const result = await updateSkillset(token, skillsetName);
59
+ if (spinner)
60
+ spinner.succeed(`Updated "${skillsetName}"`);
61
+ if (options.json) {
62
+ printJson(result);
63
+ }
64
+ else {
65
+ printSuccess(`Score: ${result.skillset.score ?? 'n/a'}/100`);
66
+ for (const d of result.diagnostics) {
67
+ const loc = d.line !== undefined ? `line ${d.line}: ` : '';
68
+ if (d.level === 'error')
69
+ printError(`${loc}${d.message}`);
70
+ else
71
+ printWarning(`${loc}${d.message}`);
72
+ }
73
+ }
74
+ return;
75
+ }
76
+ const detectedUrl = options.sourceUrl ?? (await detectSourceUrl(skillsetPath));
77
+ if (!detectedUrl) {
78
+ if (spinner)
79
+ spinner.fail();
80
+ printError('Could not detect GitHub URL from git remote. Pass --source-url <url> explicitly.');
81
+ process.exit(1);
82
+ return;
83
+ }
84
+ const tags = options.tags ? options.tags.split(',').map((t) => t.trim()).filter(Boolean) : [];
85
+ if (spinner)
86
+ spinner.text = `Publishing skillset "${skillsetName}" to registry...`;
87
+ const result = await publishSkillset(token, { name: skillsetName, source_url: detectedUrl, tags });
88
+ if (spinner)
89
+ spinner.succeed(`Published "${skillsetName}"`);
90
+ if (options.json) {
91
+ printJson(result);
92
+ }
93
+ else {
94
+ printInfo(`Source: ${detectedUrl}`);
95
+ printSuccess(`Score: ${result.skillset.score ?? 'n/a'}/100`);
96
+ for (const d of result.diagnostics) {
97
+ const loc = d.line !== undefined ? `line ${d.line}: ` : '';
98
+ if (d.level === 'error')
99
+ printError(`${loc}${d.message}`);
100
+ else
101
+ printWarning(`${loc}${d.message}`);
102
+ }
103
+ printInfo(`Install with: skillpm skillset install ${skillsetName}`);
104
+ }
105
+ }
106
+ catch (e) {
107
+ if (spinner)
108
+ spinner.fail();
109
+ printError(e instanceof Error ? e.message : String(e));
110
+ process.exit(1);
111
+ }
112
+ }
113
+ //# sourceMappingURL=skillset-publish-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-publish-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-publish-action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ScopeLevel } from '../../types/scope.js';
2
+ export declare function runSkillsetUninstall(name: string, options: {
3
+ scope: ScopeLevel;
4
+ json: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=skillset-uninstall-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillset-uninstall-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-uninstall-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAItD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAkBf"}