ai-devkit 0.6.0 → 0.8.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 (70) hide show
  1. package/README.md +245 -0
  2. package/dist/cli.js +2 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/skill.d.ts +3 -0
  5. package/dist/commands/skill.d.ts.map +1 -0
  6. package/dist/commands/skill.js +77 -0
  7. package/dist/commands/skill.js.map +1 -0
  8. package/dist/lib/EnvironmentSelector.d.ts +2 -1
  9. package/dist/lib/EnvironmentSelector.d.ts.map +1 -1
  10. package/dist/lib/EnvironmentSelector.js +55 -27
  11. package/dist/lib/EnvironmentSelector.js.map +1 -1
  12. package/dist/lib/SkillManager.d.ts +33 -0
  13. package/dist/lib/SkillManager.d.ts.map +1 -0
  14. package/dist/lib/SkillManager.js +255 -0
  15. package/dist/lib/SkillManager.js.map +1 -0
  16. package/dist/templates/commands/capture-knowledge.md +0 -5
  17. package/dist/templates/commands/check-implementation.md +0 -5
  18. package/dist/templates/commands/code-review.md +0 -5
  19. package/dist/templates/commands/debug.md +0 -5
  20. package/dist/templates/commands/execute-plan.md +0 -5
  21. package/dist/templates/commands/new-requirement.md +0 -5
  22. package/dist/templates/commands/remember.md +1 -1
  23. package/dist/templates/commands/review-design.md +0 -5
  24. package/dist/templates/commands/review-requirements.md +0 -5
  25. package/dist/templates/commands/simplify-implementation.md +0 -5
  26. package/dist/templates/commands/update-planning.md +0 -5
  27. package/dist/templates/commands/writing-test.md +0 -5
  28. package/dist/templates/env/base.md +52 -2
  29. package/dist/templates/templates/commands/capture-knowledge.md +0 -5
  30. package/dist/templates/templates/commands/check-implementation.md +0 -5
  31. package/dist/templates/templates/commands/code-review.md +0 -5
  32. package/dist/templates/templates/commands/debug.md +0 -5
  33. package/dist/templates/templates/commands/execute-plan.md +0 -5
  34. package/dist/templates/templates/commands/new-requirement.md +0 -5
  35. package/dist/templates/templates/commands/remember.md +1 -1
  36. package/dist/templates/templates/commands/review-design.md +0 -5
  37. package/dist/templates/templates/commands/review-requirements.md +0 -5
  38. package/dist/templates/templates/commands/simplify-implementation.md +0 -5
  39. package/dist/templates/templates/commands/update-planning.md +0 -5
  40. package/dist/templates/templates/commands/writing-test.md +0 -5
  41. package/dist/templates/templates/env/base.md +52 -2
  42. package/dist/types.d.ts +1 -0
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js.map +1 -1
  45. package/dist/util/env.d.ts +2 -0
  46. package/dist/util/env.d.ts.map +1 -1
  47. package/dist/util/env.js +14 -0
  48. package/dist/util/env.js.map +1 -1
  49. package/dist/util/git.d.ts +15 -0
  50. package/dist/util/git.d.ts.map +1 -0
  51. package/dist/util/git.js +82 -0
  52. package/dist/util/git.js.map +1 -0
  53. package/dist/util/skill.d.ts +13 -0
  54. package/dist/util/skill.d.ts.map +1 -0
  55. package/dist/util/skill.js +34 -0
  56. package/dist/util/skill.js.map +1 -0
  57. package/package.json +1 -1
  58. package/templates/commands/capture-knowledge.md +0 -5
  59. package/templates/commands/check-implementation.md +0 -5
  60. package/templates/commands/code-review.md +0 -5
  61. package/templates/commands/debug.md +0 -5
  62. package/templates/commands/execute-plan.md +0 -5
  63. package/templates/commands/new-requirement.md +0 -5
  64. package/templates/commands/remember.md +1 -1
  65. package/templates/commands/review-design.md +0 -5
  66. package/templates/commands/review-requirements.md +0 -5
  67. package/templates/commands/simplify-implementation.md +0 -5
  68. package/templates/commands/update-planning.md +0 -5
  69. package/templates/commands/writing-test.md +0 -5
  70. package/templates/env/base.md +52 -2
package/README.md ADDED
@@ -0,0 +1,245 @@
1
+ The official command-line interface for **AI DevKit**.
2
+
3
+ This tool orchestrates the setup and management of AI-assisted development environments, ensuring your project is ready for agents like Cursor, Claude Code, and more.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/ai-devkit.svg)](https://www.npmjs.com/package/ai-devkit)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## Features
9
+
10
+ - 🎯 **Phase-based Development**: Structured templates for each stage of the software development lifecycle
11
+ - 🤖 **AI Environment Setup**: Automatic configuration for Cursor and Claude Code
12
+ - 📝 **Customizable Templates**: Markdown-based templates with YAML frontmatter
13
+ - 🚀 **Interactive CLI**: User-friendly prompts with flag override support
14
+ - ⚙️ **State Management**: Tracks initialized phases and configuration
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ # Using npx (no installation needed)
20
+ npx ai-devkit init
21
+
22
+ # Or install globally
23
+ npm install -g ai-devkit
24
+ ```
25
+
26
+ ## Quick Start
27
+
28
+ Initialize AI DevKit in your project:
29
+
30
+ ```bash
31
+ # Interactive mode (recommended)
32
+ ai-devkit init
33
+ ```
34
+
35
+ This will:
36
+ 1. Create a `.ai-devkit.json` configuration file
37
+ 2. Set up your AI development environment (Cursor/Claude Code)
38
+ 3. Generate phase templates in `docs/ai/`
39
+
40
+ Detailed user guide can be found [here](https://ai-devkit.com/docs/).
41
+
42
+ ## Available Phases
43
+
44
+ - **Requirements**: Problem understanding, requirements gathering, and success criteria
45
+ - **Design**: System architecture, data models, and technical design (include mermaid diagrams for architecture/data flow)
46
+ - **Planning**: Task breakdown, milestones, and project timeline
47
+ - **Implementation**: Technical implementation notes and code guidelines
48
+ - **Testing**: Testing strategy, test cases, and quality assurance
49
+ - **Deployment**: Deployment process, infrastructure, and release procedures
50
+ - **Monitoring**: Monitoring strategy, metrics, alerts, and observability
51
+
52
+ ## Commands
53
+
54
+ ### `ai-devkit init`
55
+
56
+ Initialize AI DevKit in your project.
57
+
58
+ **Options:**
59
+ - `-e, --environment <env>`: Specify environment (cursor|claude|both)
60
+ - `-a, --all`: Initialize all phases at once
61
+ - `-p, --phases <phases>`: Comma-separated list of specific phases
62
+
63
+ ```bash
64
+ # Interactive mode
65
+ ai-devkit init
66
+
67
+ # Initialize for Cursor with all phases
68
+ ai-devkit init --environment cursor --all
69
+
70
+ # Initialize specific phases
71
+ ai-devkit init --phases requirements,design,implementation
72
+ ```
73
+
74
+ ### `ai-devkit phase [name]`
75
+
76
+ Add or update a specific phase template.
77
+
78
+ **Examples:**
79
+ ```bash
80
+ # Interactive selection
81
+ ai-devkit phase
82
+
83
+ # Add specific phase
84
+ ai-devkit phase requirements
85
+ ai-devkit phase testing
86
+ ```
87
+
88
+ ## Generated Structure
89
+
90
+ After initialization, your project will have:
91
+
92
+ ```
93
+ your-project/
94
+ ├── .ai-devkit.json # Configuration and state
95
+ ├── docs/
96
+ │ └── ai/
97
+ │ ├── requirements/
98
+ │ │ └── README.md
99
+ │ ├── design/
100
+ │ │ └── README.md
101
+ │ ├── planning/
102
+ │ │ └── README.md
103
+ │ ├── implementation/
104
+ │ │ └── README.md
105
+ │ ├── testing/
106
+ │ │ └── README.md
107
+ │ ├── deployment/
108
+ │ │ └── README.md
109
+ │ └── monitoring/
110
+ │ └── README.md
111
+ └── [Environment-specific files]
112
+ ```
113
+
114
+ Supported Tools & Agents:
115
+ | Agent | Support | Notes |
116
+ |-----------------------------------------------------------|---------|---------------------------------------------------|
117
+ | [Claude Code](https://www.anthropic.com/claude-code) | ✅ | |
118
+ | [GitHub Copilot](https://code.visualstudio.com/) | ✅ | VSCode only |
119
+ | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | ✅ | |
120
+ | [Cursor](https://cursor.sh/) | ✅ | |
121
+ | [opencode](https://opencode.ai/) | ✅ | |
122
+ | [Antigravity](https://antigravity.google/) | ✅ | |
123
+ | [Windsurf](https://windsurf.com/) | 🚧 | Testing |
124
+ | [Kilo Code](https://github.com/Kilo-Org/kilocode) | 🚧 | Testing |
125
+ | [Roo Code](https://roocode.com/) | 🚧 | Testing |
126
+ | [Codex CLI](https://github.com/openai/codex) | ✅ | Only Global |
127
+ | [Amp](https://ampcode.com/) | 🚧 | Testing |
128
+
129
+ Templates are designed to provide structure while remaining concise and AI-friendly.
130
+
131
+ ## Workflow Examples
132
+
133
+ ### Initial Project Setup
134
+
135
+ 1. **Initialize your project:**
136
+ ```bash
137
+ ai-devkit init
138
+ ```
139
+
140
+ 2. **Start with requirements:**
141
+ - Use slash command to start filling the requirement `/new-requerement`
142
+ - Your AI assistant will help clarify and document requirements
143
+ - Use slash command to review the requirement `/review-requirement`
144
+
145
+ 3. **Design your system:**
146
+ - Review `docs/ai/design/` and feature-specific files
147
+ - Use slash command to review the design `/review-design`
148
+ - Your AI assistant will help clarify and document design
149
+
150
+ 4. **Plan your work:**
151
+ - Review `docs/ai/planning/` and feature-specific plans
152
+ - Clarify and document plan with AI assistant
153
+
154
+ 5. **Implement with guidance:**
155
+ - When the plan is ready, your AI assistant will help you implement the code
156
+ - You can start the execution of the plan with the command `/execute-plan`
157
+ - AI assistant will help you to review the code and update the implementation notes
158
+ - After executing each task, you can check the implementation and compare it with the design with AI support by using the command `/check-implementation`
159
+ - Once the implementation is good, you can review the code with AI support by using the command `/code-review`
160
+
161
+ 6. **Test thoroughly:**
162
+ - After implementation is done, you can start testing
163
+ - Use `docs/ai/testing/` as your testing guide
164
+ - Use slash command to start writing test `/writing-test`
165
+
166
+ 7. **Deploy confidently:**
167
+ - Follow deployment procedures in `docs/ai/deployment/`
168
+
169
+ 8. **Monitor and iterate:**
170
+ - Set up monitoring per `docs/ai/monitoring/`
171
+
172
+ ## Use Cases
173
+
174
+ - **New Projects**: Scaffold complete development documentation
175
+ - **Existing Projects**: Add structured documentation gradually
176
+ - **Team Collaboration**: Share common development practices
177
+ - **AI Pair Programming**: Provide context for AI assistants
178
+ - **Knowledge Management**: Document decisions and patterns
179
+
180
+ ## Best Practices
181
+
182
+ 1. **Keep templates updated**: As your project evolves, update phase documentation
183
+ 2. **Reference across phases**: Link requirements to design, design to implementation
184
+ 3. **Use with AI assistants**: Templates are designed to work well with AI code assistants
185
+ 4. **Customize for your needs**: Templates are starting points, not rigid requirements
186
+ 5. **Track decisions**: Document architectural decisions and their rationale
187
+
188
+ ## Configuration File
189
+
190
+ The `.ai-devkit.json` file tracks your setup:
191
+
192
+ ```json
193
+ {
194
+ "version": "0.2.0",
195
+ "environment": "cursor",
196
+ "initializedPhases": ["requirements", "design", "planning"],
197
+ "createdAt": "2025-10-14T...",
198
+ "updatedAt": "2025-10-14T..."
199
+ }
200
+ ```
201
+
202
+ ## Development
203
+
204
+ To work on the CLI package:
205
+
206
+ ```bash
207
+ # Clone the repository
208
+ git clone <repository-url>
209
+ cd ai-devkit
210
+
211
+ # Install dependencies for the monorepo
212
+ npm install
213
+
214
+ # Navigate to CLI package
215
+ cd packages/cli
216
+
217
+ # Run in development mode
218
+ npm run dev -- init
219
+
220
+ # Build
221
+ npm run build
222
+
223
+ # Test locally
224
+ npm link
225
+ ai-devkit init
226
+ ```
227
+
228
+ ## Contributing
229
+
230
+ Contributions are welcome! Please feel free to submit issues and pull requests.
231
+
232
+ ## License
233
+
234
+ MIT
235
+
236
+ ---
237
+
238
+ **Happy building with AI! 🚀**
239
+
240
+ ## Quick Reference
241
+
242
+ | Quick links | Description |
243
+ |-------------|-------------|
244
+ | [CHANGELOG.md](CHANGELOG.md) | Recent changes and release notes |
245
+
package/dist/cli.js CHANGED
@@ -6,6 +6,7 @@ const init_1 = require("./commands/init");
6
6
  const phase_1 = require("./commands/phase");
7
7
  const setup_1 = require("./commands/setup");
8
8
  const memory_1 = require("./commands/memory");
9
+ const skill_1 = require("./commands/skill");
9
10
  const program = new commander_1.Command();
10
11
  program
11
12
  .name('ai-devkit')
@@ -28,5 +29,6 @@ program
28
29
  .option('-g, --global', 'Install commands to global environment folders')
29
30
  .action(setup_1.setupCommand);
30
31
  (0, memory_1.registerMemoryCommand)(program);
32
+ (0, skill_1.registerSkillCommand)(program);
31
33
  program.parse();
32
34
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,4CAAgD;AAChD,4CAAgD;AAChD,8CAA0D;AAE1D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,yBAAyB,EAAE,8CAA8C,CAAC;KACjF,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,uBAAuB,EAAE,8CAA8C,CAAC;KAC/E,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,2GAA2G,CAAC;KACxH,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,gDAAgD,CAAC;KACxE,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,4CAAgD;AAChD,4CAAgD;AAChD,8CAA0D;AAC1D,4CAAwD;AAExD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,yBAAyB,EAAE,8CAA8C,CAAC;KACjF,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,uBAAuB,EAAE,8CAA8C,CAAC;KAC/E,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,2GAA2G,CAAC;KACxH,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,gDAAgD,CAAC;KACxE,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSkillCommand(program: Command): void;
3
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+E3D"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerSkillCommand = registerSkillCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const Config_1 = require("../lib/Config");
9
+ const SkillManager_1 = require("../lib/SkillManager");
10
+ function registerSkillCommand(program) {
11
+ const skillCommand = program
12
+ .command('skill')
13
+ .description('Manage Agent Skills');
14
+ skillCommand
15
+ .command('add <registry-repo> <skill-name>')
16
+ .description('Install a skill from a registry (e.g., ai-devkit skill add anthropics/skills frontend-design)')
17
+ .action(async (registryRepo, skillName) => {
18
+ try {
19
+ const configManager = new Config_1.ConfigManager();
20
+ const skillManager = new SkillManager_1.SkillManager(configManager);
21
+ await skillManager.addSkill(registryRepo, skillName);
22
+ }
23
+ catch (error) {
24
+ console.error(chalk_1.default.red(`\nFailed to add skill: ${error.message}\n`));
25
+ process.exit(1);
26
+ }
27
+ });
28
+ skillCommand
29
+ .command('list')
30
+ .description('List all installed skills in the current project')
31
+ .action(async () => {
32
+ try {
33
+ const configManager = new Config_1.ConfigManager();
34
+ const skillManager = new SkillManager_1.SkillManager(configManager);
35
+ const skills = await skillManager.listSkills();
36
+ if (skills.length === 0) {
37
+ console.log(chalk_1.default.yellow('\nNo skills installed in this project.'));
38
+ console.log(chalk_1.default.dim('Install a skill with: ai-devkit skill add <registry>/<repo> <skill-name>\n'));
39
+ return;
40
+ }
41
+ console.log(chalk_1.default.bold('\nInstalled Skills:\n'));
42
+ const maxNameLength = Math.max(...skills.map(s => s.name.length), 10);
43
+ const maxRegistryLength = Math.max(...skills.map(s => s.registry.length), 15);
44
+ console.log(chalk_1.default.dim(' ') +
45
+ chalk_1.default.bold('Skill Name'.padEnd(maxNameLength + 2)) +
46
+ chalk_1.default.bold('Registry'.padEnd(maxRegistryLength + 2)) +
47
+ chalk_1.default.bold('Environments'));
48
+ console.log(chalk_1.default.dim(' ' + '─'.repeat(maxNameLength + maxRegistryLength + 30)));
49
+ skills.forEach(skill => {
50
+ console.log(' ' +
51
+ chalk_1.default.cyan(skill.name.padEnd(maxNameLength + 2)) +
52
+ chalk_1.default.dim(skill.registry.padEnd(maxRegistryLength + 2)) +
53
+ chalk_1.default.green(skill.environments.join(', ')));
54
+ });
55
+ console.log(chalk_1.default.dim(`\n Total: ${skills.length} skill(s)\n`));
56
+ }
57
+ catch (error) {
58
+ console.error(chalk_1.default.red(`\nFailed to list skills: ${error.message}\n`));
59
+ process.exit(1);
60
+ }
61
+ });
62
+ skillCommand
63
+ .command('remove <skill-name>')
64
+ .description('Remove a skill from the current project')
65
+ .action(async (skillName) => {
66
+ try {
67
+ const configManager = new Config_1.ConfigManager();
68
+ const skillManager = new SkillManager_1.SkillManager(configManager);
69
+ await skillManager.removeSkill(skillName);
70
+ }
71
+ catch (error) {
72
+ console.error(chalk_1.default.red(`\nFailed to remove skill: ${error.message}\n`));
73
+ process.exit(1);
74
+ }
75
+ });
76
+ }
77
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { EnvironmentCode } from '../types';
1
+ import { EnvironmentCode } from "../types";
2
2
  export declare class EnvironmentSelector {
3
3
  selectEnvironments(): Promise<EnvironmentCode[]>;
4
4
  confirmOverride(conflicts: EnvironmentCode[]): Promise<boolean>;
5
5
  displaySelectionSummary(selected: EnvironmentCode[]): void;
6
6
  selectGlobalEnvironments(): Promise<EnvironmentCode[]>;
7
+ selectSkillEnvironments(): Promise<EnvironmentCode[]>;
7
8
  }
8
9
  //# sourceMappingURL=EnvironmentSelector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentSelector.d.ts","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,qBAAa,mBAAmB;IACxB,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IA4BhD,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBrE,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI;IAapD,wBAAwB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAgC7D"}
1
+ {"version":3,"file":"EnvironmentSelector.d.ts","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAQ3C,qBAAa,mBAAmB;IACxB,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IA6BhD,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBrE,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI;IAapD,wBAAwB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAkCtD,uBAAuB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAiC5D"}
@@ -9,25 +9,25 @@ const env_1 = require("../util/env");
9
9
  class EnvironmentSelector {
10
10
  async selectEnvironments() {
11
11
  const environments = (0, env_1.getAllEnvironments)();
12
- const choices = environments.map(env => ({
12
+ const choices = environments.map((env) => ({
13
13
  name: env.name,
14
14
  value: env.code,
15
- short: env.name
15
+ short: env.name,
16
16
  }));
17
17
  const answers = await inquirer_1.default.prompt([
18
18
  {
19
- type: 'checkbox',
20
- name: 'environments',
21
- message: 'Select AI environments to set up (use space to select, enter to confirm):',
19
+ type: "checkbox",
20
+ name: "environments",
21
+ message: "Select AI environments to set up (use space to select, enter to confirm):",
22
22
  choices,
23
23
  pageSize: 10,
24
24
  validate: (input) => {
25
25
  if (input.length === 0) {
26
- return 'Please select at least one environment.';
26
+ return "Please select at least one environment.";
27
27
  }
28
28
  return true;
29
- }
30
- }
29
+ },
30
+ },
31
31
  ]);
32
32
  return answers.environments;
33
33
  }
@@ -35,53 +35,81 @@ class EnvironmentSelector {
35
35
  if (conflicts.length === 0) {
36
36
  return true;
37
37
  }
38
- const conflictNames = conflicts.map(id => (0, env_1.getEnvironmentDisplayName)(id));
38
+ const conflictNames = conflicts.map((id) => (0, env_1.getEnvironmentDisplayName)(id));
39
39
  const answers = await inquirer_1.default.prompt([
40
40
  {
41
- type: 'confirm',
42
- name: 'proceed',
43
- message: `The following environments are already set up and will be overwritten:\n ${conflictNames.join(', ')}\n\nDo you want to continue?`,
44
- default: false
45
- }
41
+ type: "confirm",
42
+ name: "proceed",
43
+ message: `The following environments are already set up and will be overwritten:\n ${conflictNames.join(", ")}\n\nDo you want to continue?`,
44
+ default: false,
45
+ },
46
46
  ]);
47
47
  return answers.proceed;
48
48
  }
49
49
  displaySelectionSummary(selected) {
50
50
  if (selected.length === 0) {
51
- console.log('No environments selected.');
51
+ console.log("No environments selected.");
52
52
  return;
53
53
  }
54
- console.log('\nSelected environments:');
55
- selected.forEach(envId => {
54
+ console.log("\nSelected environments:");
55
+ selected.forEach((envId) => {
56
56
  console.log(` ${(0, env_1.getEnvironmentDisplayName)(envId)}`);
57
57
  });
58
- console.log('');
58
+ console.log("");
59
59
  }
60
60
  async selectGlobalEnvironments() {
61
61
  const globalCapableEnvs = (0, env_1.getGlobalCapableEnvironments)();
62
62
  if (globalCapableEnvs.length === 0) {
63
- console.log('No environments support global setup.');
63
+ console.log("No environments support global setup.");
64
64
  return [];
65
65
  }
66
- const choices = globalCapableEnvs.map(env => ({
66
+ const choices = globalCapableEnvs.map((env) => ({
67
67
  name: env.name,
68
68
  value: env.code,
69
- short: env.name
69
+ short: env.name,
70
70
  }));
71
71
  const answers = await inquirer_1.default.prompt([
72
72
  {
73
- type: 'checkbox',
74
- name: 'environments',
75
- message: 'Select AI environments for global setup (use space to select, enter to confirm):',
73
+ type: "checkbox",
74
+ name: "environments",
75
+ message: "Select AI environments for global setup (use space to select, enter to confirm):",
76
76
  choices,
77
77
  pageSize: 10,
78
78
  validate: (input) => {
79
79
  if (input.length === 0) {
80
- return 'Please select at least one environment.';
80
+ return "Please select at least one environment.";
81
81
  }
82
82
  return true;
83
- }
84
- }
83
+ },
84
+ },
85
+ ]);
86
+ return answers.environments;
87
+ }
88
+ async selectSkillEnvironments() {
89
+ const skillCapableEnvs = (0, env_1.getSkillCapableEnvironments)();
90
+ if (skillCapableEnvs.length === 0) {
91
+ console.log("No environments support skills.");
92
+ return [];
93
+ }
94
+ const choices = skillCapableEnvs.map((env) => ({
95
+ name: env.name,
96
+ value: env.code,
97
+ short: env.name,
98
+ }));
99
+ const answers = await inquirer_1.default.prompt([
100
+ {
101
+ type: "checkbox",
102
+ name: "environments",
103
+ message: "Select AI environments for skill installation (use space to select, enter to confirm):",
104
+ choices,
105
+ pageSize: 10,
106
+ validate: (input) => {
107
+ if (input.length === 0) {
108
+ return "Please select at least one environment.";
109
+ }
110
+ return true;
111
+ },
112
+ },
85
113
  ]);
86
114
  return answers.environments;
87
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentSelector.js","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentSelector.js","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAEhC,qCAKqB;AAErB,MAAa,mBAAmB;IAC9B,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;QAE1C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,IAAuB;YAClC,KAAK,EAAE,GAAG,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc;gBACpB,OAAO,EACL,2EAA2E;gBAC7E,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE;oBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAA4B;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,+BAAyB,EAAC,EAAE,CAAC,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,6EAA6E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;gBAC5I,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,uBAAuB,CAAC,QAA2B;QACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,+BAAyB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,iBAAiB,GAAG,IAAA,kCAA4B,GAAE,CAAC;QAEzD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,IAAuB;YAClC,KAAK,EAAE,GAAG,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc;gBACpB,OAAO,EACL,kFAAkF;gBACpF,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE;oBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,gBAAgB,GAAG,IAAA,iCAA2B,GAAE,CAAC;QAEvD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,IAAuB;YAClC,KAAK,EAAE,GAAG,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc;gBACpB,OAAO,EACL,wFAAwF;gBAC1F,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE;oBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;CACF;AAjID,kDAiIC"}
@@ -0,0 +1,33 @@
1
+ import { ConfigManager } from './Config';
2
+ import { EnvironmentSelector } from './EnvironmentSelector';
3
+ interface InstalledSkill {
4
+ name: string;
5
+ registry: string;
6
+ environments: string[];
7
+ }
8
+ export declare class SkillManager {
9
+ private configManager;
10
+ private environmentSelector;
11
+ constructor(configManager: ConfigManager, environmentSelector?: EnvironmentSelector);
12
+ /**
13
+ * Add a skill to the project
14
+ * @param registryId - e.g., "anthropics/skills"
15
+ * @param skillName - e.g., "frontend-design"
16
+ */
17
+ addSkill(registryId: string, skillName: string): Promise<void>;
18
+ /**
19
+ * List installed skills in the project
20
+ */
21
+ listSkills(): Promise<InstalledSkill[]>;
22
+ /**
23
+ * Remove a skill from the project
24
+ * @param skillName - Name of the skill to remove
25
+ */
26
+ removeSkill(skillName: string): Promise<void>;
27
+ private fetchRegistry;
28
+ private getInstallationTargets;
29
+ private cloneRepositoryToCache;
30
+ private filterSkillCapableEnvironments;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=SkillManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillManager.d.ts","sourceRoot":"","sources":["../../src/lib/SkillManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAY5D,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,mBAAmB;gBADnB,aAAa,EAAE,aAAa,EAC5B,mBAAmB,GAAE,mBAA+C;IAG9E;;;;OAIG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgFpE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA8D7C;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAqCrC,aAAa;IAuB3B,OAAO,CAAC,sBAAsB;YAiBhB,sBAAsB;IAcpC,OAAO,CAAC,8BAA8B;CAMvC"}