agent-skills-cli 1.0.8 → 1.1.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 (178) hide show
  1. package/README.md +44 -19
  2. package/dist/adapters/adapter.d.ts +51 -0
  3. package/dist/adapters/adapter.d.ts.map +1 -0
  4. package/dist/adapters/adapter.js +51 -0
  5. package/dist/adapters/adapter.js.map +1 -0
  6. package/dist/adapters/claude.d.ts +16 -0
  7. package/dist/adapters/claude.d.ts.map +1 -0
  8. package/dist/adapters/claude.js +30 -0
  9. package/dist/adapters/claude.js.map +1 -0
  10. package/dist/adapters/copilot.d.ts +16 -0
  11. package/dist/adapters/copilot.d.ts.map +1 -0
  12. package/dist/adapters/copilot.js +32 -0
  13. package/dist/adapters/copilot.js.map +1 -0
  14. package/dist/adapters/cursor.d.ts +17 -0
  15. package/dist/adapters/cursor.d.ts.map +1 -0
  16. package/dist/adapters/cursor.js +34 -0
  17. package/dist/adapters/cursor.js.map +1 -0
  18. package/dist/adapters/index.d.ts +11 -0
  19. package/dist/adapters/index.d.ts.map +1 -0
  20. package/dist/adapters/index.js +10 -0
  21. package/dist/adapters/index.js.map +1 -0
  22. package/dist/adapters/universal.d.ts +12 -0
  23. package/dist/adapters/universal.d.ts.map +1 -0
  24. package/dist/adapters/universal.js +16 -0
  25. package/dist/adapters/universal.js.map +1 -0
  26. package/dist/cli/agents.d.ts +21 -0
  27. package/dist/cli/agents.d.ts.map +1 -0
  28. package/dist/cli/agents.js +317 -0
  29. package/dist/cli/agents.js.map +1 -0
  30. package/dist/cli/commands/audit.d.ts +11 -0
  31. package/dist/cli/commands/audit.d.ts.map +1 -0
  32. package/dist/cli/commands/audit.js +168 -0
  33. package/dist/cli/commands/audit.js.map +1 -0
  34. package/dist/cli/commands/blueprint.d.ts +11 -0
  35. package/dist/cli/commands/blueprint.d.ts.map +1 -0
  36. package/dist/cli/commands/blueprint.js +210 -0
  37. package/dist/cli/commands/blueprint.js.map +1 -0
  38. package/dist/cli/commands/bootstrap.d.ts +11 -0
  39. package/dist/cli/commands/bootstrap.d.ts.map +1 -0
  40. package/dist/cli/commands/bootstrap.js +267 -0
  41. package/dist/cli/commands/bootstrap.js.map +1 -0
  42. package/dist/cli/commands/capture.d.ts +11 -0
  43. package/dist/cli/commands/capture.d.ts.map +1 -0
  44. package/dist/cli/commands/capture.js +109 -0
  45. package/dist/cli/commands/capture.js.map +1 -0
  46. package/dist/cli/commands/ci.d.ts +11 -0
  47. package/dist/cli/commands/ci.d.ts.map +1 -0
  48. package/dist/cli/commands/ci.js +144 -0
  49. package/dist/cli/commands/ci.js.map +1 -0
  50. package/dist/cli/commands/collab.d.ts +11 -0
  51. package/dist/cli/commands/collab.d.ts.map +1 -0
  52. package/dist/cli/commands/collab.js +196 -0
  53. package/dist/cli/commands/collab.js.map +1 -0
  54. package/dist/cli/commands/convert.d.ts +11 -0
  55. package/dist/cli/commands/convert.d.ts.map +1 -0
  56. package/dist/cli/commands/convert.js +170 -0
  57. package/dist/cli/commands/convert.js.map +1 -0
  58. package/dist/cli/commands/craft.d.ts +18 -0
  59. package/dist/cli/commands/craft.d.ts.map +1 -0
  60. package/dist/cli/commands/craft.js +205 -0
  61. package/dist/cli/commands/craft.js.map +1 -0
  62. package/dist/cli/commands/export.d.ts +9 -0
  63. package/dist/cli/commands/export.d.ts.map +1 -0
  64. package/dist/cli/commands/export.js +111 -0
  65. package/dist/cli/commands/export.js.map +1 -0
  66. package/dist/cli/commands/forge.d.ts +11 -0
  67. package/dist/cli/commands/forge.d.ts.map +1 -0
  68. package/dist/cli/commands/forge.js +152 -0
  69. package/dist/cli/commands/forge.js.map +1 -0
  70. package/dist/cli/commands/grid.d.ts +11 -0
  71. package/dist/cli/commands/grid.d.ts.map +1 -0
  72. package/dist/cli/commands/grid.js +217 -0
  73. package/dist/cli/commands/grid.js.map +1 -0
  74. package/dist/cli/commands/insight.d.ts +7 -0
  75. package/dist/cli/commands/insight.d.ts.map +1 -0
  76. package/dist/cli/commands/insight.js +71 -0
  77. package/dist/cli/commands/insight.js.map +1 -0
  78. package/dist/cli/commands/install.d.ts +6 -0
  79. package/dist/cli/commands/install.d.ts.map +1 -0
  80. package/dist/cli/commands/install.js +359 -0
  81. package/dist/cli/commands/install.js.map +1 -0
  82. package/dist/cli/commands/interactive.d.ts +7 -0
  83. package/dist/cli/commands/interactive.d.ts.map +1 -0
  84. package/dist/cli/commands/interactive.js +535 -0
  85. package/dist/cli/commands/interactive.js.map +1 -0
  86. package/dist/cli/commands/list.d.ts +6 -0
  87. package/dist/cli/commands/list.d.ts.map +1 -0
  88. package/dist/cli/commands/list.js +77 -0
  89. package/dist/cli/commands/list.js.map +1 -0
  90. package/dist/cli/commands/lockspec.d.ts +11 -0
  91. package/dist/cli/commands/lockspec.d.ts.map +1 -0
  92. package/dist/cli/commands/lockspec.js +179 -0
  93. package/dist/cli/commands/lockspec.js.map +1 -0
  94. package/dist/cli/commands/marketplace.d.ts +7 -0
  95. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  96. package/dist/cli/commands/marketplace.js +417 -0
  97. package/dist/cli/commands/marketplace.js.map +1 -0
  98. package/dist/cli/commands/method.d.ts +7 -0
  99. package/dist/cli/commands/method.d.ts.map +1 -0
  100. package/dist/cli/commands/method.js +140 -0
  101. package/dist/cli/commands/method.js.map +1 -0
  102. package/dist/cli/commands/mine.d.ts +11 -0
  103. package/dist/cli/commands/mine.d.ts.map +1 -0
  104. package/dist/cli/commands/mine.js +254 -0
  105. package/dist/cli/commands/mine.js.map +1 -0
  106. package/dist/cli/commands/recall.d.ts +11 -0
  107. package/dist/cli/commands/recall.d.ts.map +1 -0
  108. package/dist/cli/commands/recall.js +201 -0
  109. package/dist/cli/commands/recall.js.map +1 -0
  110. package/dist/cli/commands/rule.d.ts +11 -0
  111. package/dist/cli/commands/rule.d.ts.map +1 -0
  112. package/dist/cli/commands/rule.js +230 -0
  113. package/dist/cli/commands/rule.js.map +1 -0
  114. package/dist/cli/commands/score.d.ts +10 -0
  115. package/dist/cli/commands/score.d.ts.map +1 -0
  116. package/dist/cli/commands/score.js +91 -0
  117. package/dist/cli/commands/score.js.map +1 -0
  118. package/dist/cli/commands/search.d.ts +6 -0
  119. package/dist/cli/commands/search.d.ts.map +1 -0
  120. package/dist/cli/commands/search.js +173 -0
  121. package/dist/cli/commands/search.js.map +1 -0
  122. package/dist/cli/commands/show.d.ts +6 -0
  123. package/dist/cli/commands/show.d.ts.map +1 -0
  124. package/dist/cli/commands/show.js +158 -0
  125. package/dist/cli/commands/show.js.map +1 -0
  126. package/dist/cli/commands/submit-repo.d.ts +11 -0
  127. package/dist/cli/commands/submit-repo.d.ts.map +1 -0
  128. package/dist/cli/commands/submit-repo.js +133 -0
  129. package/dist/cli/commands/submit-repo.js.map +1 -0
  130. package/dist/cli/commands/submit.d.ts +15 -0
  131. package/dist/cli/commands/submit.d.ts.map +1 -0
  132. package/dist/cli/commands/submit.js +161 -0
  133. package/dist/cli/commands/submit.js.map +1 -0
  134. package/dist/cli/commands/suggest.d.ts +11 -0
  135. package/dist/cli/commands/suggest.d.ts.map +1 -0
  136. package/dist/cli/commands/suggest.js +164 -0
  137. package/dist/cli/commands/suggest.js.map +1 -0
  138. package/dist/cli/commands/track.d.ts +11 -0
  139. package/dist/cli/commands/track.d.ts.map +1 -0
  140. package/dist/cli/commands/track.js +199 -0
  141. package/dist/cli/commands/track.js.map +1 -0
  142. package/dist/cli/commands/trigger.d.ts +11 -0
  143. package/dist/cli/commands/trigger.d.ts.map +1 -0
  144. package/dist/cli/commands/trigger.js +157 -0
  145. package/dist/cli/commands/trigger.js.map +1 -0
  146. package/dist/cli/commands/utils-commands.d.ts +9 -0
  147. package/dist/cli/commands/utils-commands.d.ts.map +1 -0
  148. package/dist/cli/commands/utils-commands.js +389 -0
  149. package/dist/cli/commands/utils-commands.js.map +1 -0
  150. package/dist/cli/commands/validate.d.ts +6 -0
  151. package/dist/cli/commands/validate.d.ts.map +1 -0
  152. package/dist/cli/commands/validate.js +40 -0
  153. package/dist/cli/commands/validate.js.map +1 -0
  154. package/dist/cli/index.d.ts +3 -0
  155. package/dist/cli/index.d.ts.map +1 -1
  156. package/dist/cli/index.js +88 -2743
  157. package/dist/cli/index.js.map +1 -1
  158. package/dist/core/audit.d.ts +24 -0
  159. package/dist/core/audit.d.ts.map +1 -0
  160. package/dist/core/audit.js +195 -0
  161. package/dist/core/audit.js.map +1 -0
  162. package/dist/core/index.d.ts +8 -0
  163. package/dist/core/index.d.ts.map +1 -1
  164. package/dist/core/index.js +8 -0
  165. package/dist/core/index.js.map +1 -1
  166. package/dist/core/quality.d.ts +48 -0
  167. package/dist/core/quality.d.ts.map +1 -0
  168. package/dist/core/quality.js +241 -0
  169. package/dist/core/quality.js.map +1 -0
  170. package/dist/core/scanner-rules.d.ts +58 -0
  171. package/dist/core/scanner-rules.d.ts.map +1 -0
  172. package/dist/core/scanner-rules.js +335 -0
  173. package/dist/core/scanner-rules.js.map +1 -0
  174. package/dist/core/suggest.d.ts +51 -0
  175. package/dist/core/suggest.d.ts.map +1 -0
  176. package/dist/core/suggest.js +241 -0
  177. package/dist/core/suggest.js.map +1 -0
  178. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CI Command
3
+ * Generate CI/CD workflow files for GitHub Actions, GitLab CI, etc.
4
+ * (SkillKit calls this "cicd" — we call it "ci")
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Register the ci command
9
+ */
10
+ export declare function registerCiCommand(program: Command): void;
11
+ //# sourceMappingURL=ci.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ci.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAexD"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * CI Command
3
+ * Generate CI/CD workflow files for GitHub Actions, GitLab CI, etc.
4
+ * (SkillKit calls this "cicd" — we call it "ci")
5
+ */
6
+ import chalk from 'chalk';
7
+ import { writeFile, mkdir } from 'fs/promises';
8
+ import { existsSync } from 'fs';
9
+ import { resolve, join } from 'path';
10
+ /**
11
+ * Register the ci command
12
+ */
13
+ export function registerCiCommand(program) {
14
+ program
15
+ .command('ci [platform]')
16
+ .description('Generate CI/CD workflow for skill validation')
17
+ .option('-o, --output <dir>', 'Output directory (auto-detected)')
18
+ .option('--audit', 'Include security audit step', true)
19
+ .option('--validate', 'Include validation step', true)
20
+ .action(async (platform, options) => {
21
+ try {
22
+ await ciCommand(platform || 'github', options);
23
+ }
24
+ catch (err) {
25
+ console.error(chalk.red('Error:'), err.message);
26
+ process.exit(1);
27
+ }
28
+ });
29
+ }
30
+ async function ciCommand(platform, options) {
31
+ const generators = {
32
+ github: () => generateGitHubActions(options),
33
+ gitlab: () => generateGitLabCI(options),
34
+ bitbucket: () => generateBitbucketPipelines(options),
35
+ };
36
+ const generator = generators[platform];
37
+ if (!generator) {
38
+ console.error(chalk.red(`Unknown platform: ${platform}`));
39
+ console.log(chalk.dim(`Supported: ${Object.keys(generators).join(', ')}`));
40
+ process.exit(1);
41
+ }
42
+ const { path: outputPath, content } = generator();
43
+ const finalPath = options.output ? join(resolve(options.output), outputPath) : resolve(outputPath);
44
+ if (existsSync(finalPath)) {
45
+ console.log(chalk.yellow(`⚠ File already exists: ${finalPath}`));
46
+ console.log(chalk.dim(' Delete it first or use --output to specify a different location'));
47
+ return;
48
+ }
49
+ const dir = finalPath.substring(0, finalPath.lastIndexOf('/'));
50
+ await mkdir(dir, { recursive: true });
51
+ await writeFile(finalPath, content);
52
+ console.log('');
53
+ console.log(chalk.green(`✨ Generated ${platform} CI workflow`));
54
+ console.log(` ${chalk.dim('File:')} ${chalk.cyan(finalPath)}`);
55
+ console.log('');
56
+ console.log(chalk.dim('Features:'));
57
+ if (options.validate !== false)
58
+ console.log(chalk.dim(' ✓ Skill validation'));
59
+ if (options.audit !== false)
60
+ console.log(chalk.dim(' ✓ Security audit'));
61
+ console.log('');
62
+ console.log(chalk.dim(`Commit and push to activate the workflow.`));
63
+ console.log('');
64
+ }
65
+ function generateGitHubActions(options) {
66
+ const steps = [];
67
+ steps.push(` - uses: actions/checkout@v4
68
+ - uses: actions/setup-node@v4
69
+ with:
70
+ node-version: '20'
71
+ - name: Install agent-skills-cli
72
+ run: npm install -g agent-skills-cli`);
73
+ if (options.validate !== false) {
74
+ steps.push(` - name: Validate Skills
75
+ run: skills validate .`);
76
+ }
77
+ if (options.audit !== false) {
78
+ steps.push(` - name: Security Audit
79
+ run: skills audit . --format sarif --output results.sarif
80
+ - name: Upload SARIF
81
+ if: always()
82
+ uses: github/codeql-action/upload-sarif@v3
83
+ with:
84
+ sarif_file: results.sarif`);
85
+ }
86
+ const content = `name: Skill Validation
87
+
88
+ on:
89
+ push:
90
+ paths:
91
+ - '**/*.md'
92
+ - '.agent/**'
93
+ - '.cursor/**'
94
+ - '.claude/**'
95
+ - '.github/skills/**'
96
+ pull_request:
97
+ paths:
98
+ - '**/*.md'
99
+
100
+ jobs:
101
+ validate:
102
+ runs-on: ubuntu-latest
103
+ steps:
104
+ ${steps.join('\n')}
105
+ `;
106
+ return { path: '.github/workflows/skill-validation.yml', content };
107
+ }
108
+ function generateGitLabCI(options) {
109
+ const scripts = ['npm install -g agent-skills-cli'];
110
+ if (options.validate !== false)
111
+ scripts.push('skills validate .');
112
+ if (options.audit !== false)
113
+ scripts.push('skills audit . --fail-on high');
114
+ const content = `skill-validation:
115
+ image: node:20
116
+ stage: test
117
+ script:
118
+ ${scripts.map(s => ` - ${s}`).join('\n')}
119
+ only:
120
+ changes:
121
+ - "**/*.md"
122
+ - ".agent/**"
123
+ - ".cursor/**"
124
+ - ".claude/**"
125
+ `;
126
+ return { path: '.gitlab-ci.yml', content };
127
+ }
128
+ function generateBitbucketPipelines(options) {
129
+ const scripts = ['npm install -g agent-skills-cli'];
130
+ if (options.validate !== false)
131
+ scripts.push('skills validate .');
132
+ if (options.audit !== false)
133
+ scripts.push('skills audit . --fail-on high');
134
+ const content = `pipelines:
135
+ default:
136
+ - step:
137
+ name: Skill Validation
138
+ image: node:20
139
+ script:
140
+ ${scripts.map(s => ` - ${s}`).join('\n')}
141
+ `;
142
+ return { path: 'bitbucket-pipelines.yml', content };
143
+ }
144
+ //# sourceMappingURL=ci.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/cli/commands/ci.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Collab Command
3
+ * Team skill sharing and collaboration
4
+ * (SkillKit calls this "team" — we call it "collab")
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Register the collab command
9
+ */
10
+ export declare function registerCollabCommand(program: Command): void;
11
+ //# sourceMappingURL=collab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collab.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/collab.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE5D"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Collab Command
3
+ * Team skill sharing and collaboration
4
+ * (SkillKit calls this "team" — we call it "collab")
5
+ */
6
+ import chalk from 'chalk';
7
+ import * as p from '@clack/prompts';
8
+ import { readFile, writeFile } from 'fs/promises';
9
+ import { existsSync } from 'fs';
10
+ import { resolve } from 'path';
11
+ const COLLAB_FILE = '.skills-collab.json';
12
+ /**
13
+ * Register the collab command
14
+ */
15
+ export function registerCollabCommand(program) {
16
+ const collab = program
17
+ .command('collab')
18
+ .alias('cl')
19
+ .description('Team skill collaboration');
20
+ collab
21
+ .command('init <team-name>')
22
+ .description('Initialize team collaboration')
23
+ .action(async (teamName) => {
24
+ try {
25
+ await collabInit(teamName);
26
+ }
27
+ catch (err) {
28
+ console.error(chalk.red('Error:'), err.message);
29
+ process.exit(1);
30
+ }
31
+ });
32
+ collab
33
+ .command('add <member>')
34
+ .description('Add a team member')
35
+ .action(async (member) => {
36
+ try {
37
+ await collabAddMember(member);
38
+ }
39
+ catch (err) {
40
+ console.error(chalk.red('Error:'), err.message);
41
+ process.exit(1);
42
+ }
43
+ });
44
+ collab
45
+ .command('share <skill>')
46
+ .description('Share a skill with the team')
47
+ .action(async (skill) => {
48
+ try {
49
+ await collabShare(skill);
50
+ }
51
+ catch (err) {
52
+ console.error(chalk.red('Error:'), err.message);
53
+ process.exit(1);
54
+ }
55
+ });
56
+ collab
57
+ .command('status')
58
+ .description('Show team collaboration status')
59
+ .action(async () => {
60
+ try {
61
+ await collabStatus();
62
+ }
63
+ catch (err) {
64
+ console.error(chalk.red('Error:'), err.message);
65
+ process.exit(1);
66
+ }
67
+ });
68
+ collab
69
+ .command('sync')
70
+ .description('Sync shared skills with team')
71
+ .action(async () => {
72
+ try {
73
+ await collabSync();
74
+ }
75
+ catch (err) {
76
+ console.error(chalk.red('Error:'), err.message);
77
+ process.exit(1);
78
+ }
79
+ });
80
+ }
81
+ async function loadCollabConfig() {
82
+ const configPath = resolve(COLLAB_FILE);
83
+ if (!existsSync(configPath))
84
+ return null;
85
+ try {
86
+ return JSON.parse(await readFile(configPath, 'utf-8'));
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ async function saveCollabConfig(config) {
93
+ config.updatedAt = new Date().toISOString();
94
+ await writeFile(resolve(COLLAB_FILE), JSON.stringify(config, null, 2));
95
+ }
96
+ async function collabInit(teamName) {
97
+ const existing = await loadCollabConfig();
98
+ if (existing) {
99
+ console.error(chalk.yellow(`Team "${existing.team}" already initialized. Use collab status to view.`));
100
+ return;
101
+ }
102
+ const config = {
103
+ team: teamName,
104
+ members: [],
105
+ sharedSkills: [],
106
+ createdAt: new Date().toISOString(),
107
+ updatedAt: new Date().toISOString(),
108
+ };
109
+ await saveCollabConfig(config);
110
+ console.log('');
111
+ console.log(chalk.green(`✨ Team "${teamName}" initialized!`));
112
+ console.log('');
113
+ console.log(chalk.dim('Next steps:'));
114
+ console.log(chalk.dim(` skills collab add <username> Add team members`));
115
+ console.log(chalk.dim(` skills collab share <skill> Share a skill`));
116
+ console.log(chalk.dim(` skills collab status View team status`));
117
+ console.log('');
118
+ }
119
+ async function collabAddMember(member) {
120
+ const config = await loadCollabConfig();
121
+ if (!config) {
122
+ console.error(chalk.red('No team initialized. Run: skills collab init <team-name>'));
123
+ process.exit(1);
124
+ }
125
+ if (config.members.includes(member)) {
126
+ console.log(chalk.yellow(`${member} is already a team member`));
127
+ return;
128
+ }
129
+ config.members.push(member);
130
+ await saveCollabConfig(config);
131
+ console.log(chalk.green(`✓ Added ${member} to team "${config.team}"`));
132
+ console.log(chalk.dim(` Total members: ${config.members.length}`));
133
+ }
134
+ async function collabShare(skillName) {
135
+ const config = await loadCollabConfig();
136
+ if (!config) {
137
+ console.error(chalk.red('No team initialized. Run: skills collab init <team-name>'));
138
+ process.exit(1);
139
+ }
140
+ if (config.sharedSkills.includes(skillName)) {
141
+ console.log(chalk.yellow(`${skillName} is already shared`));
142
+ return;
143
+ }
144
+ config.sharedSkills.push(skillName);
145
+ await saveCollabConfig(config);
146
+ console.log(chalk.green(`✓ Shared "${skillName}" with team "${config.team}"`));
147
+ console.log(chalk.dim(` Total shared skills: ${config.sharedSkills.length}`));
148
+ }
149
+ async function collabStatus() {
150
+ const config = await loadCollabConfig();
151
+ if (!config) {
152
+ console.log(chalk.yellow('No team initialized. Run: skills collab init <team-name>'));
153
+ return;
154
+ }
155
+ console.log('');
156
+ console.log(chalk.bold(`👥 Team: ${chalk.cyan(config.team)}`));
157
+ console.log('');
158
+ console.log(chalk.bold('Members:'));
159
+ if (config.members.length === 0) {
160
+ console.log(chalk.dim(' No members yet. Use: skills collab add <username>'));
161
+ }
162
+ else {
163
+ for (const m of config.members) {
164
+ console.log(` ${chalk.green('●')} ${m}`);
165
+ }
166
+ }
167
+ console.log('');
168
+ console.log(chalk.bold('Shared Skills:'));
169
+ if (config.sharedSkills.length === 0) {
170
+ console.log(chalk.dim(' No skills shared. Use: skills collab share <skill>'));
171
+ }
172
+ else {
173
+ for (const s of config.sharedSkills) {
174
+ console.log(` ${chalk.cyan('◆')} ${s}`);
175
+ }
176
+ }
177
+ console.log('');
178
+ console.log(chalk.dim(`Created: ${config.createdAt}`));
179
+ console.log(chalk.dim(`Updated: ${config.updatedAt}`));
180
+ console.log('');
181
+ }
182
+ async function collabSync() {
183
+ const config = await loadCollabConfig();
184
+ if (!config) {
185
+ console.error(chalk.red('No team initialized. Run: skills collab init <team-name>'));
186
+ process.exit(1);
187
+ }
188
+ const spinner = p.spinner();
189
+ spinner.start('Syncing team skills...');
190
+ // Sync is currently local-only (future: Git/API based sync)
191
+ await new Promise(r => setTimeout(r, 500));
192
+ spinner.stop('Skills synchronized');
193
+ console.log(chalk.dim(` ${config.sharedSkills.length} skill(s) in sync`));
194
+ console.log('');
195
+ }
196
+ //# sourceMappingURL=collab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collab.js","sourceRoot":"","sources":["../../../src/cli/commands/collab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Convert Command
3
+ * Cross-agent format translation for skills
4
+ * (SkillKit calls this "translate" — we call it "convert")
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Register the convert command
9
+ */
10
+ export declare function registerConvertCommand(program: Command): void;
11
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe7D"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Convert Command
3
+ * Cross-agent format translation for skills
4
+ * (SkillKit calls this "translate" — we call it "convert")
5
+ */
6
+ import chalk from 'chalk';
7
+ import ora from 'ora';
8
+ import { readFile, writeFile, mkdir } from 'fs/promises';
9
+ import { existsSync } from 'fs';
10
+ import { resolve, join, basename, dirname } from 'path';
11
+ import { getAdapter, AGENTS } from '../agents.js';
12
+ // Derive valid formats from the AGENTS registry + well-known names
13
+ const VALID_FORMATS = Object.keys(AGENTS);
14
+ /**
15
+ * Register the convert command
16
+ */
17
+ export function registerConvertCommand(program) {
18
+ program
19
+ .command('convert <source> <target-format>')
20
+ .alias('cv')
21
+ .description(`Convert skills between agent formats (${VALID_FORMATS.join(', ')})`)
22
+ .option('-o, --output <path>', 'Output file path (default: auto)')
23
+ .option('--overwrite', 'Overwrite existing output file')
24
+ .action(async (source, targetFormat, options) => {
25
+ try {
26
+ await convertCommand(source, targetFormat, options);
27
+ }
28
+ catch (err) {
29
+ console.error(chalk.red('Error:'), err.message);
30
+ process.exit(1);
31
+ }
32
+ });
33
+ }
34
+ async function convertCommand(source, targetFormat, options) {
35
+ // Validate target format
36
+ if (!VALID_FORMATS.includes(targetFormat)) {
37
+ console.error(chalk.red(`Invalid format: ${targetFormat}`));
38
+ console.log(chalk.dim(`Valid formats: ${VALID_FORMATS.join(', ')}`));
39
+ process.exit(1);
40
+ }
41
+ const sourcePath = resolve(source);
42
+ if (!existsSync(sourcePath)) {
43
+ console.error(chalk.red(`Source not found: ${sourcePath}`));
44
+ process.exit(1);
45
+ }
46
+ const spinner = ora(`Converting to ${targetFormat} format...`).start();
47
+ // Read source content
48
+ const content = await readFile(sourcePath, 'utf-8');
49
+ const sourceFormat = detectFormat(sourcePath, content);
50
+ if (!sourceFormat) {
51
+ spinner.fail('Could not detect source format');
52
+ process.exit(1);
53
+ }
54
+ // Parse source into intermediate representation
55
+ const parsed = parseSkillContent(content, sourceFormat);
56
+ // Convert to target format using adapter
57
+ const adapter = getAdapter(targetFormat);
58
+ const converted = adapter.generateConfig({
59
+ name: parsed.name,
60
+ description: parsed.description,
61
+ rawContent: parsed.rawContent,
62
+ sections: parsed.sections,
63
+ frontmatter: parsed.frontmatter,
64
+ });
65
+ // Determine output path using adapter
66
+ const outputPath = options.output
67
+ ? resolve(options.output)
68
+ : join(dirname(sourcePath), adapter.getProjectDir(), adapter.getSkillFilename());
69
+ if (existsSync(outputPath) && !options.overwrite) {
70
+ spinner.fail(`Output file exists: ${outputPath}`);
71
+ console.log(chalk.dim('Use --overwrite to replace'));
72
+ process.exit(1);
73
+ }
74
+ // Write output
75
+ await mkdir(dirname(outputPath), { recursive: true });
76
+ await writeFile(outputPath, converted);
77
+ spinner.succeed(`Converted ${sourceFormat} → ${targetFormat}`);
78
+ console.log('');
79
+ console.log(` ${chalk.dim('Source:')} ${chalk.cyan(basename(sourcePath))}`);
80
+ console.log(` ${chalk.dim('Output:')} ${chalk.green(outputPath)}`);
81
+ console.log('');
82
+ }
83
+ function detectFormat(filePath, content) {
84
+ const filename = basename(filePath).toLowerCase();
85
+ if (filename === '.cursorrules')
86
+ return 'cursor';
87
+ if (filename === '.windsurfrules')
88
+ return 'windsurf';
89
+ if (filename === 'claude.md')
90
+ return 'claude';
91
+ if (filename === 'agents.md')
92
+ return 'codex';
93
+ if (filename === 'copilot-instructions.md')
94
+ return 'copilot';
95
+ if (filename === 'skill.md')
96
+ return 'antigravity';
97
+ // Try content-based detection
98
+ if (content.startsWith('---\n') && content.includes('name:'))
99
+ return 'antigravity';
100
+ return null;
101
+ }
102
+ function parseSkillContent(content, format) {
103
+ const parsed = {
104
+ name: '',
105
+ description: '',
106
+ sections: [],
107
+ rawContent: content,
108
+ };
109
+ // Extract frontmatter if present
110
+ if (content.startsWith('---\n')) {
111
+ const endIdx = content.indexOf('\n---\n', 4);
112
+ if (endIdx > 0) {
113
+ const fm = content.substring(4, endIdx);
114
+ parsed.frontmatter = {};
115
+ for (const line of fm.split('\n')) {
116
+ const colonIdx = line.indexOf(':');
117
+ if (colonIdx > 0) {
118
+ const key = line.substring(0, colonIdx).trim();
119
+ const val = line.substring(colonIdx + 1).trim();
120
+ parsed.frontmatter[key] = val;
121
+ }
122
+ }
123
+ parsed.name = parsed.frontmatter['name'] || '';
124
+ parsed.description = parsed.frontmatter['description'] || '';
125
+ content = content.substring(endIdx + 5);
126
+ }
127
+ }
128
+ // Parse markdown sections
129
+ const lines = content.split('\n');
130
+ let currentHeading = '';
131
+ let currentContent = [];
132
+ for (const line of lines) {
133
+ if (line.startsWith('# ') || line.startsWith('## ')) {
134
+ if (currentHeading || currentContent.length > 0) {
135
+ parsed.sections.push({ heading: currentHeading, content: currentContent.join('\n').trim() });
136
+ }
137
+ currentHeading = line.replace(/^#+\s*/, '');
138
+ currentContent = [];
139
+ }
140
+ else {
141
+ currentContent.push(line);
142
+ }
143
+ }
144
+ if (currentHeading || currentContent.length > 0) {
145
+ parsed.sections.push({ heading: currentHeading, content: currentContent.join('\n').trim() });
146
+ }
147
+ if (!parsed.name && parsed.sections.length > 0) {
148
+ parsed.name = parsed.sections[0].heading;
149
+ }
150
+ return parsed;
151
+ }
152
+ // Legacy render functions kept for backwards compatibility
153
+ // Adapters call these internally when needed
154
+ function renderAsSkillMd(parsed) {
155
+ const lines = [];
156
+ lines.push('---');
157
+ lines.push(`name: ${parsed.name || 'converted-skill'}`);
158
+ lines.push(`description: ${parsed.description || 'Converted skill'}`);
159
+ lines.push('---');
160
+ lines.push('');
161
+ for (const section of parsed.sections) {
162
+ if (section.heading)
163
+ lines.push(`## ${section.heading}`);
164
+ if (section.content)
165
+ lines.push(section.content);
166
+ lines.push('');
167
+ }
168
+ return lines.join('\n');
169
+ }
170
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/cli/commands/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Craft Command
3
+ * Enhanced skill scaffolding with optional directories
4
+ * (SkillKit calls this "create" — we call it "craft")
5
+ */
6
+ import { Command } from 'commander';
7
+ export interface CraftOptions {
8
+ full?: boolean;
9
+ scripts?: boolean;
10
+ references?: boolean;
11
+ assets?: boolean;
12
+ dir?: string;
13
+ }
14
+ /**
15
+ * Register the craft command with commander
16
+ */
17
+ export declare function registerCraftCommand(program: Command): void;
18
+ //# sourceMappingURL=craft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/craft.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB3D"}