skill-creator 0.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +157 -19
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +268 -262
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/addContent.d.ts +5 -0
  6. package/dist/commands/addContent.d.ts.map +1 -0
  7. package/dist/commands/addContent.js +74 -0
  8. package/dist/commands/addContent.js.map +1 -0
  9. package/dist/commands/buildIndex.d.ts +5 -0
  10. package/dist/commands/buildIndex.d.ts.map +1 -0
  11. package/dist/commands/buildIndex.js +17 -0
  12. package/dist/commands/buildIndex.js.map +1 -0
  13. package/dist/commands/downloadContext7.d.ts +5 -0
  14. package/dist/commands/downloadContext7.d.ts.map +1 -0
  15. package/dist/commands/downloadContext7.js +62 -0
  16. package/dist/commands/downloadContext7.js.map +1 -0
  17. package/dist/commands/init.d.ts +5 -0
  18. package/dist/commands/init.d.ts.map +1 -0
  19. package/dist/commands/init.js +89 -0
  20. package/dist/commands/init.js.map +1 -0
  21. package/dist/commands/listContent.d.ts +5 -0
  22. package/dist/commands/listContent.d.ts.map +1 -0
  23. package/dist/commands/listContent.js +35 -0
  24. package/dist/commands/listContent.js.map +1 -0
  25. package/dist/commands/searchContent.d.ts +5 -0
  26. package/dist/commands/searchContent.d.ts.map +1 -0
  27. package/dist/commands/searchContent.js +98 -0
  28. package/dist/commands/searchContent.js.map +1 -0
  29. package/dist/commands/shared.d.ts +23 -0
  30. package/dist/commands/shared.d.ts.map +1 -0
  31. package/dist/commands/shared.js +92 -0
  32. package/dist/commands/shared.js.map +1 -0
  33. package/dist/core/autoSearchAdapter.d.ts +42 -0
  34. package/dist/core/autoSearchAdapter.d.ts.map +1 -0
  35. package/dist/core/autoSearchAdapter.js +116 -0
  36. package/dist/core/autoSearchAdapter.js.map +1 -0
  37. package/dist/core/chromaSearch.d.ts +2 -2
  38. package/dist/core/chromaSearch.d.ts.map +1 -1
  39. package/dist/core/chromaSearch.js +11 -9
  40. package/dist/core/chromaSearch.js.map +1 -1
  41. package/dist/core/chromaSearchAdapter.d.ts +86 -0
  42. package/dist/core/chromaSearchAdapter.d.ts.map +1 -0
  43. package/dist/core/chromaSearchAdapter.js +477 -0
  44. package/dist/core/chromaSearchAdapter.js.map +1 -0
  45. package/dist/core/chromaServerManager.d.ts +64 -0
  46. package/dist/core/chromaServerManager.d.ts.map +1 -0
  47. package/dist/core/chromaServerManager.js +186 -0
  48. package/dist/core/chromaServerManager.js.map +1 -0
  49. package/dist/core/contentManager.d.ts +1 -0
  50. package/dist/core/contentManager.d.ts.map +1 -1
  51. package/dist/core/contentManager.js +75 -21
  52. package/dist/core/contentManager.js.map +1 -1
  53. package/dist/core/fuzzySearchAdapter.d.ts +33 -0
  54. package/dist/core/fuzzySearchAdapter.d.ts.map +1 -0
  55. package/dist/core/fuzzySearchAdapter.js +185 -0
  56. package/dist/core/fuzzySearchAdapter.js.map +1 -0
  57. package/dist/core/portUtils.d.ts +51 -0
  58. package/dist/core/portUtils.d.ts.map +1 -0
  59. package/dist/core/portUtils.js +120 -0
  60. package/dist/core/portUtils.js.map +1 -0
  61. package/dist/core/runScript.d.ts +1 -1
  62. package/dist/core/runScript.d.ts.map +1 -1
  63. package/dist/core/runScript.js +27 -210
  64. package/dist/core/runScript.js.map +1 -1
  65. package/dist/core/searchAdapter.d.ts +48 -0
  66. package/dist/core/searchAdapter.d.ts.map +1 -0
  67. package/dist/core/searchAdapter.js +6 -0
  68. package/dist/core/searchAdapter.js.map +1 -0
  69. package/dist/core/searchEngineFactory.d.ts +30 -0
  70. package/dist/core/searchEngineFactory.d.ts.map +1 -0
  71. package/dist/core/searchEngineFactory.js +41 -0
  72. package/dist/core/searchEngineFactory.js.map +1 -0
  73. package/dist/core/skillCreator.d.ts +2 -4
  74. package/dist/core/skillCreator.d.ts.map +1 -1
  75. package/dist/core/skillCreator.js +46 -195
  76. package/dist/core/skillCreator.js.map +1 -1
  77. package/dist/core/templateManager.d.ts +2 -1
  78. package/dist/core/templateManager.d.ts.map +1 -1
  79. package/dist/core/templateManager.js +19 -13
  80. package/dist/core/templateManager.js.map +1 -1
  81. package/dist/core/unifiedSearch.d.ts +57 -11
  82. package/dist/core/unifiedSearch.d.ts.map +1 -1
  83. package/dist/core/unifiedSearch.js +88 -29
  84. package/dist/core/unifiedSearch.js.map +1 -1
  85. package/dist/index.d.ts +4 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +3 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/search_format/enhancedFormatter.d.ts +109 -0
  90. package/dist/search_format/enhancedFormatter.d.ts.map +1 -0
  91. package/dist/search_format/enhancedFormatter.js +262 -0
  92. package/dist/search_format/enhancedFormatter.js.map +1 -0
  93. package/dist/search_format/index.d.ts +10 -0
  94. package/dist/search_format/index.d.ts.map +1 -0
  95. package/dist/search_format/index.js +22 -0
  96. package/dist/search_format/index.js.map +1 -0
  97. package/dist/search_format/listFormatter.d.ts +16 -0
  98. package/dist/search_format/listFormatter.d.ts.map +1 -0
  99. package/dist/search_format/listFormatter.js +51 -0
  100. package/dist/search_format/listFormatter.js.map +1 -0
  101. package/dist/search_format/types.d.ts +69 -0
  102. package/dist/search_format/types.d.ts.map +1 -0
  103. package/dist/search_format/types.js +5 -0
  104. package/dist/search_format/types.js.map +1 -0
  105. package/dist/types/index.d.ts +6 -1
  106. package/dist/types/index.d.ts.map +1 -1
  107. package/dist/utils/package.d.ts +17 -0
  108. package/dist/utils/package.d.ts.map +1 -1
  109. package/dist/utils/package.js +51 -14
  110. package/dist/utils/package.js.map +1 -1
  111. package/package.json +9 -8
  112. package/templates/SKILL.md +193 -0
  113. package/templates/SKILL.zh-CN.md +193 -0
  114. package/templates/skill-creator.md +68 -154
  115. package/templates/skill-creator.zh-CN.md +98 -0
  116. package/dist/core/searchEngine.d.ts +0 -25
  117. package/dist/core/searchEngine.d.ts.map +0 -1
  118. package/dist/core/searchEngine.js +0 -198
  119. package/dist/core/searchEngine.js.map +0 -1
  120. package/dist/core/simpleSearch.d.ts +0 -21
  121. package/dist/core/simpleSearch.d.ts.map +0 -1
  122. package/dist/core/simpleSearch.js +0 -113
  123. package/dist/core/simpleSearch.js.map +0 -1
@@ -1,198 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchEngine.js","sourceRoot":"","sources":["../../src/core/searchEngine.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,113 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"simpleSearch.js","sourceRoot":"","sources":["../../src/core/simpleSearch.ts"],"names":[],"mappings":"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"}