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.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/dist/commands/add.d.ts +3 -0
  4. package/dist/commands/add.d.ts.map +1 -0
  5. package/dist/commands/add.js +121 -0
  6. package/dist/commands/add.js.map +1 -0
  7. package/dist/commands/bundle.d.ts +3 -0
  8. package/dist/commands/bundle.d.ts.map +1 -0
  9. package/dist/commands/bundle.js +58 -0
  10. package/dist/commands/bundle.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +109 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/delete.d.ts +3 -0
  16. package/dist/commands/delete.d.ts.map +1 -0
  17. package/dist/commands/delete.js +64 -0
  18. package/dist/commands/delete.js.map +1 -0
  19. package/dist/commands/diff.d.ts +3 -0
  20. package/dist/commands/diff.d.ts.map +1 -0
  21. package/dist/commands/diff.js +93 -0
  22. package/dist/commands/diff.js.map +1 -0
  23. package/dist/commands/edit.d.ts +3 -0
  24. package/dist/commands/edit.d.ts.map +1 -0
  25. package/dist/commands/edit.js +69 -0
  26. package/dist/commands/edit.js.map +1 -0
  27. package/dist/commands/import.d.ts +3 -0
  28. package/dist/commands/import.d.ts.map +1 -0
  29. package/dist/commands/import.js +514 -0
  30. package/dist/commands/import.js.map +1 -0
  31. package/dist/commands/info.d.ts +3 -0
  32. package/dist/commands/info.d.ts.map +1 -0
  33. package/dist/commands/info.js +89 -0
  34. package/dist/commands/info.js.map +1 -0
  35. package/dist/commands/init.d.ts +3 -0
  36. package/dist/commands/init.d.ts.map +1 -0
  37. package/dist/commands/init.js +88 -0
  38. package/dist/commands/init.js.map +1 -0
  39. package/dist/commands/list.d.ts +3 -0
  40. package/dist/commands/list.d.ts.map +1 -0
  41. package/dist/commands/list.js +84 -0
  42. package/dist/commands/list.js.map +1 -0
  43. package/dist/commands/login.d.ts +3 -0
  44. package/dist/commands/login.d.ts.map +1 -0
  45. package/dist/commands/login.js +143 -0
  46. package/dist/commands/login.js.map +1 -0
  47. package/dist/commands/new.d.ts +3 -0
  48. package/dist/commands/new.d.ts.map +1 -0
  49. package/dist/commands/new.js +262 -0
  50. package/dist/commands/new.js.map +1 -0
  51. package/dist/commands/publish.d.ts +3 -0
  52. package/dist/commands/publish.d.ts.map +1 -0
  53. package/dist/commands/publish.js +215 -0
  54. package/dist/commands/publish.js.map +1 -0
  55. package/dist/commands/push.d.ts +3 -0
  56. package/dist/commands/push.d.ts.map +1 -0
  57. package/dist/commands/push.js +151 -0
  58. package/dist/commands/push.js.map +1 -0
  59. package/dist/commands/registry.d.ts +3 -0
  60. package/dist/commands/registry.d.ts.map +1 -0
  61. package/dist/commands/registry.js +169 -0
  62. package/dist/commands/registry.js.map +1 -0
  63. package/dist/commands/remove.d.ts +3 -0
  64. package/dist/commands/remove.d.ts.map +1 -0
  65. package/dist/commands/remove.js +48 -0
  66. package/dist/commands/remove.js.map +1 -0
  67. package/dist/commands/search.d.ts +3 -0
  68. package/dist/commands/search.d.ts.map +1 -0
  69. package/dist/commands/search.js +48 -0
  70. package/dist/commands/search.js.map +1 -0
  71. package/dist/commands/sync.d.ts +3 -0
  72. package/dist/commands/sync.d.ts.map +1 -0
  73. package/dist/commands/sync.js +160 -0
  74. package/dist/commands/sync.js.map +1 -0
  75. package/dist/commands/update.d.ts +3 -0
  76. package/dist/commands/update.d.ts.map +1 -0
  77. package/dist/commands/update.js +130 -0
  78. package/dist/commands/update.js.map +1 -0
  79. package/dist/commands/validate.d.ts +3 -0
  80. package/dist/commands/validate.d.ts.map +1 -0
  81. package/dist/commands/validate.js +94 -0
  82. package/dist/commands/validate.js.map +1 -0
  83. package/dist/index.d.ts +3 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +56 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/lib/api.d.ts +60 -0
  88. package/dist/lib/api.d.ts.map +1 -0
  89. package/dist/lib/api.js +340 -0
  90. package/dist/lib/api.js.map +1 -0
  91. package/dist/lib/auth.d.ts +78 -0
  92. package/dist/lib/auth.d.ts.map +1 -0
  93. package/dist/lib/auth.js +241 -0
  94. package/dist/lib/auth.js.map +1 -0
  95. package/dist/lib/config.d.ts +94 -0
  96. package/dist/lib/config.d.ts.map +1 -0
  97. package/dist/lib/config.js +294 -0
  98. package/dist/lib/config.js.map +1 -0
  99. package/dist/lib/editor.d.ts +6 -0
  100. package/dist/lib/editor.d.ts.map +1 -0
  101. package/dist/lib/editor.js +60 -0
  102. package/dist/lib/editor.js.map +1 -0
  103. package/dist/lib/fs.d.ts +74 -0
  104. package/dist/lib/fs.d.ts.map +1 -0
  105. package/dist/lib/fs.js +235 -0
  106. package/dist/lib/fs.js.map +1 -0
  107. package/dist/lib/index-gen.d.ts +18 -0
  108. package/dist/lib/index-gen.d.ts.map +1 -0
  109. package/dist/lib/index-gen.js +75 -0
  110. package/dist/lib/index-gen.js.map +1 -0
  111. package/dist/lib/local-registry/index.d.ts +15 -0
  112. package/dist/lib/local-registry/index.d.ts.map +1 -0
  113. package/dist/lib/local-registry/index.js +18 -0
  114. package/dist/lib/local-registry/index.js.map +1 -0
  115. package/dist/lib/local-registry/objects.d.ts +51 -0
  116. package/dist/lib/local-registry/objects.d.ts.map +1 -0
  117. package/dist/lib/local-registry/objects.js +148 -0
  118. package/dist/lib/local-registry/objects.js.map +1 -0
  119. package/dist/lib/local-registry/paths.d.ts +53 -0
  120. package/dist/lib/local-registry/paths.d.ts.map +1 -0
  121. package/dist/lib/local-registry/paths.js +85 -0
  122. package/dist/lib/local-registry/paths.js.map +1 -0
  123. package/dist/lib/local-registry/skills.d.ts +83 -0
  124. package/dist/lib/local-registry/skills.d.ts.map +1 -0
  125. package/dist/lib/local-registry/skills.js +261 -0
  126. package/dist/lib/local-registry/skills.js.map +1 -0
  127. package/dist/lib/local-registry/types.d.ts +79 -0
  128. package/dist/lib/local-registry/types.d.ts.map +1 -0
  129. package/dist/lib/local-registry/types.js +5 -0
  130. package/dist/lib/local-registry/types.js.map +1 -0
  131. package/dist/lib/local-registry/versions.d.ts +61 -0
  132. package/dist/lib/local-registry/versions.d.ts.map +1 -0
  133. package/dist/lib/local-registry/versions.js +163 -0
  134. package/dist/lib/local-registry/versions.js.map +1 -0
  135. package/dist/lib/lockfile.d.ts +38 -0
  136. package/dist/lib/lockfile.d.ts.map +1 -0
  137. package/dist/lib/lockfile.js +102 -0
  138. package/dist/lib/lockfile.js.map +1 -0
  139. package/dist/lib/meta-skill.d.ts +6 -0
  140. package/dist/lib/meta-skill.d.ts.map +1 -0
  141. package/dist/lib/meta-skill.js +72 -0
  142. package/dist/lib/meta-skill.js.map +1 -0
  143. package/dist/lib/semver.d.ts +63 -0
  144. package/dist/lib/semver.d.ts.map +1 -0
  145. package/dist/lib/semver.js +107 -0
  146. package/dist/lib/semver.js.map +1 -0
  147. package/dist/types.d.ts +147 -0
  148. package/dist/types.d.ts.map +1 -0
  149. package/dist/types.js +8 -0
  150. package/dist/types.js.map +1 -0
  151. 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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const searchCommand: Command;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const syncCommand: Command;
3
+ //# sourceMappingURL=sync.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const updateCommand: Command;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const validateCommand: Command;
3
+ //# sourceMappingURL=validate.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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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"}