xo-agent 0.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 +159 -0
  3. package/bin/cli.js +2 -0
  4. package/dist/commands/add-agent.d.ts +3 -0
  5. package/dist/commands/add-agent.d.ts.map +1 -0
  6. package/dist/commands/add-agent.js +114 -0
  7. package/dist/commands/add-agent.js.map +1 -0
  8. package/dist/commands/add-command.d.ts +3 -0
  9. package/dist/commands/add-command.d.ts.map +1 -0
  10. package/dist/commands/add-command.js +114 -0
  11. package/dist/commands/add-command.js.map +1 -0
  12. package/dist/commands/add-skill.d.ts +3 -0
  13. package/dist/commands/add-skill.d.ts.map +1 -0
  14. package/dist/commands/add-skill.js +108 -0
  15. package/dist/commands/add-skill.js.map +1 -0
  16. package/dist/commands/add.d.ts +3 -0
  17. package/dist/commands/add.d.ts.map +1 -0
  18. package/dist/commands/add.js +133 -0
  19. package/dist/commands/add.js.map +1 -0
  20. package/dist/commands/interactive.d.ts +3 -0
  21. package/dist/commands/interactive.d.ts.map +1 -0
  22. package/dist/commands/interactive.js +176 -0
  23. package/dist/commands/interactive.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +22 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/skills/example-skill/SKILL.md +19 -0
  29. package/dist/templates/agents/code-reviewer/AGENT.md +138 -0
  30. package/dist/templates/agents/documentation-writer/AGENT.md +179 -0
  31. package/dist/templates/commands/deploy.md +52 -0
  32. package/dist/templates/commands/test.md +49 -0
  33. package/dist/templates/skills/example-skill/SKILL.md +19 -0
  34. package/dist/templates/skills/example-skill/references/reference.md +0 -0
  35. package/dist/templates/skills/example-skill/scripts/script.py +0 -0
  36. package/dist/types.d.ts +13 -0
  37. package/dist/types.d.ts.map +1 -0
  38. package/dist/types.js +16 -0
  39. package/dist/types.js.map +1 -0
  40. package/dist/utils/constants.d.ts +13 -0
  41. package/dist/utils/constants.d.ts.map +1 -0
  42. package/dist/utils/constants.js +16 -0
  43. package/dist/utils/constants.js.map +1 -0
  44. package/dist/utils/copy.d.ts +55 -0
  45. package/dist/utils/copy.d.ts.map +1 -0
  46. package/dist/utils/copy.js +229 -0
  47. package/dist/utils/copy.js.map +1 -0
  48. package/dist/utils/evaluate.d.ts +10 -0
  49. package/dist/utils/evaluate.d.ts.map +1 -0
  50. package/dist/utils/evaluate.js +28 -0
  51. package/dist/utils/evaluate.js.map +1 -0
  52. package/dist/utils/file-builder.d.ts +28 -0
  53. package/dist/utils/file-builder.d.ts.map +1 -0
  54. package/dist/utils/file-builder.js +106 -0
  55. package/dist/utils/file-builder.js.map +1 -0
  56. package/dist/utils/prompts.d.ts +12 -0
  57. package/dist/utils/prompts.d.ts.map +1 -0
  58. package/dist/utils/prompts.js +152 -0
  59. package/dist/utils/prompts.js.map +1 -0
  60. package/dist/utils/transform.d.ts +11 -0
  61. package/dist/utils/transform.d.ts.map +1 -0
  62. package/dist/utils/transform.js +43 -0
  63. package/dist/utils/transform.js.map +1 -0
  64. package/package.json +45 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 XOTiny
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,159 @@
1
+ # xo-agent (Beta)
2
+
3
+ A powerful CLI tool for managing AI agent projects. Easily add skills, commands, and sub-agents to your Antigravity or Claude AI projects.
4
+
5
+ ## Features
6
+
7
+ - 🎯 **Interactive Mode** - Guided workflow with checkbox selection for multiple items
8
+ - 🚀 **Direct Commands** - Quick CLI commands for adding skills, commands, and agents
9
+ - 🔧 **Template-Based** - Pre-built templates for common use cases
10
+ - 🤖 **Multi-Platform** - Supports both Antigravity (`.agent`) and Claude (`.claude`) projects
11
+ - 📦 **Smart Processing** - Automatic directive processing with FileBuilder (`@include`, code execution)
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install -g xo-agent
17
+ # or
18
+ pnpm add -g xo-agent
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ### Interactive Mode (Recommended)
24
+
25
+ Simply run `xo-agent` without arguments to launch the interactive wizard:
26
+
27
+ ```bash
28
+ xo-agent
29
+ ```
30
+
31
+ The interactive mode will:
32
+ 1. Ask what you want to add (Skill, Command, or Agent)
33
+ 2. Let you select the target agent (Antigravity or Claude)
34
+ 3. Show a checkbox list to select multiple items
35
+ 4. Copy all selected items to your project
36
+
37
+ ### Direct Commands
38
+
39
+ #### Add Skills
40
+
41
+ Add pre-built skills to your agent project:
42
+
43
+ ```bash
44
+ # Interactive selection
45
+ xo-agent add-skill --agent antigravity
46
+
47
+ # Add specific skill
48
+ xo-agent add-skill example-skill --agent claude
49
+ ```
50
+
51
+ #### Add Commands
52
+
53
+ Add workflow commands to your agent:
54
+
55
+ ```bash
56
+ # Interactive selection
57
+ xo-agent add-command --agent antigravity
58
+
59
+ # Add specific command
60
+ xo-agent add-command deploy --agent claude
61
+ ```
62
+
63
+ #### Add Agents
64
+
65
+ Add sub-agents to your project:
66
+
67
+ ```bash
68
+ # Interactive selection
69
+ xo-agent add-agent --agent antigravity
70
+
71
+ # Add specific agent
72
+ xo-agent add-agent code-reviewer --agent claude
73
+ ```
74
+
75
+ ## Available Templates
76
+
77
+ ### Skills
78
+ - `example-skill` - Example skill template
79
+
80
+ ### Commands
81
+ - `deploy` - Deploy application to production
82
+ - `test` - Run all tests and generate coverage report
83
+
84
+ ### Agents
85
+ - `code-reviewer` - Automated code review agent for pull requests
86
+ - `documentation-writer` - Automated documentation generation agent
87
+
88
+ ## Project Structure
89
+
90
+ After using xo-agent, your project will have the following structure:
91
+
92
+ ```
93
+ your-project/
94
+ ├── .agent/ # Antigravity agent directory
95
+ │ ├── skills/ # Skills directory
96
+ │ ├── workflows/ # Workflow commands
97
+ │ └── agents/ # Sub-agents
98
+ └── .claude/ # Claude agent directory
99
+ ├── skills/
100
+ ├── commands/
101
+ └── agents/
102
+ ```
103
+
104
+ ## Options
105
+
106
+ All commands support the following options:
107
+
108
+ - `-a, --agent <type>` - Specify agent type (`antigravity` or `claude`)
109
+ - `-h, --help` - Display help for command
110
+
111
+ ## Examples
112
+
113
+ ### Add multiple skills at once
114
+
115
+ ```bash
116
+ xo-agent
117
+ # → Select "Skill"
118
+ # → Select "Antigravity"
119
+ # → Check multiple skills with spacebar
120
+ # → Press enter to confirm
121
+ ```
122
+
123
+ ### Quick add with options
124
+
125
+ ```bash
126
+ # Add deploy command to Antigravity
127
+ xo-agent add-command deploy --agent antigravity
128
+
129
+ # Add code-reviewer agent to Claude
130
+ xo-agent add-agent code-reviewer --agent claude
131
+ ```
132
+
133
+ ## Development
134
+
135
+ ```bash
136
+ # Clone the repository
137
+ git clone https://github.com/yourusername/xo-agent.git
138
+ cd xo-agent
139
+
140
+ # Install dependencies
141
+ pnpm install
142
+
143
+ # Build
144
+ pnpm build
145
+
146
+ # Link for local testing
147
+ pnpm link --global
148
+
149
+ # Test the CLI
150
+ xo-agent --help
151
+ ```
152
+
153
+ ## License
154
+
155
+ MIT
156
+
157
+ ## Contributing
158
+
159
+ Contributions are welcome! Please feel free to submit a Pull Request.
package/bin/cli.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require("../dist/index.js");
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function addAgentCommand(program: Command): void;
3
+ //# sourceMappingURL=add-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-agent.d.ts","sourceRoot":"","sources":["../../src/commands/add-agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAkF/C"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.addAgentCommand = addAgentCommand;
37
+ const path = __importStar(require("path"));
38
+ const prompts_1 = require("../utils/prompts");
39
+ const copy_1 = require("../utils/copy");
40
+ const types_1 = require("../types");
41
+ function addAgentCommand(program) {
42
+ program
43
+ .command('add-agent [name]')
44
+ .description('Add a new sub-agent to your agent project')
45
+ .option('-a, --agent <type>', 'Agent type (antigravity or claude)')
46
+ .action(async (nameArg, options) => {
47
+ try {
48
+ const cwd = process.cwd();
49
+ // Check if we're in a valid project
50
+ if (!(await (0, copy_1.isValidProject)(cwd))) {
51
+ console.error('❌ Error: Not in a valid project directory (no package.json found)');
52
+ process.exit(1);
53
+ }
54
+ // Resolve Agent
55
+ let platform = options.agent;
56
+ if (!platform) {
57
+ platform = await (0, prompts_1.promptForAgent)();
58
+ }
59
+ // Validate agent type
60
+ if (!types_1.AGENT_CONFIGS[platform]) {
61
+ console.error(`❌ Invalid agent type: ${platform}`);
62
+ console.log('Available agents: antigravity, claude');
63
+ process.exit(1);
64
+ }
65
+ const agentConfig = types_1.AGENT_CONFIGS[platform];
66
+ // Ensure agent directory exists
67
+ const agentDir = path.join(cwd, agentConfig.directory);
68
+ await (0, copy_1.ensureAgentDirectory)(agentDir);
69
+ // Get available agent templates
70
+ const agentsDir = path.join(__dirname, '../templates/agents');
71
+ const availableAgents = await (0, copy_1.getAvailableAgents)(agentsDir);
72
+ if (availableAgents.length === 0) {
73
+ console.error('❌ No agent templates found');
74
+ process.exit(1);
75
+ }
76
+ // Determine agent name and template
77
+ let agentName = nameArg;
78
+ let template;
79
+ if (agentName) {
80
+ // If name provided, find matching template
81
+ template = availableAgents.find((agent) => agent.name === agentName);
82
+ if (!template) {
83
+ console.error(`❌ Agent template "${agentName}" not found`);
84
+ console.log('\nAvailable agents:');
85
+ availableAgents.forEach((agent) => console.log(` - ${agent.name}`));
86
+ process.exit(1);
87
+ }
88
+ }
89
+ else {
90
+ // Prompt for template selection
91
+ template = await (0, prompts_1.promptForAgentTemplate)(availableAgents);
92
+ if (!template) {
93
+ console.error('❌ No template selected');
94
+ process.exit(1);
95
+ }
96
+ agentName = template.name;
97
+ }
98
+ // Check if agent already exists
99
+ if (await (0, copy_1.agentExists)(agentDir, agentName)) {
100
+ console.error(`❌ Agent "${agentName}" already exists`);
101
+ process.exit(1);
102
+ }
103
+ // Copy agent template
104
+ await (0, copy_1.copyAgent)(template.path, agentDir, agentName, platform);
105
+ console.log(`✅ Successfully added agent "${agentName}" to ${agentConfig.displayName}!`);
106
+ console.log(`Agent configuration: ${path.join(agentDir, 'agents', agentName, 'AGENT.md')}`);
107
+ }
108
+ catch (error) {
109
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}`);
110
+ process.exit(1);
111
+ }
112
+ });
113
+ }
114
+ //# sourceMappingURL=add-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-agent.js","sourceRoot":"","sources":["../../src/commands/add-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function addCommandCommand(program: Command): void;
3
+ //# sourceMappingURL=add-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-command.d.ts","sourceRoot":"","sources":["../../src/commands/add-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,QAkFjD"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.addCommandCommand = addCommandCommand;
37
+ const path = __importStar(require("path"));
38
+ const prompts_1 = require("../utils/prompts");
39
+ const copy_1 = require("../utils/copy");
40
+ const types_1 = require("../types");
41
+ function addCommandCommand(program) {
42
+ program
43
+ .command('add-command [name]')
44
+ .description('Add a new command to your agent project')
45
+ .option('-a, --agent <type>', 'Agent type (antigravity or claude)')
46
+ .action(async (nameArg, options) => {
47
+ try {
48
+ const cwd = process.cwd();
49
+ // Check if we're in a valid project
50
+ if (!(await (0, copy_1.isValidProject)(cwd))) {
51
+ console.error('❌ Error: Not in a valid project directory (no package.json found)');
52
+ process.exit(1);
53
+ }
54
+ // Resolve Agent
55
+ let platform = options.agent;
56
+ if (!platform) {
57
+ platform = await (0, prompts_1.promptForAgent)();
58
+ }
59
+ // Validate agent type
60
+ if (!types_1.AGENT_CONFIGS[platform]) {
61
+ console.error(`❌ Invalid agent type: ${platform}`);
62
+ console.log('Available agents: antigravity, claude');
63
+ process.exit(1);
64
+ }
65
+ const agentConfig = types_1.AGENT_CONFIGS[platform];
66
+ // Ensure agent directory exists
67
+ const agentDir = path.join(cwd, agentConfig.directory);
68
+ await (0, copy_1.ensureAgentDirectory)(agentDir);
69
+ // Get available command templates
70
+ const commandsDir = path.join(__dirname, '../templates/commands');
71
+ const availableCommands = await (0, copy_1.getAvailableCommands)(commandsDir);
72
+ if (availableCommands.length === 0) {
73
+ console.error('❌ No command templates found');
74
+ process.exit(1);
75
+ }
76
+ // Determine command name and template
77
+ let commandName = nameArg;
78
+ let template;
79
+ if (commandName) {
80
+ // If name provided, find matching template
81
+ template = availableCommands.find((cmd) => cmd.name === commandName);
82
+ if (!template) {
83
+ console.error(`❌ Command template "${commandName}" not found`);
84
+ console.log('\nAvailable commands:');
85
+ availableCommands.forEach((cmd) => console.log(` - ${cmd.name}`));
86
+ process.exit(1);
87
+ }
88
+ }
89
+ else {
90
+ // Prompt for template selection
91
+ template = await (0, prompts_1.promptForCommandTemplate)(availableCommands);
92
+ if (!template) {
93
+ console.error('❌ No template selected');
94
+ process.exit(1);
95
+ }
96
+ commandName = template.name;
97
+ }
98
+ // Check if command already exists
99
+ if (await (0, copy_1.commandExists)(agentDir, commandName, platform)) {
100
+ console.error(`❌ Command "${commandName}" already exists`);
101
+ process.exit(1);
102
+ }
103
+ // Copy command template
104
+ await (0, copy_1.copyCommand)(template.path, agentDir, commandName, platform);
105
+ console.log(`✅ Successfully added command "${commandName}" to ${agentConfig.displayName}!`);
106
+ console.log(`You can now use this command with: /${commandName}`);
107
+ }
108
+ catch (error) {
109
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}`);
110
+ process.exit(1);
111
+ }
112
+ });
113
+ }
114
+ //# sourceMappingURL=add-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-command.js","sourceRoot":"","sources":["../../src/commands/add-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function addSkillCommand(program: Command): void;
3
+ //# sourceMappingURL=add-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-skill.d.ts","sourceRoot":"","sources":["../../src/commands/add-skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAoF/C"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.addSkillCommand = addSkillCommand;
37
+ const path = __importStar(require("path"));
38
+ const prompts_1 = require("../utils/prompts");
39
+ const copy_1 = require("../utils/copy");
40
+ const types_1 = require("../types");
41
+ function addSkillCommand(program) {
42
+ program
43
+ .command('add-skill [skill]')
44
+ .description('Add a skill to your agent project')
45
+ .option('-a, --agent <type>', 'Agent type (antigravity or claude)')
46
+ .action(async (skillArg, options) => {
47
+ try {
48
+ const cwd = process.cwd();
49
+ // Check if we're in a valid project
50
+ if (!(await (0, copy_1.isValidProject)(cwd))) {
51
+ console.error('❌ Error: Not in a valid project directory (no package.json found)');
52
+ process.exit(1);
53
+ }
54
+ // Get skills directory from templates
55
+ const skillsDir = path.join(__dirname, '../templates/skills');
56
+ // Get available skills
57
+ const availableSkills = await (0, copy_1.getAvailableSkills)(skillsDir);
58
+ if (availableSkills.length === 0) {
59
+ console.error('❌ No skills found in the package');
60
+ process.exit(1);
61
+ }
62
+ // Determine skill from argument
63
+ let skillName = skillArg;
64
+ let selectedSkill;
65
+ // 1. Resolve Skill (if provided)
66
+ if (skillName) {
67
+ selectedSkill = availableSkills.find((s) => s.name === skillName);
68
+ if (!selectedSkill) {
69
+ console.error(`❌ Skill "${skillName}" not found`);
70
+ console.log('\nAvailable skills:');
71
+ availableSkills.forEach((s) => console.log(` - ${s.name}`));
72
+ process.exit(1);
73
+ }
74
+ }
75
+ // 2. Resolve Agent
76
+ let platform = options.agent;
77
+ if (!platform) {
78
+ platform = await (0, prompts_1.promptForAgent)();
79
+ }
80
+ // Validate agent type
81
+ if (!types_1.AGENT_CONFIGS[platform]) {
82
+ console.error(`❌ Invalid agent type: ${platform}`);
83
+ console.log('Available agents: antigravity, claude');
84
+ process.exit(1);
85
+ }
86
+ const agentConfig = types_1.AGENT_CONFIGS[platform];
87
+ // 3. Prompt for Skill (if not provided earlier)
88
+ if (!selectedSkill) {
89
+ selectedSkill = await (0, prompts_1.promptForSkill)(availableSkills);
90
+ }
91
+ // Ensure agent directory exists
92
+ const agentDir = path.join(cwd, agentConfig.directory);
93
+ await (0, copy_1.ensureAgentDirectory)(agentDir);
94
+ // Check if skill already exists and remove it (silent overwrite)
95
+ if (await (0, copy_1.skillExists)(agentDir, selectedSkill.name)) {
96
+ await (0, copy_1.removeSkill)(agentDir, selectedSkill.name);
97
+ }
98
+ // Copy skill with FileBuilder processing
99
+ await (0, copy_1.copySkill)(selectedSkill.path, agentDir, selectedSkill.name, platform);
100
+ console.log(`✅ Successfully added skill "${selectedSkill.name}" to ${agentConfig.displayName}!`);
101
+ }
102
+ catch (error) {
103
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}`);
104
+ process.exit(1);
105
+ }
106
+ });
107
+ }
108
+ //# sourceMappingURL=add-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-skill.js","sourceRoot":"","sources":["../../src/commands/add-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function addCommand(program: Command): Promise<void>;
3
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,iBA8GhD"}