overskill 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +261 -0
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +121 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/bundle.d.ts +3 -0
- package/dist/commands/bundle.d.ts.map +1 -0
- package/dist/commands/bundle.js +58 -0
- package/dist/commands/bundle.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +109 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/delete.d.ts +3 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +64 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +93 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/edit.d.ts +3 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +69 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/import.d.ts +3 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +514 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/info.d.ts +3 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +89 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +88 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +84 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +143 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/new.d.ts +3 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +262 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/publish.d.ts +3 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +215 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/push.d.ts +3 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +151 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/registry.d.ts +3 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +169 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/remove.d.ts +3 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +48 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +48 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +160 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +130 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +94 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +60 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +340 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/auth.d.ts +78 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +241 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config.d.ts +94 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +294 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/editor.d.ts +6 -0
- package/dist/lib/editor.d.ts.map +1 -0
- package/dist/lib/editor.js +60 -0
- package/dist/lib/editor.js.map +1 -0
- package/dist/lib/fs.d.ts +74 -0
- package/dist/lib/fs.d.ts.map +1 -0
- package/dist/lib/fs.js +235 -0
- package/dist/lib/fs.js.map +1 -0
- package/dist/lib/index-gen.d.ts +18 -0
- package/dist/lib/index-gen.d.ts.map +1 -0
- package/dist/lib/index-gen.js +75 -0
- package/dist/lib/index-gen.js.map +1 -0
- package/dist/lib/local-registry/index.d.ts +15 -0
- package/dist/lib/local-registry/index.d.ts.map +1 -0
- package/dist/lib/local-registry/index.js +18 -0
- package/dist/lib/local-registry/index.js.map +1 -0
- package/dist/lib/local-registry/objects.d.ts +51 -0
- package/dist/lib/local-registry/objects.d.ts.map +1 -0
- package/dist/lib/local-registry/objects.js +148 -0
- package/dist/lib/local-registry/objects.js.map +1 -0
- package/dist/lib/local-registry/paths.d.ts +53 -0
- package/dist/lib/local-registry/paths.d.ts.map +1 -0
- package/dist/lib/local-registry/paths.js +85 -0
- package/dist/lib/local-registry/paths.js.map +1 -0
- package/dist/lib/local-registry/skills.d.ts +83 -0
- package/dist/lib/local-registry/skills.d.ts.map +1 -0
- package/dist/lib/local-registry/skills.js +261 -0
- package/dist/lib/local-registry/skills.js.map +1 -0
- package/dist/lib/local-registry/types.d.ts +79 -0
- package/dist/lib/local-registry/types.d.ts.map +1 -0
- package/dist/lib/local-registry/types.js +5 -0
- package/dist/lib/local-registry/types.js.map +1 -0
- package/dist/lib/local-registry/versions.d.ts +61 -0
- package/dist/lib/local-registry/versions.d.ts.map +1 -0
- package/dist/lib/local-registry/versions.js +163 -0
- package/dist/lib/local-registry/versions.js.map +1 -0
- package/dist/lib/lockfile.d.ts +38 -0
- package/dist/lib/lockfile.d.ts.map +1 -0
- package/dist/lib/lockfile.js +102 -0
- package/dist/lib/lockfile.js.map +1 -0
- package/dist/lib/meta-skill.d.ts +6 -0
- package/dist/lib/meta-skill.d.ts.map +1 -0
- package/dist/lib/meta-skill.js +72 -0
- package/dist/lib/meta-skill.js.map +1 -0
- package/dist/lib/semver.d.ts +63 -0
- package/dist/lib/semver.d.ts.map +1 -0
- package/dist/lib/semver.js +107 -0
- package/dist/lib/semver.js.map +1 -0
- package/dist/types.d.ts +147 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import * as config from '../lib/config.js';
|
|
4
|
+
import * as fs from '../lib/fs.js';
|
|
5
|
+
import * as lockfile from '../lib/lockfile.js';
|
|
6
|
+
import * as indexGen from '../lib/index-gen.js';
|
|
7
|
+
export const removeCommand = new Command('remove')
|
|
8
|
+
.description('Remove one or more skills from the project')
|
|
9
|
+
.argument('<slugs...>', 'Skill slugs to remove')
|
|
10
|
+
.action(async (slugs) => {
|
|
11
|
+
try {
|
|
12
|
+
// Check if initialized
|
|
13
|
+
if (!config.configExists()) {
|
|
14
|
+
console.log(chalk.red('Error: Not in a skills project.'));
|
|
15
|
+
console.log(`Run ${chalk.cyan('skills init')} first.`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
// Find the skills in config
|
|
19
|
+
const skillsConfig = config.readConfig();
|
|
20
|
+
for (const slug of slugs) {
|
|
21
|
+
const skill = skillsConfig.skills.find((s) => s.slug === slug);
|
|
22
|
+
if (!skill) {
|
|
23
|
+
console.log(chalk.yellow(`Skill '${slug}' not found in config.`));
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
// Remove from config
|
|
27
|
+
const removed = config.removeSkill(slug);
|
|
28
|
+
if (!removed) {
|
|
29
|
+
console.log(chalk.yellow(`Failed to remove '${slug}' from config.`));
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
// Delete from disk
|
|
33
|
+
if (fs.skillExists(slug)) {
|
|
34
|
+
fs.deleteSkill(slug);
|
|
35
|
+
}
|
|
36
|
+
// Remove from lockfile (use "local" as registry for local sources)
|
|
37
|
+
lockfile.removeLockedSkill(slug);
|
|
38
|
+
console.log(chalk.green(`Removed ${chalk.cyan(slug)}`));
|
|
39
|
+
}
|
|
40
|
+
// Regenerate index once after all removals
|
|
41
|
+
indexGen.regenerateIndex();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,4CAA4C,CAAC;KACzD,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,EAAE;IAChC,IAAI,CAAC;QACH,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4BAA4B;QAC5B,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAE/D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,wBAAwB,CAAC,CAAC,CAAC;gBAClE,SAAS;YACX,CAAC;YAED,qBAAqB;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,CAAC,CAAC;gBACrE,SAAS;YACX,CAAC;YAED,mBAAmB;YACnB,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAED,mEAAmE;YACnE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAEjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,2CAA2C;QAC3C,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SAwDtB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import * as localRegistry from '../lib/local-registry/index.js';
|
|
4
|
+
export const searchCommand = new Command('search')
|
|
5
|
+
.description('Search for skills in the local registry')
|
|
6
|
+
.argument('<query>', 'Search query')
|
|
7
|
+
.option('-t, --tags <tags>', 'Filter by tags (comma-separated)')
|
|
8
|
+
.option('-c, --compat <compat>', 'Filter by compatibility (comma-separated)')
|
|
9
|
+
.action(async (query, options) => {
|
|
10
|
+
try {
|
|
11
|
+
// Search local registry
|
|
12
|
+
let results = localRegistry.searchSkills(query);
|
|
13
|
+
// Additional tag filtering
|
|
14
|
+
if (options.tags) {
|
|
15
|
+
const filterTags = options.tags.split(',').map((t) => t.trim().toLowerCase());
|
|
16
|
+
results = results.filter((skill) => skill.meta.tags.some((tag) => filterTags.includes(tag.toLowerCase())));
|
|
17
|
+
}
|
|
18
|
+
// Additional compat filtering
|
|
19
|
+
if (options.compat) {
|
|
20
|
+
const filterCompat = options.compat.split(',').map((c) => c.trim().toLowerCase());
|
|
21
|
+
results = results.filter((skill) => skill.meta.compat.some((c) => filterCompat.includes(c.toLowerCase())));
|
|
22
|
+
}
|
|
23
|
+
if (results.length === 0) {
|
|
24
|
+
console.log(chalk.yellow(`No skills found matching "${query}".`));
|
|
25
|
+
console.log('');
|
|
26
|
+
console.log('To create a new skill:');
|
|
27
|
+
console.log(` ${chalk.cyan(`skills new ${query.toLowerCase().replace(/\s+/g, '-')}`)}`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
console.log(chalk.bold(`Found ${results.length} skill(s):`));
|
|
31
|
+
console.log('');
|
|
32
|
+
for (const skill of results) {
|
|
33
|
+
const tags = skill.meta.tags.length > 0
|
|
34
|
+
? chalk.gray(` [${skill.meta.tags.join(', ')}]`)
|
|
35
|
+
: '';
|
|
36
|
+
const matchNote = chalk.gray(` (matched on ${skill.matchedOn})`);
|
|
37
|
+
console.log(`${chalk.cyan(skill.slug.padEnd(30))} v${skill.latestVersion.padEnd(10)}${tags}${matchNote}`);
|
|
38
|
+
if (skill.meta.description) {
|
|
39
|
+
console.log(chalk.gray(` ${skill.meta.description}`));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,WAAW,SA8KpB,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import * as config from '../lib/config.js';
|
|
5
|
+
import * as localRegistry from '../lib/local-registry/index.js';
|
|
6
|
+
import * as lockfile from '../lib/lockfile.js';
|
|
7
|
+
import * as fs from '../lib/fs.js';
|
|
8
|
+
import * as indexGen from '../lib/index-gen.js';
|
|
9
|
+
import { META_SKILL_CONTENT } from '../lib/meta-skill.js';
|
|
10
|
+
export const syncCommand = new Command('sync')
|
|
11
|
+
.description('Sync all configured skills from local registry to project')
|
|
12
|
+
.option('-f, --force', 'Force re-install even if unchanged')
|
|
13
|
+
.action(async (options) => {
|
|
14
|
+
try {
|
|
15
|
+
// Check if initialized
|
|
16
|
+
if (!config.configExists()) {
|
|
17
|
+
console.log(chalk.red('Error: Not in a skills project.'));
|
|
18
|
+
console.log(`Run ${chalk.cyan('skills init')} first.`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const skillsConfig = config.readConfig();
|
|
22
|
+
if (skillsConfig.skills.length === 0) {
|
|
23
|
+
console.log(chalk.yellow('No skills configured.'));
|
|
24
|
+
console.log(`Run ${chalk.cyan('skills add <slug>')} to add skills.`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const spinner = ora('Syncing skills...').start();
|
|
28
|
+
// Ensure install directory exists
|
|
29
|
+
fs.ensureDir(config.getInstallPath());
|
|
30
|
+
// Read existing lockfile
|
|
31
|
+
const existingLock = lockfile.readLockfile();
|
|
32
|
+
// Track statistics
|
|
33
|
+
let updated = 0;
|
|
34
|
+
let unchanged = 0;
|
|
35
|
+
const errors = [];
|
|
36
|
+
const skills = [];
|
|
37
|
+
const lockedSkills = [];
|
|
38
|
+
// Process each skill
|
|
39
|
+
for (const skillEntry of skillsConfig.skills) {
|
|
40
|
+
const { slug, version: constraint } = skillEntry;
|
|
41
|
+
// Check if skill exists in local registry
|
|
42
|
+
if (!localRegistry.skillExists(slug)) {
|
|
43
|
+
errors.push({
|
|
44
|
+
slug,
|
|
45
|
+
error: `Not found in local cache. Run 'skills new ${slug}' or 'skills cache import'`,
|
|
46
|
+
});
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
// Get locked version if exists
|
|
50
|
+
const locked = existingLock?.skills.find((s) => s.slug === slug);
|
|
51
|
+
// Resolve version to install
|
|
52
|
+
let resolvedVersion = null;
|
|
53
|
+
if (locked && !options.force) {
|
|
54
|
+
// Prefer locked version for reproducibility
|
|
55
|
+
if (localRegistry.versionExists(slug, locked.version)) {
|
|
56
|
+
resolvedVersion = locked.version;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Locked version not in cache, resolve from constraint
|
|
60
|
+
resolvedVersion = localRegistry.resolveVersion(slug, constraint);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// No lock or force flag, resolve from constraint
|
|
65
|
+
resolvedVersion = localRegistry.resolveVersion(slug, constraint);
|
|
66
|
+
}
|
|
67
|
+
if (!resolvedVersion) {
|
|
68
|
+
const availableVersions = localRegistry.getVersionStrings(slug);
|
|
69
|
+
errors.push({
|
|
70
|
+
slug,
|
|
71
|
+
error: constraint
|
|
72
|
+
? `No cached version satisfies '${constraint}'. Available: ${availableVersions.join(', ')}`
|
|
73
|
+
: `No versions cached`,
|
|
74
|
+
});
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
// Get the skill content from local registry
|
|
78
|
+
const skillData = localRegistry.getVersion(slug, resolvedVersion);
|
|
79
|
+
if (!skillData) {
|
|
80
|
+
errors.push({
|
|
81
|
+
slug,
|
|
82
|
+
error: `Failed to read version ${resolvedVersion} from cache (possibly corrupted)`,
|
|
83
|
+
});
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
// Check if changed
|
|
87
|
+
const hasChanged = options.force ||
|
|
88
|
+
!locked ||
|
|
89
|
+
locked.sha256 !== skillData.sha256 ||
|
|
90
|
+
locked.version !== resolvedVersion;
|
|
91
|
+
if (hasChanged) {
|
|
92
|
+
// Build metadata for project install
|
|
93
|
+
const meta = {
|
|
94
|
+
slug,
|
|
95
|
+
registry: 'local',
|
|
96
|
+
version: resolvedVersion,
|
|
97
|
+
name: skillData.meta.name,
|
|
98
|
+
description: skillData.meta.description,
|
|
99
|
+
tags: skillData.meta.tags,
|
|
100
|
+
compat: skillData.meta.compat,
|
|
101
|
+
};
|
|
102
|
+
// Write skill to project
|
|
103
|
+
fs.writeSkill({
|
|
104
|
+
registry: 'local',
|
|
105
|
+
slug,
|
|
106
|
+
version: resolvedVersion,
|
|
107
|
+
content: skillData.content,
|
|
108
|
+
sha256: skillData.sha256,
|
|
109
|
+
}, meta);
|
|
110
|
+
updated++;
|
|
111
|
+
skills.push({ ...meta, sha256: skillData.sha256 });
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Read existing metadata from project
|
|
115
|
+
const existingMeta = fs.readSkillMeta(slug);
|
|
116
|
+
if (existingMeta) {
|
|
117
|
+
skills.push(existingMeta);
|
|
118
|
+
}
|
|
119
|
+
unchanged++;
|
|
120
|
+
}
|
|
121
|
+
// Add to lock
|
|
122
|
+
lockedSkills.push({
|
|
123
|
+
slug,
|
|
124
|
+
registry: 'local',
|
|
125
|
+
version: resolvedVersion,
|
|
126
|
+
sha256: skillData.sha256,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
// Write system (meta) skill
|
|
130
|
+
fs.writeSystemSkill(META_SKILL_CONTENT);
|
|
131
|
+
// Generate SKILLS_INDEX.md
|
|
132
|
+
indexGen.writeIndex(skills);
|
|
133
|
+
// Update agent config files with skills discovery section
|
|
134
|
+
fs.updateClaudeMd(skillsConfig.install_path);
|
|
135
|
+
fs.updateAgentsMd(skillsConfig.install_path);
|
|
136
|
+
fs.updateCursorRules(skillsConfig.install_path);
|
|
137
|
+
// Write lockfile
|
|
138
|
+
lockfile.writeLockfile(lockfile.createLockfile(lockedSkills));
|
|
139
|
+
spinner.succeed('Sync complete!');
|
|
140
|
+
// Print summary
|
|
141
|
+
const totalSuccess = updated + unchanged;
|
|
142
|
+
console.log('');
|
|
143
|
+
console.log(`Synced ${chalk.cyan(totalSuccess)} skills.`);
|
|
144
|
+
console.log(` ${chalk.green(updated)} updated`);
|
|
145
|
+
console.log(` ${chalk.gray(unchanged)} unchanged`);
|
|
146
|
+
// Print errors if any
|
|
147
|
+
if (errors.length > 0) {
|
|
148
|
+
console.log('');
|
|
149
|
+
console.log(chalk.red(`${errors.length} skill(s) failed:`));
|
|
150
|
+
for (const error of errors) {
|
|
151
|
+
console.log(` ${chalk.red('✗')} ${error.slug}: ${error.error}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,aAAa,SAgKtB,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import * as config from '../lib/config.js';
|
|
5
|
+
import * as api from '../lib/api.js';
|
|
6
|
+
import * as lockfile from '../lib/lockfile.js';
|
|
7
|
+
import * as fs from '../lib/fs.js';
|
|
8
|
+
import * as semverLib from '../lib/semver.js';
|
|
9
|
+
import * as indexGen from '../lib/index-gen.js';
|
|
10
|
+
export const updateCommand = new Command('update')
|
|
11
|
+
.description('Update skills to their latest versions')
|
|
12
|
+
.argument('[slug]', 'Skill slug to update (optional, updates all if not provided)')
|
|
13
|
+
.option('--check', 'Only check for updates, do not install')
|
|
14
|
+
.action(async (slug, options) => {
|
|
15
|
+
try {
|
|
16
|
+
// Check if initialized
|
|
17
|
+
if (!config.configExists()) {
|
|
18
|
+
console.log(chalk.red('Error: Not in a skills project.'));
|
|
19
|
+
console.log(`Run ${chalk.cyan('skills init')} first.`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
const skillsConfig = config.readConfig();
|
|
23
|
+
const lock = lockfile.readLockfile();
|
|
24
|
+
if (!lock || lock.skills.length === 0) {
|
|
25
|
+
console.log(chalk.yellow('No skills to update.'));
|
|
26
|
+
console.log(`Run ${chalk.cyan('skills sync')} first.`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const skillsToCheck = slug
|
|
30
|
+
? lock.skills.filter((s) => s.slug === slug)
|
|
31
|
+
: lock.skills;
|
|
32
|
+
if (skillsToCheck.length === 0) {
|
|
33
|
+
console.log(chalk.yellow(`Skill '${slug}' not found.`));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const spinner = ora('Checking for updates...').start();
|
|
37
|
+
const updates = [];
|
|
38
|
+
for (const locked of skillsToCheck) {
|
|
39
|
+
try {
|
|
40
|
+
// Get skill config for version constraint
|
|
41
|
+
const skillConfig = skillsConfig.skills.find((s) => s.slug === locked.slug);
|
|
42
|
+
const constraint = skillConfig?.version;
|
|
43
|
+
// Fetch remote skill
|
|
44
|
+
const remoteSkill = await api.getSkill(locked.registry, locked.slug);
|
|
45
|
+
// Check if update available
|
|
46
|
+
if (semverLib.isGreaterThan(remoteSkill.version, locked.version)) {
|
|
47
|
+
// Check constraint if present
|
|
48
|
+
if (constraint && !semverLib.satisfies(remoteSkill.version, constraint)) {
|
|
49
|
+
continue; // Latest doesn't satisfy constraint
|
|
50
|
+
}
|
|
51
|
+
updates.push({
|
|
52
|
+
slug: locked.slug,
|
|
53
|
+
registry: locked.registry,
|
|
54
|
+
currentVersion: locked.version,
|
|
55
|
+
latestVersion: remoteSkill.version,
|
|
56
|
+
constraint,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Skip skills that fail to fetch
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
spinner.stop();
|
|
65
|
+
if (updates.length === 0) {
|
|
66
|
+
console.log(chalk.green('All skills are up to date.'));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// Show available updates
|
|
70
|
+
console.log(chalk.bold('Updates available:'));
|
|
71
|
+
console.log('');
|
|
72
|
+
for (const update of updates) {
|
|
73
|
+
const constraintInfo = update.constraint ? chalk.gray(` (constraint: ${update.constraint})`) : '';
|
|
74
|
+
console.log(` ${chalk.cyan(update.slug.padEnd(25))} ${update.currentVersion} → ${chalk.green(update.latestVersion)}${constraintInfo}`);
|
|
75
|
+
}
|
|
76
|
+
console.log('');
|
|
77
|
+
if (options?.check) {
|
|
78
|
+
console.log(`Run ${chalk.cyan('skills update')} to install updates.`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Install updates
|
|
82
|
+
const installSpinner = ora('Installing updates...').start();
|
|
83
|
+
const updatedSkills = [];
|
|
84
|
+
for (const update of updates) {
|
|
85
|
+
// Fetch full skill with content
|
|
86
|
+
const remoteSkill = await api.getSkill(update.registry, update.slug);
|
|
87
|
+
if (!remoteSkill.content) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const hash = await fs.computeHash(remoteSkill.content);
|
|
91
|
+
// Write to disk
|
|
92
|
+
const meta = {
|
|
93
|
+
slug: update.slug,
|
|
94
|
+
registry: update.registry,
|
|
95
|
+
version: update.latestVersion,
|
|
96
|
+
name: remoteSkill.name,
|
|
97
|
+
description: remoteSkill.description,
|
|
98
|
+
tags: remoteSkill.tags,
|
|
99
|
+
compat: remoteSkill.compat,
|
|
100
|
+
};
|
|
101
|
+
fs.writeSkill({
|
|
102
|
+
slug: update.slug,
|
|
103
|
+
registry: update.registry,
|
|
104
|
+
version: update.latestVersion,
|
|
105
|
+
content: remoteSkill.content,
|
|
106
|
+
sha256: hash,
|
|
107
|
+
}, meta);
|
|
108
|
+
// Update lockfile
|
|
109
|
+
lockfile.updateLockedSkill({
|
|
110
|
+
slug: update.slug,
|
|
111
|
+
registry: update.registry,
|
|
112
|
+
version: update.latestVersion,
|
|
113
|
+
sha256: hash,
|
|
114
|
+
});
|
|
115
|
+
updatedSkills.push({ ...meta, sha256: hash });
|
|
116
|
+
}
|
|
117
|
+
// Regenerate index
|
|
118
|
+
indexGen.regenerateIndex();
|
|
119
|
+
installSpinner.succeed(`Updated ${updates.length} skill(s)`);
|
|
120
|
+
// Print summary
|
|
121
|
+
for (const update of updates) {
|
|
122
|
+
console.log(` ${chalk.cyan(update.slug)}: ${update.currentVersion} → ${chalk.green(update.latestVersion)}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,eAAe,SA+FxB,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import * as config from '../lib/config.js';
|
|
4
|
+
import * as fs from '../lib/fs.js';
|
|
5
|
+
export const validateCommand = new Command('validate')
|
|
6
|
+
.description('Validate skill files')
|
|
7
|
+
.argument('[slug]', 'Skill slug to validate (optional, validates all if not provided)')
|
|
8
|
+
.action(async (slug) => {
|
|
9
|
+
try {
|
|
10
|
+
// Check if initialized
|
|
11
|
+
if (!config.configExists()) {
|
|
12
|
+
console.log(chalk.red('Error: Not in a skills project.'));
|
|
13
|
+
console.log(`Run ${chalk.cyan('skills init')} first.`);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const skillsToValidate = slug ? [slug] : fs.listLocalSkills();
|
|
17
|
+
if (skillsToValidate.length === 0) {
|
|
18
|
+
console.log(chalk.yellow('No skills to validate.'));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
let hasErrors = false;
|
|
22
|
+
for (const skillSlug of skillsToValidate) {
|
|
23
|
+
const errors = [];
|
|
24
|
+
const warnings = [];
|
|
25
|
+
// Check SKILL.md exists
|
|
26
|
+
const content = fs.readSkillContent(skillSlug);
|
|
27
|
+
if (!content) {
|
|
28
|
+
errors.push('SKILL.md not found');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Check content is not empty
|
|
32
|
+
if (content.trim().length === 0) {
|
|
33
|
+
errors.push('SKILL.md is empty');
|
|
34
|
+
}
|
|
35
|
+
// Check for title heading
|
|
36
|
+
if (!content.match(/^#\s+.+/m)) {
|
|
37
|
+
errors.push('SKILL.md should start with a # heading');
|
|
38
|
+
}
|
|
39
|
+
// Check for reasonable length
|
|
40
|
+
if (content.length < 100) {
|
|
41
|
+
warnings.push('SKILL.md seems very short');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Check meta.yaml exists
|
|
45
|
+
const meta = fs.readSkillMeta(skillSlug);
|
|
46
|
+
if (!meta) {
|
|
47
|
+
errors.push('meta.yaml not found');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Validate required fields
|
|
51
|
+
if (!meta.slug) {
|
|
52
|
+
errors.push('meta.yaml missing slug');
|
|
53
|
+
}
|
|
54
|
+
if (!meta.registry) {
|
|
55
|
+
errors.push('meta.yaml missing registry');
|
|
56
|
+
}
|
|
57
|
+
if (!meta.version) {
|
|
58
|
+
errors.push('meta.yaml missing version');
|
|
59
|
+
}
|
|
60
|
+
// Check slug format
|
|
61
|
+
if (meta.slug && !/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/.test(meta.slug)) {
|
|
62
|
+
errors.push('Slug must be lowercase alphanumeric with hyphens');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Print results
|
|
66
|
+
if (errors.length === 0 && warnings.length === 0) {
|
|
67
|
+
console.log(chalk.green(`✓ ${skillSlug}`));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (errors.length > 0) {
|
|
71
|
+
console.log(chalk.red(`✗ ${skillSlug}`));
|
|
72
|
+
hasErrors = true;
|
|
73
|
+
for (const error of errors) {
|
|
74
|
+
console.log(chalk.red(` Error: ${error}`));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.log(chalk.yellow(`⚠ ${skillSlug}`));
|
|
79
|
+
}
|
|
80
|
+
for (const warning of warnings) {
|
|
81
|
+
console.log(chalk.yellow(` Warning: ${warning}`));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (hasErrors) {
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,QAAQ,EAAE,kEAAkE,CAAC;KACtF,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC;QAE9D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;YACzC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;YAE9B,wBAAwB;YACxB,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,6BAA6B;gBAC7B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACnC,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACxD,CAAC;gBAED,8BAA8B;gBAC9B,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,yBAAyB;YACzB,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,2BAA2B;gBAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAC5C,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC3C,CAAC;gBAED,oBAAoB;gBACpB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5E,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,gBAAgB;YAChB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;oBACzC,SAAS,GAAG,IAAI,CAAC;oBACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { readFileSync } from 'fs';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { dirname, join } from 'path';
|
|
6
|
+
import { initCommand } from './commands/init.js';
|
|
7
|
+
import { loginCommand } from './commands/login.js';
|
|
8
|
+
import { syncCommand } from './commands/sync.js';
|
|
9
|
+
import { addCommand } from './commands/add.js';
|
|
10
|
+
import { removeCommand } from './commands/remove.js';
|
|
11
|
+
import { deleteCommand } from './commands/delete.js';
|
|
12
|
+
import { listCommand } from './commands/list.js';
|
|
13
|
+
import { searchCommand } from './commands/search.js';
|
|
14
|
+
import { infoCommand } from './commands/info.js';
|
|
15
|
+
import { diffCommand } from './commands/diff.js';
|
|
16
|
+
import { editCommand } from './commands/edit.js';
|
|
17
|
+
import { pushCommand } from './commands/push.js';
|
|
18
|
+
import { validateCommand } from './commands/validate.js';
|
|
19
|
+
import { bundleCommand } from './commands/bundle.js';
|
|
20
|
+
import { configCommand } from './commands/config.js';
|
|
21
|
+
import { registryCommand } from './commands/registry.js';
|
|
22
|
+
import { updateCommand } from './commands/update.js';
|
|
23
|
+
import { newCommand } from './commands/new.js';
|
|
24
|
+
import { publishCommand } from './commands/publish.js';
|
|
25
|
+
import { importCommand } from './commands/import.js';
|
|
26
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
27
|
+
const __dirname = dirname(__filename);
|
|
28
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
29
|
+
const program = new Command();
|
|
30
|
+
program
|
|
31
|
+
.name('skill')
|
|
32
|
+
.description('Overskill CLI - manage skills across repositories')
|
|
33
|
+
.version(pkg.version);
|
|
34
|
+
// Register all commands
|
|
35
|
+
program.addCommand(initCommand);
|
|
36
|
+
program.addCommand(loginCommand);
|
|
37
|
+
program.addCommand(syncCommand);
|
|
38
|
+
program.addCommand(addCommand);
|
|
39
|
+
program.addCommand(removeCommand);
|
|
40
|
+
program.addCommand(deleteCommand);
|
|
41
|
+
program.addCommand(listCommand);
|
|
42
|
+
program.addCommand(searchCommand);
|
|
43
|
+
program.addCommand(infoCommand);
|
|
44
|
+
program.addCommand(diffCommand);
|
|
45
|
+
program.addCommand(editCommand);
|
|
46
|
+
program.addCommand(pushCommand);
|
|
47
|
+
program.addCommand(validateCommand);
|
|
48
|
+
program.addCommand(bundleCommand);
|
|
49
|
+
program.addCommand(configCommand);
|
|
50
|
+
program.addCommand(registryCommand);
|
|
51
|
+
program.addCommand(updateCommand);
|
|
52
|
+
program.addCommand(newCommand);
|
|
53
|
+
program.addCommand(publishCommand);
|
|
54
|
+
program.addCommand(importCommand);
|
|
55
|
+
program.parse();
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|