@skillsmith/cli 0.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.
- package/dist/.tsbuildinfo +1 -0
- package/dist/src/commands/author.d.ts +33 -0
- package/dist/src/commands/author.d.ts.map +1 -0
- package/dist/src/commands/author.js +337 -0
- package/dist/src/commands/author.js.map +1 -0
- package/dist/src/commands/index.d.ts +9 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +12 -0
- package/dist/src/commands/index.js.map +1 -0
- package/dist/src/commands/manage.d.ts +37 -0
- package/dist/src/commands/manage.d.ts.map +1 -0
- package/dist/src/commands/manage.js +308 -0
- package/dist/src/commands/manage.js.map +1 -0
- package/dist/src/commands/search.d.ts +12 -0
- package/dist/src/commands/search.d.ts.map +1 -0
- package/dist/src/commands/search.js +316 -0
- package/dist/src/commands/search.js.map +1 -0
- package/dist/src/config.d.ts +19 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +21 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/import.d.ts +29 -0
- package/dist/src/import.d.ts.map +1 -0
- package/dist/src/import.js +255 -0
- package/dist/src/import.js.map +1 -0
- package/dist/src/index.d.ts +16 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +65 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/templates/index.d.ts +8 -0
- package/dist/src/templates/index.d.ts.map +1 -0
- package/dist/src/templates/index.js +8 -0
- package/dist/src/templates/index.js.map +1 -0
- package/dist/src/templates/readme.md.template.d.ts +8 -0
- package/dist/src/templates/readme.md.template.d.ts.map +1 -0
- package/dist/src/templates/readme.md.template.js +86 -0
- package/dist/src/templates/readme.md.template.js.map +1 -0
- package/dist/src/templates/skill.md.template.d.ts +8 -0
- package/dist/src/templates/skill.md.template.d.ts.map +1 -0
- package/dist/src/templates/skill.md.template.js +99 -0
- package/dist/src/templates/skill.md.template.js.map +1 -0
- package/dist/src/utils/license.d.ts +82 -0
- package/dist/src/utils/license.d.ts.map +1 -0
- package/dist/src/utils/license.js +282 -0
- package/dist/src/utils/license.js.map +1 -0
- package/dist/src/utils/license.test.d.ts +7 -0
- package/dist/src/utils/license.test.d.ts.map +1 -0
- package/dist/src/utils/license.test.js +303 -0
- package/dist/src/utils/license.test.js.map +1 -0
- package/dist/src/utils/sanitize.d.ts +30 -0
- package/dist/src/utils/sanitize.d.ts.map +1 -0
- package/dist/src/utils/sanitize.js +45 -0
- package/dist/src/utils/sanitize.js.map +1 -0
- package/dist/tests/author.test.d.ts +5 -0
- package/dist/tests/author.test.d.ts.map +1 -0
- package/dist/tests/author.test.js +149 -0
- package/dist/tests/author.test.js.map +1 -0
- package/dist/tests/e2e/author.e2e.test.d.ts +9 -0
- package/dist/tests/e2e/author.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/author.e2e.test.js +346 -0
- package/dist/tests/e2e/author.e2e.test.js.map +1 -0
- package/dist/tests/e2e/import.e2e.test.d.ts +10 -0
- package/dist/tests/e2e/import.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/import.e2e.test.js +213 -0
- package/dist/tests/e2e/import.e2e.test.js.map +1 -0
- package/dist/tests/e2e/manage.e2e.test.d.ts +9 -0
- package/dist/tests/e2e/manage.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/manage.e2e.test.js +277 -0
- package/dist/tests/e2e/manage.e2e.test.js.map +1 -0
- package/dist/tests/e2e/search.e2e.test.d.ts +10 -0
- package/dist/tests/e2e/search.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/search.e2e.test.js +267 -0
- package/dist/tests/e2e/search.e2e.test.js.map +1 -0
- package/dist/tests/e2e/test-config.d.ts +39 -0
- package/dist/tests/e2e/test-config.d.ts.map +1 -0
- package/dist/tests/e2e/test-config.js +44 -0
- package/dist/tests/e2e/test-config.js.map +1 -0
- package/dist/tests/e2e/utils/baseline-collector.d.ts +107 -0
- package/dist/tests/e2e/utils/baseline-collector.d.ts.map +1 -0
- package/dist/tests/e2e/utils/baseline-collector.js +211 -0
- package/dist/tests/e2e/utils/baseline-collector.js.map +1 -0
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts +46 -0
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +1 -0
- package/dist/tests/e2e/utils/hardcoded-detector.js +197 -0
- package/dist/tests/e2e/utils/hardcoded-detector.js.map +1 -0
- package/dist/tests/e2e/utils/index.d.ts +8 -0
- package/dist/tests/e2e/utils/index.d.ts.map +1 -0
- package/dist/tests/e2e/utils/index.js +8 -0
- package/dist/tests/e2e/utils/index.js.map +1 -0
- package/dist/tests/e2e/utils/linear-reporter.d.ts +60 -0
- package/dist/tests/e2e/utils/linear-reporter.d.ts.map +1 -0
- package/dist/tests/e2e/utils/linear-reporter.js +223 -0
- package/dist/tests/e2e/utils/linear-reporter.js.map +1 -0
- package/dist/tests/import.test.d.ts +5 -0
- package/dist/tests/import.test.d.ts.map +1 -0
- package/dist/tests/import.test.js +11 -0
- package/dist/tests/import.test.js.map +1 -0
- package/dist/tests/manage.test.d.ts +5 -0
- package/dist/tests/manage.test.d.ts.map +1 -0
- package/dist/tests/manage.test.js +135 -0
- package/dist/tests/manage.test.js.map +1 -0
- package/dist/tests/search.test.d.ts +5 -0
- package/dist/tests/search.test.d.ts.map +1 -0
- package/dist/tests/search.test.js +91 -0
- package/dist/tests/search.test.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +9 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-746: Skill Authoring Commands
|
|
3
|
+
*
|
|
4
|
+
* Provides CLI commands for creating, validating, and publishing skills.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { input, confirm, select } from '@inquirer/prompts';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import ora from 'ora';
|
|
10
|
+
import { mkdir, writeFile, readFile, stat } from 'fs/promises';
|
|
11
|
+
import { join, resolve } from 'path';
|
|
12
|
+
import { createHash } from 'crypto';
|
|
13
|
+
import { SkillParser } from '@skillsmith/core';
|
|
14
|
+
import { SKILL_MD_TEMPLATE, README_MD_TEMPLATE } from '../templates/index.js';
|
|
15
|
+
import { sanitizeError } from '../utils/sanitize.js';
|
|
16
|
+
/**
|
|
17
|
+
* Initialize a new skill directory
|
|
18
|
+
*/
|
|
19
|
+
async function initSkill(name, targetPath) {
|
|
20
|
+
// Interactive prompts if name not provided
|
|
21
|
+
const skillName = name ||
|
|
22
|
+
(await input({
|
|
23
|
+
message: 'Skill name:',
|
|
24
|
+
validate: (value) => {
|
|
25
|
+
if (!value.trim())
|
|
26
|
+
return 'Name is required';
|
|
27
|
+
if (!/^[a-zA-Z][a-zA-Z0-9-_]*$/.test(value)) {
|
|
28
|
+
return 'Name must start with a letter and contain only letters, numbers, hyphens, and underscores';
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
},
|
|
32
|
+
}));
|
|
33
|
+
const description = await input({
|
|
34
|
+
message: 'Description:',
|
|
35
|
+
default: `A Claude skill for ${skillName}`,
|
|
36
|
+
});
|
|
37
|
+
const author = await input({
|
|
38
|
+
message: 'Author:',
|
|
39
|
+
default: process.env['USER'] || 'author',
|
|
40
|
+
});
|
|
41
|
+
const category = await select({
|
|
42
|
+
message: 'Category:',
|
|
43
|
+
choices: [
|
|
44
|
+
{ name: 'Development', value: 'development' },
|
|
45
|
+
{ name: 'Productivity', value: 'productivity' },
|
|
46
|
+
{ name: 'Communication', value: 'communication' },
|
|
47
|
+
{ name: 'Data', value: 'data' },
|
|
48
|
+
{ name: 'Security', value: 'security' },
|
|
49
|
+
{ name: 'Other', value: 'other' },
|
|
50
|
+
],
|
|
51
|
+
});
|
|
52
|
+
const skillDir = resolve(targetPath, skillName);
|
|
53
|
+
// Check if directory already exists
|
|
54
|
+
try {
|
|
55
|
+
await stat(skillDir);
|
|
56
|
+
const overwrite = await confirm({
|
|
57
|
+
message: `Directory ${skillDir} already exists. Overwrite?`,
|
|
58
|
+
default: false,
|
|
59
|
+
});
|
|
60
|
+
if (!overwrite) {
|
|
61
|
+
console.log(chalk.yellow('Initialization cancelled'));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Directory doesn't exist, continue
|
|
67
|
+
}
|
|
68
|
+
const spinner = ora('Creating skill structure...').start();
|
|
69
|
+
try {
|
|
70
|
+
// Create directory structure
|
|
71
|
+
await mkdir(skillDir, { recursive: true });
|
|
72
|
+
await mkdir(join(skillDir, 'scripts'), { recursive: true });
|
|
73
|
+
await mkdir(join(skillDir, 'resources'), { recursive: true });
|
|
74
|
+
// Generate SKILL.md from template
|
|
75
|
+
const skillMdContent = SKILL_MD_TEMPLATE.replace(/\{\{name\}\}/g, skillName)
|
|
76
|
+
.replace(/\{\{description\}\}/g, description)
|
|
77
|
+
.replace(/\{\{author\}\}/g, author)
|
|
78
|
+
.replace(/\{\{category\}\}/g, category)
|
|
79
|
+
.replace(/\{\{date\}\}/g, new Date().toISOString().split('T')[0] || '');
|
|
80
|
+
await writeFile(join(skillDir, 'SKILL.md'), skillMdContent, 'utf-8');
|
|
81
|
+
// Generate README.md from template
|
|
82
|
+
const readmeContent = README_MD_TEMPLATE.replace(/\{\{name\}\}/g, skillName).replace(/\{\{description\}\}/g, description);
|
|
83
|
+
await writeFile(join(skillDir, 'README.md'), readmeContent, 'utf-8');
|
|
84
|
+
// Create placeholder script
|
|
85
|
+
const placeholderScript = `#!/usr/bin/env node
|
|
86
|
+
/**
|
|
87
|
+
* ${skillName} - Example Script
|
|
88
|
+
*
|
|
89
|
+
* Add your skill's automation scripts here.
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
console.log('${skillName} script executed');
|
|
93
|
+
`;
|
|
94
|
+
await writeFile(join(skillDir, 'scripts', 'example.js'), placeholderScript, 'utf-8');
|
|
95
|
+
// Create .gitignore
|
|
96
|
+
const gitignore = `# Dependencies
|
|
97
|
+
node_modules/
|
|
98
|
+
|
|
99
|
+
# Build output
|
|
100
|
+
dist/
|
|
101
|
+
|
|
102
|
+
# Environment
|
|
103
|
+
.env
|
|
104
|
+
.env.local
|
|
105
|
+
|
|
106
|
+
# OS files
|
|
107
|
+
.DS_Store
|
|
108
|
+
Thumbs.db
|
|
109
|
+
`;
|
|
110
|
+
await writeFile(join(skillDir, '.gitignore'), gitignore, 'utf-8');
|
|
111
|
+
spinner.succeed(`Created skill at ${skillDir}`);
|
|
112
|
+
console.log(chalk.bold('\nNext steps:'));
|
|
113
|
+
console.log(chalk.dim(` 1. cd ${skillDir}`));
|
|
114
|
+
console.log(chalk.dim(' 2. Edit SKILL.md to customize your skill'));
|
|
115
|
+
console.log(chalk.dim(' 3. Add scripts to the scripts/ directory'));
|
|
116
|
+
console.log(chalk.dim(' 4. Run skillsmith validate to check your skill'));
|
|
117
|
+
console.log(chalk.dim(' 5. Run skillsmith publish to prepare for sharing'));
|
|
118
|
+
console.log();
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
spinner.fail(`Failed to create skill: ${sanitizeError(error)}`);
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Pretty print validation errors and warnings
|
|
127
|
+
*/
|
|
128
|
+
function printValidationResult(result, filePath) {
|
|
129
|
+
console.log(chalk.bold(`\nValidation Result for ${filePath}:\n`));
|
|
130
|
+
if (result.valid) {
|
|
131
|
+
console.log(chalk.green.bold(' VALID'));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(chalk.red.bold(' INVALID'));
|
|
135
|
+
}
|
|
136
|
+
if (result.errors.length > 0) {
|
|
137
|
+
console.log(chalk.red.bold('\nErrors:'));
|
|
138
|
+
for (const error of result.errors) {
|
|
139
|
+
console.log(chalk.red(` - ${error}`));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (result.warnings.length > 0) {
|
|
143
|
+
console.log(chalk.yellow.bold('\nWarnings:'));
|
|
144
|
+
for (const warning of result.warnings) {
|
|
145
|
+
console.log(chalk.yellow(` - ${warning}`));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
console.log();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Validate a local SKILL.md file
|
|
152
|
+
*/
|
|
153
|
+
async function validateSkill(skillPath) {
|
|
154
|
+
const spinner = ora('Validating skill...').start();
|
|
155
|
+
try {
|
|
156
|
+
// Resolve path
|
|
157
|
+
let filePath = resolve(skillPath);
|
|
158
|
+
// Check if it's a directory, look for SKILL.md
|
|
159
|
+
try {
|
|
160
|
+
const stats = await stat(filePath);
|
|
161
|
+
if (stats.isDirectory()) {
|
|
162
|
+
filePath = join(filePath, 'SKILL.md');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// If path doesn't exist, try adding SKILL.md
|
|
167
|
+
if (!filePath.endsWith('.md')) {
|
|
168
|
+
filePath = join(filePath, 'SKILL.md');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Read file
|
|
172
|
+
const content = await readFile(filePath, 'utf-8');
|
|
173
|
+
// Parse and validate
|
|
174
|
+
const parser = new SkillParser({ requireName: true });
|
|
175
|
+
const { validation, metadata, frontmatter } = parser.parseWithValidation(content);
|
|
176
|
+
spinner.stop();
|
|
177
|
+
printValidationResult(validation, filePath);
|
|
178
|
+
if (metadata) {
|
|
179
|
+
console.log(chalk.bold('Parsed Metadata:'));
|
|
180
|
+
console.log(chalk.dim(` Name: ${metadata.name}`));
|
|
181
|
+
console.log(chalk.dim(` Description: ${metadata.description || 'N/A'}`));
|
|
182
|
+
console.log(chalk.dim(` Author: ${metadata.author || 'N/A'}`));
|
|
183
|
+
console.log(chalk.dim(` Version: ${metadata.version || 'N/A'}`));
|
|
184
|
+
console.log(chalk.dim(` Tags: ${metadata.tags.join(', ') || 'None'}`));
|
|
185
|
+
console.log(chalk.dim(` Trust Tier: ${parser.inferTrustTier(metadata)}`));
|
|
186
|
+
console.log();
|
|
187
|
+
}
|
|
188
|
+
if (frontmatter) {
|
|
189
|
+
console.log(chalk.bold('Frontmatter Fields:'));
|
|
190
|
+
for (const [key, value] of Object.entries(frontmatter)) {
|
|
191
|
+
if (value !== undefined && value !== null) {
|
|
192
|
+
const displayValue = Array.isArray(value) ? value.join(', ') : String(value);
|
|
193
|
+
console.log(chalk.dim(` ${key}: ${displayValue}`));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
console.log();
|
|
197
|
+
}
|
|
198
|
+
return validation.valid;
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
spinner.fail(`Validation failed: ${sanitizeError(error)}`);
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Prepare skill for publishing
|
|
207
|
+
* @returns true if publishing succeeded, false if validation failed
|
|
208
|
+
*/
|
|
209
|
+
async function publishSkill(skillPath) {
|
|
210
|
+
const spinner = ora('Preparing skill for publishing...').start();
|
|
211
|
+
try {
|
|
212
|
+
// Resolve path
|
|
213
|
+
let dirPath = resolve(skillPath || '.');
|
|
214
|
+
// Check if it's a file, get directory
|
|
215
|
+
try {
|
|
216
|
+
const stats = await stat(dirPath);
|
|
217
|
+
if (!stats.isDirectory()) {
|
|
218
|
+
dirPath = join(dirPath, '..');
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Path doesn't exist
|
|
223
|
+
spinner.fail(`Directory not found: ${dirPath}`);
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
const skillMdPath = join(dirPath, 'SKILL.md');
|
|
227
|
+
// Validate first
|
|
228
|
+
spinner.text = 'Validating skill...';
|
|
229
|
+
const content = await readFile(skillMdPath, 'utf-8');
|
|
230
|
+
const parser = new SkillParser({ requireName: true });
|
|
231
|
+
const { validation, metadata } = parser.parseWithValidation(content);
|
|
232
|
+
if (!validation.valid) {
|
|
233
|
+
spinner.fail('Skill validation failed');
|
|
234
|
+
printValidationResult(validation, skillMdPath);
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
if (!metadata) {
|
|
238
|
+
spinner.fail('Could not parse skill metadata');
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
// Generate checksum
|
|
242
|
+
spinner.text = 'Generating checksum...';
|
|
243
|
+
const checksum = createHash('sha256').update(content).digest('hex');
|
|
244
|
+
// Create publish info
|
|
245
|
+
const publishInfo = {
|
|
246
|
+
name: metadata.name,
|
|
247
|
+
version: metadata.version || '1.0.0',
|
|
248
|
+
checksum,
|
|
249
|
+
publishedAt: new Date().toISOString(),
|
|
250
|
+
trustTier: parser.inferTrustTier(metadata),
|
|
251
|
+
};
|
|
252
|
+
// Write publish manifest
|
|
253
|
+
const manifestPath = join(dirPath, '.skillsmith-publish.json');
|
|
254
|
+
await writeFile(manifestPath, JSON.stringify(publishInfo, null, 2), 'utf-8');
|
|
255
|
+
spinner.succeed('Skill prepared for publishing');
|
|
256
|
+
console.log(chalk.bold('\nPublish Information:'));
|
|
257
|
+
console.log(chalk.dim(` Name: ${publishInfo.name}`));
|
|
258
|
+
console.log(chalk.dim(` Version: ${publishInfo.version}`));
|
|
259
|
+
console.log(chalk.dim(` Checksum: ${publishInfo.checksum.slice(0, 16)}...`));
|
|
260
|
+
console.log(chalk.dim(` Trust Tier: ${publishInfo.trustTier}`));
|
|
261
|
+
console.log();
|
|
262
|
+
console.log(chalk.bold('To share this skill:'));
|
|
263
|
+
console.log(chalk.cyan('\n Option 1: GitHub'));
|
|
264
|
+
console.log(chalk.dim(' 1. Push to a GitHub repository'));
|
|
265
|
+
console.log(chalk.dim(' 2. Add topic "claude-skill" to the repository'));
|
|
266
|
+
console.log(chalk.dim(' 3. The skill will be automatically discovered'));
|
|
267
|
+
console.log(chalk.cyan('\n Option 2: Manual Installation'));
|
|
268
|
+
console.log(chalk.dim(` 1. Share the ${dirPath} directory`));
|
|
269
|
+
console.log(chalk.dim(' 2. Users can copy to ~/.claude/skills/'));
|
|
270
|
+
console.log(chalk.cyan('\n Option 3: Archive'));
|
|
271
|
+
console.log(chalk.dim(` 1. Create archive: tar -czf ${metadata.name}.tar.gz ${dirPath}`));
|
|
272
|
+
console.log(chalk.dim(' 2. Share the archive'));
|
|
273
|
+
console.log();
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
spinner.fail(`Publishing failed: ${sanitizeError(error)}`);
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Create init command
|
|
283
|
+
*/
|
|
284
|
+
export function createInitCommand() {
|
|
285
|
+
return new Command('init')
|
|
286
|
+
.description('Initialize a new skill directory')
|
|
287
|
+
.argument('[name]', 'Skill name')
|
|
288
|
+
.option('-p, --path <path>', 'Target directory', '.')
|
|
289
|
+
.action(async (name, opts) => {
|
|
290
|
+
const targetPath = opts['path'] || '.';
|
|
291
|
+
try {
|
|
292
|
+
await initSkill(name, targetPath);
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
console.error(chalk.red('Error initializing skill:'), sanitizeError(error));
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Create validate command
|
|
302
|
+
*/
|
|
303
|
+
export function createValidateCommand() {
|
|
304
|
+
return new Command('validate')
|
|
305
|
+
.description('Validate a local SKILL.md file')
|
|
306
|
+
.argument('[path]', 'Path to SKILL.md or skill directory', '.')
|
|
307
|
+
.action(async (skillPath) => {
|
|
308
|
+
try {
|
|
309
|
+
const valid = await validateSkill(skillPath);
|
|
310
|
+
process.exit(valid ? 0 : 1);
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
console.error(chalk.red('Error validating skill:'), sanitizeError(error));
|
|
314
|
+
process.exit(1);
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Create publish command
|
|
320
|
+
*/
|
|
321
|
+
export function createPublishCommand() {
|
|
322
|
+
return new Command('publish')
|
|
323
|
+
.description('Prepare skill for sharing')
|
|
324
|
+
.argument('[path]', 'Path to skill directory', '.')
|
|
325
|
+
.action(async (skillPath) => {
|
|
326
|
+
try {
|
|
327
|
+
const success = await publishSkill(skillPath);
|
|
328
|
+
process.exit(success ? 0 : 1);
|
|
329
|
+
}
|
|
330
|
+
catch (error) {
|
|
331
|
+
console.error(chalk.red('Error publishing skill:'), sanitizeError(error));
|
|
332
|
+
process.exit(1);
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
export { initSkill, validateSkill, publishSkill };
|
|
337
|
+
//# sourceMappingURL=author.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"author.js","sourceRoot":"","sources":["../../../src/commands/author.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAA;AAErE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,IAAwB,EAAE,UAAkB;IACnE,2CAA2C;IAC3C,MAAM,SAAS,GACb,IAAI;QACJ,CAAC,MAAM,KAAK,CAAC;YACX,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBAAE,OAAO,kBAAkB,CAAA;gBAC5C,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5C,OAAO,2FAA2F,CAAA;gBACpG,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;SACF,CAAC,CAAC,CAAA;IAEL,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;QAC9B,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,sBAAsB,SAAS,EAAE;KAC3C,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ;KACzC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC7C,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;YAC/C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;YACjD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;SAClC;KACF,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAE/C,oCAAoC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,aAAa,QAAQ,6BAA6B;YAC3D,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAA;YACrD,OAAM;QACR,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,6BAA6B,CAAC,CAAC,KAAK,EAAE,CAAA;IAE1D,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3D,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7D,kCAAkC;QAClC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC;aACzE,OAAO,CAAC,sBAAsB,EAAE,WAAW,CAAC;aAC5C,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;aAClC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC;aACtC,OAAO,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEzE,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;QAEpE,mCAAmC;QACnC,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,OAAO,CAClF,sBAAsB,EACtB,WAAW,CACZ,CAAA;QAED,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QAEpE,4BAA4B;QAC5B,MAAM,iBAAiB,GAAG;;KAEzB,SAAS;;;;;eAKC,SAAS;CACvB,CAAA;QACG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;QAEpF,oBAAoB;QACpB,MAAM,SAAS,GAAG;;;;;;;;;;;;;CAarB,CAAA;QACG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAEjE,OAAO,CAAC,OAAO,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;QAE/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAA;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAA;QAC5E,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/D,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAwB,EAAE,QAAgB;IACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,QAAQ,KAAK,CAAC,CAAC,CAAA;IAEjE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;QAC7C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,SAAiB;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAA;IAElD,IAAI,CAAC;QACH,eAAe;QACf,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAEjC,+CAA+C;QAC/C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;YAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;QAED,YAAY;QACZ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEjD,qBAAqB;QACrB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;QACrD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAEjF,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAE3C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAA;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAA;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAA;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1E,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAA;YAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,YAAY,EAAE,CAAC,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;QAED,OAAO,UAAU,CAAC,KAAK,CAAA;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1D,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,SAAiB;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAA;IAEhE,IAAI,CAAC;QACH,eAAe;QACf,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;QAEvC,sCAAsC;QACtC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;YACjC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;YACrB,OAAO,CAAC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAA;YAC/C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAE7C,iBAAiB;QACjB,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAA;QAEpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;QACrD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAEpE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;YACvC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;YAC9C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;YAC9C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,oBAAoB;QACpB,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEnE,sBAAsB;QACtB,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,OAAO;YACpC,QAAQ;YACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;SAC3C,CAAA;QAED,yBAAyB;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAA;QAC9D,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAE5E,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAA;QAEhD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAA;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAA;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAA;QAEzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,OAAO,YAAY,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAA;QAElE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,QAAQ,CAAC,IAAI,WAAW,OAAO,EAAE,CAAC,CAAC,CAAA;QAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1D,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;SAChC,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,GAAG,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAwC,EAAE,EAAE;QACnF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAA;QAEtC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,gCAAgC,CAAC;SAC7C,QAAQ,CAAC,QAAQ,EAAE,qCAAqC,EAAE,GAAG,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAA;YAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,EAAE,GAAG,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAA;YAC7C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands
|
|
3
|
+
*
|
|
4
|
+
* Export all CLI commands for registration.
|
|
5
|
+
*/
|
|
6
|
+
export { createSearchCommand } from './search.js';
|
|
7
|
+
export { createListCommand, createUpdateCommand, createRemoveCommand } from './manage.js';
|
|
8
|
+
export { createInitCommand, createValidateCommand, createPublishCommand } from './author.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGzF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands
|
|
3
|
+
*
|
|
4
|
+
* Export all CLI commands for registration.
|
|
5
|
+
*/
|
|
6
|
+
// SMI-744: Interactive Search
|
|
7
|
+
export { createSearchCommand } from './search.js';
|
|
8
|
+
// SMI-745: Skill Management
|
|
9
|
+
export { createListCommand, createUpdateCommand, createRemoveCommand } from './manage.js';
|
|
10
|
+
// SMI-746: Skill Authoring
|
|
11
|
+
export { createInitCommand, createValidateCommand, createPublishCommand } from './author.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEzF,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-745: Skill Management Commands
|
|
3
|
+
*
|
|
4
|
+
* Provides CLI commands for listing, updating, and removing installed skills.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { type TrustTier } from '@skillsmith/core';
|
|
8
|
+
interface InstalledSkill {
|
|
9
|
+
name: string;
|
|
10
|
+
path: string;
|
|
11
|
+
version: string | null;
|
|
12
|
+
trustTier: TrustTier;
|
|
13
|
+
installDate: string;
|
|
14
|
+
hasUpdates: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get list of installed skills from ~/.claude/skills
|
|
18
|
+
*/
|
|
19
|
+
declare function getInstalledSkills(): Promise<InstalledSkill[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Display skills in a table format
|
|
22
|
+
*/
|
|
23
|
+
declare function displaySkillsTable(skills: InstalledSkill[]): void;
|
|
24
|
+
/**
|
|
25
|
+
* Create list command
|
|
26
|
+
*/
|
|
27
|
+
export declare function createListCommand(): Command;
|
|
28
|
+
/**
|
|
29
|
+
* Create update command
|
|
30
|
+
*/
|
|
31
|
+
export declare function createUpdateCommand(): Command;
|
|
32
|
+
/**
|
|
33
|
+
* Create remove command
|
|
34
|
+
*/
|
|
35
|
+
export declare function createRemoveCommand(): Command;
|
|
36
|
+
export { getInstalledSkills, displaySkillsTable };
|
|
37
|
+
//# sourceMappingURL=manage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../../src/commands/manage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAA;AAazB,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,iBAAe,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CA8C7D;AAED;;GAEG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAgC1D;AAgLD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAuB7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAkB7C;AAED,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAA"}
|