uasp-skills 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.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +117 -0
  3. package/bin/skills.js +6 -0
  4. package/dist/cli/commands/add.d.ts +6 -0
  5. package/dist/cli/commands/add.d.ts.map +1 -0
  6. package/dist/cli/commands/add.js +81 -0
  7. package/dist/cli/commands/add.js.map +1 -0
  8. package/dist/cli/commands/init.d.ts +6 -0
  9. package/dist/cli/commands/init.d.ts.map +1 -0
  10. package/dist/cli/commands/init.js +28 -0
  11. package/dist/cli/commands/init.js.map +1 -0
  12. package/dist/cli/commands/list.d.ts +6 -0
  13. package/dist/cli/commands/list.d.ts.map +1 -0
  14. package/dist/cli/commands/list.js +39 -0
  15. package/dist/cli/commands/list.js.map +1 -0
  16. package/dist/cli/commands/remove.d.ts +6 -0
  17. package/dist/cli/commands/remove.d.ts.map +1 -0
  18. package/dist/cli/commands/remove.js +44 -0
  19. package/dist/cli/commands/remove.js.map +1 -0
  20. package/dist/cli/commands/search.d.ts +6 -0
  21. package/dist/cli/commands/search.d.ts.map +1 -0
  22. package/dist/cli/commands/search.js +46 -0
  23. package/dist/cli/commands/search.js.map +1 -0
  24. package/dist/cli/index.d.ts +8 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +26 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/core/github.d.ts +39 -0
  29. package/dist/core/github.d.ts.map +1 -0
  30. package/dist/core/github.js +91 -0
  31. package/dist/core/github.js.map +1 -0
  32. package/dist/core/index.d.ts +5 -0
  33. package/dist/core/index.d.ts.map +1 -0
  34. package/dist/core/index.js +5 -0
  35. package/dist/core/index.js.map +1 -0
  36. package/dist/core/installer.d.ts +88 -0
  37. package/dist/core/installer.d.ts.map +1 -0
  38. package/dist/core/installer.js +493 -0
  39. package/dist/core/installer.js.map +1 -0
  40. package/dist/core/registry.d.ts +26 -0
  41. package/dist/core/registry.d.ts.map +1 -0
  42. package/dist/core/registry.js +69 -0
  43. package/dist/core/registry.js.map +1 -0
  44. package/dist/core/validator.d.ts +17 -0
  45. package/dist/core/validator.d.ts.map +1 -0
  46. package/dist/core/validator.js +318 -0
  47. package/dist/core/validator.js.map +1 -0
  48. package/dist/index.d.ts +8 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +10 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/types/index.d.ts +3 -0
  53. package/dist/types/index.d.ts.map +1 -0
  54. package/dist/types/index.js +3 -0
  55. package/dist/types/index.js.map +1 -0
  56. package/dist/types/registry.d.ts +43 -0
  57. package/dist/types/registry.d.ts.map +1 -0
  58. package/dist/types/registry.js +5 -0
  59. package/dist/types/registry.js.map +1 -0
  60. package/dist/types/skill.d.ts +128 -0
  61. package/dist/types/skill.d.ts.map +1 -0
  62. package/dist/types/skill.js +6 -0
  63. package/dist/types/skill.js.map +1 -0
  64. package/package.json +66 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 ifoster01
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,117 @@
1
+ # @uasp/skills
2
+
3
+ CLI tool for managing UASP agent skills.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ # Use directly with npx
9
+ npx @uasp/skills <command>
10
+
11
+ # Or install globally
12
+ npm install -g @uasp/skills
13
+ ```
14
+
15
+ ## Commands
16
+
17
+ ### Add a skill
18
+
19
+ Install a skill from a GitHub registry:
20
+
21
+ ```bash
22
+ # Install a specific skill
23
+ npx @uasp/skills add https://github.com/ifoster01/uasp/agent-skills --skill agent-browser
24
+
25
+ # Install all skills from a registry
26
+ npx @uasp/skills add https://github.com/ifoster01/uasp/agent-skills --all
27
+ ```
28
+
29
+ ### List installed skills
30
+
31
+ ```bash
32
+ npx @uasp/skills list
33
+
34
+ # Output as JSON
35
+ npx @uasp/skills list --json
36
+ ```
37
+
38
+ ### Remove a skill
39
+
40
+ ```bash
41
+ npx @uasp/skills remove agent-browser
42
+ ```
43
+
44
+ ### Search for skills
45
+
46
+ ```bash
47
+ npx @uasp/skills search browser
48
+
49
+ # Search a specific registry
50
+ npx @uasp/skills search payment --registry https://github.com/other/skills
51
+ ```
52
+
53
+ ### Initialize .agent directory
54
+
55
+ ```bash
56
+ npx @uasp/skills init
57
+ ```
58
+
59
+ ## Directory Structure
60
+
61
+ After installing skills, your project will have:
62
+
63
+ ```
64
+ .agent/
65
+ ├── settings.json # Configuration and installed skills
66
+ └── skills/
67
+ └── skill-name/
68
+ └── skill-name.uasp.yaml
69
+ ```
70
+
71
+ ## Settings Format
72
+
73
+ The `settings.json` file tracks installed skills:
74
+
75
+ ```json
76
+ {
77
+ "version": "1.0.0",
78
+ "skills": {
79
+ "installed": [
80
+ {
81
+ "name": "agent-browser",
82
+ "version": "e3fbde81",
83
+ "type": "cli",
84
+ "path": ".agent/skills/agent-browser/agent-browser.uasp.yaml",
85
+ "enabled": true,
86
+ "installedAt": "2026-01-29T00:00:00Z",
87
+ "source": "ifoster01/uasp/agent-skills"
88
+ }
89
+ ]
90
+ },
91
+ "triggers": {
92
+ "keywords": {
93
+ "browser": ["agent-browser"],
94
+ "web": ["agent-browser"]
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ ## Programmatic Usage
101
+
102
+ ```typescript
103
+ import { loadRegistry, searchSkills, installSkill } from '@uasp/skills';
104
+
105
+ // Load a registry
106
+ const registry = await loadRegistry('https://github.com/ifoster01/uasp/agent-skills');
107
+
108
+ // Search for skills
109
+ const results = searchSkills(registry, 'browser');
110
+
111
+ // Install a skill programmatically
112
+ const result = await installSkill(githubSource, skill);
113
+ ```
114
+
115
+ ## License
116
+
117
+ MIT
package/bin/skills.js ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+
3
+ import('../dist/cli/index.js').catch((err) => {
4
+ console.error('Failed to load CLI:', err.message);
5
+ process.exit(1);
6
+ });
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Add command - Install a skill from a registry
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const addCommand: Command;
6
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,UAAU,SAoFnB,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Add command - Install a skill from a registry
3
+ */
4
+ import { Command } from 'commander';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import { loadRegistry, findSkill, getGitHubSource } from '../../core/registry.js';
8
+ import { installSkill } from '../../core/installer.js';
9
+ export const addCommand = new Command('add')
10
+ .description('Install a skill from a GitHub registry')
11
+ .argument('<source>', 'GitHub URL or local path to the skills registry')
12
+ .option('-s, --skill <name>', 'Specific skill to install')
13
+ .option('-a, --all', 'Install all skills from the registry')
14
+ .option('-f, --force', 'Overwrite existing installation')
15
+ .option('--no-claude-code', 'Skip Claude Code installation (only install to .agent/)')
16
+ .action(async (source, options) => {
17
+ const spinner = ora('Loading registry...').start();
18
+ const enableClaudeCode = options.claudeCode !== false;
19
+ try {
20
+ // Load the registry
21
+ const registry = await loadRegistry(source);
22
+ const githubSource = getGitHubSource(source);
23
+ spinner.succeed(`Found ${registry.skills.length} skills in registry`);
24
+ // Determine which skills to install
25
+ let skillsToInstall = registry.skills;
26
+ if (options.skill) {
27
+ const skill = findSkill(registry, options.skill);
28
+ if (!skill) {
29
+ console.error(chalk.red(`Skill '${options.skill}' not found in registry`));
30
+ console.log('\nAvailable skills:');
31
+ registry.skills.forEach((s) => {
32
+ console.log(` - ${chalk.cyan(s.name)}: ${s.description}`);
33
+ });
34
+ process.exit(1);
35
+ }
36
+ skillsToInstall = [skill];
37
+ }
38
+ else if (!options.all) {
39
+ console.log(chalk.yellow('\nNo skill specified. Use --skill <name> or --all'));
40
+ console.log('\nAvailable skills:');
41
+ registry.skills.forEach((s) => {
42
+ console.log(` - ${chalk.cyan(s.name)}: ${s.description}`);
43
+ });
44
+ process.exit(1);
45
+ }
46
+ // Track Claude Code installations
47
+ let claudeCodeCount = 0;
48
+ // Install each skill
49
+ for (const skill of skillsToInstall) {
50
+ const installSpinner = ora(`Installing ${skill.name}...`).start();
51
+ const result = await installSkill(githubSource, skill, {
52
+ claudeCode: enableClaudeCode,
53
+ });
54
+ if (result.success) {
55
+ const claudeStatus = result.claudeCodeInstalled
56
+ ? chalk.dim(' + Claude Code')
57
+ : '';
58
+ installSpinner.succeed(`Installed ${chalk.cyan(skill.name)} v${skill.version} (${skill.type})${claudeStatus}`);
59
+ if (result.claudeCodeInstalled) {
60
+ claudeCodeCount++;
61
+ }
62
+ }
63
+ else {
64
+ installSpinner.fail(`Failed to install ${skill.name}: ${result.error}`);
65
+ }
66
+ }
67
+ console.log(chalk.green('\nInstallation complete!'));
68
+ console.log(`\nLocations:`);
69
+ console.log(` ${chalk.dim('.agent/skills/')} - UASP format (project-local)`);
70
+ if (claudeCodeCount > 0) {
71
+ console.log(` ${chalk.dim('~/.agents/skills/')} - SKILL.md format (Claude Code compatible)`);
72
+ console.log(`\n${chalk.cyan('Claude Code:')} ${claudeCodeCount} skill(s) available immediately`);
73
+ }
74
+ }
75
+ catch (error) {
76
+ spinner.fail('Installation failed');
77
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
78
+ process.exit(1);
79
+ }
80
+ });
81
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Init command - Initialize .agent directory
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const initCommand: Command;
6
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,WAAW,SAwBpB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Init command - Initialize .agent directory
3
+ */
4
+ import { Command } from 'commander';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import { initAgentDir, getAgentDir } from '../../core/installer.js';
8
+ export const initCommand = new Command('init')
9
+ .description('Initialize .agent directory structure')
10
+ .action(async () => {
11
+ const spinner = ora('Initializing...').start();
12
+ try {
13
+ await initAgentDir();
14
+ spinner.succeed('Initialized .agent directory');
15
+ console.log(`\nCreated:`);
16
+ console.log(` ${chalk.dim(getAgentDir())}/`);
17
+ console.log(` ${chalk.dim('settings.json')}`);
18
+ console.log(` ${chalk.dim('skills/')}`);
19
+ console.log(`\n${chalk.green('Ready to install skills!')}`);
20
+ console.log(chalk.dim('Run `skills add <registry-url> --skill <name>` to install a skill'));
21
+ }
22
+ catch (error) {
23
+ spinner.fail('Initialization failed');
24
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
25
+ process.exit(1);
26
+ }
27
+ });
28
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,YAAY,EAAE,CAAC;QAErB,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAEhD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAC/E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * List command - Show installed skills
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const listCommand: Command;
6
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SAmCpB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * List command - Show installed skills
3
+ */
4
+ import { Command } from 'commander';
5
+ import chalk from 'chalk';
6
+ import { listInstalledSkills } from '../../core/installer.js';
7
+ export const listCommand = new Command('list')
8
+ .description('List installed skills')
9
+ .option('-j, --json', 'Output as JSON')
10
+ .action(async (options) => {
11
+ try {
12
+ const skills = await listInstalledSkills();
13
+ if (options.json) {
14
+ console.log(JSON.stringify(skills, null, 2));
15
+ return;
16
+ }
17
+ if (skills.length === 0) {
18
+ console.log(chalk.yellow('No skills installed'));
19
+ console.log('\nRun `skills add <source> --skill <name>` to install a skill');
20
+ return;
21
+ }
22
+ console.log(chalk.bold(`\nInstalled Skills (${skills.length}):\n`));
23
+ for (const skill of skills) {
24
+ const status = skill.enabled ? chalk.green('enabled') : chalk.gray('disabled');
25
+ const type = chalk.dim(`[${skill.type}]`);
26
+ console.log(` ${chalk.cyan(skill.name)} ${type}`);
27
+ console.log(` Version: ${skill.version}`);
28
+ console.log(` Status: ${status}`);
29
+ console.log(` Path: ${chalk.dim(skill.path)}`);
30
+ console.log(` Source: ${chalk.dim(skill.source)}`);
31
+ console.log();
32
+ }
33
+ }
34
+ catch (error) {
35
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
36
+ process.exit(1);
37
+ }
38
+ });
39
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAE3C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;QAEpE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Remove command - Uninstall a skill
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const removeCommand: Command;
6
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,aAAa,SAqCtB,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Remove command - Uninstall a skill
3
+ */
4
+ import { Command } from 'commander';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import { removeSkill, listInstalledSkills } from '../../core/installer.js';
8
+ export const removeCommand = new Command('remove')
9
+ .description('Remove an installed skill')
10
+ .argument('<name>', 'Name of the skill to remove')
11
+ .option('--no-claude-code', 'Skip removal from Claude Code directories')
12
+ .action(async (name, options) => {
13
+ const spinner = ora(`Removing ${name}...`).start();
14
+ const enableClaudeCode = options.claudeCode !== false;
15
+ try {
16
+ // Check if skill exists
17
+ const installed = await listInstalledSkills();
18
+ const skill = installed.find((s) => s.name === name);
19
+ if (!skill) {
20
+ spinner.fail(`Skill '${name}' is not installed`);
21
+ console.log('\nInstalled skills:');
22
+ installed.forEach((s) => {
23
+ console.log(` - ${chalk.cyan(s.name)}`);
24
+ });
25
+ process.exit(1);
26
+ }
27
+ // Remove the skill
28
+ const success = await removeSkill(name, { claudeCode: enableClaudeCode });
29
+ if (success) {
30
+ const claudeStatus = enableClaudeCode ? ' (+ Claude Code)' : '';
31
+ spinner.succeed(`Removed ${chalk.cyan(name)}${claudeStatus}`);
32
+ }
33
+ else {
34
+ spinner.fail(`Failed to remove ${name}`);
35
+ process.exit(1);
36
+ }
37
+ }
38
+ catch (error) {
39
+ spinner.fail('Removal failed');
40
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
41
+ process.exit(1);
42
+ }
43
+ });
44
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM3E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,2BAA2B,CAAC;KACxC,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAsB,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC;IAEtD,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE1E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Search command - Search for skills in a registry
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const searchCommand: Command;
6
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,aAAa,SA0CtB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Search command - Search for skills in a registry
3
+ */
4
+ import { Command } from 'commander';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import { loadRegistry, searchSkills } from '../../core/registry.js';
8
+ // Default registry URL
9
+ const DEFAULT_REGISTRY = 'https://github.com/ifoster01/uasp/agent-skills';
10
+ export const searchCommand = new Command('search')
11
+ .description('Search for skills in a registry')
12
+ .argument('<query>', 'Search query')
13
+ .option('-r, --registry <url>', 'Registry URL', DEFAULT_REGISTRY)
14
+ .option('-j, --json', 'Output as JSON')
15
+ .action(async (query, options) => {
16
+ const spinner = ora('Searching...').start();
17
+ try {
18
+ const registry = await loadRegistry(options.registry);
19
+ const results = searchSkills(registry, query);
20
+ spinner.stop();
21
+ if (options.json) {
22
+ console.log(JSON.stringify(results, null, 2));
23
+ return;
24
+ }
25
+ if (results.length === 0) {
26
+ console.log(chalk.yellow(`No skills found matching '${query}'`));
27
+ return;
28
+ }
29
+ console.log(chalk.bold(`\nFound ${results.length} skill(s):\n`));
30
+ for (const skill of results) {
31
+ const type = chalk.dim(`[${skill.type}]`);
32
+ const keywords = skill.keywords.slice(0, 5).join(', ');
33
+ console.log(` ${chalk.cyan(skill.name)} ${type}`);
34
+ console.log(` ${skill.description}`);
35
+ console.log(` Keywords: ${chalk.dim(keywords)}`);
36
+ console.log();
37
+ }
38
+ console.log(chalk.dim(`Install with: skills add ${options.registry} --skill <name>`));
39
+ }
40
+ catch (error) {
41
+ spinner.fail('Search failed');
42
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
43
+ process.exit(1);
44
+ }
45
+ });
46
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEpE,uBAAuB;AACvB,MAAM,gBAAgB,GAAG,gDAAgD,CAAC;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,CAAC;KAChE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA6C,EAAE,EAAE;IAC7E,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE9C,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,KAAK,GAAG,CAAC,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;QAEjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,QAAQ,iBAAiB,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * UASP Skills CLI
4
+ *
5
+ * CLI tool for managing UASP agent skills
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * UASP Skills CLI
4
+ *
5
+ * CLI tool for managing UASP agent skills
6
+ */
7
+ import { Command } from 'commander';
8
+ import { addCommand } from './commands/add.js';
9
+ import { listCommand } from './commands/list.js';
10
+ import { removeCommand } from './commands/remove.js';
11
+ import { searchCommand } from './commands/search.js';
12
+ import { initCommand } from './commands/init.js';
13
+ const program = new Command();
14
+ program
15
+ .name('skills')
16
+ .description('CLI tool for managing UASP agent skills')
17
+ .version('0.1.0');
18
+ // Add commands
19
+ program.addCommand(addCommand);
20
+ program.addCommand(listCommand);
21
+ program.addCommand(removeCommand);
22
+ program.addCommand(searchCommand);
23
+ program.addCommand(initCommand);
24
+ // Parse and execute
25
+ program.parse(process.argv);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,oBAAoB;AACpB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * GitHub integration for fetching skills
3
+ */
4
+ export interface GitHubSource {
5
+ owner: string;
6
+ repo: string;
7
+ path: string;
8
+ ref: string;
9
+ isLocal?: boolean;
10
+ localPath?: string;
11
+ }
12
+ /**
13
+ * Parse a GitHub URL or local path into components
14
+ * Supports formats:
15
+ * - https://github.com/owner/repo/tree/branch/path
16
+ * - https://github.com/owner/repo/path (assumes main branch)
17
+ * - github:owner/repo/path
18
+ * - file:///absolute/path (local file)
19
+ * - /absolute/path (local file)
20
+ * - ./relative/path (local file)
21
+ */
22
+ export declare function parseGitHubUrl(url: string): GitHubSource | null;
23
+ /**
24
+ * Build a raw GitHub URL for fetching file content
25
+ */
26
+ export declare function buildRawUrl(source: GitHubSource, filePath: string): string;
27
+ /**
28
+ * Fetch a file from GitHub or local filesystem
29
+ */
30
+ export declare function fetchFromGitHub(source: GitHubSource, filePath: string): Promise<string>;
31
+ /**
32
+ * Fetch the registry.json from a GitHub repository
33
+ */
34
+ export declare function fetchRegistry(source: GitHubSource): Promise<string>;
35
+ /**
36
+ * Fetch a skill file from a GitHub repository
37
+ */
38
+ export declare function fetchSkillFile(source: GitHubSource, skillPath: string): Promise<string>;
39
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/core/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAoC/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAEjB"}