skill-creator 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +378 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/chromaSearch.d.ts +24 -0
- package/dist/core/chromaSearch.d.ts.map +1 -0
- package/dist/core/chromaSearch.js +192 -0
- package/dist/core/chromaSearch.js.map +1 -0
- package/dist/core/contentManager.d.ts +40 -0
- package/dist/core/contentManager.d.ts.map +1 -0
- package/dist/core/contentManager.js +355 -0
- package/dist/core/contentManager.js.map +1 -0
- package/dist/core/runScript.d.ts +5 -0
- package/dist/core/runScript.d.ts.map +1 -0
- package/dist/core/runScript.js +220 -0
- package/dist/core/runScript.js.map +1 -0
- package/dist/core/searchEngine.d.ts +25 -0
- package/dist/core/searchEngine.d.ts.map +1 -0
- package/dist/core/searchEngine.js +198 -0
- package/dist/core/searchEngine.js.map +1 -0
- package/dist/core/simpleSearch.d.ts +21 -0
- package/dist/core/simpleSearch.d.ts.map +1 -0
- package/dist/core/simpleSearch.js +113 -0
- package/dist/core/simpleSearch.js.map +1 -0
- package/dist/core/skillCreator.d.ts +16 -0
- package/dist/core/skillCreator.d.ts.map +1 -0
- package/dist/core/skillCreator.js +291 -0
- package/dist/core/skillCreator.js.map +1 -0
- package/dist/core/templateManager.d.ts +28 -0
- package/dist/core/templateManager.d.ts.map +1 -0
- package/dist/core/templateManager.js +612 -0
- package/dist/core/templateManager.js.map +1 -0
- package/dist/core/unifiedSearch.d.ts +23 -0
- package/dist/core/unifiedSearch.d.ts.map +1 -0
- package/dist/core/unifiedSearch.js +46 -0
- package/dist/core/unifiedSearch.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +47 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +69 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/package.d.ts +57 -0
- package/dist/utils/package.d.ts.map +1 -0
- package/dist/utils/package.js +170 -0
- package/dist/utils/package.js.map +1 -0
- package/package.json +57 -0
- package/templates/skill-creator.md +182 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main skill creator class
|
|
3
|
+
*/
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { existsSync, mkdirSync, writeFileSync, chmodSync, readdirSync } from 'node:fs';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { Config } from '../utils/config.js';
|
|
8
|
+
import { TemplateManager } from './templateManager.js';
|
|
9
|
+
export class SkillCreator {
|
|
10
|
+
templateDir;
|
|
11
|
+
templateManager;
|
|
12
|
+
constructor() {
|
|
13
|
+
// Use __dirname equivalent for ES modules
|
|
14
|
+
const __filename = new URL(import.meta.url).pathname;
|
|
15
|
+
const __dirname = join(__filename, '..');
|
|
16
|
+
this.templateDir = join(__dirname, '..', 'templates');
|
|
17
|
+
this.templateManager = new TemplateManager();
|
|
18
|
+
}
|
|
19
|
+
async createSkill(options) {
|
|
20
|
+
const result = {
|
|
21
|
+
created: false,
|
|
22
|
+
message: '',
|
|
23
|
+
docsInitialized: false,
|
|
24
|
+
};
|
|
25
|
+
try {
|
|
26
|
+
// Get package version
|
|
27
|
+
const { PackageUtils } = await import('../utils/package.js');
|
|
28
|
+
const version = options.version ?? (await PackageUtils.getPackageVersion(options.packageName));
|
|
29
|
+
if (!version) {
|
|
30
|
+
console.warn(`⚠️ Could not determine version for ${options.packageName}`);
|
|
31
|
+
}
|
|
32
|
+
// Create skill folder name
|
|
33
|
+
const skillName = PackageUtils.createSkillFolderName(options.packageName, version ?? '1.0.0');
|
|
34
|
+
// Determine output path
|
|
35
|
+
const outputPath = options.storage === 'user'
|
|
36
|
+
? join(homedir(), '.claude', 'skills')
|
|
37
|
+
: options.path ?? '.';
|
|
38
|
+
// Create skill directory
|
|
39
|
+
const skillDir = join(outputPath, skillName);
|
|
40
|
+
if (existsSync(skillDir)) {
|
|
41
|
+
const files = readdirSync(skillDir);
|
|
42
|
+
// Filter out .gitkeep files
|
|
43
|
+
const realFiles = files.filter(f => f !== '.gitkeep');
|
|
44
|
+
if (realFiles.length > 0) {
|
|
45
|
+
result.message = `Skill directory already exists and is not empty: ${skillDir}`;
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
mkdirSync(skillDir, { recursive: true });
|
|
50
|
+
// Detect framework template
|
|
51
|
+
const template = this.templateManager.detectFramework(options.packageName);
|
|
52
|
+
// Create configuration
|
|
53
|
+
let context7Id = options.context7Id;
|
|
54
|
+
if (!context7Id && template?.context7Ids?.length) {
|
|
55
|
+
context7Id = template.context7Ids[0];
|
|
56
|
+
}
|
|
57
|
+
const config = Config.createDefault({
|
|
58
|
+
skillName,
|
|
59
|
+
description: options.description ?? `Documentation skill for ${options.packageName}`,
|
|
60
|
+
context7Id: context7Id ?? `/${options.packageName.replace('@', '').replace('/', '__')}/docs`,
|
|
61
|
+
});
|
|
62
|
+
// Set the actual version (not formatted) in config
|
|
63
|
+
config.version = version ?? '1.0.0';
|
|
64
|
+
// Apply template if detected
|
|
65
|
+
if (template) {
|
|
66
|
+
console.log(`\n📋 Detected framework: ${template.name}`);
|
|
67
|
+
this.templateManager.applyTemplate(template, skillDir, config);
|
|
68
|
+
}
|
|
69
|
+
// Create directory structure
|
|
70
|
+
await this.createDirectoryStructure(skillDir);
|
|
71
|
+
// Create configuration file
|
|
72
|
+
const configFile = join(skillDir, 'config.json');
|
|
73
|
+
Config.save(config, configFile);
|
|
74
|
+
// Create SKILL.md
|
|
75
|
+
await this.createSkillMd(skillDir, config);
|
|
76
|
+
// Create package.json
|
|
77
|
+
await this.createPackageJson(skillDir, config);
|
|
78
|
+
// Create scripts
|
|
79
|
+
await this.createScripts(skillDir);
|
|
80
|
+
result.created = true;
|
|
81
|
+
result.skillPath = skillDir;
|
|
82
|
+
result.message = `Skill created successfully: ${skillDir}`;
|
|
83
|
+
// Initialize documentation if requested
|
|
84
|
+
if (!options.noInitDocs && options.context7Id) {
|
|
85
|
+
// Note: We'll skip auto-initialization for now to avoid dependency issues
|
|
86
|
+
result.docsInitialized = false;
|
|
87
|
+
result.message += ' | Documentation initialization skipped - run manually';
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
result.message = `Failed to create skill: ${error}`;
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
createDirectoryStructure(skillDir) {
|
|
97
|
+
const dirs = [
|
|
98
|
+
'scripts',
|
|
99
|
+
'assets/references/context7',
|
|
100
|
+
'assets/references/user',
|
|
101
|
+
'assets/chroma_db',
|
|
102
|
+
'assets/logs',
|
|
103
|
+
];
|
|
104
|
+
for (const dir of dirs) {
|
|
105
|
+
const dirPath = join(skillDir, dir);
|
|
106
|
+
mkdirSync(dirPath, { recursive: true });
|
|
107
|
+
writeFileSync(join(dirPath, '.gitkeep'), '');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
createSkillMd(skillDir, config) {
|
|
111
|
+
const content = `---
|
|
112
|
+
name: ${config.name}
|
|
113
|
+
description: ${config.description}
|
|
114
|
+
license: Complete terms in LICENSE.txt
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
# ${config.name} Documentation Skill
|
|
118
|
+
|
|
119
|
+
This skill provides comprehensive documentation management for ${config.name}, featuring:
|
|
120
|
+
|
|
121
|
+
## Features
|
|
122
|
+
|
|
123
|
+
1. **Intelligent Search**: ChromaDB-powered semantic search through all documentation
|
|
124
|
+
2. **Dynamic Content Addition**: Add new knowledge with deduplication and smart updates
|
|
125
|
+
3. **Context7 Integration**: Automatically fetches and slices latest documentation
|
|
126
|
+
4. **Priority Management**: User-generated content takes precedence over Context7 docs
|
|
127
|
+
|
|
128
|
+
## Usage
|
|
129
|
+
|
|
130
|
+
### Search Documentation
|
|
131
|
+
To search through the documentation:
|
|
132
|
+
\`\`\`bash
|
|
133
|
+
node scripts/search.js --query "your search query"
|
|
134
|
+
\`\`\`
|
|
135
|
+
|
|
136
|
+
### Add New Knowledge
|
|
137
|
+
To add new documentation or knowledge:
|
|
138
|
+
\`\`\`bash
|
|
139
|
+
node scripts/add.js --content "your content" --title "content title"
|
|
140
|
+
\`\`\`
|
|
141
|
+
|
|
142
|
+
### Update from Context7
|
|
143
|
+
To refresh documentation from Context7:
|
|
144
|
+
\`\`\`bash
|
|
145
|
+
node scripts/update_context7.js
|
|
146
|
+
\`\`\`
|
|
147
|
+
|
|
148
|
+
### List All Content
|
|
149
|
+
To list all documentation files:
|
|
150
|
+
\`\`\`bash
|
|
151
|
+
node scripts/list_content.js
|
|
152
|
+
\`\`\`
|
|
153
|
+
|
|
154
|
+
### Rebuild Search Index
|
|
155
|
+
To manually rebuild the search index:
|
|
156
|
+
\`\`\`bash
|
|
157
|
+
node scripts/build_index.js
|
|
158
|
+
\`\`\`
|
|
159
|
+
|
|
160
|
+
## File Structure
|
|
161
|
+
|
|
162
|
+
- \`assets/references/context7/\` - Auto-generated Context7 documentation slices
|
|
163
|
+
- \`assets/references/user/\` - User-generated knowledge and documentation
|
|
164
|
+
- \`assets/chroma_db/\` - ChromaDB index for semantic search
|
|
165
|
+
- \`scripts/\` - Management scripts for documentation operations
|
|
166
|
+
|
|
167
|
+
## Workflow
|
|
168
|
+
|
|
169
|
+
1. Initial setup automatically downloads and slices Context7 documentation
|
|
170
|
+
2. ChromaDB index is built from all documentation sources
|
|
171
|
+
3. Search queries return ranked results with source citations
|
|
172
|
+
4. New content is intelligently merged with existing knowledge
|
|
173
|
+
5. User content always takes priority over Context7 sources
|
|
174
|
+
|
|
175
|
+
## Configuration
|
|
176
|
+
|
|
177
|
+
Edit \`config.json\` to customize:
|
|
178
|
+
- Context7 library ID
|
|
179
|
+
- Embedding model
|
|
180
|
+
- Chunk size and overlap
|
|
181
|
+
- Similarity thresholds
|
|
182
|
+
|
|
183
|
+
## Dependencies
|
|
184
|
+
|
|
185
|
+
See \`package.json\` for all required dependencies.
|
|
186
|
+
|
|
187
|
+
## Installation
|
|
188
|
+
|
|
189
|
+
Install the dependencies using npm:
|
|
190
|
+
\`\`\`bash
|
|
191
|
+
npm install
|
|
192
|
+
\`\`\`
|
|
193
|
+
`;
|
|
194
|
+
writeFileSync(join(skillDir, 'SKILL.md'), content);
|
|
195
|
+
}
|
|
196
|
+
createPackageJson(skillDir, config) {
|
|
197
|
+
const content = {
|
|
198
|
+
name: config.name.toLowerCase().replace(/[^a-z0-9]/g, '-'),
|
|
199
|
+
version: config.version,
|
|
200
|
+
description: config.description,
|
|
201
|
+
type: 'module',
|
|
202
|
+
scripts: {
|
|
203
|
+
'search': 'node scripts/search.js',
|
|
204
|
+
'add': 'node scripts/add.js',
|
|
205
|
+
'update-context7': 'node scripts/update_context7.js',
|
|
206
|
+
'build-index': 'node scripts/build_index.js',
|
|
207
|
+
'list-content': 'node scripts/list_content.js',
|
|
208
|
+
},
|
|
209
|
+
dependencies: {
|
|
210
|
+
'chromadb': '^1.8.1',
|
|
211
|
+
'markdown-it': '^14.1.0',
|
|
212
|
+
'zod': '^3.24.0',
|
|
213
|
+
'gradient-string': '^3.0.0',
|
|
214
|
+
'ora': '^8.1.0',
|
|
215
|
+
'inquirer': '^10.2.2',
|
|
216
|
+
'dedent': '^1.5.3',
|
|
217
|
+
},
|
|
218
|
+
devDependencies: {
|
|
219
|
+
'@types/node': '^22.10.2',
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
writeFileSync(join(skillDir, 'package.json'), JSON.stringify(content, null, 2));
|
|
223
|
+
}
|
|
224
|
+
createScripts(skillDir) {
|
|
225
|
+
const scriptsDir = join(skillDir, 'scripts');
|
|
226
|
+
// The scripts will reference the skill-creator package
|
|
227
|
+
const scriptFiles = [
|
|
228
|
+
'search.js',
|
|
229
|
+
'add.js',
|
|
230
|
+
'update_context7.js',
|
|
231
|
+
'build_index.js',
|
|
232
|
+
'list_content.js',
|
|
233
|
+
];
|
|
234
|
+
for (const script of scriptFiles) {
|
|
235
|
+
const scriptPath = join(scriptsDir, script);
|
|
236
|
+
this.createScriptWrapper(scriptPath, script.replace('.js', ''));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
createScriptWrapper(scriptPath, command) {
|
|
240
|
+
const content = `#!/usr/bin/env node
|
|
241
|
+
/**
|
|
242
|
+
* Wrapper script for ${command}
|
|
243
|
+
* This script forwards execution to the skill-creator package
|
|
244
|
+
*/
|
|
245
|
+
|
|
246
|
+
import { spawn } from 'node:child_process'
|
|
247
|
+
import { fileURLToPath } from 'node:url'
|
|
248
|
+
import { dirname, join } from 'node:path'
|
|
249
|
+
import { existsSync } from 'node:fs'
|
|
250
|
+
|
|
251
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
252
|
+
const __dirname = dirname(__filename)
|
|
253
|
+
|
|
254
|
+
// Find skill-creator CLI - try multiple possible paths
|
|
255
|
+
let skillCreatorPath = process.env.SKILL_CREATOR_PATH || ''
|
|
256
|
+
|
|
257
|
+
// If not set, try to find it
|
|
258
|
+
if (!skillCreatorPath) {
|
|
259
|
+
const possiblePaths = [
|
|
260
|
+
join(__dirname, '..', '..', '..', '..', 'dist', 'cli.js'), // Relative to skill
|
|
261
|
+
join(process.cwd(), 'dist', 'cli.js'), // From current working directory
|
|
262
|
+
'/usr/local/bin/skill-creator', // Global installation
|
|
263
|
+
'/Users/kzf/.claude/agents/skill-creator/dist/cli.js', // Default user path
|
|
264
|
+
]
|
|
265
|
+
|
|
266
|
+
skillCreatorPath = possiblePaths.find(p => existsSync(p)) || ''
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (!skillCreatorPath) {
|
|
270
|
+
console.error('❌ Could not find skill-creator CLI')
|
|
271
|
+
console.error('💡 Please install skill-creator or set SKILL_CREATOR_PATH environment variable')
|
|
272
|
+
process.exit(1)
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const args = process.argv.slice(2)
|
|
276
|
+
|
|
277
|
+
// Run the command
|
|
278
|
+
const child = spawn('node', [skillCreatorPath, 'run-script', '${command}'.replace(/_/g, '-'), ...args], {
|
|
279
|
+
stdio: 'inherit',
|
|
280
|
+
cwd: join(__dirname, '..'),
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
child.on('exit', (code) => {
|
|
284
|
+
process.exit(code ?? 1)
|
|
285
|
+
})
|
|
286
|
+
`;
|
|
287
|
+
writeFileSync(scriptPath, content);
|
|
288
|
+
chmodSync(scriptPath, 0o755);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=skillCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillCreator.js","sourceRoot":"","sources":["../../src/core/skillCreator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template system for framework-specific skill enhancements
|
|
3
|
+
*/
|
|
4
|
+
export interface FrameworkTemplate {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
context7Ids?: string[];
|
|
8
|
+
additionalDependencies?: Record<string, string>;
|
|
9
|
+
additionalScripts?: Record<string, string>;
|
|
10
|
+
customConfig?: Record<string, any>;
|
|
11
|
+
postCreateScript?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class TemplateManager {
|
|
14
|
+
private templatesDir;
|
|
15
|
+
private templates;
|
|
16
|
+
constructor();
|
|
17
|
+
private loadTemplates;
|
|
18
|
+
getTemplate(name: string): FrameworkTemplate | undefined;
|
|
19
|
+
getAllTemplates(): FrameworkTemplate[];
|
|
20
|
+
detectFramework(packageName: string): FrameworkTemplate | null;
|
|
21
|
+
applyTemplate(template: FrameworkTemplate, skillPath: string, config: any): void;
|
|
22
|
+
private generateFrameworkScripts;
|
|
23
|
+
private createExpressServerExample;
|
|
24
|
+
private createTypeormEntityGenerator;
|
|
25
|
+
private createPrismaSchemaGenerator;
|
|
26
|
+
private createReactExampleScripts;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=templateManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateManager.d.ts","sourceRoot":"","sources":["../../src/core/templateManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,SAAS,CAA4C;;IAS7D,OAAO,CAAC,aAAa;IAkJrB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxD,eAAe,IAAI,iBAAiB,EAAE;IAItC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAiC9D,aAAa,CACX,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,GAAG,GACV,IAAI;IAgDP,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,0BAA0B;IAiClC,OAAO,CAAC,4BAA4B;IAsGpC,OAAO,CAAC,2BAA2B;IAgGnC,OAAO,CAAC,yBAAyB;CAmJlC"}
|