skill-creator 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +53 -0
  2. package/dist/cli.d.ts +8 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +378 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core/chromaSearch.d.ts +24 -0
  7. package/dist/core/chromaSearch.d.ts.map +1 -0
  8. package/dist/core/chromaSearch.js +192 -0
  9. package/dist/core/chromaSearch.js.map +1 -0
  10. package/dist/core/contentManager.d.ts +40 -0
  11. package/dist/core/contentManager.d.ts.map +1 -0
  12. package/dist/core/contentManager.js +355 -0
  13. package/dist/core/contentManager.js.map +1 -0
  14. package/dist/core/runScript.d.ts +5 -0
  15. package/dist/core/runScript.d.ts.map +1 -0
  16. package/dist/core/runScript.js +220 -0
  17. package/dist/core/runScript.js.map +1 -0
  18. package/dist/core/searchEngine.d.ts +25 -0
  19. package/dist/core/searchEngine.d.ts.map +1 -0
  20. package/dist/core/searchEngine.js +198 -0
  21. package/dist/core/searchEngine.js.map +1 -0
  22. package/dist/core/simpleSearch.d.ts +21 -0
  23. package/dist/core/simpleSearch.d.ts.map +1 -0
  24. package/dist/core/simpleSearch.js +113 -0
  25. package/dist/core/simpleSearch.js.map +1 -0
  26. package/dist/core/skillCreator.d.ts +16 -0
  27. package/dist/core/skillCreator.d.ts.map +1 -0
  28. package/dist/core/skillCreator.js +291 -0
  29. package/dist/core/skillCreator.js.map +1 -0
  30. package/dist/core/templateManager.d.ts +28 -0
  31. package/dist/core/templateManager.d.ts.map +1 -0
  32. package/dist/core/templateManager.js +612 -0
  33. package/dist/core/templateManager.js.map +1 -0
  34. package/dist/core/unifiedSearch.d.ts +23 -0
  35. package/dist/core/unifiedSearch.d.ts.map +1 -0
  36. package/dist/core/unifiedSearch.js +46 -0
  37. package/dist/core/unifiedSearch.js.map +1 -0
  38. package/dist/index.d.ts +10 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +9 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types/index.d.ts +86 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +5 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/utils/config.d.ts +47 -0
  47. package/dist/utils/config.d.ts.map +1 -0
  48. package/dist/utils/config.js +69 -0
  49. package/dist/utils/config.js.map +1 -0
  50. package/dist/utils/package.d.ts +57 -0
  51. package/dist/utils/package.d.ts.map +1 -0
  52. package/dist/utils/package.js +170 -0
  53. package/dist/utils/package.js.map +1 -0
  54. package/package.json +57 -0
  55. package/templates/skill-creator.md +182 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Unified search engine that can use either ChromaDB or simple search
3
+ */
4
+ import { ChromaSearchEngine } from './chromaSearch.js';
5
+ import { SimpleSearchEngine } from './simpleSearch.js';
6
+ export class UnifiedSearchEngine {
7
+ engine = null;
8
+ options;
9
+ constructor(options) {
10
+ this.options = options;
11
+ }
12
+ async getEngine() {
13
+ if (!this.engine) {
14
+ if (this.options.type === 'chroma') {
15
+ this.engine = new ChromaSearchEngine({
16
+ dbPath: this.options.dbPath,
17
+ collectionName: this.options.collectionName,
18
+ });
19
+ }
20
+ else {
21
+ this.engine = new SimpleSearchEngine({
22
+ referencesDir: this.options.referencesDir,
23
+ collectionName: this.options.collectionName,
24
+ });
25
+ }
26
+ }
27
+ return this.engine;
28
+ }
29
+ async buildIndex(referencesDir, hashFile) {
30
+ const engine = await this.getEngine();
31
+ await engine.buildIndex(referencesDir, hashFile);
32
+ }
33
+ async search(query, topK = 5, where) {
34
+ const engine = await this.getEngine();
35
+ return engine.search(query, topK, where);
36
+ }
37
+ async searchByPriority(query, topK = 5) {
38
+ const engine = await this.getEngine();
39
+ return engine.searchByPriority(query, topK);
40
+ }
41
+ async getStats() {
42
+ const engine = await this.getEngine();
43
+ return engine.getStats();
44
+ }
45
+ }
46
+ //# sourceMappingURL=unifiedSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unifiedSearch.js","sourceRoot":"","sources":["../../src/core/unifiedSearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAStD,MAAM,OAAO,mBAAmB;IACtB,MAAM,GAAmD,IAAI,CAAA;IAC7D,OAAO,CAAsB;IAErC,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC;oBACnC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC3B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;iBAC5C,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC;oBACnC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;oBACzC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;iBAC5C,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,aAAqB,EAAE,QAAgB;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACrC,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAAe,CAAC,EAChB,KAA2B;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,OAAe,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACrC,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACrC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Skill Creator - Main exports
3
+ */
4
+ export { SkillCreator } from './core/skillCreator.js';
5
+ export { SearchEngine } from './core/searchEngine.js';
6
+ export { ContentManager } from './core/contentManager.js';
7
+ export { Config } from './utils/config.js';
8
+ export { PackageUtils } from './utils/package.js';
9
+ export type { SkillConfig, SearchResult, ContentStats, ContentItem, CreateSkillOptions, CreateSkillResult, UpdateContext7Result, AddContentResult, PackageVersion, Context7Library, } from './types/index.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skill Creator - Main exports
3
+ */
4
+ export { SkillCreator } from './core/skillCreator.js';
5
+ export { SearchEngine } from './core/searchEngine.js';
6
+ export { ContentManager } from './core/contentManager.js';
7
+ export { Config } from './utils/config.js';
8
+ export { PackageUtils } from './utils/package.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Core type definitions for skill creator
3
+ */
4
+ export interface SkillConfig {
5
+ name: string;
6
+ description: string;
7
+ context7LibraryId: string;
8
+ version: string;
9
+ chunkSize: number;
10
+ chunkOverlap: number;
11
+ embeddingModel: string;
12
+ similarityThreshold: number;
13
+ maxSearchResults: number;
14
+ }
15
+ export interface SearchResult {
16
+ id: string;
17
+ title: string;
18
+ content: string;
19
+ score: number;
20
+ source: 'user' | 'context7';
21
+ file_path: string;
22
+ metadata: Record<string, unknown>;
23
+ }
24
+ export interface ContentStats {
25
+ userFiles: number;
26
+ context7Files: number;
27
+ totalFiles: number;
28
+ userDirExists: boolean;
29
+ context7DirExists: boolean;
30
+ }
31
+ export interface ContentItem {
32
+ title: string;
33
+ filename: string;
34
+ source: 'user' | 'context7';
35
+ path: string;
36
+ size: number;
37
+ modified: Date;
38
+ }
39
+ export interface CreateSkillOptions {
40
+ packageName: string;
41
+ path?: string;
42
+ description?: string;
43
+ context7Id?: string;
44
+ noInitDocs?: boolean;
45
+ storage?: 'project' | 'user';
46
+ version?: string;
47
+ }
48
+ export interface CreateSkillResult {
49
+ created: boolean;
50
+ skillPath?: string;
51
+ message: string;
52
+ docsInitialized: boolean;
53
+ }
54
+ export interface UpdateContext7Result {
55
+ updated: boolean;
56
+ skipped: boolean;
57
+ filesCreated: number;
58
+ message: string;
59
+ }
60
+ export interface AddContentResult {
61
+ added: boolean;
62
+ updated: boolean;
63
+ skipped: boolean;
64
+ filePath?: string;
65
+ message: string;
66
+ similarFound: number;
67
+ similarContent?: Array<{
68
+ title: string;
69
+ score: number;
70
+ source: string;
71
+ preview: string;
72
+ }>;
73
+ }
74
+ export interface PackageVersion {
75
+ version: string;
76
+ formatted: string;
77
+ }
78
+ export interface Context7Library {
79
+ context7_compatible_library_id: string;
80
+ name: string;
81
+ description: string;
82
+ code_snippets: number;
83
+ trust_score: number;
84
+ versions?: string[];
85
+ }
86
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core type definitions for skill creator
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Configuration utilities
3
+ */
4
+ import { z } from 'zod';
5
+ import type { SkillConfig } from '../types/index.js';
6
+ export declare const SkillConfigSchema: z.ZodObject<{
7
+ name: z.ZodString;
8
+ description: z.ZodString;
9
+ context7_library_id: z.ZodString;
10
+ version: z.ZodString;
11
+ chunk_size: z.ZodNumber;
12
+ chunk_overlap: z.ZodNumber;
13
+ embedding_model: z.ZodString;
14
+ similarity_threshold: z.ZodNumber;
15
+ max_search_results: z.ZodNumber;
16
+ }, "strip", z.ZodTypeAny, {
17
+ name: string;
18
+ description: string;
19
+ context7_library_id: string;
20
+ version: string;
21
+ chunk_size: number;
22
+ chunk_overlap: number;
23
+ embedding_model: string;
24
+ similarity_threshold: number;
25
+ max_search_results: number;
26
+ }, {
27
+ name: string;
28
+ description: string;
29
+ context7_library_id: string;
30
+ version: string;
31
+ chunk_size: number;
32
+ chunk_overlap: number;
33
+ embedding_model: string;
34
+ similarity_threshold: number;
35
+ max_search_results: number;
36
+ }>;
37
+ export type SkillConfigInput = z.input<typeof SkillConfigSchema>;
38
+ export declare class Config {
39
+ static createDefault(options: {
40
+ skillName: string;
41
+ description: string;
42
+ context7Id: string;
43
+ }): SkillConfig;
44
+ static load(filePath: string): SkillConfig;
45
+ static save(config: SkillConfig, filePath: string): void;
46
+ }
47
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEhE,qBAAa,MAAM;IACjB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;KACnB,GAAG,WAAW;IAcf,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAuB1C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAgBzD"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Configuration utilities
3
+ */
4
+ import { z } from 'zod';
5
+ import { readFileSync, writeFileSync } from 'node:fs';
6
+ export const SkillConfigSchema = z.object({
7
+ name: z.string(),
8
+ description: z.string(),
9
+ context7_library_id: z.string(),
10
+ version: z.string(),
11
+ chunk_size: z.number(),
12
+ chunk_overlap: z.number(),
13
+ embedding_model: z.string(),
14
+ similarity_threshold: z.number(),
15
+ max_search_results: z.number(),
16
+ });
17
+ export class Config {
18
+ static createDefault(options) {
19
+ return {
20
+ name: options.skillName,
21
+ description: options.description,
22
+ context7LibraryId: options.context7Id,
23
+ version: '1.0.0',
24
+ chunkSize: 1000,
25
+ chunkOverlap: 200,
26
+ embeddingModel: 'all-MiniLM-L6-v2',
27
+ similarityThreshold: 0.85,
28
+ maxSearchResults: 10,
29
+ };
30
+ }
31
+ static load(filePath) {
32
+ try {
33
+ const content = readFileSync(filePath, 'utf-8');
34
+ const raw = JSON.parse(content);
35
+ const config = SkillConfigSchema.parse(raw);
36
+ // Convert snake_case to camelCase
37
+ return {
38
+ name: config.name,
39
+ description: config.description,
40
+ context7LibraryId: config.context7_library_id,
41
+ version: config.version,
42
+ chunkSize: config.chunk_size,
43
+ chunkOverlap: config.chunk_overlap,
44
+ embeddingModel: config.embedding_model,
45
+ similarityThreshold: config.similarity_threshold,
46
+ maxSearchResults: config.max_search_results,
47
+ };
48
+ }
49
+ catch (error) {
50
+ throw new Error(`Failed to load config from ${filePath}: ${error}`);
51
+ }
52
+ }
53
+ static save(config, filePath) {
54
+ // Convert camelCase to snake_case for JSON
55
+ const raw = {
56
+ name: config.name,
57
+ description: config.description,
58
+ context7_library_id: config.context7LibraryId,
59
+ version: config.version,
60
+ chunk_size: config.chunkSize,
61
+ chunk_overlap: config.chunkOverlap,
62
+ embedding_model: config.embeddingModel,
63
+ similarity_threshold: config.similarityThreshold,
64
+ max_search_results: config.maxSearchResults,
65
+ };
66
+ writeFileSync(filePath, JSON.stringify(raw, null, 2));
67
+ }
68
+ }
69
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE;IAChC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;CAC/B,CAAC,CAAA;AAIF,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,aAAa,CAAC,OAIpB;QACC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iBAAiB,EAAE,OAAO,CAAC,UAAU;YACrC,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,GAAG;YACjB,cAAc,EAAE,kBAAkB;YAClC,mBAAmB,EAAE,IAAI;YACzB,gBAAgB,EAAE,EAAE;SACrB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,QAAgB;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAE3C,kCAAkC;YAClC,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,iBAAiB,EAAE,MAAM,CAAC,mBAAmB;gBAC7C,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,UAAU;gBAC5B,YAAY,EAAE,MAAM,CAAC,aAAa;gBAClC,cAAc,EAAE,MAAM,CAAC,eAAe;gBACtC,mBAAmB,EAAE,MAAM,CAAC,oBAAoB;gBAChD,gBAAgB,EAAE,MAAM,CAAC,kBAAkB;aAC5C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAmB,EAAE,QAAgB;QAC/C,2CAA2C;QAC3C,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,mBAAmB,EAAE,MAAM,CAAC,iBAAiB;YAC7C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,eAAe,EAAE,MAAM,CAAC,cAAc;YACtC,oBAAoB,EAAE,MAAM,CAAC,mBAAmB;YAChD,kBAAkB,EAAE,MAAM,CAAC,gBAAgB;SAC5C,CAAA;QAED,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC;CACF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Package utilities
3
+ */
4
+ export interface SearchResult {
5
+ name: string;
6
+ description: string;
7
+ version: string;
8
+ date: string;
9
+ publisher: string;
10
+ score: number;
11
+ }
12
+ export interface SearchOptions {
13
+ limit?: number;
14
+ minScore?: number;
15
+ }
16
+ export declare class PackageUtils {
17
+ /**
18
+ * Get package version from npm registry
19
+ */
20
+ static getPackageVersion(packageName: string): Promise<string | null>;
21
+ /**
22
+ * Format version according to doc-downloader rules
23
+ */
24
+ static formatVersion(version: string): string;
25
+ /**
26
+ * Create skill folder name according to spec
27
+ */
28
+ static createSkillFolderName(packageName: string, version: string): string;
29
+ /**
30
+ * Normalize package name (remove @ prefix)
31
+ */
32
+ static normalizePackageName(packageName: string): string;
33
+ /**
34
+ * Validate package name format
35
+ */
36
+ static validatePackageName(packageName: string): boolean;
37
+ /**
38
+ * Search for packages on npm registry
39
+ */
40
+ static searchPackages(keywords: string[], options?: SearchOptions): Promise<SearchResult[]>;
41
+ /**
42
+ * Find exact package match
43
+ */
44
+ static findExactPackage(packageName: string): Promise<SearchResult | null>;
45
+ /**
46
+ * Suggest packages based on keywords
47
+ */
48
+ static suggestPackages(input: string, options?: SearchOptions): Promise<SearchResult[]>;
49
+ /**
50
+ * Select package from multiple options
51
+ */
52
+ static selectPackage(input: string): Promise<{
53
+ name: string;
54
+ version: string;
55
+ } | null>;
56
+ }
57
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Package utilities
3
+ */
4
+ export class PackageUtils {
5
+ /**
6
+ * Get package version from npm registry
7
+ */
8
+ static async getPackageVersion(packageName) {
9
+ try {
10
+ const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`);
11
+ if (!response.ok)
12
+ return null;
13
+ const data = await response.json();
14
+ return data.version;
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ /**
21
+ * Format version according to doc-downloader rules
22
+ */
23
+ static formatVersion(version) {
24
+ if (!version)
25
+ return '';
26
+ // Remove 'v' prefix if present
27
+ if (version.startsWith('v')) {
28
+ version = version.slice(1);
29
+ }
30
+ const parts = version.split('.');
31
+ if (parts.length >= 2) {
32
+ const major = parseInt(parts[0], 10);
33
+ if (major >= 1) {
34
+ return String(major);
35
+ }
36
+ else {
37
+ return `${major}.${parts[1]}`;
38
+ }
39
+ }
40
+ return version;
41
+ }
42
+ /**
43
+ * Create skill folder name according to spec
44
+ */
45
+ static createSkillFolderName(packageName, version) {
46
+ // Replace / with __ as specified in doc-downloader.md
47
+ const safePackage = packageName.replace(/\//g, '__');
48
+ const formattedVersion = this.formatVersion(version);
49
+ if (formattedVersion) {
50
+ return `${safePackage}@${formattedVersion}`;
51
+ }
52
+ else {
53
+ return safePackage;
54
+ }
55
+ }
56
+ /**
57
+ * Normalize package name (remove @ prefix)
58
+ */
59
+ static normalizePackageName(packageName) {
60
+ if (packageName.startsWith('@')) {
61
+ return packageName.slice(1);
62
+ }
63
+ return packageName;
64
+ }
65
+ /**
66
+ * Validate package name format
67
+ */
68
+ static validatePackageName(packageName) {
69
+ if (!packageName || packageName.length === 0) {
70
+ return false;
71
+ }
72
+ // Basic validation for npm package names
73
+ const validNamePattern = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
74
+ return validNamePattern.test(packageName);
75
+ }
76
+ /**
77
+ * Search for packages on npm registry
78
+ */
79
+ static async searchPackages(keywords, options = {}) {
80
+ const { limit = 10, minScore = 0.3 } = options;
81
+ try {
82
+ const query = keywords.join(' ');
83
+ const response = await fetch(`https://registry.npmjs.org/-/v1/search?text=${encodeURIComponent(query)}&size=${limit * 2}`);
84
+ if (!response.ok)
85
+ return [];
86
+ const data = await response.json();
87
+ const results = [];
88
+ for (const pkg of data.objects || []) {
89
+ const score = pkg.score?.detail?.popularity || 0;
90
+ if (score >= minScore) {
91
+ results.push({
92
+ name: pkg.package.name,
93
+ description: pkg.package.description || '',
94
+ version: pkg.package.version,
95
+ date: pkg.package.date,
96
+ publisher: pkg.package.publisher?.username || 'unknown',
97
+ score,
98
+ });
99
+ }
100
+ }
101
+ return results.slice(0, limit);
102
+ }
103
+ catch {
104
+ return [];
105
+ }
106
+ }
107
+ /**
108
+ * Find exact package match
109
+ */
110
+ static async findExactPackage(packageName) {
111
+ try {
112
+ const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`);
113
+ if (!response.ok)
114
+ return null;
115
+ const data = await response.json();
116
+ 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',
122
+ score: 1.0,
123
+ };
124
+ }
125
+ catch {
126
+ return null;
127
+ }
128
+ }
129
+ /**
130
+ * Suggest packages based on keywords
131
+ */
132
+ static async suggestPackages(input, options = {}) {
133
+ // Check if input looks like an exact package name
134
+ if (PackageUtils.validatePackageName(input)) {
135
+ const exact = await PackageUtils.findExactPackage(input);
136
+ if (exact)
137
+ return [exact];
138
+ }
139
+ // Extract keywords from input
140
+ const keywords = input
141
+ .split(/[\s-]+/)
142
+ .filter(word => word.length > 2)
143
+ .slice(0, 3);
144
+ if (keywords.length === 0) {
145
+ // Fallback: search with the whole input
146
+ keywords.push(input);
147
+ }
148
+ return PackageUtils.searchPackages(keywords, options);
149
+ }
150
+ /**
151
+ * Select package from multiple options
152
+ */
153
+ static async selectPackage(input) {
154
+ const suggestions = await PackageUtils.suggestPackages(input, { limit: 5 });
155
+ if (suggestions.length === 0) {
156
+ return null;
157
+ }
158
+ if (suggestions.length === 1) {
159
+ const pkg = suggestions[0];
160
+ const version = await PackageUtils.getPackageVersion(pkg.name);
161
+ return { name: pkg.name, version: version || pkg.version };
162
+ }
163
+ // Multiple options found - would need interactive selection in CLI
164
+ // For now, return the highest scored package
165
+ const best = suggestions.reduce((prev, curr) => curr.score > prev.score ? curr : prev);
166
+ const version = await PackageUtils.getPackageVersion(best.name);
167
+ return { name: best.name, version: version || best.version };
168
+ }
169
+ }
170
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "skill-creator",
3
+ "version": "0.0.0",
4
+ "description": "Create claude-code-skills with documentation management",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "dev": "tsx watch src/index.ts",
10
+ "start": "node dist/index.js",
11
+ "test": "vitest run",
12
+ "format": "prettier --write .",
13
+ "type-check": "tsc --noEmit"
14
+ },
15
+ "keywords": [
16
+ "claude-code",
17
+ "skills",
18
+ "documentation",
19
+ "chromadb",
20
+ "search"
21
+ ],
22
+ "author": "Gaubee",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "@chroma-core/default-embed": "^0.1.8",
26
+ "chromadb": "^1.8.1",
27
+ "commander": "^12.1.0",
28
+ "dedent": "^1.5.3",
29
+ "glob": "^11.0.0",
30
+ "gradient-string": "^3.0.0",
31
+ "inquirer": "^10.2.2",
32
+ "markdown-it": "^14.1.0",
33
+ "ora": "^8.1.0",
34
+ "zod": "^3.24.0"
35
+ },
36
+ "devDependencies": {
37
+ "@types/inquirer": "^9.0.9",
38
+ "@types/markdown-it": "^14.1.2",
39
+ "@types/node": "^22.10.2",
40
+ "@vitest/coverage-v8": "^2.1.9",
41
+ "prettier": "^3.4.2",
42
+ "tsx": "^4.19.2",
43
+ "typescript": "^5.7.2",
44
+ "vitest": "^2.1.8"
45
+ },
46
+ "files": [
47
+ "dist",
48
+ "templates",
49
+ "README.md"
50
+ ],
51
+ "bin": {
52
+ "skill-creator": "dist/cli.js"
53
+ },
54
+ "engines": {
55
+ "node": ">=18.0.0"
56
+ }
57
+ }