skillpkg-core 0.5.4 → 0.5.7

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 (150) hide show
  1. package/dist/adapters/adapter-manager.d.ts +51 -0
  2. package/dist/adapters/adapter-manager.d.ts.map +1 -0
  3. package/dist/adapters/adapter-manager.js +147 -0
  4. package/dist/adapters/adapter-manager.js.map +1 -0
  5. package/dist/adapters/base.d.ts.map +1 -1
  6. package/dist/adapters/base.js +14 -3
  7. package/dist/adapters/base.js.map +1 -1
  8. package/dist/adapters/index.d.ts +1 -1
  9. package/dist/adapters/index.d.ts.map +1 -1
  10. package/dist/adapters/index.js +1 -1
  11. package/dist/adapters/index.js.map +1 -1
  12. package/dist/config/types.d.ts +3 -3
  13. package/dist/config/types.d.ts.map +1 -1
  14. package/dist/config/types.js +0 -1
  15. package/dist/config/types.js.map +1 -1
  16. package/dist/discovery/discovery-manager.d.ts +55 -0
  17. package/dist/discovery/discovery-manager.d.ts.map +1 -0
  18. package/dist/discovery/discovery-manager.js +217 -0
  19. package/dist/discovery/discovery-manager.js.map +1 -0
  20. package/dist/discovery/index.d.ts +20 -0
  21. package/dist/discovery/index.d.ts.map +1 -0
  22. package/dist/discovery/index.js +21 -0
  23. package/dist/discovery/index.js.map +1 -0
  24. package/dist/discovery/manager.d.ts +53 -0
  25. package/dist/discovery/manager.d.ts.map +1 -0
  26. package/dist/discovery/manager.js +203 -0
  27. package/dist/discovery/manager.js.map +1 -0
  28. package/dist/discovery/providers/awesome.d.ts +72 -0
  29. package/dist/discovery/providers/awesome.d.ts.map +1 -0
  30. package/dist/discovery/providers/awesome.js +214 -0
  31. package/dist/discovery/providers/awesome.js.map +1 -0
  32. package/dist/discovery/providers/github.d.ts +44 -0
  33. package/dist/discovery/providers/github.d.ts.map +1 -0
  34. package/dist/discovery/providers/github.js +82 -0
  35. package/dist/discovery/providers/github.js.map +1 -0
  36. package/dist/discovery/providers/index.d.ts +9 -0
  37. package/dist/discovery/providers/index.d.ts.map +1 -0
  38. package/dist/discovery/providers/index.js +9 -0
  39. package/dist/discovery/providers/index.js.map +1 -0
  40. package/dist/discovery/providers/local.d.ts +38 -0
  41. package/dist/discovery/providers/local.d.ts.map +1 -0
  42. package/dist/discovery/providers/local.js +75 -0
  43. package/dist/discovery/providers/local.js.map +1 -0
  44. package/dist/discovery/providers/priority.d.ts +89 -0
  45. package/dist/discovery/providers/priority.d.ts.map +1 -0
  46. package/dist/discovery/providers/priority.js +258 -0
  47. package/dist/discovery/providers/priority.js.map +1 -0
  48. package/dist/discovery/providers/skillsmp.d.ts +66 -0
  49. package/dist/discovery/providers/skillsmp.d.ts.map +1 -0
  50. package/dist/discovery/providers/skillsmp.js +134 -0
  51. package/dist/discovery/providers/skillsmp.js.map +1 -0
  52. package/dist/discovery/types.d.ts +108 -0
  53. package/dist/discovery/types.d.ts.map +1 -0
  54. package/dist/discovery/types.js +5 -0
  55. package/dist/discovery/types.js.map +1 -0
  56. package/dist/doctor/doctor.d.ts +62 -0
  57. package/dist/doctor/doctor.d.ts.map +1 -0
  58. package/dist/doctor/doctor.js +399 -0
  59. package/dist/doctor/doctor.js.map +1 -0
  60. package/dist/doctor/index.d.ts +6 -0
  61. package/dist/doctor/index.d.ts.map +1 -0
  62. package/dist/doctor/index.js +6 -0
  63. package/dist/doctor/index.js.map +1 -0
  64. package/dist/doctor/types.d.ts +68 -0
  65. package/dist/doctor/types.d.ts.map +1 -0
  66. package/dist/doctor/types.js +2 -0
  67. package/dist/doctor/types.js.map +1 -0
  68. package/dist/fetcher/fetcher.d.ts.map +1 -1
  69. package/dist/fetcher/fetcher.js +265 -25
  70. package/dist/fetcher/fetcher.js.map +1 -1
  71. package/dist/fetcher/source-parser.d.ts +8 -6
  72. package/dist/fetcher/source-parser.d.ts.map +1 -1
  73. package/dist/fetcher/source-parser.js +37 -16
  74. package/dist/fetcher/source-parser.js.map +1 -1
  75. package/dist/fetcher/types.d.ts +17 -4
  76. package/dist/fetcher/types.d.ts.map +1 -1
  77. package/dist/fetcher/types.js.map +1 -1
  78. package/dist/importer/importer.js +1 -1
  79. package/dist/importer/importer.js.map +1 -1
  80. package/dist/index.d.ts +4 -1
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +7 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/installer/installer.d.ts +1 -1
  85. package/dist/installer/installer.d.ts.map +1 -1
  86. package/dist/installer/installer.js +21 -13
  87. package/dist/installer/installer.js.map +1 -1
  88. package/dist/installer/types.d.ts +15 -13
  89. package/dist/installer/types.d.ts.map +1 -1
  90. package/dist/matching/engine.d.ts +57 -0
  91. package/dist/matching/engine.d.ts.map +1 -0
  92. package/dist/matching/engine.js +419 -0
  93. package/dist/matching/engine.js.map +1 -0
  94. package/dist/matching/index.d.ts +9 -0
  95. package/dist/matching/index.d.ts.map +1 -0
  96. package/dist/matching/index.js +8 -0
  97. package/dist/matching/index.js.map +1 -0
  98. package/dist/matching/types.d.ts +91 -0
  99. package/dist/matching/types.d.ts.map +1 -0
  100. package/dist/matching/types.js +13 -0
  101. package/dist/matching/types.js.map +1 -0
  102. package/dist/parser/schema.d.ts +61 -8
  103. package/dist/parser/schema.d.ts.map +1 -1
  104. package/dist/parser/schema.js +59 -9
  105. package/dist/parser/schema.js.map +1 -1
  106. package/dist/resolver/dependency-resolver.d.ts.map +1 -1
  107. package/dist/resolver/dependency-resolver.js +15 -3
  108. package/dist/resolver/dependency-resolver.js.map +1 -1
  109. package/dist/resolver/index.d.ts +1 -1
  110. package/dist/resolver/index.d.ts.map +1 -1
  111. package/dist/resolver/index.js.map +1 -1
  112. package/dist/resolver/types.d.ts +13 -0
  113. package/dist/resolver/types.d.ts.map +1 -1
  114. package/dist/skill/reader.d.ts.map +1 -1
  115. package/dist/skill/reader.js +12 -11
  116. package/dist/skill/reader.js.map +1 -1
  117. package/dist/skill/types.d.ts +28 -2
  118. package/dist/skill/types.d.ts.map +1 -1
  119. package/dist/state/state-manager.d.ts +19 -0
  120. package/dist/state/state-manager.d.ts.map +1 -1
  121. package/dist/state/state-manager.js +50 -0
  122. package/dist/state/state-manager.js.map +1 -1
  123. package/dist/store/config.d.ts.map +1 -1
  124. package/dist/store/config.js +7 -0
  125. package/dist/store/config.js.map +1 -1
  126. package/dist/store/index.d.ts +2 -2
  127. package/dist/store/index.d.ts.map +1 -1
  128. package/dist/store/index.js +1 -1
  129. package/dist/store/index.js.map +1 -1
  130. package/dist/store/manager.d.ts +2 -0
  131. package/dist/store/manager.d.ts.map +1 -1
  132. package/dist/store/manager.js +19 -1
  133. package/dist/store/manager.js.map +1 -1
  134. package/dist/store/store-manager.d.ts +123 -0
  135. package/dist/store/store-manager.d.ts.map +1 -0
  136. package/dist/store/store-manager.js +312 -0
  137. package/dist/store/store-manager.js.map +1 -0
  138. package/dist/syncer/syncer.d.ts +4 -0
  139. package/dist/syncer/syncer.d.ts.map +1 -1
  140. package/dist/syncer/syncer.js +91 -27
  141. package/dist/syncer/syncer.js.map +1 -1
  142. package/dist/syncer/types.d.ts +16 -8
  143. package/dist/syncer/types.d.ts.map +1 -1
  144. package/dist/syncer/types.js +29 -32
  145. package/dist/syncer/types.js.map +1 -1
  146. package/dist/types.d.ts +33 -0
  147. package/dist/types.d.ts.map +1 -1
  148. package/dist/types.js +9 -2
  149. package/dist/types.js.map +1 -1
  150. package/package.json +9 -9
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Adapter Manager
3
+ *
4
+ * Manages platform adapters and sync operations
5
+ */
6
+ import type { Skill } from '../types.js';
7
+ import type { PlatformAdapter, DetectedPlatform, SyncOptions, SyncResult } from './types.js';
8
+ /**
9
+ * Adapter Manager class
10
+ */
11
+ export declare class AdapterManager {
12
+ private adapters;
13
+ constructor();
14
+ /**
15
+ * Register a platform adapter
16
+ */
17
+ registerAdapter(adapter: PlatformAdapter): void;
18
+ /**
19
+ * Get an adapter by name
20
+ */
21
+ getAdapter(name: string): PlatformAdapter | null;
22
+ /**
23
+ * List all registered adapters
24
+ */
25
+ listAdapters(): PlatformAdapter[];
26
+ /**
27
+ * Detect which platforms are present in a project
28
+ */
29
+ detectPlatforms(projectPath: string): Promise<DetectedPlatform[]>;
30
+ /**
31
+ * Sync skills to all or specified platforms
32
+ */
33
+ sync(skills: Skill[], options?: SyncOptions): Promise<SyncResult>;
34
+ /**
35
+ * Sync skills to a specific platform
36
+ */
37
+ syncToPlatform(platform: string, skills: Skill[], projectPath?: string): Promise<SyncResult>;
38
+ /**
39
+ * Remove a skill from all platforms
40
+ */
41
+ removeFromAllPlatforms(skillName: string, projectPath?: string): Promise<void>;
42
+ /**
43
+ * Remove a skill from a specific platform
44
+ */
45
+ removeFromPlatform(skillName: string, platform: string, projectPath?: string): Promise<void>;
46
+ }
47
+ /**
48
+ * Create a new AdapterManager instance
49
+ */
50
+ export declare function createAdapterManager(): AdapterManager;
51
+ //# sourceMappingURL=adapter-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-manager.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA2C;;IAU3D;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI/C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIhD;;OAEG;IACH,YAAY,IAAI,eAAe,EAAE;IAIjC;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgBvE;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAkE3E;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,KAAK,EAAE,EACf,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC;IAItB;;OAEG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,IAAI,CAAC;CAMjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
@@ -0,0 +1,147 @@
1
+ import { ClaudeCodeAdapter } from './claude-code.js';
2
+ import { CodexAdapter } from './codex.js';
3
+ import { CopilotAdapter } from './copilot.js';
4
+ import { ClineAdapter } from './cline.js';
5
+ /**
6
+ * Adapter Manager class
7
+ */
8
+ export class AdapterManager {
9
+ adapters = new Map();
10
+ constructor() {
11
+ // Register built-in adapters
12
+ this.registerAdapter(new ClaudeCodeAdapter());
13
+ this.registerAdapter(new CodexAdapter());
14
+ this.registerAdapter(new CopilotAdapter());
15
+ this.registerAdapter(new ClineAdapter());
16
+ }
17
+ /**
18
+ * Register a platform adapter
19
+ */
20
+ registerAdapter(adapter) {
21
+ this.adapters.set(adapter.name, adapter);
22
+ }
23
+ /**
24
+ * Get an adapter by name
25
+ */
26
+ getAdapter(name) {
27
+ return this.adapters.get(name) || null;
28
+ }
29
+ /**
30
+ * List all registered adapters
31
+ */
32
+ listAdapters() {
33
+ return Array.from(this.adapters.values());
34
+ }
35
+ /**
36
+ * Detect which platforms are present in a project
37
+ */
38
+ async detectPlatforms(projectPath) {
39
+ const results = [];
40
+ for (const adapter of this.adapters.values()) {
41
+ const detected = await adapter.detect(projectPath);
42
+ results.push({
43
+ name: adapter.name,
44
+ displayName: adapter.displayName,
45
+ detected,
46
+ path: detected ? adapter.getOutputPath('', projectPath) : '',
47
+ });
48
+ }
49
+ return results;
50
+ }
51
+ /**
52
+ * Sync skills to all or specified platforms
53
+ */
54
+ async sync(skills, options = {}) {
55
+ const projectPath = options.projectPath || process.cwd();
56
+ const targetPlatforms = options.platforms;
57
+ const dryRun = options.dryRun || false;
58
+ const result = {
59
+ success: true,
60
+ synced: [],
61
+ skipped: [],
62
+ errors: [],
63
+ };
64
+ // Get adapters to sync to
65
+ let adaptersToUse;
66
+ if (targetPlatforms?.length) {
67
+ adaptersToUse = targetPlatforms
68
+ .map((name) => this.adapters.get(name))
69
+ .filter((a) => a !== undefined);
70
+ }
71
+ else {
72
+ adaptersToUse = this.listAdapters();
73
+ }
74
+ // Detect which platforms are present
75
+ const detectedPlatforms = await this.detectPlatforms(projectPath);
76
+ const presentPlatforms = new Set(detectedPlatforms.filter((p) => p.detected).map((p) => p.name));
77
+ // Sync each skill to each platform
78
+ for (const skill of skills) {
79
+ for (const adapter of adaptersToUse) {
80
+ // Check if platform is present
81
+ if (!presentPlatforms.has(adapter.name)) {
82
+ result.skipped.push({
83
+ skill: skill.name,
84
+ platform: adapter.name,
85
+ reason: 'Platform not detected',
86
+ });
87
+ continue;
88
+ }
89
+ // Sync
90
+ try {
91
+ if (!dryRun) {
92
+ await adapter.sync(skill, projectPath);
93
+ }
94
+ result.synced.push({
95
+ skill: skill.name,
96
+ platform: adapter.name,
97
+ path: adapter.getOutputPath(skill.name, projectPath),
98
+ });
99
+ }
100
+ catch (error) {
101
+ result.success = false;
102
+ result.errors.push({
103
+ skill: skill.name,
104
+ platform: adapter.name,
105
+ error: error instanceof Error ? error.message : String(error),
106
+ });
107
+ }
108
+ }
109
+ }
110
+ return result;
111
+ }
112
+ /**
113
+ * Sync skills to a specific platform
114
+ */
115
+ async syncToPlatform(platform, skills, projectPath = process.cwd()) {
116
+ return this.sync(skills, { projectPath, platforms: [platform] });
117
+ }
118
+ /**
119
+ * Remove a skill from all platforms
120
+ */
121
+ async removeFromAllPlatforms(skillName, projectPath = process.cwd()) {
122
+ for (const adapter of this.adapters.values()) {
123
+ try {
124
+ await adapter.remove(skillName, projectPath);
125
+ }
126
+ catch {
127
+ // Ignore errors during removal
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * Remove a skill from a specific platform
133
+ */
134
+ async removeFromPlatform(skillName, platform, projectPath = process.cwd()) {
135
+ const adapter = this.adapters.get(platform);
136
+ if (adapter) {
137
+ await adapter.remove(skillName, projectPath);
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Create a new AdapterManager instance
143
+ */
144
+ export function createAdapterManager() {
145
+ return new AdapterManager();
146
+ }
147
+ //# sourceMappingURL=adapter-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-manager.js","sourceRoot":"","sources":["../../src/adapters/adapter-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,8BAAsB,WAAY,YAAW,eAAe;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEtD;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAEtE;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAE7C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAE3D;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE;;OAEG;cACa,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASlE;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3C"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,8BAAsB,WAAY,YAAW,eAAe;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEtD;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAEtE;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAE7C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAE3D;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBnE;;OAEG;cACa,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASlE;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3C"}
@@ -2,7 +2,7 @@
2
2
  * Base adapter abstract class
3
3
  */
4
4
  import { existsSync } from 'fs';
5
- import { mkdir, writeFile, unlink, readFile } from 'fs/promises';
5
+ import { mkdir, writeFile, readFile, rm, stat } from 'fs/promises';
6
6
  import { dirname } from 'path';
7
7
  /**
8
8
  * Abstract base class for platform adapters
@@ -27,8 +27,19 @@ export class BaseAdapter {
27
27
  */
28
28
  async remove(skillName, projectPath) {
29
29
  const outputPath = this.getOutputPath(skillName, projectPath);
30
- if (existsSync(outputPath)) {
31
- await unlink(outputPath);
30
+ // Get the skill directory (parent of SKILL.md)
31
+ const skillDir = dirname(outputPath);
32
+ if (!existsSync(skillDir))
33
+ return;
34
+ try {
35
+ const stats = await stat(skillDir);
36
+ if (stats.isDirectory()) {
37
+ // Remove entire skill directory (including SKILL.md and any additional files)
38
+ await rm(skillDir, { recursive: true });
39
+ }
40
+ }
41
+ catch {
42
+ // Ignore errors during removal
32
43
  }
33
44
  }
34
45
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI/B;;GAEG;AACH,MAAM,OAAgB,WAAW;IA+B/B;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,KAAY,EAAE,WAAmB;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/C,0BAA0B;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,aAAa;QACb,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,WAAmB;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,YAAY,CAAC,IAAY;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACO,SAAS,CAAC,IAAY;QAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI/B;;GAEG;AACH,MAAM,OAAgB,WAAW;IA+B/B;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,KAAY,EAAE,WAAmB;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/C,0BAA0B;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,aAAa;QACb,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,WAAmB;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9D,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAErC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO;QAElC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,8EAA8E;gBAC9E,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,YAAY,CAAC,IAAY;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACO,SAAS,CAAC,IAAY;QAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -7,5 +7,5 @@ export { ClaudeCodeAdapter } from './claude-code.js';
7
7
  export { CodexAdapter } from './codex.js';
8
8
  export { CopilotAdapter } from './copilot.js';
9
9
  export { ClineAdapter } from './cline.js';
10
- export { AdapterManager, createAdapterManager } from './manager.js';
10
+ export { AdapterManager, createAdapterManager } from './adapter-manager.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -9,5 +9,5 @@ export { CodexAdapter } from './codex.js';
9
9
  export { CopilotAdapter } from './copilot.js';
10
10
  export { ClineAdapter } from './cline.js';
11
11
  // Manager
12
- export { AdapterManager, createAdapterManager } from './manager.js';
12
+ export { AdapterManager, createAdapterManager } from './adapter-manager.js';
13
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -19,10 +19,10 @@ export interface McpConfig {
19
19
  env?: Record<string, string>;
20
20
  }
21
21
  /**
22
- * Supported sync targets
23
- * Note: v2.0 only implements claude-code, others are reserved for future
22
+ * Supported sync targets (Agent Skills standard adopters)
23
+ * Reference: https://agentskills.io
24
24
  */
25
- export type SyncTarget = 'claude-code' | 'cursor' | 'codex' | 'copilot' | 'windsurf';
25
+ export type SyncTarget = 'claude-code' | 'cursor' | 'codex' | 'copilot';
26
26
  /**
27
27
  * Sync targets configuration
28
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,sBAAsB;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uCAAuC;IACvC,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAMlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAShE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,sBAAsB;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uCAAuC;IACvC,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAShE"}
@@ -11,7 +11,6 @@ export const DEFAULT_SYNC_TARGETS = {
11
11
  cursor: false,
12
12
  codex: false,
13
13
  copilot: false,
14
- windsurf: false,
15
14
  };
16
15
  /**
17
16
  * Create a default project configuration
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8DH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO;QACL,OAAO,EAAE,4CAA4C;QACrD,IAAI;QACJ,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,EAAE;QACP,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;KACtC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8DH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO;QACL,OAAO,EAAE,4CAA4C;QACrD,IAAI;QACJ,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,EAAE;QACP,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;KACtC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { DiscoverySource, DiscoverySearchOptions, DiscoveryResult, DiscoveryManagerOptions } from './types.js';
2
+ /**
3
+ * Discovery manager for multi-source skill search
4
+ */
5
+ export declare class DiscoveryManager {
6
+ private providers;
7
+ private skillsmpApiKey;
8
+ private githubToken;
9
+ constructor(options?: DiscoveryManagerOptions);
10
+ /**
11
+ * Get default sources based on configuration
12
+ *
13
+ * Search order: priority → local → skillsmp/awesome → github
14
+ *
15
+ * With skillsmp key: priority → local → skillsmp (40K+) → github
16
+ * Without key: priority → local → awesome (~30) → github
17
+ */
18
+ getDefaultSources(): DiscoverySource[];
19
+ /**
20
+ * Check which sources are configured
21
+ */
22
+ getConfiguredSources(): DiscoverySource[];
23
+ /**
24
+ * Set skillsmp API key (can be called after construction)
25
+ */
26
+ setSkillsmpApiKey(apiKey: string): void;
27
+ /**
28
+ * Search for skills across multiple sources
29
+ */
30
+ search(options: DiscoverySearchOptions): Promise<DiscoveryResult>;
31
+ /**
32
+ * Deduplicate skills by normalized source URL
33
+ *
34
+ * Same skill from multiple sources → merge foundIn, keep first occurrence
35
+ */
36
+ private deduplicateSkills;
37
+ /**
38
+ * Normalize source URL for deduplication
39
+ *
40
+ * Examples:
41
+ * github:user/repo#path → github:user/repo#path
42
+ * skillsmp:skill-name → skill-name (extract name)
43
+ * local:skill-name → skill-name
44
+ */
45
+ private normalizeSourceForDedup;
46
+ /**
47
+ * Clear all provider caches
48
+ */
49
+ clearAllCaches(): void;
50
+ }
51
+ /**
52
+ * Create a discovery manager
53
+ */
54
+ export declare function createDiscoveryManager(options?: DiscoveryManagerOptions): DiscoveryManager;
55
+ //# sourceMappingURL=discovery-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-manager.d.ts","sourceRoot":"","sources":["../../src/discovery/discovery-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,eAAe,EACf,sBAAsB,EACtB,eAAe,EAEf,uBAAuB,EACxB,MAAM,YAAY,CAAC;AASpB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,WAAW,CAAgB;gBAEvB,OAAO,GAAE,uBAA4B;IAiDjD;;;;;;;OAOG;IACH,iBAAiB,IAAI,eAAe,EAAE;IA6BtC;;OAEG;IACH,oBAAoB,IAAI,eAAe,EAAE;IAMzC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQvC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC;IAgDvE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAkDzB;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;IACH,cAAc,IAAI,IAAI;CAOvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,CAAC,EAAE,uBAAuB,GAChC,gBAAgB,CAElB"}
@@ -0,0 +1,217 @@
1
+ import { LocalProvider, SkillsmpProvider, AwesomeProvider, GitHubProvider, PriorityProvider, } from './providers/index.js';
2
+ /**
3
+ * Discovery manager for multi-source skill search
4
+ */
5
+ export class DiscoveryManager {
6
+ providers = new Map();
7
+ skillsmpApiKey;
8
+ githubToken;
9
+ constructor(options = {}) {
10
+ this.skillsmpApiKey = options.skillsmpApiKey || null;
11
+ this.githubToken = options.githubToken || process.env.GITHUB_TOKEN || null;
12
+ // Priority provider (first search source - user-defined repos)
13
+ this.providers.set('priority', new PriorityProvider({
14
+ githubToken: this.githubToken || undefined,
15
+ priorityRepos: options.priorityRepos,
16
+ }));
17
+ // Initialize providers
18
+ if (options.storeManager) {
19
+ this.providers.set('local', new LocalProvider({
20
+ storeManager: options.storeManager,
21
+ }));
22
+ }
23
+ // Skillsmp provider (primary when API key available)
24
+ const skillsmpProvider = new SkillsmpProvider({
25
+ apiKey: this.skillsmpApiKey || undefined,
26
+ });
27
+ if (this.skillsmpApiKey) {
28
+ skillsmpProvider.setApiKey(this.skillsmpApiKey);
29
+ }
30
+ this.providers.set('skillsmp', skillsmpProvider);
31
+ // Awesome provider (fallback, no key required)
32
+ this.providers.set('awesome', new AwesomeProvider({
33
+ githubToken: this.githubToken || undefined,
34
+ }));
35
+ // GitHub provider (supplementary)
36
+ this.providers.set('github', new GitHubProvider({
37
+ githubToken: this.githubToken || undefined,
38
+ }));
39
+ }
40
+ /**
41
+ * Get default sources based on configuration
42
+ *
43
+ * Search order: priority → local → skillsmp/awesome → github
44
+ *
45
+ * With skillsmp key: priority → local → skillsmp (40K+) → github
46
+ * Without key: priority → local → awesome (~30) → github
47
+ */
48
+ getDefaultSources() {
49
+ const sources = [];
50
+ // Priority repos first (miles990/claude-software-skills, claude-domain-skills)
51
+ if (this.providers.has('priority')) {
52
+ const priorityProvider = this.providers.get('priority');
53
+ if (priorityProvider.isConfigured()) {
54
+ sources.push('priority');
55
+ }
56
+ }
57
+ // Always include local if available
58
+ if (this.providers.has('local')) {
59
+ sources.push('local');
60
+ }
61
+ // Primary source based on API key availability
62
+ if (this.skillsmpApiKey) {
63
+ sources.push('skillsmp');
64
+ }
65
+ else {
66
+ sources.push('awesome');
67
+ }
68
+ // Always include github as supplementary
69
+ sources.push('github');
70
+ return sources;
71
+ }
72
+ /**
73
+ * Check which sources are configured
74
+ */
75
+ getConfiguredSources() {
76
+ return Array.from(this.providers.entries())
77
+ .filter(([, provider]) => provider.isConfigured())
78
+ .map(([source]) => source);
79
+ }
80
+ /**
81
+ * Set skillsmp API key (can be called after construction)
82
+ */
83
+ setSkillsmpApiKey(apiKey) {
84
+ this.skillsmpApiKey = apiKey;
85
+ const provider = this.providers.get('skillsmp');
86
+ if (provider) {
87
+ provider.setApiKey(apiKey);
88
+ }
89
+ }
90
+ /**
91
+ * Search for skills across multiple sources
92
+ */
93
+ async search(options) {
94
+ const { query, limit = 20, sources } = options;
95
+ const sourcesToQuery = sources || this.getDefaultSources();
96
+ const allSkills = [];
97
+ const errors = {};
98
+ const sourcesQueried = [];
99
+ // Query each source in parallel
100
+ const promises = sourcesToQuery.map(async (source) => {
101
+ const provider = this.providers.get(source);
102
+ if (!provider) {
103
+ errors[source] = `Provider not found: ${source}`;
104
+ return [];
105
+ }
106
+ if (!provider.isConfigured()) {
107
+ errors[source] = `Provider not configured: ${source}`;
108
+ return [];
109
+ }
110
+ try {
111
+ sourcesQueried.push(source);
112
+ const skills = await provider.search({ query, limit: limit * 2 }); // Fetch more for dedup
113
+ return skills;
114
+ }
115
+ catch (error) {
116
+ errors[source] = error.message;
117
+ return [];
118
+ }
119
+ });
120
+ const results = await Promise.all(promises);
121
+ for (const skills of results) {
122
+ allSkills.push(...skills);
123
+ }
124
+ // Deduplicate
125
+ const { skills: dedupedSkills, duplicatesRemoved } = this.deduplicateSkills(allSkills);
126
+ return {
127
+ skills: dedupedSkills.slice(0, limit),
128
+ sourcesQueried,
129
+ duplicatesRemoved,
130
+ errors: Object.keys(errors).length > 0 ? errors : undefined,
131
+ };
132
+ }
133
+ /**
134
+ * Deduplicate skills by normalized source URL
135
+ *
136
+ * Same skill from multiple sources → merge foundIn, keep first occurrence
137
+ */
138
+ deduplicateSkills(skills) {
139
+ const seen = new Map();
140
+ let duplicatesRemoved = 0;
141
+ for (const skill of skills) {
142
+ const key = this.normalizeSourceForDedup(skill.source);
143
+ if (seen.has(key)) {
144
+ // Duplicate found - merge foundIn
145
+ const existing = seen.get(key);
146
+ const newFoundIn = skill.foundIn || [skill.provider];
147
+ existing.foundIn = [
148
+ ...new Set([...(existing.foundIn || [existing.provider]), ...newFoundIn]),
149
+ ];
150
+ // Keep higher star count if available
151
+ if (skill.stars && (!existing.stars || skill.stars > existing.stars)) {
152
+ existing.stars = skill.stars;
153
+ }
154
+ duplicatesRemoved++;
155
+ }
156
+ else {
157
+ // First occurrence
158
+ seen.set(key, {
159
+ ...skill,
160
+ foundIn: skill.foundIn || [skill.provider],
161
+ });
162
+ }
163
+ }
164
+ // Sort by: name match relevance (assumed), then stars, then name
165
+ const result = Array.from(seen.values()).sort((a, b) => {
166
+ // Stars (higher first)
167
+ if (a.stars && b.stars) {
168
+ if (a.stars !== b.stars)
169
+ return b.stars - a.stars;
170
+ }
171
+ if (a.stars && !b.stars)
172
+ return -1;
173
+ if (!a.stars && b.stars)
174
+ return 1;
175
+ // Name (alphabetical)
176
+ return a.name.localeCompare(b.name);
177
+ });
178
+ return { skills: result, duplicatesRemoved };
179
+ }
180
+ /**
181
+ * Normalize source URL for deduplication
182
+ *
183
+ * Examples:
184
+ * github:user/repo#path → github:user/repo#path
185
+ * skillsmp:skill-name → skill-name (extract name)
186
+ * local:skill-name → skill-name
187
+ */
188
+ normalizeSourceForDedup(source) {
189
+ // GitHub source - use as-is (most specific)
190
+ if (source.startsWith('github:')) {
191
+ return source.toLowerCase();
192
+ }
193
+ // Extract name from other sources
194
+ const match = source.match(/^(?:local|skillsmp|awesome):(.+)$/);
195
+ if (match) {
196
+ return match[1].toLowerCase();
197
+ }
198
+ return source.toLowerCase();
199
+ }
200
+ /**
201
+ * Clear all provider caches
202
+ */
203
+ clearAllCaches() {
204
+ for (const provider of this.providers.values()) {
205
+ if ('clearCache' in provider && typeof provider.clearCache === 'function') {
206
+ provider.clearCache();
207
+ }
208
+ }
209
+ }
210
+ }
211
+ /**
212
+ * Create a discovery manager
213
+ */
214
+ export function createDiscoveryManager(options) {
215
+ return new DiscoveryManager(options);
216
+ }
217
+ //# sourceMappingURL=discovery-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-manager.js","sourceRoot":"","sources":["../../src/discovery/discovery-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Discovery module - Multi-source skill discovery
3
+ *
4
+ * Provides unified interface for searching skills across multiple sources:
5
+ * - priority: Priority repos (miles990/claude-software-skills, claude-domain-skills) - SEARCHED FIRST
6
+ * - local: Installed skills (via StoreManager)
7
+ * - skillsmp: Primary registry (40K+ skills, requires API key)
8
+ * - awesome: Fallback curated repos (no key required)
9
+ * - github: Supplementary search (topic-based with SKILL.md detection)
10
+ *
11
+ * Features:
12
+ * - Auto source selection based on API key availability
13
+ * - Priority repos searched first by default
14
+ * - Deduplication with foundIn tracking
15
+ * - Caching per provider (skillsmp/github: 5min, priority/awesome: 30min)
16
+ */
17
+ export type { DiscoverySource, DiscoveredSkill, DiscoverySearchOptions, DiscoveryResult, DiscoveryProvider, FetchSkillOptions, FetchSkillResult, DiscoveryManagerOptions, } from './types.js';
18
+ export { DiscoveryManager, createDiscoveryManager } from './discovery-manager.js';
19
+ export { LocalProvider, createLocalProvider, SkillsmpProvider, createSkillsmpProvider, AwesomeProvider, createAwesomeProvider, GitHubProvider, createGitHubProvider, PriorityProvider, createPriorityProvider, SKILLSMP_CONFIG, AWESOME_REPOS, DEFAULT_PRIORITY_REPOS, } from './providers/index.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,YAAY,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,sBAAsB,GACvB,MAAM,sBAAsB,CAAC"}