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
@@ -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,5 @@
1
+ /**
2
+ * Search result formatting types and interfaces
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/search_format/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -42,8 +42,9 @@ export interface CreateSkillOptions {
42
42
  description?: string;
43
43
  context7Id?: string;
44
44
  noInitDocs?: boolean;
45
- storage?: 'project' | 'user';
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,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC,CAAA;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,8BAA8B,EAAE,MAAM,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -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;CACd;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;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;IAkC1B;;OAEG;WACU,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAoBhF;;OAEG;WACU,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAqB1B;;OAEG;WACU,aAAa,CACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAsBrD"}
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"}
@@ -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 response = await fetch(`https://registry.npmjs.org/${packageName}/latest`);
113
- if (!response.ok)
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: data.name,
118
- description: data.description || '',
119
- version: data.version,
120
- date: data.time?.modified || new Date().toISOString(),
121
- publisher: data.publisher?.username || 'unknown',
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
- // Check if input looks like an exact package name
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
- return [exact];
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
- return PackageUtils.searchPackages(keywords, options);
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;AAkBH,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,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,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;qBACN,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,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;YAElC,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;gBACnC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrD,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,SAAS;gBAChD,KAAK,EAAE,GAAG;aACX,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,kDAAkD;QAClD,IAAI,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACxD,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,KAAK;aACnB,KAAK,CAAC,QAAQ,CAAC;aACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aAC/B,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,OAAO,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,KAAa;QAEb,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,CAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACtC,CAAA;QAED,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"}
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "name": "skill-creator",
3
- "version": "0.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Create claude-code-skills with documentation management",
5
- "main": "dist/index.js",
5
+ "bin": {
6
+ "skill-creator": "dist/cli.js"
7
+ },
6
8
  "type": "module",
7
9
  "scripts": {
8
10
  "build": "tsc",
9
- "dev": "tsx watch src/index.ts",
10
- "start": "node dist/index.js",
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
- "chromadb": "^1.8.1",
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.*