@nimblebrain/mpak 0.0.2 → 0.2.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 +10 -198
  2. package/README.md +50 -360
  3. package/dist/index.d.ts +0 -2
  4. package/dist/index.js +2113 -4
  5. package/dist/index.js.map +1 -1
  6. package/package.json +32 -29
  7. package/.claude/settings.local.json +0 -19
  8. package/.env.example +0 -13
  9. package/.github/workflows/ci.yml +0 -27
  10. package/CLAUDE.md +0 -271
  11. package/dist/commands/config.d.ts +0 -31
  12. package/dist/commands/config.d.ts.map +0 -1
  13. package/dist/commands/config.js +0 -129
  14. package/dist/commands/config.js.map +0 -1
  15. package/dist/commands/packages/pull.d.ts +0 -11
  16. package/dist/commands/packages/pull.d.ts.map +0 -1
  17. package/dist/commands/packages/pull.js +0 -72
  18. package/dist/commands/packages/pull.js.map +0 -1
  19. package/dist/commands/packages/run.d.ts +0 -36
  20. package/dist/commands/packages/run.d.ts.map +0 -1
  21. package/dist/commands/packages/run.js +0 -348
  22. package/dist/commands/packages/run.js.map +0 -1
  23. package/dist/commands/packages/search.d.ts +0 -12
  24. package/dist/commands/packages/search.d.ts.map +0 -1
  25. package/dist/commands/packages/search.js +0 -63
  26. package/dist/commands/packages/search.js.map +0 -1
  27. package/dist/commands/packages/show.d.ts +0 -8
  28. package/dist/commands/packages/show.d.ts.map +0 -1
  29. package/dist/commands/packages/show.js +0 -109
  30. package/dist/commands/packages/show.js.map +0 -1
  31. package/dist/commands/search.d.ts +0 -12
  32. package/dist/commands/search.d.ts.map +0 -1
  33. package/dist/commands/search.js +0 -144
  34. package/dist/commands/search.js.map +0 -1
  35. package/dist/commands/skills/index.d.ts +0 -8
  36. package/dist/commands/skills/index.d.ts.map +0 -1
  37. package/dist/commands/skills/index.js +0 -8
  38. package/dist/commands/skills/index.js.map +0 -1
  39. package/dist/commands/skills/install.d.ts +0 -9
  40. package/dist/commands/skills/install.d.ts.map +0 -1
  41. package/dist/commands/skills/install.js +0 -110
  42. package/dist/commands/skills/install.js.map +0 -1
  43. package/dist/commands/skills/list.d.ts +0 -8
  44. package/dist/commands/skills/list.d.ts.map +0 -1
  45. package/dist/commands/skills/list.js +0 -89
  46. package/dist/commands/skills/list.js.map +0 -1
  47. package/dist/commands/skills/pack.d.ts +0 -22
  48. package/dist/commands/skills/pack.d.ts.map +0 -1
  49. package/dist/commands/skills/pack.js +0 -116
  50. package/dist/commands/skills/pack.js.map +0 -1
  51. package/dist/commands/skills/pull.d.ts +0 -9
  52. package/dist/commands/skills/pull.d.ts.map +0 -1
  53. package/dist/commands/skills/pull.js +0 -68
  54. package/dist/commands/skills/pull.js.map +0 -1
  55. package/dist/commands/skills/search.d.ts +0 -14
  56. package/dist/commands/skills/search.d.ts.map +0 -1
  57. package/dist/commands/skills/search.js +0 -53
  58. package/dist/commands/skills/search.js.map +0 -1
  59. package/dist/commands/skills/show.d.ts +0 -8
  60. package/dist/commands/skills/show.d.ts.map +0 -1
  61. package/dist/commands/skills/show.js +0 -64
  62. package/dist/commands/skills/show.js.map +0 -1
  63. package/dist/commands/skills/validate.d.ts +0 -25
  64. package/dist/commands/skills/validate.d.ts.map +0 -1
  65. package/dist/commands/skills/validate.js +0 -191
  66. package/dist/commands/skills/validate.js.map +0 -1
  67. package/dist/index.d.ts.map +0 -1
  68. package/dist/lib/api/registry-client.d.ts +0 -63
  69. package/dist/lib/api/registry-client.d.ts.map +0 -1
  70. package/dist/lib/api/registry-client.js +0 -167
  71. package/dist/lib/api/registry-client.js.map +0 -1
  72. package/dist/lib/api/skills-client.d.ts +0 -30
  73. package/dist/lib/api/skills-client.d.ts.map +0 -1
  74. package/dist/lib/api/skills-client.js +0 -110
  75. package/dist/lib/api/skills-client.js.map +0 -1
  76. package/dist/program.d.ts +0 -12
  77. package/dist/program.d.ts.map +0 -1
  78. package/dist/program.js +0 -174
  79. package/dist/program.js.map +0 -1
  80. package/dist/schemas/generated/api-responses.d.ts +0 -541
  81. package/dist/schemas/generated/api-responses.d.ts.map +0 -1
  82. package/dist/schemas/generated/api-responses.js +0 -313
  83. package/dist/schemas/generated/api-responses.js.map +0 -1
  84. package/dist/schemas/generated/auth.d.ts +0 -18
  85. package/dist/schemas/generated/auth.d.ts.map +0 -1
  86. package/dist/schemas/generated/auth.js +0 -18
  87. package/dist/schemas/generated/auth.js.map +0 -1
  88. package/dist/schemas/generated/index.d.ts +0 -5
  89. package/dist/schemas/generated/index.d.ts.map +0 -1
  90. package/dist/schemas/generated/index.js +0 -6
  91. package/dist/schemas/generated/index.js.map +0 -1
  92. package/dist/schemas/generated/package.d.ts +0 -43
  93. package/dist/schemas/generated/package.d.ts.map +0 -1
  94. package/dist/schemas/generated/package.js +0 -20
  95. package/dist/schemas/generated/package.js.map +0 -1
  96. package/dist/schemas/generated/skill.d.ts +0 -381
  97. package/dist/schemas/generated/skill.d.ts.map +0 -1
  98. package/dist/schemas/generated/skill.js +0 -216
  99. package/dist/schemas/generated/skill.js.map +0 -1
  100. package/dist/utils/config-manager.d.ts +0 -66
  101. package/dist/utils/config-manager.d.ts.map +0 -1
  102. package/dist/utils/config-manager.js +0 -193
  103. package/dist/utils/config-manager.js.map +0 -1
  104. package/dist/utils/errors.d.ts +0 -12
  105. package/dist/utils/errors.d.ts.map +0 -1
  106. package/dist/utils/errors.js +0 -27
  107. package/dist/utils/errors.js.map +0 -1
  108. package/dist/utils/version.d.ts +0 -5
  109. package/dist/utils/version.d.ts.map +0 -1
  110. package/dist/utils/version.js +0 -19
  111. package/dist/utils/version.js.map +0 -1
  112. package/eslint.config.js +0 -63
  113. package/src/commands/config.ts +0 -162
  114. package/src/commands/packages/pull.ts +0 -96
  115. package/src/commands/packages/run.test.ts +0 -222
  116. package/src/commands/packages/run.ts +0 -451
  117. package/src/commands/packages/search.ts +0 -83
  118. package/src/commands/packages/show.ts +0 -128
  119. package/src/commands/search.ts +0 -191
  120. package/src/commands/skills/index.ts +0 -7
  121. package/src/commands/skills/install.ts +0 -129
  122. package/src/commands/skills/list.ts +0 -116
  123. package/src/commands/skills/pack.test.ts +0 -260
  124. package/src/commands/skills/pack.ts +0 -145
  125. package/src/commands/skills/pull.ts +0 -88
  126. package/src/commands/skills/search.ts +0 -73
  127. package/src/commands/skills/show.ts +0 -72
  128. package/src/commands/skills/validate.test.ts +0 -466
  129. package/src/commands/skills/validate.ts +0 -227
  130. package/src/index.ts +0 -11
  131. package/src/lib/api/registry-client.ts +0 -223
  132. package/src/lib/api/schema.d.ts +0 -520
  133. package/src/lib/api/skills-client.ts +0 -148
  134. package/src/program.test.ts +0 -22
  135. package/src/program.ts +0 -212
  136. package/src/schemas/config.v1.schema.json +0 -37
  137. package/src/schemas/generated/api-responses.ts +0 -386
  138. package/src/schemas/generated/auth.ts +0 -21
  139. package/src/schemas/generated/index.ts +0 -5
  140. package/src/schemas/generated/package.ts +0 -29
  141. package/src/schemas/generated/skill.ts +0 -271
  142. package/src/utils/config-manager.test.ts +0 -330
  143. package/src/utils/config-manager.ts +0 -272
  144. package/src/utils/errors.test.ts +0 -25
  145. package/src/utils/errors.ts +0 -33
  146. package/src/utils/version.test.ts +0 -16
  147. package/src/utils/version.ts +0 -18
  148. package/test/integration/registry-client.test.ts +0 -180
  149. package/tsconfig.check.json +0 -9
  150. package/tsconfig.json +0 -25
  151. package/vitest.config.ts +0 -14
@@ -1,144 +0,0 @@
1
- import { RegistryClient } from '../lib/api/registry-client.js';
2
- import { searchSkills } from '../lib/api/skills-client.js';
3
- /**
4
- * Unified search across bundles and skills
5
- */
6
- export async function handleUnifiedSearch(query, options = {}) {
7
- try {
8
- const results = [];
9
- let bundleTotal = 0;
10
- let skillTotal = 0;
11
- // Search both in parallel (unless filtered by type)
12
- const searchBundles = !options.type || options.type === 'bundle';
13
- const searchSkillsFlag = !options.type || options.type === 'skill';
14
- const [bundleResult, skillResult] = await Promise.all([
15
- searchBundles
16
- ? new RegistryClient().searchBundles(query, {
17
- sort: options.sort,
18
- limit: options.limit,
19
- offset: options.offset,
20
- })
21
- : null,
22
- searchSkillsFlag
23
- ? searchSkills({
24
- q: query,
25
- sort: options.sort,
26
- limit: options.limit,
27
- offset: options.offset,
28
- }).catch(() => null) // Skills API may not be deployed yet
29
- : null,
30
- ]);
31
- // Process bundle results
32
- if (bundleResult) {
33
- bundleTotal = bundleResult.total;
34
- for (const bundle of bundleResult.bundles) {
35
- results.push({
36
- type: 'bundle',
37
- name: bundle.name,
38
- description: bundle.description || '',
39
- downloads: bundle.downloads || 0,
40
- version: bundle.latest_version,
41
- author: bundle.author?.name || undefined,
42
- serverType: bundle.server_type || undefined,
43
- verified: bundle.verified,
44
- provenance: !!bundle.provenance,
45
- });
46
- }
47
- }
48
- // Process skill results
49
- if (skillResult) {
50
- skillTotal = skillResult.total;
51
- for (const skill of skillResult.skills) {
52
- results.push({
53
- type: 'skill',
54
- name: skill.name,
55
- description: skill.description || '',
56
- downloads: skill.downloads || 0,
57
- version: skill.latest_version,
58
- author: skill.author?.name || undefined,
59
- category: skill.category || undefined,
60
- });
61
- }
62
- }
63
- // Sort combined results
64
- if (options.sort === 'downloads') {
65
- results.sort((a, b) => b.downloads - a.downloads);
66
- }
67
- else if (options.sort === 'name') {
68
- results.sort((a, b) => a.name.localeCompare(b.name));
69
- }
70
- // 'recent' sorting would require timestamps, skip for now
71
- // JSON output
72
- if (options.json) {
73
- console.log(JSON.stringify({
74
- results,
75
- totals: { bundles: bundleTotal, skills: skillTotal },
76
- }, null, 2));
77
- return;
78
- }
79
- // No results
80
- if (results.length === 0) {
81
- console.log(`\nNo results found for "${query}"`);
82
- if (!searchBundles)
83
- console.log(' (searched skills only)');
84
- if (!searchSkillsFlag)
85
- console.log(' (searched bundles only)');
86
- return;
87
- }
88
- // Summary
89
- const totalResults = bundleTotal + skillTotal;
90
- const typeFilter = options.type ? ` (${options.type}s only)` : '';
91
- console.log(`\nFound ${totalResults} result(s) for "${query}"${typeFilter}:\n`);
92
- // Table header
93
- const typeWidth = 10;
94
- const nameWidth = 38;
95
- const versionWidth = 12;
96
- const downloadsWidth = 10;
97
- console.log('TYPE'.padEnd(typeWidth) +
98
- 'NAME'.padEnd(nameWidth) +
99
- 'VERSION'.padEnd(versionWidth) +
100
- 'DOWNLOADS'.padStart(downloadsWidth));
101
- // Table rows
102
- for (const result of results) {
103
- const typeLabel = result.type === 'bundle' ? 'bundle' : 'skill';
104
- const name = result.name.length > nameWidth - 2
105
- ? result.name.slice(0, nameWidth - 5) + '...'
106
- : result.name;
107
- const version = result.version || '-';
108
- const downloads = result.downloads.toLocaleString();
109
- console.log(typeLabel.padEnd(typeWidth) +
110
- name.padEnd(nameWidth) +
111
- version.padEnd(versionWidth) +
112
- downloads.padStart(downloadsWidth));
113
- }
114
- console.log('');
115
- // Show breakdown
116
- if (!options.type) {
117
- const parts = [];
118
- if (bundleTotal > 0)
119
- parts.push(`${bundleTotal} bundle(s)`);
120
- if (skillTotal > 0)
121
- parts.push(`${skillTotal} skill(s)`);
122
- if (parts.length > 1) {
123
- console.log(` ${parts.join(', ')}`);
124
- }
125
- }
126
- // Pagination hint
127
- const currentLimit = options.limit || 20;
128
- const currentOffset = options.offset || 0;
129
- if (bundleTotal + skillTotal > currentOffset + results.length) {
130
- console.log(` Use --offset ${currentOffset + currentLimit} to see more results.`);
131
- }
132
- // Hint for more details
133
- console.log('');
134
- console.log('Use "mpak bundle show <name>" or "mpak skill show <name>" for details.');
135
- }
136
- catch (error) {
137
- console.error('Search failed');
138
- if (error instanceof Error) {
139
- console.error(` ${error.message}`);
140
- }
141
- process.exit(1);
142
- }
143
- }
144
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export { handleSkillValidate, validateSkillDirectory } from './validate.js';
2
- export { handleSkillPack, packSkill } from './pack.js';
3
- export { handleSkillSearch } from './search.js';
4
- export { handleSkillShow } from './show.js';
5
- export { handleSkillPull } from './pull.js';
6
- export { handleSkillInstall } from './install.js';
7
- export { handleSkillList } from './list.js';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -1,8 +0,0 @@
1
- export { handleSkillValidate, validateSkillDirectory } from './validate.js';
2
- export { handleSkillPack, packSkill } from './pack.js';
3
- export { handleSkillSearch } from './search.js';
4
- export { handleSkillShow } from './show.js';
5
- export { handleSkillPull } from './pull.js';
6
- export { handleSkillInstall } from './install.js';
7
- export { handleSkillList } from './list.js';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -1,9 +0,0 @@
1
- export interface InstallOptions {
2
- force?: boolean;
3
- json?: boolean;
4
- }
5
- /**
6
- * Handle the skill install command
7
- */
8
- export declare function handleSkillInstall(skillSpec: string, options: InstallOptions): Promise<void>;
9
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"AAwCA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ElG"}
@@ -1,110 +0,0 @@
1
- import { existsSync, mkdirSync, writeFileSync, rmSync } from 'fs';
2
- import { join, basename } from 'path';
3
- import { homedir, tmpdir } from 'os';
4
- import { getSkillDownloadInfo, downloadSkillBundle } from '../../lib/api/skills-client.js';
5
- import { execSync } from 'child_process';
6
- /**
7
- * Get the Claude Code skills directory
8
- */
9
- function getSkillsDir() {
10
- return join(homedir(), '.claude', 'skills');
11
- }
12
- /**
13
- * Parse skill spec into name and version
14
- */
15
- function parseSkillSpec(spec) {
16
- const atIndex = spec.lastIndexOf('@');
17
- if (atIndex <= 0) {
18
- return { name: spec };
19
- }
20
- const slashIndex = spec.indexOf('/');
21
- if (atIndex > slashIndex) {
22
- return {
23
- name: spec.slice(0, atIndex),
24
- version: spec.slice(atIndex + 1),
25
- };
26
- }
27
- return { name: spec };
28
- }
29
- /**
30
- * Extract skill name from scoped name
31
- * @scope/skill-name -> skill-name
32
- */
33
- function getShortName(scopedName) {
34
- const parts = scopedName.replace('@', '').split('/');
35
- return parts[parts.length - 1];
36
- }
37
- /**
38
- * Handle the skill install command
39
- */
40
- export async function handleSkillInstall(skillSpec, options) {
41
- try {
42
- const { name, version } = parseSkillSpec(skillSpec);
43
- // Get download info
44
- const downloadInfo = await getSkillDownloadInfo(name, version);
45
- const shortName = getShortName(downloadInfo.skill.name);
46
- const skillsDir = getSkillsDir();
47
- const installPath = join(skillsDir, shortName);
48
- // Check if already installed
49
- if (existsSync(installPath) && !options.force) {
50
- console.error(`Skill "${shortName}" is already installed at ${installPath}`);
51
- console.error('Use --force to overwrite');
52
- process.exit(1);
53
- }
54
- console.log(`Pulling ${downloadInfo.skill.name}@${downloadInfo.skill.version}...`);
55
- // Download the bundle
56
- const buffer = await downloadSkillBundle(downloadInfo.url, downloadInfo.skill.sha256);
57
- console.log(`Downloaded ${basename(downloadInfo.skill.name)}-${downloadInfo.skill.version}.skill (${formatSize(downloadInfo.skill.size)})`);
58
- // Ensure skills directory exists
59
- if (!existsSync(skillsDir)) {
60
- mkdirSync(skillsDir, { recursive: true });
61
- }
62
- // Write to temp file
63
- const tempPath = join(tmpdir(), `skill-${Date.now()}.skill`);
64
- writeFileSync(tempPath, buffer);
65
- // Remove existing installation if force
66
- if (existsSync(installPath)) {
67
- rmSync(installPath, { recursive: true });
68
- }
69
- // Extract using unzip
70
- // The .skill bundle contains: skillName/SKILL.md, skillName/...
71
- // We extract to the skills directory
72
- try {
73
- execSync(`unzip -o "${tempPath}" -d "${skillsDir}"`, { stdio: 'pipe' });
74
- }
75
- catch (err) {
76
- throw new Error(`Failed to extract skill bundle: ${err}`);
77
- }
78
- finally {
79
- // Clean up temp file
80
- rmSync(tempPath, { force: true });
81
- }
82
- if (options.json) {
83
- console.log(JSON.stringify({
84
- installed: true,
85
- name: downloadInfo.skill.name,
86
- shortName,
87
- version: downloadInfo.skill.version,
88
- path: installPath,
89
- }, null, 2));
90
- }
91
- else {
92
- console.log(`Extracting to ${installPath}/`);
93
- console.log(`\u2713 Installed: ${shortName}`);
94
- console.log('');
95
- console.log('Skill available in Claude Code. Restart to activate.');
96
- }
97
- }
98
- catch (err) {
99
- console.error(`Error: ${err instanceof Error ? err.message : err}`);
100
- process.exit(1);
101
- }
102
- }
103
- function formatSize(bytes) {
104
- if (bytes < 1024)
105
- return `${bytes} B`;
106
- if (bytes < 1024 * 1024)
107
- return `${(bytes / 1024).toFixed(1)} KB`;
108
- return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
109
- }
110
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export interface ListOptions {
2
- json?: boolean;
3
- }
4
- /**
5
- * Handle the skill list command
6
- */
7
- export declare function handleSkillList(options: ListOptions): Promise<void>;
8
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/list.ts"],"names":[],"mappings":"AAsEA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCzE"}
@@ -1,89 +0,0 @@
1
- import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
2
- import { join } from 'path';
3
- import { homedir } from 'os';
4
- import matter from 'gray-matter';
5
- /**
6
- * Get the Claude Code skills directory
7
- */
8
- function getSkillsDir() {
9
- return join(homedir(), '.claude', 'skills');
10
- }
11
- /**
12
- * List all installed skills
13
- */
14
- function listInstalledSkills() {
15
- const skillsDir = getSkillsDir();
16
- if (!existsSync(skillsDir)) {
17
- return [];
18
- }
19
- const skills = [];
20
- const entries = readdirSync(skillsDir);
21
- for (const entry of entries) {
22
- // Skip hidden files
23
- if (entry.startsWith('.'))
24
- continue;
25
- const skillPath = join(skillsDir, entry);
26
- const stat = statSync(skillPath);
27
- if (!stat.isDirectory())
28
- continue;
29
- // Check for SKILL.md
30
- const skillMdPath = join(skillPath, 'SKILL.md');
31
- if (!existsSync(skillMdPath))
32
- continue;
33
- // Parse SKILL.md
34
- try {
35
- const content = readFileSync(skillMdPath, 'utf-8');
36
- const parsed = matter(content);
37
- skills.push({
38
- name: parsed.data.name || entry,
39
- description: parsed.data.description || '',
40
- version: parsed.data.metadata?.version || null,
41
- path: skillPath,
42
- });
43
- }
44
- catch {
45
- // If we can't parse, still include with basic info
46
- skills.push({
47
- name: entry,
48
- description: '(unable to parse SKILL.md)',
49
- version: null,
50
- path: skillPath,
51
- });
52
- }
53
- }
54
- return skills.sort((a, b) => a.name.localeCompare(b.name));
55
- }
56
- /**
57
- * Handle the skill list command
58
- */
59
- export async function handleSkillList(options) {
60
- const skills = listInstalledSkills();
61
- if (options.json) {
62
- console.log(JSON.stringify(skills, null, 2));
63
- return;
64
- }
65
- if (skills.length === 0) {
66
- console.log('No skills installed.');
67
- console.log('');
68
- console.log('Install skills with: mpak skill install <name>');
69
- console.log('Or create your own in ~/.claude/skills/');
70
- return;
71
- }
72
- console.log('');
73
- console.log('Installed skills:');
74
- console.log('');
75
- const nameWidth = Math.max(20, ...skills.map((s) => s.name.length)) + 2;
76
- const versionWidth = 10;
77
- console.log('NAME'.padEnd(nameWidth) + 'VERSION'.padEnd(versionWidth) + 'DESCRIPTION');
78
- for (const skill of skills) {
79
- const name = skill.name.padEnd(nameWidth);
80
- const version = (skill.version || '-').padEnd(versionWidth);
81
- const desc = skill.description.length > 50
82
- ? skill.description.slice(0, 47) + '...'
83
- : skill.description;
84
- console.log(name + version + desc);
85
- }
86
- console.log('');
87
- console.log(`${skills.length} skill(s) installed in ${getSkillsDir()}`);
88
- }
89
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/skills/list.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- export interface PackResult {
2
- success: boolean;
3
- path: string | null;
4
- name: string | null;
5
- version: string | null;
6
- size: number | null;
7
- sha256: string | null;
8
- error: string | null;
9
- }
10
- /**
11
- * Create a .skill bundle from a skill directory
12
- */
13
- export declare function packSkill(skillPath: string, outputPath?: string): Promise<PackResult>;
14
- export interface PackOptions {
15
- output?: string;
16
- json?: boolean;
17
- }
18
- /**
19
- * Handle the pack command
20
- */
21
- export declare function handleSkillPack(skillPath: string, options: PackOptions): Promise<void>;
22
- //# sourceMappingURL=pack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/pack.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAqF3F;AAWD,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5F"}
@@ -1,116 +0,0 @@
1
- import { createWriteStream, createReadStream } from 'fs';
2
- import { createHash } from 'crypto';
3
- import { basename, join, resolve } from 'path';
4
- import archiver from 'archiver';
5
- import { validateSkillDirectory, formatValidationResult } from './validate.js';
6
- /**
7
- * Create a .skill bundle from a skill directory
8
- */
9
- export async function packSkill(skillPath, outputPath) {
10
- // Validate first
11
- const validation = validateSkillDirectory(skillPath);
12
- if (!validation.valid) {
13
- return {
14
- success: false,
15
- path: null,
16
- name: null,
17
- version: null,
18
- size: null,
19
- sha256: null,
20
- error: `Validation failed:\n${formatValidationResult(validation)}`,
21
- };
22
- }
23
- const skillName = validation.name;
24
- const version = validation.frontmatter?.metadata?.version || '0.0.0';
25
- // Determine output path
26
- const bundleName = `${skillName}-${version}.skill`;
27
- const finalOutputPath = outputPath || join(process.cwd(), bundleName);
28
- // Create the zip archive
29
- return new Promise((resolvePromise) => {
30
- const output = createWriteStream(finalOutputPath);
31
- const archive = archiver('zip', { zlib: { level: 9 } });
32
- let size = 0;
33
- output.on('close', async () => {
34
- size = archive.pointer();
35
- // Calculate SHA256
36
- const hash = createHash('sha256');
37
- const stream = createReadStream(finalOutputPath);
38
- stream.on('data', (chunk) => hash.update(chunk));
39
- stream.on('end', () => {
40
- const sha256 = hash.digest('hex');
41
- resolvePromise({
42
- success: true,
43
- path: finalOutputPath,
44
- name: skillName,
45
- version,
46
- size,
47
- sha256,
48
- error: null,
49
- });
50
- });
51
- stream.on('error', (err) => {
52
- resolvePromise({
53
- success: false,
54
- path: null,
55
- name: skillName,
56
- version,
57
- size: null,
58
- sha256: null,
59
- error: `Failed to calculate SHA256: ${err.message}`,
60
- });
61
- });
62
- });
63
- archive.on('error', (err) => {
64
- resolvePromise({
65
- success: false,
66
- path: null,
67
- name: skillName,
68
- version,
69
- size: null,
70
- sha256: null,
71
- error: `Archive error: ${err.message}`,
72
- });
73
- });
74
- archive.pipe(output);
75
- // Add the skill directory to the archive
76
- // The archive should contain: skillName/SKILL.md, skillName/scripts/, etc.
77
- const dirName = basename(resolve(skillPath));
78
- archive.directory(skillPath, dirName);
79
- archive.finalize();
80
- });
81
- }
82
- /**
83
- * Format file size for display
84
- */
85
- function formatSize(bytes) {
86
- if (bytes < 1024)
87
- return `${bytes} B`;
88
- if (bytes < 1024 * 1024)
89
- return `${(bytes / 1024).toFixed(1)} KB`;
90
- return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
91
- }
92
- /**
93
- * Handle the pack command
94
- */
95
- export async function handleSkillPack(skillPath, options) {
96
- console.log('');
97
- console.log(`Validating ${skillPath}...`);
98
- const result = await packSkill(skillPath, options.output);
99
- if (options.json) {
100
- console.log(JSON.stringify(result, null, 2));
101
- }
102
- else if (result.success) {
103
- console.log(`\u2713 Valid: ${result.name}`);
104
- console.log('');
105
- console.log('Creating bundle...');
106
- console.log(`\u2713 Created: ${basename(result.path)} (${formatSize(result.size)})`);
107
- console.log(` SHA256: ${result.sha256}`);
108
- }
109
- else {
110
- console.log(result.error);
111
- }
112
- if (!result.success) {
113
- process.exit(1);
114
- }
115
- }
116
- //# sourceMappingURL=pack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../src/commands/skills/pack.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export interface PullOptions {
2
- output?: string;
3
- json?: boolean;
4
- }
5
- /**
6
- * Handle the skill pull command
7
- */
8
- export declare function handleSkillPull(skillSpec: string, options: PullOptions): Promise<void>;
9
- //# sourceMappingURL=pull.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/pull.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C5F"}