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.
- package/README.md +157 -19
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +268 -262
- package/dist/cli.js.map +1 -1
- package/dist/commands/addContent.d.ts +5 -0
- package/dist/commands/addContent.d.ts.map +1 -0
- package/dist/commands/addContent.js +74 -0
- package/dist/commands/addContent.js.map +1 -0
- package/dist/commands/buildIndex.d.ts +5 -0
- package/dist/commands/buildIndex.d.ts.map +1 -0
- package/dist/commands/buildIndex.js +17 -0
- package/dist/commands/buildIndex.js.map +1 -0
- package/dist/commands/downloadContext7.d.ts +5 -0
- package/dist/commands/downloadContext7.d.ts.map +1 -0
- package/dist/commands/downloadContext7.js +62 -0
- package/dist/commands/downloadContext7.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +89 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/listContent.d.ts +5 -0
- package/dist/commands/listContent.d.ts.map +1 -0
- package/dist/commands/listContent.js +35 -0
- package/dist/commands/listContent.js.map +1 -0
- package/dist/commands/searchContent.d.ts +5 -0
- package/dist/commands/searchContent.d.ts.map +1 -0
- package/dist/commands/searchContent.js +98 -0
- package/dist/commands/searchContent.js.map +1 -0
- package/dist/commands/shared.d.ts +23 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +92 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/core/autoSearchAdapter.d.ts +42 -0
- package/dist/core/autoSearchAdapter.d.ts.map +1 -0
- package/dist/core/autoSearchAdapter.js +116 -0
- package/dist/core/autoSearchAdapter.js.map +1 -0
- package/dist/core/chromaSearch.d.ts +2 -2
- package/dist/core/chromaSearch.d.ts.map +1 -1
- package/dist/core/chromaSearch.js +11 -9
- package/dist/core/chromaSearch.js.map +1 -1
- package/dist/core/chromaSearchAdapter.d.ts +86 -0
- package/dist/core/chromaSearchAdapter.d.ts.map +1 -0
- package/dist/core/chromaSearchAdapter.js +477 -0
- package/dist/core/chromaSearchAdapter.js.map +1 -0
- package/dist/core/chromaServerManager.d.ts +64 -0
- package/dist/core/chromaServerManager.d.ts.map +1 -0
- package/dist/core/chromaServerManager.js +186 -0
- package/dist/core/chromaServerManager.js.map +1 -0
- package/dist/core/contentManager.d.ts +1 -0
- package/dist/core/contentManager.d.ts.map +1 -1
- package/dist/core/contentManager.js +75 -21
- package/dist/core/contentManager.js.map +1 -1
- package/dist/core/fuzzySearchAdapter.d.ts +33 -0
- package/dist/core/fuzzySearchAdapter.d.ts.map +1 -0
- package/dist/core/fuzzySearchAdapter.js +185 -0
- package/dist/core/fuzzySearchAdapter.js.map +1 -0
- package/dist/core/portUtils.d.ts +51 -0
- package/dist/core/portUtils.d.ts.map +1 -0
- package/dist/core/portUtils.js +120 -0
- package/dist/core/portUtils.js.map +1 -0
- package/dist/core/runScript.d.ts +1 -1
- package/dist/core/runScript.d.ts.map +1 -1
- package/dist/core/runScript.js +27 -210
- package/dist/core/runScript.js.map +1 -1
- package/dist/core/searchAdapter.d.ts +48 -0
- package/dist/core/searchAdapter.d.ts.map +1 -0
- package/dist/core/searchAdapter.js +6 -0
- package/dist/core/searchAdapter.js.map +1 -0
- package/dist/core/searchEngineFactory.d.ts +30 -0
- package/dist/core/searchEngineFactory.d.ts.map +1 -0
- package/dist/core/searchEngineFactory.js +41 -0
- package/dist/core/searchEngineFactory.js.map +1 -0
- package/dist/core/skillCreator.d.ts +2 -4
- package/dist/core/skillCreator.d.ts.map +1 -1
- package/dist/core/skillCreator.js +46 -195
- package/dist/core/skillCreator.js.map +1 -1
- package/dist/core/templateManager.d.ts +2 -1
- package/dist/core/templateManager.d.ts.map +1 -1
- package/dist/core/templateManager.js +19 -13
- package/dist/core/templateManager.js.map +1 -1
- package/dist/core/unifiedSearch.d.ts +57 -11
- package/dist/core/unifiedSearch.d.ts.map +1 -1
- package/dist/core/unifiedSearch.js +88 -29
- package/dist/core/unifiedSearch.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/search_format/enhancedFormatter.d.ts +109 -0
- package/dist/search_format/enhancedFormatter.d.ts.map +1 -0
- package/dist/search_format/enhancedFormatter.js +262 -0
- package/dist/search_format/enhancedFormatter.js.map +1 -0
- package/dist/search_format/index.d.ts +10 -0
- package/dist/search_format/index.d.ts.map +1 -0
- package/dist/search_format/index.js +22 -0
- package/dist/search_format/index.js.map +1 -0
- package/dist/search_format/listFormatter.d.ts +16 -0
- package/dist/search_format/listFormatter.d.ts.map +1 -0
- package/dist/search_format/listFormatter.js +51 -0
- package/dist/search_format/listFormatter.js.map +1 -0
- package/dist/search_format/types.d.ts +69 -0
- package/dist/search_format/types.d.ts.map +1 -0
- package/dist/search_format/types.js +5 -0
- package/dist/search_format/types.js.map +1 -0
- package/dist/types/index.d.ts +6 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/package.d.ts +17 -0
- package/dist/utils/package.d.ts.map +1 -1
- package/dist/utils/package.js +51 -14
- package/dist/utils/package.js.map +1 -1
- package/package.json +9 -8
- package/templates/SKILL.md +193 -0
- package/templates/SKILL.zh-CN.md +193 -0
- package/templates/skill-creator.md +68 -154
- package/templates/skill-creator.zh-CN.md +98 -0
- package/dist/core/searchEngine.d.ts +0 -25
- package/dist/core/searchEngine.d.ts.map +0 -1
- package/dist/core/searchEngine.js +0 -198
- package/dist/core/searchEngine.js.map +0 -1
- package/dist/core/simpleSearch.d.ts +0 -21
- package/dist/core/simpleSearch.d.ts.map +0 -1
- package/dist/core/simpleSearch.js +0 -113
- package/dist/core/simpleSearch.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple list formatter for search results
|
|
3
|
+
* Shows basic information with minimal preview
|
|
4
|
+
*/
|
|
5
|
+
import { relative } from 'node:path';
|
|
6
|
+
/**
|
|
7
|
+
* List formatter - simple, clean display with basic preview
|
|
8
|
+
*/
|
|
9
|
+
export class ListFormatter {
|
|
10
|
+
getName() {
|
|
11
|
+
return 'list';
|
|
12
|
+
}
|
|
13
|
+
getDescription() {
|
|
14
|
+
return 'Simple list format with basic preview';
|
|
15
|
+
}
|
|
16
|
+
format(results, options) {
|
|
17
|
+
const maxPreviewLength = options.maxPreviewLength || 200;
|
|
18
|
+
return results.map((result, index) => {
|
|
19
|
+
const formattableResult = result;
|
|
20
|
+
const relativePath = this.getRelativePath(formattableResult, options.skillPath);
|
|
21
|
+
// Extract content for preview
|
|
22
|
+
let previewContent = result.content;
|
|
23
|
+
if (formattableResult.fullContent) {
|
|
24
|
+
// Extract original content from <content lines="N">...</content> format
|
|
25
|
+
const match = formattableResult.fullContent.match(/^<content lines="\d+">\n(.*)\n<\/content>$/s);
|
|
26
|
+
if (match) {
|
|
27
|
+
previewContent = match[1];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Create preview
|
|
31
|
+
const preview = this.createPreview(previewContent, maxPreviewLength);
|
|
32
|
+
return {
|
|
33
|
+
result: formattableResult,
|
|
34
|
+
content: preview,
|
|
35
|
+
contentType: 'preview',
|
|
36
|
+
priority: index
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
getRelativePath(result, skillPath) {
|
|
41
|
+
return result.relativePath || relative(skillPath, result.file_path);
|
|
42
|
+
}
|
|
43
|
+
createPreview(content, maxLength) {
|
|
44
|
+
if (content.length <= maxLength) {
|
|
45
|
+
return content.replace(/\n/g, ' ');
|
|
46
|
+
}
|
|
47
|
+
const preview = content.substring(0, maxLength);
|
|
48
|
+
return preview.replace(/\n/g, ' ') + '...';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=listFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listFormatter.js","sourceRoot":"","sources":["../../src/search_format/listFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB,OAAO;QACL,OAAO,MAAM,CAAA;IACf,CAAC;IAED,cAAc;QACZ,OAAO,uCAAuC,CAAA;IAChD,CAAC;IAED,MAAM,CACJ,OAAuB,EACvB,OAA0B;QAE1B,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,GAAG,CAAA;QAExD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,iBAAiB,GAAG,MAAiC,CAAA;YAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;YAE/E,8BAA8B;YAC9B,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAA;YACnC,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;gBAClC,wEAAwE;gBACxE,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;gBAChG,IAAI,KAAK,EAAE,CAAC;oBACV,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;YAEpE,OAAO;gBACL,MAAM,EAAE,iBAAiB;gBACzB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,KAAK;aAChB,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,eAAe,CAAC,MAA+B,EAAE,SAAiB;QACxE,OAAO,MAAM,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IACrE,CAAC;IAEO,aAAa,CAAC,OAAe,EAAE,SAAiB;QACtD,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search result formatting types and interfaces
|
|
3
|
+
*/
|
|
4
|
+
import type { SearchResult } from '../core/searchAdapter.js';
|
|
5
|
+
export type { SearchResult };
|
|
6
|
+
/**
|
|
7
|
+
* Enhanced search result with additional metadata for formatting
|
|
8
|
+
*/
|
|
9
|
+
export interface FormattableSearchResult extends SearchResult {
|
|
10
|
+
/** Relative file path from skill root */
|
|
11
|
+
relativePath?: string;
|
|
12
|
+
/** Full content (for high-quality matches) */
|
|
13
|
+
fullContent?: string;
|
|
14
|
+
/** Preview content with line numbers (for medium-quality matches) */
|
|
15
|
+
preview?: string;
|
|
16
|
+
/** Display tier information */
|
|
17
|
+
metadata: SearchResult['metadata'] & {
|
|
18
|
+
displayTier?: 'full' | 'preview' | 'metadata-only';
|
|
19
|
+
maxScore?: number;
|
|
20
|
+
averageScore?: number;
|
|
21
|
+
matchRanges?: number[][];
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Formatting options for search results
|
|
26
|
+
*/
|
|
27
|
+
export interface FormattingOptions {
|
|
28
|
+
/** Skill path for relative path calculation */
|
|
29
|
+
skillPath: string;
|
|
30
|
+
/** Threshold for showing full content */
|
|
31
|
+
showFullContentThreshold?: number;
|
|
32
|
+
/** Minimum score for showing preview */
|
|
33
|
+
minScoreForPreview?: number;
|
|
34
|
+
/** Maximum preview length */
|
|
35
|
+
maxPreviewLength?: number;
|
|
36
|
+
/** Whether to show line numbers */
|
|
37
|
+
showLineNumbers?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Formatted search result ready for display
|
|
41
|
+
*/
|
|
42
|
+
export interface FormattedResult {
|
|
43
|
+
/** Original result */
|
|
44
|
+
result: FormattableSearchResult;
|
|
45
|
+
/** Formatted display content */
|
|
46
|
+
content: string;
|
|
47
|
+
/** Content type for styling */
|
|
48
|
+
contentType: 'full-content' | 'preview' | 'metadata-only';
|
|
49
|
+
/** Display priority */
|
|
50
|
+
priority: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Base interface for search result formatters
|
|
54
|
+
*/
|
|
55
|
+
export interface SearchFormatter {
|
|
56
|
+
/**
|
|
57
|
+
* Format search results for display
|
|
58
|
+
*/
|
|
59
|
+
format(results: SearchResult[], options: FormattingOptions): FormattedResult[];
|
|
60
|
+
/**
|
|
61
|
+
* Get formatter name
|
|
62
|
+
*/
|
|
63
|
+
getName(): string;
|
|
64
|
+
/**
|
|
65
|
+
* Get formatter description
|
|
66
|
+
*/
|
|
67
|
+
getDescription(): string;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/search_format/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,YAAY,EAAE,YAAY,EAAE,CAAA;AAE5B;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAAA;QAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mCAAmC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,MAAM,EAAE,uBAAuB,CAAA;IAC/B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,WAAW,EAAE,cAAc,GAAG,SAAS,GAAG,eAAe,CAAA;IACzD,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,iBAAiB,GAAG,eAAe,EAAE,CAAA;IAE9E;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,cAAc,IAAI,MAAM,CAAA;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/search_format/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -42,8 +42,9 @@ export interface CreateSkillOptions {
|
|
|
42
42
|
description?: string;
|
|
43
43
|
context7Id?: string;
|
|
44
44
|
noInitDocs?: boolean;
|
|
45
|
-
|
|
45
|
+
scope?: 'current' | 'user' | 'project';
|
|
46
46
|
version?: string;
|
|
47
|
+
force?: boolean;
|
|
47
48
|
}
|
|
48
49
|
export interface CreateSkillResult {
|
|
49
50
|
created: boolean;
|
|
@@ -70,6 +71,10 @@ export interface AddContentResult {
|
|
|
70
71
|
source: string;
|
|
71
72
|
preview: string;
|
|
72
73
|
}>;
|
|
74
|
+
existingFile?: {
|
|
75
|
+
path: string;
|
|
76
|
+
content: string;
|
|
77
|
+
};
|
|
73
78
|
}
|
|
74
79
|
export interface PackageVersion {
|
|
75
80
|
version: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,IAAI,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/package.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export interface SearchResult {
|
|
|
8
8
|
date: string;
|
|
9
9
|
publisher: string;
|
|
10
10
|
score: number;
|
|
11
|
+
homepage?: string;
|
|
12
|
+
repository?: string;
|
|
13
|
+
skill_dir_name?: string;
|
|
11
14
|
}
|
|
12
15
|
export interface SearchOptions {
|
|
13
16
|
limit?: number;
|
|
@@ -18,6 +21,20 @@ export declare class PackageUtils {
|
|
|
18
21
|
* Get package version from npm registry
|
|
19
22
|
*/
|
|
20
23
|
static getPackageVersion(packageName: string): Promise<string | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Get full package info from npm registry for the latest version
|
|
26
|
+
*/
|
|
27
|
+
static getPackageInfo(packageName: string): Promise<{
|
|
28
|
+
name: string;
|
|
29
|
+
version: string;
|
|
30
|
+
description: string;
|
|
31
|
+
homepage?: string;
|
|
32
|
+
repository?: {
|
|
33
|
+
type: string;
|
|
34
|
+
url: string;
|
|
35
|
+
};
|
|
36
|
+
[key: string]: any;
|
|
37
|
+
} | null>;
|
|
21
38
|
/**
|
|
22
39
|
* Format version according to doc-downloader rules
|
|
23
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,YAAY;IACvB;;OAEG;WACU,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY3E;;OAEG;WACU,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;QAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,GAAG,IAAI,CAAC;IAkBT;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAqB7C;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAY1E;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAOxD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAUxD;;OAEG;WACU,cAAc,CACzB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IA0C1B;;OAEG;WACU,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqBhF;;OAEG;WACU,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAgC1B;;OAEG;WACU,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAoB7F"}
|
package/dist/utils/package.js
CHANGED
|
@@ -17,6 +17,27 @@ export class PackageUtils {
|
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Get full package info from npm registry for the latest version
|
|
22
|
+
*/
|
|
23
|
+
static async getPackageInfo(packageName) {
|
|
24
|
+
try {
|
|
25
|
+
const response = await fetch(`https://registry.npmjs.org/${packageName}`);
|
|
26
|
+
if (!response.ok)
|
|
27
|
+
return null;
|
|
28
|
+
const data = await response.json();
|
|
29
|
+
const latestVersionTag = data['dist-tags']?.latest;
|
|
30
|
+
if (!latestVersionTag)
|
|
31
|
+
return null;
|
|
32
|
+
const latestVersionInfo = data.versions?.[latestVersionTag];
|
|
33
|
+
if (!latestVersionInfo)
|
|
34
|
+
return null;
|
|
35
|
+
return latestVersionInfo;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
20
41
|
/**
|
|
21
42
|
* Format version according to doc-downloader rules
|
|
22
43
|
*/
|
|
@@ -88,6 +109,8 @@ export class PackageUtils {
|
|
|
88
109
|
for (const pkg of data.objects || []) {
|
|
89
110
|
const score = pkg.score?.detail?.popularity || 0;
|
|
90
111
|
if (score >= minScore) {
|
|
112
|
+
// Get detailed package information including homepage
|
|
113
|
+
const packageInfo = await this.getPackageInfo(pkg.package.name);
|
|
91
114
|
results.push({
|
|
92
115
|
name: pkg.package.name,
|
|
93
116
|
description: pkg.package.description || '',
|
|
@@ -95,6 +118,11 @@ export class PackageUtils {
|
|
|
95
118
|
date: pkg.package.date,
|
|
96
119
|
publisher: pkg.package.publisher?.username || 'unknown',
|
|
97
120
|
score,
|
|
121
|
+
homepage: packageInfo?.homepage,
|
|
122
|
+
repository: packageInfo?.repository?.url,
|
|
123
|
+
skill_dir_name: packageInfo
|
|
124
|
+
? this.createSkillFolderName(packageInfo.name, packageInfo.version)
|
|
125
|
+
: undefined,
|
|
98
126
|
});
|
|
99
127
|
}
|
|
100
128
|
}
|
|
@@ -109,17 +137,19 @@ export class PackageUtils {
|
|
|
109
137
|
*/
|
|
110
138
|
static async findExactPackage(packageName) {
|
|
111
139
|
try {
|
|
112
|
-
const
|
|
113
|
-
if (!
|
|
140
|
+
const packageInfo = await this.getPackageInfo(packageName);
|
|
141
|
+
if (!packageInfo)
|
|
114
142
|
return null;
|
|
115
|
-
const data = await response.json();
|
|
116
143
|
return {
|
|
117
|
-
name:
|
|
118
|
-
description:
|
|
119
|
-
version:
|
|
120
|
-
date:
|
|
121
|
-
publisher:
|
|
144
|
+
name: packageInfo.name,
|
|
145
|
+
description: packageInfo.description || '',
|
|
146
|
+
version: packageInfo.version,
|
|
147
|
+
date: packageInfo.time?.modified || new Date().toISOString(),
|
|
148
|
+
publisher: packageInfo.publisher?.username || 'unknown',
|
|
122
149
|
score: 1.0,
|
|
150
|
+
homepage: packageInfo.homepage,
|
|
151
|
+
repository: packageInfo.repository?.url,
|
|
152
|
+
skill_dir_name: this.createSkillFolderName(packageInfo.name, packageInfo.version),
|
|
123
153
|
};
|
|
124
154
|
}
|
|
125
155
|
catch {
|
|
@@ -130,22 +160,29 @@ export class PackageUtils {
|
|
|
130
160
|
* Suggest packages based on keywords
|
|
131
161
|
*/
|
|
132
162
|
static async suggestPackages(input, options = {}) {
|
|
133
|
-
|
|
163
|
+
const results = [];
|
|
164
|
+
// Check if input looks like an exact package name and include it as first result
|
|
134
165
|
if (PackageUtils.validatePackageName(input)) {
|
|
135
166
|
const exact = await PackageUtils.findExactPackage(input);
|
|
136
|
-
if (exact)
|
|
137
|
-
|
|
167
|
+
if (exact) {
|
|
168
|
+
results.push(exact);
|
|
169
|
+
}
|
|
138
170
|
}
|
|
171
|
+
// Always perform broader search to find related packages
|
|
139
172
|
// Extract keywords from input
|
|
140
173
|
const keywords = input
|
|
141
174
|
.split(/[\s-]+/)
|
|
142
|
-
.filter(word => word.length > 2)
|
|
175
|
+
.filter((word) => word.length > 2)
|
|
143
176
|
.slice(0, 3);
|
|
144
177
|
if (keywords.length === 0) {
|
|
145
178
|
// Fallback: search with the whole input
|
|
146
179
|
keywords.push(input);
|
|
147
180
|
}
|
|
148
|
-
|
|
181
|
+
const searchResults = await PackageUtils.searchPackages(keywords, options);
|
|
182
|
+
// Merge exact match with search results, avoiding duplicates
|
|
183
|
+
const exactMatchNames = new Set(results.map((r) => r.name));
|
|
184
|
+
const additionalResults = searchResults.filter((r) => !exactMatchNames.has(r.name));
|
|
185
|
+
return [...results, ...additionalResults].slice(0, options.limit || 10);
|
|
149
186
|
}
|
|
150
187
|
/**
|
|
151
188
|
* Select package from multiple options
|
|
@@ -162,7 +199,7 @@ export class PackageUtils {
|
|
|
162
199
|
}
|
|
163
200
|
// Multiple options found - would need interactive selection in CLI
|
|
164
201
|
// For now, return the highest scored package
|
|
165
|
-
const best = suggestions.reduce((prev, curr) => curr.score > prev.score ? curr : prev);
|
|
202
|
+
const best = suggestions.reduce((prev, curr) => (curr.score > prev.score ? curr : prev));
|
|
166
203
|
const version = await PackageUtils.getPackageVersion(best.name);
|
|
167
204
|
return { name: best.name, version: version || best.version };
|
|
168
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,MAAM,OAAO,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,8BAA8B,WAAW,SAAS,CAAC,CAAA;YAChF,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAA;YAE7B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,OAAO,IAAI,CAAC,OAAiB,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,WAAmB;QAQ7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAA;YACzE,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAA;YAE7B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;YAClD,IAAI,CAAC,gBAAgB;gBAAE,OAAO,IAAI,CAAA;YAElC,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAA;YAC3D,IAAI,CAAC,iBAAiB;gBAAE,OAAO,IAAI,CAAA;YAEnC,OAAO,iBAAiB,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAe;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAA;QAEvB,+BAA+B;QAC/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,WAAmB,EAAE,OAAe;QAC/D,sDAAsD;QACtD,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAEpD,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,GAAG,WAAW,IAAI,gBAAgB,EAAE,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,WAAW,CAAA;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,WAAmB;QAC7C,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAmB;QAC5C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,yCAAyC;QACzC,MAAM,gBAAgB,GAAG,wDAAwD,CAAA;QACjF,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,QAAkB,EAClB,UAAyB,EAAE;QAE3B,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,OAAO,CAAA;QAE9C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,+CAA+C,kBAAkB,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,EAAE,CAC7F,CAAA;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,EAAE,CAAA;YAE3B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,OAAO,GAAmB,EAAE,CAAA;YAElC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC,CAAA;gBAChD,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;oBACtB,sDAAsD;oBACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;oBAE/D,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;wBACtB,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;wBAC1C,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO;wBAC5B,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;wBACtB,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,IAAI,SAAS;wBACvD,KAAK;wBACL,QAAQ,EAAE,WAAW,EAAE,QAAQ;wBAC/B,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG;wBACxC,cAAc,EAAE,WAAW;4BACzB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;4BACnE,CAAC,CAAC,SAAS;qBACd,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QAC/C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;YAC1D,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YAE7B,OAAO;gBACL,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;gBAC1C,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5D,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,IAAI,SAAS;gBACvD,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,GAAG;gBACvC,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aAClF,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAC1B,KAAa,EACb,UAAyB,EAAE;QAE3B,MAAM,OAAO,GAAmB,EAAE,CAAA;QAElC,iFAAiF;QACjF,IAAI,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACxD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,KAAK;aACnB,KAAK,CAAC,QAAQ,CAAC;aACf,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAEd,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,wCAAwC;YACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE1E,6DAA6D;QAC7D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAEnF,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACzE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAa;QACtC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAE3E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC9D,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,CAAA;QAC5D,CAAC;QAED,mEAAmE;QACnE,6CAA6C;QAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAExF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAA;IAC9D,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skill-creator",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Create claude-code-skills with documentation management",
|
|
5
|
-
"
|
|
5
|
+
"bin": {
|
|
6
|
+
"skill-creator": "dist/cli.js"
|
|
7
|
+
},
|
|
6
8
|
"type": "module",
|
|
7
9
|
"scripts": {
|
|
8
10
|
"build": "tsc",
|
|
9
|
-
"dev": "
|
|
10
|
-
"
|
|
11
|
+
"dev": "tsc --watch",
|
|
12
|
+
"cli": "node dist/cli.js",
|
|
11
13
|
"test": "vitest run",
|
|
12
14
|
"format": "prettier --write .",
|
|
13
15
|
"type-check": "tsc --noEmit"
|
|
@@ -23,9 +25,11 @@
|
|
|
23
25
|
"license": "MIT",
|
|
24
26
|
"dependencies": {
|
|
25
27
|
"@chroma-core/default-embed": "^0.1.8",
|
|
26
|
-
"
|
|
28
|
+
"@leeoniya/ufuzzy": "^1.0.19",
|
|
29
|
+
"chromadb": "^3.0.17",
|
|
27
30
|
"commander": "^12.1.0",
|
|
28
31
|
"dedent": "^1.5.3",
|
|
32
|
+
"fuse.js": "^7.1.0",
|
|
29
33
|
"glob": "^11.0.0",
|
|
30
34
|
"gradient-string": "^3.0.0",
|
|
31
35
|
"inquirer": "^10.2.2",
|
|
@@ -48,9 +52,6 @@
|
|
|
48
52
|
"templates",
|
|
49
53
|
"README.md"
|
|
50
54
|
],
|
|
51
|
-
"bin": {
|
|
52
|
-
"skill-creator": "dist/cli.js"
|
|
53
|
-
},
|
|
54
55
|
"engines": {
|
|
55
56
|
"node": ">=18.0.0"
|
|
56
57
|
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: {{NAME}}
|
|
3
|
+
description: Enhanced documentation skill for {{NAME}} with intelligent search and Context7 integration
|
|
4
|
+
license: {{LICENSE}}
|
|
5
|
+
model: inherit
|
|
6
|
+
color: blue
|
|
7
|
+
tools: Bash, Write, AskUserQuestion
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
You are a specialized {{NAME}} expert assistant, providing comprehensive technical support and documentation services for the {{NAME}} library/framework.
|
|
11
|
+
|
|
12
|
+
## About {{NAME}}
|
|
13
|
+
|
|
14
|
+
{{DESCRIPTION}}
|
|
15
|
+
|
|
16
|
+
### Core Features
|
|
17
|
+
- **Intelligent Search**: ChromaDB-powered semantic search through all documentation
|
|
18
|
+
- **Dynamic Content Management**: Add new knowledge with deduplication and smart updates
|
|
19
|
+
- **Context7 Integration**: Automatically fetches and slices latest official documentation
|
|
20
|
+
- **Priority Management**: User-generated content takes precedence over official documentation
|
|
21
|
+
|
|
22
|
+
### Design Philosophy
|
|
23
|
+
Based on official documentation and community best practices, ensuring accuracy and timeliness
|
|
24
|
+
|
|
25
|
+
Focus on practical application, providing directly applicable code examples and configuration solutions
|
|
26
|
+
|
|
27
|
+
Progressive learning path from basic concepts to advanced patterns
|
|
28
|
+
|
|
29
|
+
Continuous updates, following version iterations to continuously optimize and enhance knowledge base
|
|
30
|
+
|
|
31
|
+
### Problems Solved
|
|
32
|
+
- **Complex Learning Curves**: Lower the barrier to entry through structured knowledge points and examples
|
|
33
|
+
- **Scattered Documentation**: Integrate official docs, community experiences, and practical cases for one-stop reference
|
|
34
|
+
- **Missing Best Practices**: Summarize common design patterns and best practices to avoid common pitfalls
|
|
35
|
+
- **Version Update Challenges**: Track version changes promptly, providing migration guides and new feature descriptions
|
|
36
|
+
|
|
37
|
+
### Installation & Setup
|
|
38
|
+
```bash
|
|
39
|
+
# npm installation
|
|
40
|
+
npm install {{PACKAGE_NAME}}
|
|
41
|
+
|
|
42
|
+
# yarn installation
|
|
43
|
+
yarn add {{PACKAGE_NAME}}
|
|
44
|
+
|
|
45
|
+
# pnpm installation
|
|
46
|
+
pnpm add {{PACKAGE_NAME}}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Usage Guidelines
|
|
50
|
+
|
|
51
|
+
### Search Documentation Knowledge
|
|
52
|
+
Query {{NAME}} for information, API usage, best practices, and technical solutions:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
skill-creator search-skill --pwd="{{SKILL_PATH}}" "search keywords"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Example Queries:**
|
|
59
|
+
- "how to create router"
|
|
60
|
+
- "state management best practices"
|
|
61
|
+
- "error handling mechanisms"
|
|
62
|
+
- "performance optimization techniques"
|
|
63
|
+
- "TypeScript integration"
|
|
64
|
+
|
|
65
|
+
### Add Custom Knowledge
|
|
66
|
+
When documentation lacks important information, add your own knowledge points:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
skill-creator add-skill --pwd="{{SKILL_PATH}}" --title "Knowledge Title" --content "Detailed content"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Content Types to Add:**
|
|
73
|
+
- 🚀 **Best Practices**: Real-world project experiences and optimization tips
|
|
74
|
+
- ⚠️ **Important Notes**: Common pitfalls and troubleshooting solutions
|
|
75
|
+
- 🔧 **Configuration Tips**: Special scenario setup methods
|
|
76
|
+
- 📚 **Learning Resources**: Related tutorials and helpful links
|
|
77
|
+
- 🐛 **Problem Solutions**: Common issues and step-by-step resolutions
|
|
78
|
+
|
|
79
|
+
### Update Official Documentation
|
|
80
|
+
Fetch and re-slice the latest official documentation:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
skill-creator download-context7 --pwd="{{SKILL_PATH}}" {{CONTEXT7_ID}}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Force Update (overwrite existing documentation):**
|
|
87
|
+
```bash
|
|
88
|
+
skill-creator download-context7 --pwd="{{SKILL_PATH}}" {{CONTEXT7_ID}} --force
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### List All Content
|
|
92
|
+
View all available knowledge points in the skill:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
skill-creator run-script list-content --pwd="{{SKILL_PATH}}"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Rebuild Search Index
|
|
99
|
+
Manually rebuild index when search results are inaccurate:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
skill-creator run-script build-index --pwd="{{SKILL_PATH}}"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Documentation Structure
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
{{SKILL_PATH}}/
|
|
109
|
+
├── assets/
|
|
110
|
+
│ └── references/
|
|
111
|
+
│ ├── context7/ # Official documentation slices
|
|
112
|
+
│ └── user/ # User custom knowledge points
|
|
113
|
+
├── config.json # Skill configuration
|
|
114
|
+
├── SKILL.md # This file
|
|
115
|
+
└── package.json # Dependencies management
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Content Priority System
|
|
119
|
+
|
|
120
|
+
1. **User Content Priority**: Custom knowledge in `user/` folder has highest priority
|
|
121
|
+
2. **Official Documentation**: Official docs in `context7/` serve as reference base
|
|
122
|
+
3. **Smart Deduplication**: Automatically detect similarity when adding content
|
|
123
|
+
4. **Version Control**: Support documentation versioning and incremental updates
|
|
124
|
+
|
|
125
|
+
## Search Techniques
|
|
126
|
+
|
|
127
|
+
### 🔍 **Precise Search**
|
|
128
|
+
Use specific technical terminology:
|
|
129
|
+
- "useQuery hook usage"
|
|
130
|
+
- "route guard implementation"
|
|
131
|
+
- "async state management"
|
|
132
|
+
|
|
133
|
+
### 🎯 **Scenario-Based Search**
|
|
134
|
+
Query based on use cases:
|
|
135
|
+
- "integration in React projects"
|
|
136
|
+
- "server-side rendering configuration"
|
|
137
|
+
- "mobile optimization"
|
|
138
|
+
|
|
139
|
+
### 📋 **Comparative Search**
|
|
140
|
+
Compare different approaches:
|
|
141
|
+
- "useState vs useReducer"
|
|
142
|
+
- "client-side routing vs server-side routing"
|
|
143
|
+
|
|
144
|
+
### 🔧 **Problem-Oriented Search**
|
|
145
|
+
Describe specific problems:
|
|
146
|
+
- "resolve memory leak issues"
|
|
147
|
+
- "optimize initial loading time"
|
|
148
|
+
- "handle concurrent requests"
|
|
149
|
+
|
|
150
|
+
## Contribution Guidelines
|
|
151
|
+
|
|
152
|
+
### 📝 **Content Contributions**
|
|
153
|
+
- Add practical project experiences and best practices
|
|
154
|
+
- Share encountered problems and solutions
|
|
155
|
+
- Supplement official documentation with missing information
|
|
156
|
+
- Provide code examples and configuration cases
|
|
157
|
+
|
|
158
|
+
### 🎯 **Quality Standards**
|
|
159
|
+
- Content accuracy, verified through practical application
|
|
160
|
+
- Include concrete code examples
|
|
161
|
+
- Specify applicable scenarios and limitations
|
|
162
|
+
- Follow existing format conventions
|
|
163
|
+
|
|
164
|
+
### 🔄 **Continuous Updates**
|
|
165
|
+
- Regularly update official documentation
|
|
166
|
+
- Add new feature descriptions based on version iterations
|
|
167
|
+
- Correct outdated information and incorrect usage patterns
|
|
168
|
+
|
|
169
|
+
## Workflow
|
|
170
|
+
|
|
171
|
+
### First-Time Use
|
|
172
|
+
1. **Basic Search**: Use `search-skill` to query fundamental concepts
|
|
173
|
+
2. **Practical Application**: Implement code based on search results
|
|
174
|
+
3. **Content Enhancement**: Add practical experiences via `add-skill`
|
|
175
|
+
4. **Knowledge Sharing**: Share valuable discoveries with team members
|
|
176
|
+
|
|
177
|
+
### Daily Usage
|
|
178
|
+
1. **Problem Queries**: Search existing knowledge when encountering issues
|
|
179
|
+
2. **Content Expansion**: Add new knowledge when discovering insights
|
|
180
|
+
3. **Documentation Updates**: Regularly update official docs to stay current
|
|
181
|
+
4. **Quality Maintenance**: Review and optimize existing knowledge quality
|
|
182
|
+
|
|
183
|
+
## Technical Support
|
|
184
|
+
|
|
185
|
+
If you encounter technical issues, use these approaches:
|
|
186
|
+
1. Search existing knowledge points
|
|
187
|
+
2. Review official documentation sections
|
|
188
|
+
3. Add problem descriptions to user knowledge points
|
|
189
|
+
4. Seek community assistance
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
*This skill is created using skill-creator tool, continuously updated to provide optimal technical support experience.*
|