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.
Files changed (55) hide show
  1. package/README.md +53 -0
  2. package/dist/cli.d.ts +8 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +378 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core/chromaSearch.d.ts +24 -0
  7. package/dist/core/chromaSearch.d.ts.map +1 -0
  8. package/dist/core/chromaSearch.js +192 -0
  9. package/dist/core/chromaSearch.js.map +1 -0
  10. package/dist/core/contentManager.d.ts +40 -0
  11. package/dist/core/contentManager.d.ts.map +1 -0
  12. package/dist/core/contentManager.js +355 -0
  13. package/dist/core/contentManager.js.map +1 -0
  14. package/dist/core/runScript.d.ts +5 -0
  15. package/dist/core/runScript.d.ts.map +1 -0
  16. package/dist/core/runScript.js +220 -0
  17. package/dist/core/runScript.js.map +1 -0
  18. package/dist/core/searchEngine.d.ts +25 -0
  19. package/dist/core/searchEngine.d.ts.map +1 -0
  20. package/dist/core/searchEngine.js +198 -0
  21. package/dist/core/searchEngine.js.map +1 -0
  22. package/dist/core/simpleSearch.d.ts +21 -0
  23. package/dist/core/simpleSearch.d.ts.map +1 -0
  24. package/dist/core/simpleSearch.js +113 -0
  25. package/dist/core/simpleSearch.js.map +1 -0
  26. package/dist/core/skillCreator.d.ts +16 -0
  27. package/dist/core/skillCreator.d.ts.map +1 -0
  28. package/dist/core/skillCreator.js +291 -0
  29. package/dist/core/skillCreator.js.map +1 -0
  30. package/dist/core/templateManager.d.ts +28 -0
  31. package/dist/core/templateManager.d.ts.map +1 -0
  32. package/dist/core/templateManager.js +612 -0
  33. package/dist/core/templateManager.js.map +1 -0
  34. package/dist/core/unifiedSearch.d.ts +23 -0
  35. package/dist/core/unifiedSearch.d.ts.map +1 -0
  36. package/dist/core/unifiedSearch.js +46 -0
  37. package/dist/core/unifiedSearch.js.map +1 -0
  38. package/dist/index.d.ts +10 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +9 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types/index.d.ts +86 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +5 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/utils/config.d.ts +47 -0
  47. package/dist/utils/config.d.ts.map +1 -0
  48. package/dist/utils/config.js +69 -0
  49. package/dist/utils/config.js.map +1 -0
  50. package/dist/utils/package.d.ts +57 -0
  51. package/dist/utils/package.d.ts.map +1 -0
  52. package/dist/utils/package.js +170 -0
  53. package/dist/utils/package.js.map +1 -0
  54. package/package.json +57 -0
  55. package/templates/skill-creator.md +182 -0
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Execute skill scripts
3
+ */
4
+ import { join } from 'node:path';
5
+ import { existsSync } from 'node:fs';
6
+ import { Config } from '../utils/config.js';
7
+ export async function runScript(script, args) {
8
+ const configPath = join(process.cwd(), 'config.json');
9
+ if (!existsSync(configPath)) {
10
+ console.error('❌ config.json not found. Are you in a skill directory?');
11
+ process.exit(1);
12
+ }
13
+ const config = Config.load(configPath);
14
+ // Import and run the appropriate script
15
+ switch (script) {
16
+ case 'search':
17
+ await runSearchScript(config, args);
18
+ break;
19
+ case 'add':
20
+ await runAddScript(config, args);
21
+ break;
22
+ case 'update-context7':
23
+ await runUpdateContext7Script(config, args);
24
+ break;
25
+ case 'build-index':
26
+ await runBuildIndexScript(config, args);
27
+ break;
28
+ case 'list-content':
29
+ await runListContentScript(config, args);
30
+ break;
31
+ default:
32
+ console.error(`❌ Unknown script: ${script}`);
33
+ process.exit(1);
34
+ }
35
+ }
36
+ async function runSearchScript(config, args) {
37
+ const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
38
+ // Use ChromaDB if available, otherwise fall back to simple search
39
+ const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
40
+ const searchEngine = new UnifiedSearchEngine({
41
+ type: searchType,
42
+ referencesDir: join(process.cwd(), 'assets', 'references'),
43
+ dbPath: join(process.cwd(), 'assets', 'chroma_db'),
44
+ collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
45
+ });
46
+ // Parse arguments
47
+ const options = parseArgs(args, [
48
+ { name: 'query', alias: 'q', type: 'string', required: true },
49
+ { name: 'top-k', type: 'number', default: 5 },
50
+ { name: 'source', type: 'string', default: 'all' },
51
+ ]);
52
+ if (!options.query) {
53
+ console.error('❌ --query is required');
54
+ process.exit(1);
55
+ }
56
+ // Build index if needed
57
+ const referencesDir = join(process.cwd(), 'assets', 'references');
58
+ const hashFile = join(process.cwd(), 'assets', '.last_index_hash');
59
+ await searchEngine.buildIndex(referencesDir, hashFile);
60
+ // Search
61
+ const results = await searchEngine.search(options.query, options['top-k'], options.source !== 'all' ? { source: options.source } : undefined);
62
+ // Display results
63
+ console.log(`\nSearch Results for: '${options.query}'`);
64
+ console.log('='.repeat(50));
65
+ if (results.length === 0) {
66
+ console.log('No results found.');
67
+ return;
68
+ }
69
+ for (let i = 0; i < results.length; i++) {
70
+ const result = results[i];
71
+ console.log(`\n${i + 1}. [Score: ${result.score.toFixed(2)}] ${result.title}`);
72
+ console.log(` Source: ${result.source} (${result.metadata.priority || 'unknown'})`);
73
+ console.log(` File: ${result.file_path}`);
74
+ console.log(` Preview: ${result.content.slice(0, 200).replace(/\n/g, ' ')}...`);
75
+ }
76
+ }
77
+ async function runAddScript(config, args) {
78
+ const { ContentManager } = await import('./contentManager.js');
79
+ const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
80
+ const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
81
+ const searchEngine = new UnifiedSearchEngine({
82
+ type: searchType,
83
+ referencesDir: join(process.cwd(), 'assets', 'references'),
84
+ dbPath: join(process.cwd(), 'assets', 'chroma_db'),
85
+ collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
86
+ });
87
+ const contentManager = new ContentManager({
88
+ searchEngine,
89
+ referencesDir: join(process.cwd(), 'assets', 'references'),
90
+ });
91
+ // Parse arguments
92
+ const options = parseArgs(args, [
93
+ { name: 'title', type: 'string', required: true },
94
+ { name: 'content', type: 'string', required: true },
95
+ { name: 'force', type: 'boolean' },
96
+ { name: 'no-update', type: 'boolean' },
97
+ ]);
98
+ const result = await contentManager.addUserContent({
99
+ title: options.title,
100
+ content: options.content,
101
+ force: options.force,
102
+ autoUpdate: !options['no-update'],
103
+ });
104
+ console.log(result.message);
105
+ if (result.similarContent && result.similarContent.length > 0) {
106
+ console.log('\nSimilar content found:');
107
+ result.similarContent.forEach((similar, i) => {
108
+ console.log(`\n${i + 1}. [${similar.score.toFixed(2)}] ${similar.title}`);
109
+ console.log(` Source: ${similar.source}`);
110
+ console.log(` Preview: ${similar.preview}`);
111
+ });
112
+ }
113
+ }
114
+ async function runUpdateContext7Script(config, args) {
115
+ const { ContentManager } = await import('./contentManager.js');
116
+ const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
117
+ const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
118
+ const searchEngine = new UnifiedSearchEngine({
119
+ type: searchType,
120
+ referencesDir: join(process.cwd(), 'assets', 'references'),
121
+ dbPath: join(process.cwd(), 'assets', 'chroma_db'),
122
+ collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
123
+ });
124
+ const contentManager = new ContentManager({
125
+ searchEngine,
126
+ referencesDir: join(process.cwd(), 'assets', 'references'),
127
+ });
128
+ // Parse arguments
129
+ const options = parseArgs(args, [
130
+ { name: 'force', type: 'boolean' },
131
+ ]);
132
+ const result = await contentManager.updateFromContext7(config.context7LibraryId, options.force);
133
+ console.log(result.message);
134
+ }
135
+ async function runBuildIndexScript(config, args) {
136
+ const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
137
+ const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
138
+ const searchEngine = new UnifiedSearchEngine({
139
+ type: searchType,
140
+ referencesDir: join(process.cwd(), 'assets', 'references'),
141
+ dbPath: join(process.cwd(), 'assets', 'chroma_db'),
142
+ collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
143
+ });
144
+ // Build index
145
+ const referencesDir = join(process.cwd(), 'assets', 'references');
146
+ const hashFile = join(process.cwd(), 'assets', '.last_index_hash');
147
+ await searchEngine.buildIndex(referencesDir, hashFile);
148
+ // Show stats
149
+ const stats = await searchEngine.getStats();
150
+ console.log(`✓ Index built: ${stats.totalDocuments || 0} documents`);
151
+ }
152
+ async function runListContentScript(config, args) {
153
+ const { ContentManager } = await import('./contentManager.js');
154
+ const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
155
+ const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
156
+ const searchEngine = new UnifiedSearchEngine({
157
+ type: searchType,
158
+ referencesDir: join(process.cwd(), 'assets', 'references'),
159
+ dbPath: join(process.cwd(), 'assets', 'chroma_db'),
160
+ collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
161
+ });
162
+ const contentManager = new ContentManager({
163
+ searchEngine,
164
+ referencesDir: join(process.cwd(), 'assets', 'references'),
165
+ });
166
+ // Parse arguments
167
+ const options = parseArgs(args, [
168
+ { name: 'source', type: 'string', default: 'all' },
169
+ ]);
170
+ // Get stats
171
+ const stats = contentManager.getContentStats();
172
+ console.log(`\nContent Statistics:`);
173
+ console.log(` User files: ${stats.userFiles}`);
174
+ console.log(` Context7 files: ${stats.context7Files}`);
175
+ console.log(` Total: ${stats.totalFiles}\n`);
176
+ // List content
177
+ const sourceFilter = options.source === 'all' ? undefined : options.source;
178
+ const contentList = contentManager.listContent(sourceFilter);
179
+ if (contentList.length === 0) {
180
+ console.log('No content found.');
181
+ return;
182
+ }
183
+ console.log(`${'Title'.padEnd(40)} ${'Source'.padEnd(10)} ${'Size'.padEnd(10)} ${'Modified'.padEnd(20)}`);
184
+ console.log('-'.repeat(80));
185
+ contentList.forEach((item) => {
186
+ console.log(`${item.title.padEnd(40)} ${item.source.padEnd(10)} ${String(item.size).padEnd(10)} ${item.modified.toLocaleString().padEnd(20)}`);
187
+ });
188
+ }
189
+ function parseArgs(args, definitions) {
190
+ const result = {};
191
+ for (let i = 0; i < args.length; i++) {
192
+ const arg = args[i];
193
+ if (arg.startsWith('--')) {
194
+ const key = arg.slice(2);
195
+ const def = definitions.find(d => d.name === key || d.alias === key);
196
+ if (def) {
197
+ if (def.type === 'boolean') {
198
+ result[key] = true;
199
+ }
200
+ else {
201
+ result[key] = args[++i];
202
+ }
203
+ }
204
+ }
205
+ else if (arg.startsWith('-')) {
206
+ const key = arg.slice(1);
207
+ const def = definitions.find(d => d.alias === key);
208
+ if (def) {
209
+ if (def.type === 'boolean') {
210
+ result[def.name] = true;
211
+ }
212
+ else {
213
+ result[def.name] = args[++i];
214
+ }
215
+ }
216
+ }
217
+ }
218
+ return result;
219
+ }
220
+ //# sourceMappingURL=runScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runScript.js","sourceRoot":"","sources":["../../src/core/runScript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * ChromaDB-based search engine
3
+ */
4
+ import type { SearchResult } from '../types/index.js';
5
+ export interface SearchEngineOptions {
6
+ dbPath: string;
7
+ collectionName: string;
8
+ embeddingModel: string;
9
+ }
10
+ export declare class SearchEngine {
11
+ private db;
12
+ private options;
13
+ private embeddingFunction;
14
+ constructor(options: SearchEngineOptions);
15
+ initialize(): Promise<void>;
16
+ buildIndex(referencesDir: string, hashFile: string): Promise<void>;
17
+ search(query: string, topK?: number, where?: Record<string, any>): Promise<SearchResult[]>;
18
+ searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
19
+ getStats(): Promise<{
20
+ totalDocuments: number;
21
+ }>;
22
+ private initializeIfNeeded;
23
+ private splitIntoSections;
24
+ }
25
+ //# sourceMappingURL=searchEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchEngine.d.ts","sourceRoot":"","sources":["../../src/core/searchEngine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,iBAAiB,CAAmB;gBAEhC,OAAO,EAAE,mBAAmB;IAIlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiGlE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAU,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAmCpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY1E,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;YAgBvC,kBAAkB;IAOhC,OAAO,CAAC,iBAAiB;CA2B1B"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * ChromaDB-based search engine
3
+ */
4
+ import { DefaultEmbeddingFunction } from '@chroma-core/default-embed';
5
+ import { join } from 'node:path';
6
+ import { existsSync } from 'node:fs';
7
+ import { glob } from 'glob';
8
+ import { createHash } from 'node:crypto';
9
+ export class SearchEngine {
10
+ db = null;
11
+ options;
12
+ embeddingFunction = null;
13
+ constructor(options) {
14
+ this.options = options;
15
+ }
16
+ async initialize() {
17
+ const { ChromaClient } = await import('chromadb');
18
+ // Try to use local embedded ChromaDB
19
+ try {
20
+ this.db = new ChromaClient({
21
+ path: this.options.dbPath,
22
+ });
23
+ }
24
+ catch (e) {
25
+ // Fallback to HTTP client (requires ChromaDB server)
26
+ console.warn('Failed to initialize embedded ChromaDB, falling back to HTTP client');
27
+ this.db = new ChromaClient({
28
+ path: 'http://localhost:8000',
29
+ });
30
+ }
31
+ // Use default embedding function (doesn't require API keys)
32
+ this.embeddingFunction = new DefaultEmbeddingFunction();
33
+ }
34
+ async buildIndex(referencesDir, hashFile) {
35
+ const { hash } = await import('node:crypto');
36
+ if (!await this.initializeIfNeeded()) {
37
+ return;
38
+ }
39
+ // Get all markdown files
40
+ const files = await glob('**/*.md', { cwd: referencesDir });
41
+ if (files.length === 0) {
42
+ console.log('No documentation files found to index');
43
+ return;
44
+ }
45
+ // Calculate current hash
46
+ const { readFileSync } = await import('node:fs');
47
+ const fileContents = files.map(file => {
48
+ const content = readFileSync(join(referencesDir, file), 'utf-8');
49
+ return `${file}:${content}`;
50
+ });
51
+ const h = createHash('sha256');
52
+ h.update(fileContents.join('\n'));
53
+ const currentHash = h.digest('hex');
54
+ // Check if we need to rebuild
55
+ if (existsSync(hashFile)) {
56
+ const lastHash = readFileSync(hashFile, 'utf-8');
57
+ if (lastHash === currentHash) {
58
+ console.log('Index is up to date');
59
+ return;
60
+ }
61
+ }
62
+ console.log(`Indexing ${files.length} documents...`);
63
+ // Get or create collection
64
+ let collection;
65
+ try {
66
+ collection = await this.db.getCollection({
67
+ name: this.options.collectionName,
68
+ });
69
+ await collection.delete(); // Clear existing data
70
+ }
71
+ catch {
72
+ collection = await this.db.createCollection({
73
+ name: this.options.collectionName,
74
+ embeddingFunction: this.embeddingFunction,
75
+ });
76
+ }
77
+ // Process and add documents
78
+ const documents = [];
79
+ const metadatas = [];
80
+ const ids = [];
81
+ for (const file of files) {
82
+ const content = readFileSync(join(referencesDir, file), 'utf-8');
83
+ const sections = this.splitIntoSections(content);
84
+ for (let i = 0; i < sections.length; i++) {
85
+ const section = sections[i];
86
+ documents.push(section.content);
87
+ const source = file.includes('context7/') ? 'context7' : 'user';
88
+ metadatas.push({
89
+ source,
90
+ file_path: file,
91
+ section_index: i,
92
+ title: section.title,
93
+ priority: source === 'user' ? 10 : 1,
94
+ });
95
+ ids.push(`${file}_${i}`);
96
+ }
97
+ }
98
+ // Add to collection in batches
99
+ const batchSize = 100;
100
+ for (let i = 0; i < documents.length; i += batchSize) {
101
+ const batch = documents.slice(i, i + batchSize);
102
+ const metadataBatch = metadatas.slice(i, i + batchSize);
103
+ const idBatch = ids.slice(i, i + batchSize);
104
+ await collection.add({
105
+ ids: idBatch,
106
+ documents: batch,
107
+ metadatas: metadataBatch,
108
+ });
109
+ }
110
+ // Save hash
111
+ const { writeFileSync } = await import('node:fs');
112
+ writeFileSync(hashFile, currentHash);
113
+ console.log(`✅ Indexed ${documents.length} sections from ${files.length} files`);
114
+ }
115
+ async search(query, topK = 5, where) {
116
+ if (!await this.initializeIfNeeded()) {
117
+ return [];
118
+ }
119
+ let collection;
120
+ try {
121
+ collection = await this.db.getCollection({
122
+ name: this.options.collectionName,
123
+ });
124
+ }
125
+ catch {
126
+ return [];
127
+ }
128
+ const results = await collection.query({
129
+ queryTexts: [query],
130
+ nResults: topK,
131
+ where,
132
+ });
133
+ if (!results.ids[0] || results.ids[0].length === 0) {
134
+ return [];
135
+ }
136
+ return results.ids[0].map((id, index) => ({
137
+ id,
138
+ title: results.metadatas[0]?.[index]?.title || 'Untitled',
139
+ content: results.documents[0]?.[index] || '',
140
+ score: results.distances[0]?.[index] || 0,
141
+ source: results.metadatas[0]?.[index]?.source || 'unknown',
142
+ file_path: results.metadatas[0]?.[index]?.file_path || '',
143
+ metadata: results.metadatas[0]?.[index] || {},
144
+ }));
145
+ }
146
+ async searchByPriority(query, topK = 5) {
147
+ // First try user content, then context7
148
+ const userResults = await this.search(query, topK, { source: 'user' });
149
+ const contextResults = await this.search(query, topK - userResults.length, { source: 'context7' });
150
+ return [...userResults, ...contextResults].slice(0, topK);
151
+ }
152
+ async getStats() {
153
+ if (!await this.initializeIfNeeded()) {
154
+ return { totalDocuments: 0 };
155
+ }
156
+ try {
157
+ const collection = await this.db.getCollection({
158
+ name: this.options.collectionName,
159
+ });
160
+ const count = await collection.count();
161
+ return { totalDocuments: count };
162
+ }
163
+ catch {
164
+ return { totalDocuments: 0 };
165
+ }
166
+ }
167
+ async initializeIfNeeded() {
168
+ if (!this.db) {
169
+ await this.initialize();
170
+ }
171
+ return !!this.db;
172
+ }
173
+ splitIntoSections(content) {
174
+ const sections = [];
175
+ const lines = content.split('\n');
176
+ let currentSection = { title: 'Introduction', content: '' };
177
+ for (const line of lines) {
178
+ const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
179
+ if (headingMatch) {
180
+ if (currentSection.content.trim()) {
181
+ sections.push({ ...currentSection });
182
+ }
183
+ currentSection = {
184
+ title: headingMatch[2],
185
+ content: '',
186
+ };
187
+ }
188
+ else {
189
+ currentSection.content += line + '\n';
190
+ }
191
+ }
192
+ if (currentSection.content.trim()) {
193
+ sections.push(currentSection);
194
+ }
195
+ return sections.filter(s => s.content.trim().length > 50);
196
+ }
197
+ }
198
+ //# sourceMappingURL=searchEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchEngine.js","sourceRoot":"","sources":["../../src/core/searchEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Simple search engine implementation (without ChromaDB)
3
+ */
4
+ import type { SearchResult } from '../types/index.js';
5
+ export interface SimpleSearchOptions {
6
+ referencesDir: string;
7
+ collectionName: string;
8
+ }
9
+ export declare class SimpleSearchEngine {
10
+ private options;
11
+ private documents;
12
+ constructor(options: SimpleSearchOptions);
13
+ buildIndex(referencesDir: string, hashFile: string): Promise<void>;
14
+ search(query: string, topK?: number, where?: Record<string, any>): Promise<SearchResult[]>;
15
+ searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
16
+ getStats(): Promise<{
17
+ totalDocuments: number;
18
+ }>;
19
+ private splitIntoSections;
20
+ }
21
+ //# sourceMappingURL=simpleSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simpleSearch.d.ts","sourceRoot":"","sources":["../../src/core/simpleSearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAOV;gBAEK,OAAO,EAAE,mBAAmB;IAIlC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ClE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAU,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAqCpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY1E,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAIrD,OAAO,CAAC,iBAAiB;CA2B1B"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Simple search engine implementation (without ChromaDB)
3
+ */
4
+ import { join } from 'node:path';
5
+ import { readFileSync } from 'node:fs';
6
+ import { glob } from 'glob';
7
+ export class SimpleSearchEngine {
8
+ options;
9
+ documents = [];
10
+ constructor(options) {
11
+ this.options = options;
12
+ }
13
+ async buildIndex(referencesDir, hashFile) {
14
+ console.log('Building simple search index...');
15
+ // Get all markdown files
16
+ const files = await glob('**/*.md', { cwd: referencesDir });
17
+ if (files.length === 0) {
18
+ console.log('No documentation files found to index');
19
+ return;
20
+ }
21
+ console.log(`Indexing ${files.length} documents...`);
22
+ // Load all documents
23
+ this.documents = [];
24
+ for (const file of files) {
25
+ const content = readFileSync(join(referencesDir, file), 'utf-8');
26
+ const sections = this.splitIntoSections(content);
27
+ for (let i = 0; i < sections.length; i++) {
28
+ const section = sections[i];
29
+ const source = file.includes('context7/') ? 'context7' : 'user';
30
+ this.documents.push({
31
+ id: `${file}_${i}`,
32
+ title: section.title,
33
+ content: section.content,
34
+ source,
35
+ file_path: file,
36
+ metadata: {
37
+ source,
38
+ file_path: file,
39
+ section_index: i,
40
+ title: section.title,
41
+ priority: source === 'user' ? 10 : 1,
42
+ }
43
+ });
44
+ }
45
+ }
46
+ console.log(`✅ Indexed ${this.documents.length} sections from ${files.length} files`);
47
+ }
48
+ async search(query, topK = 5, where) {
49
+ let results = this.documents;
50
+ // Filter by source if specified
51
+ if (where?.source) {
52
+ results = results.filter(doc => doc.source === where.source);
53
+ }
54
+ // Simple text matching search
55
+ const queryTerms = query.toLowerCase().split(/\s+/);
56
+ const scoredResults = results.map(doc => {
57
+ const content = doc.content.toLowerCase();
58
+ const title = doc.title.toLowerCase();
59
+ let score = 0;
60
+ for (const term of queryTerms) {
61
+ if (title.includes(term)) {
62
+ score += 10; // Title matches are worth more
63
+ }
64
+ if (content.includes(term)) {
65
+ score += 1;
66
+ }
67
+ }
68
+ return {
69
+ ...doc,
70
+ score: score / queryTerms.length // Normalize score
71
+ };
72
+ });
73
+ // Sort by score and take top K
74
+ return scoredResults
75
+ .filter(r => r.score > 0)
76
+ .sort((a, b) => b.score - a.score)
77
+ .slice(0, topK);
78
+ }
79
+ async searchByPriority(query, topK = 5) {
80
+ // First try user content, then context7
81
+ const userResults = await this.search(query, topK, { source: 'user' });
82
+ const contextResults = await this.search(query, topK - userResults.length, { source: 'context7' });
83
+ return [...userResults, ...contextResults].slice(0, topK);
84
+ }
85
+ async getStats() {
86
+ return { totalDocuments: this.documents.length };
87
+ }
88
+ splitIntoSections(content) {
89
+ const sections = [];
90
+ const lines = content.split('\n');
91
+ let currentSection = { title: 'Introduction', content: '' };
92
+ for (const line of lines) {
93
+ const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
94
+ if (headingMatch) {
95
+ if (currentSection.content.trim()) {
96
+ sections.push({ ...currentSection });
97
+ }
98
+ currentSection = {
99
+ title: headingMatch[2],
100
+ content: '',
101
+ };
102
+ }
103
+ else {
104
+ currentSection.content += line + '\n';
105
+ }
106
+ }
107
+ if (currentSection.content.trim()) {
108
+ sections.push(currentSection);
109
+ }
110
+ return sections.filter(s => s.content.trim().length > 50);
111
+ }
112
+ }
113
+ //# sourceMappingURL=simpleSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simpleSearch.js","sourceRoot":"","sources":["../../src/core/simpleSearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Main skill creator class
3
+ */
4
+ import type { CreateSkillOptions, CreateSkillResult } from '../types/index.js';
5
+ export declare class SkillCreator {
6
+ private templateDir;
7
+ private templateManager;
8
+ constructor();
9
+ createSkill(options: CreateSkillOptions): Promise<CreateSkillResult>;
10
+ private createDirectoryStructure;
11
+ private createSkillMd;
12
+ private createPackageJson;
13
+ private createScripts;
14
+ private createScriptWrapper;
15
+ }
16
+ //# sourceMappingURL=skillCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillCreator.d.ts","sourceRoot":"","sources":["../../src/core/skillCreator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAI9E,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,eAAe,CAAiB;;IAUlC,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoG1E,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,aAAa;IAwFrB,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,mBAAmB;CAoD5B"}