killer-skills 1.6.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 (136) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/LICENSE +21 -0
  3. package/README.md +360 -0
  4. package/dist/commands/completion.d.ts +8 -0
  5. package/dist/commands/completion.d.ts.map +1 -0
  6. package/dist/commands/completion.js +242 -0
  7. package/dist/commands/completion.js.map +1 -0
  8. package/dist/commands/config.d.ts +24 -0
  9. package/dist/commands/config.d.ts.map +1 -0
  10. package/dist/commands/config.js +132 -0
  11. package/dist/commands/config.js.map +1 -0
  12. package/dist/commands/create.d.ts +9 -0
  13. package/dist/commands/create.d.ts.map +1 -0
  14. package/dist/commands/create.js +361 -0
  15. package/dist/commands/create.js.map +1 -0
  16. package/dist/commands/deps.d.ts +8 -0
  17. package/dist/commands/deps.d.ts.map +1 -0
  18. package/dist/commands/deps.js +144 -0
  19. package/dist/commands/deps.js.map +1 -0
  20. package/dist/commands/do.d.ts +13 -0
  21. package/dist/commands/do.d.ts.map +1 -0
  22. package/dist/commands/do.js +223 -0
  23. package/dist/commands/do.js.map +1 -0
  24. package/dist/commands/init.d.ts +8 -0
  25. package/dist/commands/init.d.ts.map +1 -0
  26. package/dist/commands/init.js +191 -0
  27. package/dist/commands/init.js.map +1 -0
  28. package/dist/commands/install.d.ts +13 -0
  29. package/dist/commands/install.d.ts.map +1 -0
  30. package/dist/commands/install.js +234 -0
  31. package/dist/commands/install.js.map +1 -0
  32. package/dist/commands/list.d.ts +9 -0
  33. package/dist/commands/list.d.ts.map +1 -0
  34. package/dist/commands/list.js +103 -0
  35. package/dist/commands/list.js.map +1 -0
  36. package/dist/commands/manage.d.ts +9 -0
  37. package/dist/commands/manage.d.ts.map +1 -0
  38. package/dist/commands/manage.js +132 -0
  39. package/dist/commands/manage.js.map +1 -0
  40. package/dist/commands/outdated.d.ts +9 -0
  41. package/dist/commands/outdated.d.ts.map +1 -0
  42. package/dist/commands/outdated.js +168 -0
  43. package/dist/commands/outdated.js.map +1 -0
  44. package/dist/commands/plugin.d.ts +8 -0
  45. package/dist/commands/plugin.d.ts.map +1 -0
  46. package/dist/commands/plugin.js +98 -0
  47. package/dist/commands/plugin.js.map +1 -0
  48. package/dist/commands/publish.d.ts +8 -0
  49. package/dist/commands/publish.d.ts.map +1 -0
  50. package/dist/commands/publish.js +199 -0
  51. package/dist/commands/publish.js.map +1 -0
  52. package/dist/commands/read.d.ts +9 -0
  53. package/dist/commands/read.d.ts.map +1 -0
  54. package/dist/commands/read.js +69 -0
  55. package/dist/commands/read.js.map +1 -0
  56. package/dist/commands/search.d.ts +8 -0
  57. package/dist/commands/search.d.ts.map +1 -0
  58. package/dist/commands/search.js +105 -0
  59. package/dist/commands/search.js.map +1 -0
  60. package/dist/commands/stats.d.ts +16 -0
  61. package/dist/commands/stats.d.ts.map +1 -0
  62. package/dist/commands/stats.js +137 -0
  63. package/dist/commands/stats.js.map +1 -0
  64. package/dist/commands/submit.d.ts +9 -0
  65. package/dist/commands/submit.d.ts.map +1 -0
  66. package/dist/commands/submit.js +245 -0
  67. package/dist/commands/submit.js.map +1 -0
  68. package/dist/commands/sync.d.ts +11 -0
  69. package/dist/commands/sync.d.ts.map +1 -0
  70. package/dist/commands/sync.js +134 -0
  71. package/dist/commands/sync.js.map +1 -0
  72. package/dist/commands/update.d.ts +9 -0
  73. package/dist/commands/update.d.ts.map +1 -0
  74. package/dist/commands/update.js +175 -0
  75. package/dist/commands/update.js.map +1 -0
  76. package/dist/config/claude.d.ts +2 -0
  77. package/dist/config/claude.d.ts.map +1 -0
  78. package/dist/config/claude.js +19 -0
  79. package/dist/config/claude.js.map +1 -0
  80. package/dist/config/cursor.d.ts +2 -0
  81. package/dist/config/cursor.d.ts.map +1 -0
  82. package/dist/config/cursor.js +18 -0
  83. package/dist/config/cursor.js.map +1 -0
  84. package/dist/config/ides.d.ts +19 -0
  85. package/dist/config/ides.d.ts.map +1 -0
  86. package/dist/config/ides.js +221 -0
  87. package/dist/config/ides.js.map +1 -0
  88. package/dist/index.d.ts +3 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +57 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/mcp-server.d.ts +11 -0
  93. package/dist/mcp-server.d.ts.map +1 -0
  94. package/dist/mcp-server.js +264 -0
  95. package/dist/mcp-server.js.map +1 -0
  96. package/dist/registry.d.ts +8 -0
  97. package/dist/registry.d.ts.map +1 -0
  98. package/dist/registry.js +34 -0
  99. package/dist/registry.js.map +1 -0
  100. package/dist/types.d.ts +78 -0
  101. package/dist/types.d.ts.map +1 -0
  102. package/dist/types.js +7 -0
  103. package/dist/types.js.map +1 -0
  104. package/dist/utils/agents-md.d.ts +33 -0
  105. package/dist/utils/agents-md.d.ts.map +1 -0
  106. package/dist/utils/agents-md.js +137 -0
  107. package/dist/utils/agents-md.js.map +1 -0
  108. package/dist/utils/dependencies.d.ts +49 -0
  109. package/dist/utils/dependencies.d.ts.map +1 -0
  110. package/dist/utils/dependencies.js +141 -0
  111. package/dist/utils/dependencies.js.map +1 -0
  112. package/dist/utils/github.d.ts +58 -0
  113. package/dist/utils/github.d.ts.map +1 -0
  114. package/dist/utils/github.js +198 -0
  115. package/dist/utils/github.js.map +1 -0
  116. package/dist/utils/platform.d.ts +54 -0
  117. package/dist/utils/platform.d.ts.map +1 -0
  118. package/dist/utils/platform.js +154 -0
  119. package/dist/utils/platform.js.map +1 -0
  120. package/dist/utils/plugins.d.ts +50 -0
  121. package/dist/utils/plugins.d.ts.map +1 -0
  122. package/dist/utils/plugins.js +115 -0
  123. package/dist/utils/plugins.js.map +1 -0
  124. package/dist/utils/prompt-templates.d.ts +47 -0
  125. package/dist/utils/prompt-templates.d.ts.map +1 -0
  126. package/dist/utils/prompt-templates.js +160 -0
  127. package/dist/utils/prompt-templates.js.map +1 -0
  128. package/dist/utils/skill-metadata.d.ts +55 -0
  129. package/dist/utils/skill-metadata.d.ts.map +1 -0
  130. package/dist/utils/skill-metadata.js +82 -0
  131. package/dist/utils/skill-metadata.js.map +1 -0
  132. package/dist/utils/skills.d.ts +27 -0
  133. package/dist/utils/skills.d.ts.map +1 -0
  134. package/dist/utils/skills.js +163 -0
  135. package/dist/utils/skills.js.map +1 -0
  136. package/package.json +77 -0
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Do Command - Natural Language Executor
3
+ *
4
+ * Execute tasks using natural language. Automatically matches
5
+ * the task description to available skills and suggests/executes them.
6
+ *
7
+ * Example:
8
+ * killer do "处理这个 PDF 文件"
9
+ * killer do "create algorithmic art"
10
+ */
11
+ import { Command } from 'commander';
12
+ import chalk from 'chalk';
13
+ import ora from 'ora';
14
+ import { findAllSkills } from '../utils/skills.js';
15
+ import { readFileSync } from 'fs';
16
+ import { select, confirm } from '@inquirer/prompts';
17
+ export const doCommand = new Command('do')
18
+ .argument('<task>', 'Task description in natural language')
19
+ .description('Execute a task using natural language (auto-matches skills)')
20
+ .option('-y, --yes', 'Auto-execute best matching skill without confirmation')
21
+ .option('-l, --list', 'List matched skills without executing')
22
+ .option('-n, --top <number>', 'Number of top matches to show', '5')
23
+ .action(async (task, options) => {
24
+ const spinner = ora('Analyzing task...').start();
25
+ try {
26
+ // Find all installed skills
27
+ const skills = findAllSkills();
28
+ if (skills.length === 0) {
29
+ spinner.fail(chalk.red('No skills installed'));
30
+ console.log(chalk.dim('\nInstall skills first:'));
31
+ console.log(chalk.cyan(' killer install <skill-name>'));
32
+ process.exit(1);
33
+ }
34
+ // Match task to skills
35
+ spinner.text = 'Matching skills...';
36
+ const matches = matchTaskToSkills(task, skills);
37
+ const topN = parseInt(options.top || '5');
38
+ const topMatches = matches.slice(0, topN);
39
+ spinner.stop();
40
+ if (topMatches.length === 0 || topMatches[0].score === 0) {
41
+ console.log(chalk.yellow('\n⚠️ No matching skills found for:'));
42
+ console.log(chalk.dim(` "${task}"`));
43
+ console.log(chalk.dim('\n💡 Try installing more skills:'));
44
+ console.log(chalk.cyan(' killer search <query>'));
45
+ return;
46
+ }
47
+ // Display matches
48
+ console.log(chalk.bold(`\n🎯 Task: "${task}"\n`));
49
+ console.log(chalk.dim('Matching skills (by relevance):'));
50
+ console.log(chalk.dim('─'.repeat(60)));
51
+ topMatches.forEach((match, index) => {
52
+ const rank = index === 0 ? chalk.green('★') : chalk.dim('○');
53
+ const scoreBar = renderScoreBar(match.score);
54
+ console.log(` ${rank} ${chalk.bold(match.name)} ${scoreBar}`);
55
+ console.log(chalk.dim(` ${match.description.slice(0, 60)}${match.description.length > 60 ? '...' : ''}`));
56
+ if (match.matchedKeywords.length > 0) {
57
+ console.log(chalk.dim(` Keywords: ${match.matchedKeywords.join(', ')}`));
58
+ }
59
+ console.log('');
60
+ });
61
+ // List mode - don't execute
62
+ if (options.list) {
63
+ console.log(chalk.dim('─'.repeat(60)));
64
+ console.log(chalk.dim(`Found ${matches.filter(m => m.score > 0).length} matching skill(s)`));
65
+ return;
66
+ }
67
+ // Determine which skill to use
68
+ let selectedSkill;
69
+ if (options.yes) {
70
+ // Auto-select best match
71
+ selectedSkill = topMatches[0];
72
+ console.log(chalk.green(`\n✓ Auto-selected: ${selectedSkill.name}`));
73
+ }
74
+ else if (topMatches.length === 1) {
75
+ // Only one match
76
+ const proceed = await confirm({
77
+ message: `Use ${topMatches[0].name} for this task?`,
78
+ default: true
79
+ });
80
+ if (!proceed) {
81
+ console.log(chalk.yellow('Cancelled'));
82
+ return;
83
+ }
84
+ selectedSkill = topMatches[0];
85
+ }
86
+ else {
87
+ // Let user choose
88
+ const choices = topMatches.map(m => ({
89
+ name: `${m.name} - ${m.description.slice(0, 40)}...`,
90
+ value: m
91
+ }));
92
+ selectedSkill = await select({
93
+ message: 'Select skill to use:',
94
+ choices
95
+ });
96
+ }
97
+ // Execute the skill
98
+ console.log(chalk.dim('\n─'.repeat(60)));
99
+ console.log(chalk.bold(`\n📖 Loading skill: ${selectedSkill.name}\n`));
100
+ // Read skill content
101
+ const content = readFileSync(selectedSkill.path, 'utf-8');
102
+ // Output skill content (like `killer read`)
103
+ console.log(chalk.dim('─'.repeat(60)));
104
+ console.log(content);
105
+ console.log(chalk.dim('─'.repeat(60)));
106
+ // Provide context
107
+ console.log(chalk.green(`\n✅ Skill "${selectedSkill.name}" loaded!`));
108
+ console.log(chalk.dim('\n💡 The skill instructions above can help you complete:'));
109
+ console.log(chalk.cyan(` "${task}"`));
110
+ console.log(chalk.dim('\nFollow the skill\'s instructions to complete your task.'));
111
+ }
112
+ catch (error) {
113
+ if (error.name === 'ExitPromptError') {
114
+ console.log(chalk.yellow('\n\nCancelled'));
115
+ process.exit(0);
116
+ }
117
+ spinner.fail(chalk.red('Failed to execute task'));
118
+ console.error(chalk.red(`\nError: ${error.message}`));
119
+ process.exit(1);
120
+ }
121
+ });
122
+ /**
123
+ * Match task description to available skills
124
+ */
125
+ function matchTaskToSkills(task, skills) {
126
+ const taskLower = task.toLowerCase();
127
+ const taskWords = extractKeywords(taskLower);
128
+ const matches = skills.map(skill => {
129
+ const nameLower = skill.name.toLowerCase();
130
+ const descLower = (skill.description || '').toLowerCase();
131
+ const skillWords = extractKeywords(`${nameLower} ${descLower}`);
132
+ let score = 0;
133
+ const matchedKeywords = [];
134
+ // Exact name match (highest priority)
135
+ if (taskLower.includes(nameLower)) {
136
+ score += 50;
137
+ matchedKeywords.push(skill.name);
138
+ }
139
+ // Word matching
140
+ for (const taskWord of taskWords) {
141
+ if (nameLower.includes(taskWord)) {
142
+ score += 20;
143
+ matchedKeywords.push(taskWord);
144
+ }
145
+ if (descLower.includes(taskWord)) {
146
+ score += 10;
147
+ if (!matchedKeywords.includes(taskWord)) {
148
+ matchedKeywords.push(taskWord);
149
+ }
150
+ }
151
+ // Partial word match
152
+ for (const skillWord of skillWords) {
153
+ if (skillWord.includes(taskWord) || taskWord.includes(skillWord)) {
154
+ if (skillWord !== taskWord) {
155
+ score += 5;
156
+ }
157
+ }
158
+ }
159
+ }
160
+ // Semantic matching for common terms
161
+ const semanticMatches = {
162
+ 'pdf': ['document', 'file', 'convert', 'extract', '文档', '文件', 'pdf'],
163
+ 'excel': ['spreadsheet', 'xlsx', 'csv', 'data', '表格', '电子表格'],
164
+ 'word': ['document', 'docx', '.doc', '文档', '文字'],
165
+ 'ppt': ['presentation', 'slide', 'pptx', '演示', '幻灯片'],
166
+ 'art': ['creative', 'design', 'generate', 'draw', '艺术', '创作', '设计'],
167
+ 'code': ['programming', 'developer', 'software', '代码', '编程'],
168
+ 'test': ['testing', 'test', 'qa', 'quality', '测试'],
169
+ 'ui': ['interface', 'ux', 'design', 'frontend', '界面', '设计'],
170
+ 'api': ['backend', 'server', 'rest', 'graphql', '接口'],
171
+ };
172
+ for (const [key, synonyms] of Object.entries(semanticMatches)) {
173
+ const keyInName = nameLower.includes(key);
174
+ const keyInDesc = descLower.includes(key);
175
+ const taskHasSynonym = synonyms.some(s => taskLower.includes(s));
176
+ if ((keyInName || keyInDesc) && taskHasSynonym) {
177
+ score += 15;
178
+ matchedKeywords.push(key);
179
+ }
180
+ }
181
+ return {
182
+ name: skill.name,
183
+ description: skill.description || 'No description',
184
+ path: skill.path,
185
+ score,
186
+ matchedKeywords: [...new Set(matchedKeywords)]
187
+ };
188
+ });
189
+ // Sort by score (descending)
190
+ return matches.sort((a, b) => b.score - a.score);
191
+ }
192
+ /**
193
+ * Extract keywords from text
194
+ */
195
+ function extractKeywords(text) {
196
+ // Remove common stop words
197
+ const stopWords = new Set([
198
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been',
199
+ 'this', 'that', 'these', 'those', 'it', 'its',
200
+ 'for', 'with', 'from', 'to', 'of', 'in', 'on', 'at', 'by',
201
+ 'and', 'or', 'but', 'if', 'then', 'else',
202
+ 'can', 'could', 'would', 'should', 'will',
203
+ 'me', 'my', 'i', 'you', 'your', 'we', 'our', 'they', 'their',
204
+ '的', '是', '在', '和', '与', '或', '这', '那', '一个', '我', '你', '他', '她',
205
+ 'help', 'please', 'want', 'need', '帮', '请', '要', '需要'
206
+ ]);
207
+ return text
208
+ .split(/[\s,.\-_:;!?'"()[\]{}]+/)
209
+ .filter(word => word.length >= 2 && !stopWords.has(word));
210
+ }
211
+ /**
212
+ * Render a score bar
213
+ */
214
+ function renderScoreBar(score) {
215
+ const maxBars = 5;
216
+ const normalized = Math.min(score / 50, 1); // Normalize to 0-1
217
+ const bars = Math.round(normalized * maxBars);
218
+ const filled = '█'.repeat(bars);
219
+ const empty = '░'.repeat(maxBars - bars);
220
+ const color = bars >= 4 ? chalk.green : bars >= 2 ? chalk.yellow : chalk.red;
221
+ return color(`[${filled}${empty}]`);
222
+ }
223
+ //# sourceMappingURL=do.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Init Command
3
+ *
4
+ * Initialize skills configuration in a project.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare const initCommand: Command;
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SAoFlB,CAAC"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Init Command
3
+ *
4
+ * Initialize skills configuration in a project.
5
+ */
6
+ import { Command } from 'commander';
7
+ import chalk from 'chalk';
8
+ import ora from 'ora';
9
+ import fs from 'fs-extra';
10
+ import path from 'path';
11
+ import { select, confirm } from '@inquirer/prompts';
12
+ import { IDE_CONFIG, SUPPORTED_IDES } from '../config/ides.js';
13
+ export const initCommand = new Command('init')
14
+ .description('Initialize skills configuration in current project')
15
+ .option('-i, --ide <ide>', 'Target IDE')
16
+ .option('-y, --yes', 'Skip prompts, use defaults')
17
+ .action(async (options) => {
18
+ const spinner = ora();
19
+ const cwd = process.cwd();
20
+ try {
21
+ console.log(chalk.bold('\n🚀 Initialize Killer-Skills\n'));
22
+ // Detect or select IDE
23
+ let targetIDE = options.ide;
24
+ if (!targetIDE && !options.yes) {
25
+ // Detect existing IDE configurations
26
+ const detected = detectExistingIDE(cwd);
27
+ if (detected) {
28
+ const useDetected = await confirm({
29
+ message: `Detected ${IDE_CONFIG[detected].name}. Use this IDE?`,
30
+ default: true
31
+ });
32
+ if (useDetected) {
33
+ targetIDE = detected;
34
+ }
35
+ }
36
+ if (!targetIDE) {
37
+ const choices = SUPPORTED_IDES.slice(0, 10).map(ide => ({
38
+ name: `${IDE_CONFIG[ide].name}`,
39
+ value: ide
40
+ }));
41
+ targetIDE = await select({
42
+ message: 'Select your IDE:',
43
+ choices
44
+ });
45
+ }
46
+ }
47
+ targetIDE = targetIDE || 'claude';
48
+ const ideConfig = IDE_CONFIG[targetIDE];
49
+ console.log(chalk.dim(`\nConfiguring for: ${ideConfig.name}`));
50
+ // Create skills directory
51
+ spinner.start('Creating skills directory...');
52
+ const skillsDir = path.join(cwd, ideConfig.paths.project);
53
+ await fs.ensureDir(skillsDir);
54
+ spinner.succeed(`Created ${ideConfig.paths.project}`);
55
+ // Create .gitkeep
56
+ const gitkeepPath = path.join(skillsDir, '.gitkeep');
57
+ if (!await fs.pathExists(gitkeepPath)) {
58
+ await fs.writeFile(gitkeepPath, '');
59
+ }
60
+ // Create config file based on IDE
61
+ const configCreated = await createIDEConfig(cwd, targetIDE, options.yes);
62
+ // Summary
63
+ console.log(chalk.green('\n✅ Initialization complete!\n'));
64
+ console.log(chalk.dim('Created:'));
65
+ console.log(chalk.dim(` 📁 ${ideConfig.paths.project}/`));
66
+ if (configCreated) {
67
+ console.log(chalk.dim(` 📄 ${configCreated}`));
68
+ }
69
+ console.log(chalk.dim('\nNext steps:'));
70
+ console.log(chalk.cyan(' 1. Install skills: killer install <skill-name>'));
71
+ console.log(chalk.cyan(' 2. Create custom: killer create my-skill'));
72
+ console.log(chalk.cyan(' 3. Sync for AI: killer sync'));
73
+ }
74
+ catch (error) {
75
+ if (error.name === 'ExitPromptError') {
76
+ console.log(chalk.yellow('\n\nCancelled by user'));
77
+ process.exit(0);
78
+ }
79
+ spinner.fail(chalk.red('Initialization failed'));
80
+ console.error(chalk.red(`\nError: ${error.message}`));
81
+ process.exit(1);
82
+ }
83
+ });
84
+ /**
85
+ * Detect existing IDE configuration in project
86
+ */
87
+ function detectExistingIDE(projectPath) {
88
+ const detectionOrder = [
89
+ { ide: 'cursor', files: ['.cursor', '.cursorrules'] },
90
+ { ide: 'windsurf', files: ['.windsurf', '.windsurfrules'] },
91
+ { ide: 'claude', files: ['.claude', 'CLAUDE.md'] },
92
+ { ide: 'antigravity', files: ['.agent', '.gemini', 'AGENTS.md'] },
93
+ { ide: 'vscode', files: ['.vscode'] },
94
+ ];
95
+ for (const { ide, files } of detectionOrder) {
96
+ for (const file of files) {
97
+ if (fs.existsSync(path.join(projectPath, file))) {
98
+ return ide;
99
+ }
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+ /**
105
+ * Create IDE-specific configuration file
106
+ */
107
+ async function createIDEConfig(projectPath, ide, skipPrompt) {
108
+ const configFiles = {
109
+ cursor: {
110
+ path: '.cursorrules',
111
+ content: `# Cursor Rules
112
+
113
+ ## Skills Integration
114
+
115
+ This project uses Killer-Skills for AI capabilities.
116
+
117
+ Run \`killer sync\` to update this file with available skills.
118
+
119
+ <!-- SKILLS_TABLE_START -->
120
+ <!-- Run 'killer sync' to populate -->
121
+ <!-- SKILLS_TABLE_END -->
122
+ `
123
+ },
124
+ windsurf: {
125
+ path: '.windsurfrules',
126
+ content: `# Windsurf Rules
127
+
128
+ ## Skills Integration
129
+
130
+ This project uses Killer-Skills for AI capabilities.
131
+
132
+ Run \`killer sync\` to update this file with available skills.
133
+
134
+ <!-- SKILLS_TABLE_START -->
135
+ <!-- Run 'killer sync' to populate -->
136
+ <!-- SKILLS_TABLE_END -->
137
+ `
138
+ },
139
+ claude: {
140
+ path: 'CLAUDE.md',
141
+ content: `# Claude Configuration
142
+
143
+ ## Skills Integration
144
+
145
+ This project uses Killer-Skills for AI capabilities.
146
+
147
+ Run \`killer sync\` to update this file with available skills.
148
+
149
+ <!-- SKILLS_TABLE_START -->
150
+ <!-- Run 'killer sync' to populate -->
151
+ <!-- SKILLS_TABLE_END -->
152
+ `
153
+ },
154
+ antigravity: {
155
+ path: 'AGENTS.md',
156
+ content: `# Agents Configuration
157
+
158
+ ## Skills Integration
159
+
160
+ This project uses Killer-Skills for AI capabilities.
161
+
162
+ Run \`killer sync\` to update this file with available skills.
163
+
164
+ <!-- SKILLS_TABLE_START -->
165
+ <!-- Run 'killer sync' to populate -->
166
+ <!-- SKILLS_TABLE_END -->
167
+ `
168
+ }
169
+ };
170
+ const config = configFiles[ide];
171
+ if (!config)
172
+ return null;
173
+ const configPath = path.join(projectPath, config.path);
174
+ // Check if already exists
175
+ if (await fs.pathExists(configPath)) {
176
+ if (!skipPrompt) {
177
+ const overwrite = await confirm({
178
+ message: `${config.path} already exists. Overwrite?`,
179
+ default: false
180
+ });
181
+ if (!overwrite)
182
+ return null;
183
+ }
184
+ else {
185
+ return null; // Don't overwrite in yes mode
186
+ }
187
+ }
188
+ await fs.writeFile(configPath, config.content);
189
+ return config.path;
190
+ }
191
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Install Command (Unified)
3
+ *
4
+ * Supports installation from:
5
+ * - GitHub: owner/repo, github.com/owner/repo
6
+ * - Local: ./path, ~/path, /absolute/path
7
+ * - Registry: skill-name
8
+ *
9
+ * Merged from install.ts and add.js for a unified experience.
10
+ */
11
+ import { Command } from 'commander';
12
+ export declare const installCommand: Command;
13
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,cAAc,SAiGrB,CAAC"}