superskill 0.2.6 → 0.2.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.
- package/CHANGELOG.md +21 -0
- package/README.md +118 -134
- package/dist/commands/skill/activate.d.ts +23 -0
- package/dist/commands/skill/activate.js +170 -0
- package/dist/commands/skill/activate.js.map +1 -0
- package/dist/commands/skill/generate.d.ts +28 -0
- package/dist/commands/skill/generate.js +180 -0
- package/dist/commands/skill/generate.js.map +1 -0
- package/dist/commands/skill/helpers.d.ts +14 -0
- package/dist/commands/skill/helpers.js +82 -0
- package/dist/commands/skill/helpers.js.map +1 -0
- package/dist/commands/skill/manifest.d.ts +26 -0
- package/dist/commands/skill/manifest.js +90 -0
- package/dist/commands/skill/manifest.js.map +1 -0
- package/dist/commands/skill/marketplace.d.ts +8 -122
- package/dist/commands/skill/marketplace.js +12 -590
- package/dist/commands/skill/marketplace.js.map +1 -1
- package/dist/commands/skill/resolve.d.ts +47 -0
- package/dist/commands/skill/resolve.js +101 -0
- package/dist/commands/skill/resolve.js.map +1 -0
- package/dist/commands/skill/web-discovery.d.ts +24 -4
- package/dist/commands/skill/web-discovery.js +108 -2
- package/dist/commands/skill/web-discovery.js.map +1 -1
- package/dist/lib/analytics.d.ts +55 -0
- package/dist/lib/analytics.js +167 -0
- package/dist/lib/analytics.js.map +1 -0
- package/dist/lib/skill-cache.d.ts +34 -0
- package/dist/lib/skill-cache.js +150 -0
- package/dist/lib/skill-cache.js.map +1 -0
- package/dist/setup/postinstall.js +21 -0
- package/dist/setup/postinstall.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,592 +1,14 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later OR Commercial
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
for (const skill of filtered) {
|
|
15
|
-
repoCount.set(skill.repo, (repoCount.get(skill.repo) ?? 0) + 1);
|
|
16
|
-
for (const d of skill.domains) {
|
|
17
|
-
const set = domainSkills.get(d) ?? new Set();
|
|
18
|
-
set.add(skill.id);
|
|
19
|
-
domainSkills.set(d, set);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return {
|
|
23
|
-
total: filtered.length,
|
|
24
|
-
repos: Array.from(repoCount.entries())
|
|
25
|
-
.map(([repo, count]) => ({ repo, count }))
|
|
26
|
-
.sort((a, b) => b.count - a.count),
|
|
27
|
-
domains: Array.from(domainSkills.entries())
|
|
28
|
-
.map(([id, skills]) => ({
|
|
29
|
-
id,
|
|
30
|
-
name: DOMAINS.find((d) => d.id === id)?.name ?? id,
|
|
31
|
-
skill_count: skills.size,
|
|
32
|
-
}))
|
|
33
|
-
.sort((a, b) => b.skill_count - a.skill_count),
|
|
34
|
-
skills: filtered,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export async function collisionsCommand() {
|
|
38
|
-
const collisions = detectCollisions();
|
|
39
|
-
const affected = new Set();
|
|
40
|
-
const mapped = collisions.map((c) => {
|
|
41
|
-
const skills = c.skills.map((s) => {
|
|
42
|
-
affected.add(s.id);
|
|
43
|
-
return { id: s.id, name: s.name, repo: s.repo, description: s.description };
|
|
44
|
-
});
|
|
45
|
-
return {
|
|
46
|
-
domain_id: c.domain.id,
|
|
47
|
-
domain_name: c.domain.name,
|
|
48
|
-
skills,
|
|
49
|
-
};
|
|
50
|
-
});
|
|
51
|
-
return {
|
|
52
|
-
collisions: mapped,
|
|
53
|
-
total_collision_domains: mapped.length,
|
|
54
|
-
total_affected_skills: affected.size,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
export async function resolveCommand(options) {
|
|
58
|
-
const profileName = options.profile ?? "ecc-first";
|
|
59
|
-
const profile = getProfile(profileName);
|
|
60
|
-
if (!profile) {
|
|
61
|
-
const available = BUILT_IN_PROFILES.map((p) => p.name).join(", ");
|
|
62
|
-
return {
|
|
63
|
-
success: false,
|
|
64
|
-
profile_name: profileName,
|
|
65
|
-
resolutions: [],
|
|
66
|
-
active_skills: [],
|
|
67
|
-
error: `Unknown profile: "${profileName}". Available: ${available}`,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
const collisions = detectCollisions();
|
|
71
|
-
const collisionDomainIds = new Set(collisions.map((c) => c.domain.id));
|
|
72
|
-
// Build resolution report
|
|
73
|
-
const resolutions = profile.resolutions.map((r) => {
|
|
74
|
-
const collision = collisions.find((c) => c.domain.id === r.domain_id);
|
|
75
|
-
return {
|
|
76
|
-
domain: r.domain_id,
|
|
77
|
-
chosen: r.chosen_skill_id,
|
|
78
|
-
alternatives: collision
|
|
79
|
-
? collision.skills.filter((s) => s.id !== r.chosen_skill_id).map((s) => s.id)
|
|
80
|
-
: [],
|
|
81
|
-
};
|
|
82
|
-
});
|
|
83
|
-
// Collect active skill IDs: chosen winners + all non-colliding skills
|
|
84
|
-
const activeSkillIds = new Set();
|
|
85
|
-
// Add collision winners
|
|
86
|
-
for (const r of profile.resolutions) {
|
|
87
|
-
activeSkillIds.add(r.chosen_skill_id);
|
|
88
|
-
}
|
|
89
|
-
// Add non-colliding skills (domains with only one repo)
|
|
90
|
-
for (const skill of CATALOG) {
|
|
91
|
-
const allDomainsNonColliding = skill.domains.every((d) => !collisionDomainIds.has(d));
|
|
92
|
-
if (allDomainsNonColliding) {
|
|
93
|
-
activeSkillIds.add(skill.id);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return {
|
|
97
|
-
success: true,
|
|
98
|
-
profile_name: profileName,
|
|
99
|
-
resolutions,
|
|
100
|
-
active_skills: [...activeSkillIds].sort(),
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
async function fetchAllSkills(skillIds, concurrency) {
|
|
104
|
-
const results = new Map();
|
|
105
|
-
// Split into chunks to bound concurrency
|
|
106
|
-
const chunks = [];
|
|
107
|
-
for (let i = 0; i < skillIds.length; i += concurrency) {
|
|
108
|
-
chunks.push(skillIds.slice(i, i + concurrency));
|
|
109
|
-
}
|
|
110
|
-
for (const chunk of chunks) {
|
|
111
|
-
const settled = await Promise.allSettled(chunk.map(async (id) => {
|
|
112
|
-
const entry = CATALOG.find((s) => s.id === id);
|
|
113
|
-
if (!entry)
|
|
114
|
-
return { id, error: "not in catalog" };
|
|
115
|
-
const content = await fetchSkillContent(entry.source);
|
|
116
|
-
return { id, content };
|
|
117
|
-
}));
|
|
118
|
-
for (let i = 0; i < settled.length; i++) {
|
|
119
|
-
const id = chunk[i];
|
|
120
|
-
const r = settled[i];
|
|
121
|
-
if (r.status === "fulfilled") {
|
|
122
|
-
const val = r.value;
|
|
123
|
-
if ("error" in val) {
|
|
124
|
-
results.set(id, { error: val.error });
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
results.set(id, { content: val.content });
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
results.set(id, { error: String(r.reason) });
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return results;
|
|
136
|
-
}
|
|
137
|
-
function classifySkill(skillId, collisionWinnerIds) {
|
|
138
|
-
// Collision winners always go to core
|
|
139
|
-
if (collisionWinnerIds.has(skillId))
|
|
140
|
-
return 'core';
|
|
141
|
-
const entry = CATALOG.find((s) => s.id === skillId);
|
|
142
|
-
if (!entry)
|
|
143
|
-
return 'reference';
|
|
144
|
-
// Use highest-priority domain
|
|
145
|
-
let best = 'reference';
|
|
146
|
-
for (const domain of entry.domains) {
|
|
147
|
-
const priority = DOMAIN_PRIORITY[domain];
|
|
148
|
-
if (priority === 'core')
|
|
149
|
-
return 'core';
|
|
150
|
-
if (priority === 'extended')
|
|
151
|
-
best = 'extended';
|
|
152
|
-
}
|
|
153
|
-
return best;
|
|
154
|
-
}
|
|
155
|
-
// ── Generate Command ──────────────────────────────────
|
|
156
|
-
export async function generateCommand(vaultFs, _vaultPath, options) {
|
|
157
|
-
const CONCURRENCY = 8;
|
|
158
|
-
// 1. Resolve
|
|
159
|
-
const resolution = await resolveCommand({ profile: options.profile });
|
|
160
|
-
if (!resolution.success) {
|
|
161
|
-
return { success: false, error: resolution.error };
|
|
162
|
-
}
|
|
163
|
-
// 2. Determine active skills
|
|
164
|
-
let activeSkillIds;
|
|
165
|
-
if (options.includeNonColliding === false) {
|
|
166
|
-
activeSkillIds = resolution.resolutions.map((r) => r.chosen);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
activeSkillIds = resolution.active_skills;
|
|
170
|
-
}
|
|
171
|
-
// 2b. Domain filter: only keep skills whose domains overlap with relevantDomains
|
|
172
|
-
let filteredOut = 0;
|
|
173
|
-
if (options.relevantDomains && options.relevantDomains.length > 0) {
|
|
174
|
-
const relevantSet = new Set(options.relevantDomains);
|
|
175
|
-
const before = activeSkillIds.length;
|
|
176
|
-
activeSkillIds = activeSkillIds.filter((id) => {
|
|
177
|
-
const entry = CATALOG.find((s) => s.id === id);
|
|
178
|
-
if (!entry)
|
|
179
|
-
return true; // keep unknowns, they'll fail at fetch
|
|
180
|
-
return entry.domains.some((d) => relevantSet.has(d));
|
|
181
|
-
});
|
|
182
|
-
filteredOut = before - activeSkillIds.length;
|
|
183
|
-
}
|
|
184
|
-
// Track which skill IDs are collision winners (always core)
|
|
185
|
-
const collisionWinnerIds = new Set(resolution.resolutions.map((r) => r.chosen));
|
|
186
|
-
// 3. Parallel fetch
|
|
187
|
-
const fetchResults = await fetchAllSkills(activeSkillIds, CONCURRENCY);
|
|
188
|
-
const fetchErrors = [];
|
|
189
|
-
const buckets = {
|
|
190
|
-
core: [],
|
|
191
|
-
extended: [],
|
|
192
|
-
reference: [],
|
|
193
|
-
};
|
|
194
|
-
for (const skillId of activeSkillIds) {
|
|
195
|
-
const result = fetchResults.get(skillId);
|
|
196
|
-
if (!result) {
|
|
197
|
-
fetchErrors.push(`${skillId}: fetch result missing`);
|
|
198
|
-
continue;
|
|
199
|
-
}
|
|
200
|
-
if ("error" in result) {
|
|
201
|
-
fetchErrors.push(`${skillId}: ${result.error}`);
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
const entry = CATALOG.find((s) => s.id === skillId);
|
|
205
|
-
if (!entry) {
|
|
206
|
-
fetchErrors.push(`${skillId}: not found in catalog`);
|
|
207
|
-
continue;
|
|
208
|
-
}
|
|
209
|
-
const layer = classifySkill(skillId, collisionWinnerIds);
|
|
210
|
-
buckets[layer].push({
|
|
211
|
-
skill: entry,
|
|
212
|
-
section: formatSection(entry, result.content),
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
const totalFetched = buckets.core.length + buckets.extended.length + buckets.reference.length;
|
|
216
|
-
if (totalFetched === 0) {
|
|
217
|
-
return {
|
|
218
|
-
success: false,
|
|
219
|
-
error: "No skills could be fetched",
|
|
220
|
-
fetch_errors: fetchErrors,
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
// 4. Assemble each layer
|
|
224
|
-
const profileName = resolution.profile_name;
|
|
225
|
-
function assembleLayer(layer) {
|
|
226
|
-
const items = buckets[layer];
|
|
227
|
-
const sections = items.map((i) => i.section);
|
|
228
|
-
const domainsCovered = new Set(items.flatMap((i) => i.skill.domains));
|
|
229
|
-
return assembleSuperSkill({
|
|
230
|
-
layer,
|
|
231
|
-
profileName,
|
|
232
|
-
sections,
|
|
233
|
-
skillCount: sections.length,
|
|
234
|
-
domainCount: domainsCovered.size,
|
|
235
|
-
fetchErrors: layer === 'core' ? fetchErrors : [],
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
const coreContent = assembleLayer('core');
|
|
239
|
-
const extContent = assembleLayer('extended');
|
|
240
|
-
const refContent = assembleLayer('reference');
|
|
241
|
-
// 5. Pipe mode — write to stdout, skip vault
|
|
242
|
-
if (options.pipe) {
|
|
243
|
-
const pipeLayer = options.pipeLayer ?? 'core';
|
|
244
|
-
let content;
|
|
245
|
-
if (pipeLayer === 'all') {
|
|
246
|
-
content = [coreContent, extContent, refContent].join('\n\n');
|
|
247
|
-
}
|
|
248
|
-
else if (pipeLayer === 'extended') {
|
|
249
|
-
content = extContent;
|
|
250
|
-
}
|
|
251
|
-
else if (pipeLayer === 'reference') {
|
|
252
|
-
content = refContent;
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
content = coreContent;
|
|
256
|
-
}
|
|
257
|
-
return {
|
|
258
|
-
success: true,
|
|
259
|
-
pipe_content: content,
|
|
260
|
-
total_skills: totalFetched,
|
|
261
|
-
fetch_errors: fetchErrors.length > 0 ? fetchErrors : undefined,
|
|
262
|
-
filtered_out: filteredOut > 0 ? filteredOut : undefined,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
// 6. Write three files
|
|
266
|
-
const corePath = "skills/super-skill/SKILL.md";
|
|
267
|
-
const extPath = "skills/super-skill/SKILL-extended.md";
|
|
268
|
-
const refPath = "skills/super-skill/SKILL-reference.md";
|
|
269
|
-
await vaultFs.write(corePath, coreContent);
|
|
270
|
-
await vaultFs.write(extPath, extContent);
|
|
271
|
-
await vaultFs.write(refPath, refContent);
|
|
272
|
-
const estimateTokens = (s) => Math.ceil(s.length / 4);
|
|
273
|
-
return {
|
|
274
|
-
success: true,
|
|
275
|
-
layers: {
|
|
276
|
-
core: {
|
|
277
|
-
path: corePath,
|
|
278
|
-
skill_count: buckets.core.length,
|
|
279
|
-
estimated_tokens: estimateTokens(coreContent),
|
|
280
|
-
},
|
|
281
|
-
extended: {
|
|
282
|
-
path: extPath,
|
|
283
|
-
skill_count: buckets.extended.length,
|
|
284
|
-
estimated_tokens: estimateTokens(extContent),
|
|
285
|
-
},
|
|
286
|
-
reference: {
|
|
287
|
-
path: refPath,
|
|
288
|
-
skill_count: buckets.reference.length,
|
|
289
|
-
estimated_tokens: estimateTokens(refContent),
|
|
290
|
-
},
|
|
291
|
-
},
|
|
292
|
-
total_skills: totalFetched,
|
|
293
|
-
fetch_errors: fetchErrors.length > 0 ? fetchErrors : undefined,
|
|
294
|
-
filtered_out: filteredOut > 0 ? filteredOut : undefined,
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
// ── Manifest Command ──────────────────────────────────
|
|
298
|
-
export async function generateManifest(options) {
|
|
299
|
-
const resolution = await resolveCommand({ profile: options.profile });
|
|
300
|
-
if (!resolution.success) {
|
|
301
|
-
return { success: false, error: resolution.error };
|
|
302
|
-
}
|
|
303
|
-
const collisionWinnerIds = new Set(resolution.resolutions.map((r) => r.chosen));
|
|
304
|
-
const manifest = [];
|
|
305
|
-
for (const skillId of resolution.active_skills) {
|
|
306
|
-
const entry = CATALOG.find((s) => s.id === skillId);
|
|
307
|
-
if (!entry)
|
|
308
|
-
continue;
|
|
309
|
-
const layer = classifySkill(skillId, collisionWinnerIds);
|
|
310
|
-
manifest.push({
|
|
311
|
-
id: entry.id,
|
|
312
|
-
name: entry.name,
|
|
313
|
-
domains: entry.domains,
|
|
314
|
-
layer,
|
|
315
|
-
description: entry.description,
|
|
316
|
-
estimated_tokens: 2000,
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
const total_estimated_tokens = manifest.reduce((sum, e) => sum + e.estimated_tokens, 0);
|
|
320
|
-
return {
|
|
321
|
-
success: true,
|
|
322
|
-
manifest,
|
|
323
|
-
total_skills: manifest.length,
|
|
324
|
-
total_estimated_tokens,
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
// ── Load Skill Content ────────────────────────────────
|
|
328
|
-
export async function loadSkillContent(skillId) {
|
|
329
|
-
const entry = CATALOG.find((s) => s.id === skillId);
|
|
330
|
-
// If not in catalog, check if it's a GitHub URL (web-discovered skill)
|
|
331
|
-
if (!entry) {
|
|
332
|
-
if (skillId.startsWith("https://github.com/") || skillId.startsWith("https://raw.githubusercontent.com/")) {
|
|
333
|
-
const { fetchDiscoveredSkill } = await import("./web-discovery.js");
|
|
334
|
-
const result = await fetchDiscoveredSkill(skillId);
|
|
335
|
-
if (!result.success) {
|
|
336
|
-
return { success: false, error: result.error };
|
|
337
|
-
}
|
|
338
|
-
const name = skillId.split("/").filter(Boolean).slice(-2, -1)[0]?.replace(/-/g, " ").replace(/\b\w/g, c => c.toUpperCase()) ?? "Community Skill";
|
|
339
|
-
const content = `## ${name}\n<!-- source: community | url: ${skillId} -->\n<!-- ⚠️ Unverified community skill -->\n\n${result.content}`;
|
|
340
|
-
return {
|
|
341
|
-
success: true,
|
|
342
|
-
content,
|
|
343
|
-
skill_name: name,
|
|
344
|
-
estimated_tokens: Math.ceil(content.length / 4),
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
return { success: false, error: `Skill not found in catalog: ${skillId}` };
|
|
348
|
-
}
|
|
349
|
-
try {
|
|
350
|
-
const rawContent = await fetchSkillContent(entry.source);
|
|
351
|
-
const content = formatSection(entry, rawContent);
|
|
352
|
-
return {
|
|
353
|
-
success: true,
|
|
354
|
-
content,
|
|
355
|
-
skill_name: entry.name,
|
|
356
|
-
estimated_tokens: Math.ceil(content.length / 4),
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
catch (e) {
|
|
360
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
361
|
-
return { success: false, error: `Failed to fetch skill content: ${msg}` };
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
// ── Smart Skill Activator ─────────────────────────────
|
|
365
|
-
const TASK_DOMAIN_MAP = [
|
|
366
|
-
// Core workflow domains
|
|
367
|
-
{ patterns: [/brainstorm/i, /ideate/i, /explore ideas/i, /think through/i, /what if/i], domains: ["brainstorming"] },
|
|
368
|
-
{ patterns: [/test/i, /tdd/i, /spec/i, /coverage/i, /unit test/i, /assert/i], domains: ["tdd"] },
|
|
369
|
-
{ patterns: [/review/i, /code review/i, /pr review/i, /pull request/i, /feedback/i], domains: ["code-review"] },
|
|
370
|
-
{ patterns: [/plan/i, /architect/i, /design.*system/i, /implementation plan/i, /roadmap/i], domains: ["planning"] },
|
|
371
|
-
{ patterns: [/debug/i, /investigate/i, /fix.*bug/i, /troubleshoot/i, /error/i, /broken/i], domains: ["debugging"] },
|
|
372
|
-
{ patterns: [/secur/i, /vulnerab/i, /owasp/i, /auth.*review/i, /pentest/i, /hardening/i], domains: ["security"] },
|
|
373
|
-
{ patterns: [/deploy/i, /\bship\b/i, /release/i, /ci.?cd/i, /rollback/i, /production/i], domains: ["shipping"] },
|
|
374
|
-
{ patterns: [/verify/i, /validate/i, /check.*build/i, /lint/i, /type.?check/i], domains: ["verification"] },
|
|
375
|
-
{ patterns: [/frontend/i, /ui\b/i, /ux\b/i, /component/i, /design.*page/i, /css/i, /tailwind/i, /layout/i], domains: ["frontend-design"] },
|
|
376
|
-
{ patterns: [/agent/i, /orchestrat/i, /subagent/i, /parallel.*agent/i, /multi.*agent/i], domains: ["agent-orchestration"] },
|
|
377
|
-
{ patterns: [/database/i, /sql\b/i, /schema/i, /migration/i, /postgres/i, /mysql/i, /supabase/i, /sql.*query/i, /db.*query/i], domains: ["database"] },
|
|
378
|
-
// Language and framework domains
|
|
379
|
-
{ patterns: [/golang/i, /go test/i, /goroutine/i, /go mod/i, /go func/i, /go package/i], domains: ["go"] },
|
|
380
|
-
{ patterns: [/python/i, /pytest/i, /pip/i, /django/i, /flask/i, /fastapi/i], domains: ["python"] },
|
|
381
|
-
{ patterns: [/django/i, /drf\b/i, /django rest/i], domains: ["django"] },
|
|
382
|
-
{ patterns: [/spring/i, /spring boot/i, /java\b/i, /jpa\b/i, /hibernate/i, /maven/i, /gradle/i], domains: ["spring-boot", "java"] },
|
|
383
|
-
{ patterns: [/swift/i, /swiftui/i, /ios\b/i, /xcode/i, /uikit/i], domains: ["swift"] },
|
|
384
|
-
{ patterns: [/\bc\+\+/i, /cpp\b/i, /cmake/i, /clang/i], domains: ["cpp"] },
|
|
385
|
-
{ patterns: [/docker/i, /container/i, /compose/i, /dockerfile/i, /k8s/i, /kubernetes/i], domains: ["docker"] },
|
|
386
|
-
// API and patterns
|
|
387
|
-
{ patterns: [/api design/i, /rest api/i, /endpoint/i, /pagination/i, /rate limit/i], domains: ["api-design"] },
|
|
388
|
-
{ patterns: [/react/i, /next\.?js/i, /state management/i, /hooks/i, /redux/i], domains: ["frontend-patterns"] },
|
|
389
|
-
{ patterns: [/express/i, /node\.?js/i, /server.*pattern/i, /middleware/i, /backend/i], domains: ["backend-patterns"] },
|
|
390
|
-
{ patterns: [/coding standard/i, /style guide/i, /convention/i, /best practice/i], domains: ["coding-standards"] },
|
|
391
|
-
{ patterns: [/git/i, /branch/i, /worktree/i, /merge/i, /rebase/i], domains: ["git-workflow"] },
|
|
392
|
-
// Content and business
|
|
393
|
-
{ patterns: [/write.*article/i, /blog.*post/i, /content/i, /newsletter/i, /copywriting/i], domains: ["content-business"] },
|
|
394
|
-
{ patterns: [/market.*research/i, /competitor/i, /competitive/i, /due diligence/i, /market siz/i], domains: ["content-business"] },
|
|
395
|
-
{ patterns: [/investor/i, /pitch.*deck/i, /fundrais/i, /outreach/i, /cold email/i], domains: ["content-business"] },
|
|
396
|
-
{ patterns: [/linkedin/i, /twitter/i, /social media/i, /marketing/i, /launch post/i], domains: ["content-business"] },
|
|
397
|
-
// 3D and animation
|
|
398
|
-
{ patterns: [/three\.?js/i, /webgl/i, /3d\b/i, /animation/i, /gsap/i, /framer/i], domains: ["3d-animation"] },
|
|
399
|
-
// Agent engineering
|
|
400
|
-
{ patterns: [/agent.*harness/i, /agent.*eval/i, /cost.*optim/i, /agent.*loop/i, /agent.*engineer/i, /eval.*pipeline/i], domains: ["agent-engineering"] },
|
|
401
|
-
// Meta / tooling
|
|
402
|
-
{ patterns: [/skill.*manage/i, /compaction/i, /skill.*install/i, /learning.*capture/i], domains: ["meta"] },
|
|
403
|
-
];
|
|
404
|
-
export function matchTaskToDomains(task) {
|
|
405
|
-
const matched = new Set();
|
|
406
|
-
for (const entry of TASK_DOMAIN_MAP) {
|
|
407
|
-
for (const pattern of entry.patterns) {
|
|
408
|
-
if (pattern.test(task)) {
|
|
409
|
-
for (const d of entry.domains)
|
|
410
|
-
matched.add(d);
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
return [...matched];
|
|
415
|
-
}
|
|
416
|
-
export async function activateSkills(options) {
|
|
417
|
-
// Direct skill load by ID
|
|
418
|
-
if (options.skill_id) {
|
|
419
|
-
const result = await loadSkillContent(options.skill_id);
|
|
420
|
-
if (!result.success) {
|
|
421
|
-
return { success: false, skills_loaded: [], content: "", matched_domains: [], total_tokens: 0, error: result.error };
|
|
422
|
-
}
|
|
423
|
-
const entry = CATALOG.find((s) => s.id === options.skill_id);
|
|
424
|
-
return {
|
|
425
|
-
success: true,
|
|
426
|
-
skills_loaded: [{ id: options.skill_id, name: entry?.name ?? options.skill_id, domains: entry?.domains ?? [] }],
|
|
427
|
-
content: result.content,
|
|
428
|
-
matched_domains: entry?.domains ?? [],
|
|
429
|
-
total_tokens: result.estimated_tokens ?? 0,
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
// Route 1: LLM passed domain directly (preferred — LLM understands intent best)
|
|
433
|
-
// Route 2: Keyword fallback from task description
|
|
434
|
-
let matchedDomains;
|
|
435
|
-
if (options.domain) {
|
|
436
|
-
// LLM picked the domain(s) — trust it. Support comma-separated.
|
|
437
|
-
matchedDomains = options.domain.split(",").map((d) => d.trim()).filter((d) => DOMAINS.some((dom) => dom.id === d));
|
|
438
|
-
}
|
|
439
|
-
else {
|
|
440
|
-
matchedDomains = matchTaskToDomains(options.task);
|
|
441
|
-
}
|
|
442
|
-
if (matchedDomains.length === 0) {
|
|
443
|
-
// Web discovery fallback — search GitHub for community skills
|
|
444
|
-
const discovery = await searchGitHubForSkills(options.task);
|
|
445
|
-
const content = formatDiscoveryResults(options.task, discovery.results);
|
|
446
|
-
return {
|
|
447
|
-
success: true,
|
|
448
|
-
skills_loaded: [],
|
|
449
|
-
content,
|
|
450
|
-
matched_domains: [],
|
|
451
|
-
total_tokens: 0,
|
|
452
|
-
};
|
|
453
|
-
}
|
|
454
|
-
// Resolve which skill wins per domain
|
|
455
|
-
const resolution = await resolveCommand({ profile: options.profile });
|
|
456
|
-
const winnerMap = new Map();
|
|
457
|
-
for (const r of resolution.resolutions) {
|
|
458
|
-
winnerMap.set(r.domain, r.chosen);
|
|
459
|
-
}
|
|
460
|
-
// For each matched domain, load collision winner + up to 2 alternatives (max 3 per domain)
|
|
461
|
-
const MAX_SKILLS_PER_DOMAIN = 3;
|
|
462
|
-
const skillsToLoad = [];
|
|
463
|
-
const seenIds = new Set();
|
|
464
|
-
for (const domain of matchedDomains) {
|
|
465
|
-
let domainCount = 0;
|
|
466
|
-
// Collision winner goes first if present
|
|
467
|
-
const winnerId = winnerMap.get(domain);
|
|
468
|
-
if (winnerId && !seenIds.has(winnerId)) {
|
|
469
|
-
const entry = CATALOG.find((s) => s.id === winnerId);
|
|
470
|
-
if (entry) {
|
|
471
|
-
skillsToLoad.push(entry);
|
|
472
|
-
seenIds.add(winnerId);
|
|
473
|
-
domainCount++;
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
// Then other skills in this domain, up to the cap
|
|
477
|
-
for (const skill of CATALOG) {
|
|
478
|
-
if (domainCount >= MAX_SKILLS_PER_DOMAIN)
|
|
479
|
-
break;
|
|
480
|
-
if (skill.domains.includes(domain) && !seenIds.has(skill.id)) {
|
|
481
|
-
skillsToLoad.push(skill);
|
|
482
|
-
seenIds.add(skill.id);
|
|
483
|
-
domainCount++;
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
if (skillsToLoad.length === 0) {
|
|
488
|
-
return { success: true, skills_loaded: [], content: "No skills available for matched domains: " + matchedDomains.join(", "), matched_domains: matchedDomains, total_tokens: 0 };
|
|
489
|
-
}
|
|
490
|
-
// Fetch all matched skills in parallel
|
|
491
|
-
const fetchResults = await Promise.allSettled(skillsToLoad.map(async (entry) => {
|
|
492
|
-
const raw = await fetchSkillContent(entry.source);
|
|
493
|
-
return { entry, content: formatSection(entry, raw) };
|
|
494
|
-
}));
|
|
495
|
-
const sections = [];
|
|
496
|
-
const loaded = [];
|
|
497
|
-
for (const result of fetchResults) {
|
|
498
|
-
if (result.status === "fulfilled") {
|
|
499
|
-
sections.push(result.value.content);
|
|
500
|
-
loaded.push({
|
|
501
|
-
id: result.value.entry.id,
|
|
502
|
-
name: result.value.entry.name,
|
|
503
|
-
domains: result.value.entry.domains,
|
|
504
|
-
});
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
const content = sections.join("\n\n---\n\n");
|
|
508
|
-
return {
|
|
509
|
-
success: true,
|
|
510
|
-
skills_loaded: loaded,
|
|
511
|
-
content,
|
|
512
|
-
matched_domains: matchedDomains,
|
|
513
|
-
total_tokens: Math.ceil(content.length / 4),
|
|
514
|
-
};
|
|
515
|
-
}
|
|
516
|
-
// ── Skill Awareness (for resume/context injection) ────
|
|
517
|
-
export function getSkillAwarenessBlock() {
|
|
518
|
-
return [
|
|
519
|
-
"",
|
|
520
|
-
"## SuperSkill — Expert Methodologies",
|
|
521
|
-
"",
|
|
522
|
-
"You have **superskill** — your skill package manager. Call it whenever you're about to:",
|
|
523
|
-
"",
|
|
524
|
-
"- Write, review, test, or debug code",
|
|
525
|
-
"- Plan, architect, or design something",
|
|
526
|
-
"- Ship, deploy, or secure a system",
|
|
527
|
-
"- Research, write content, or prepare materials",
|
|
528
|
-
"",
|
|
529
|
-
"Just describe the task: `superskill({task: \"write tests for my Go API\"})`",
|
|
530
|
-
"SuperSkill finds the right methodology from " + CATALOG.length + "+ skills across " + new Set(CATALOG.map(s => s.repo)).size + " repos.",
|
|
531
|
-
"",
|
|
532
|
-
].join("\n");
|
|
533
|
-
}
|
|
534
|
-
// ── Helpers ──────────────────────────────────────────
|
|
535
|
-
async function fetchSkillContent(source) {
|
|
536
|
-
if (source.startsWith("http://") || source.startsWith("https://")) {
|
|
537
|
-
const res = await fetch(source);
|
|
538
|
-
if (!res.ok)
|
|
539
|
-
throw new Error(`HTTP ${res.status} ${res.statusText}`);
|
|
540
|
-
return res.text();
|
|
541
|
-
}
|
|
542
|
-
return readFile(source, "utf-8");
|
|
543
|
-
}
|
|
544
|
-
function stripFrontmatter(content) {
|
|
545
|
-
return content.replace(/^---[\s\S]*?---\n*/, "").trim();
|
|
546
|
-
}
|
|
547
|
-
function formatSection(skill, rawContent) {
|
|
548
|
-
const body = stripFrontmatter(rawContent);
|
|
549
|
-
return [
|
|
550
|
-
`## ${skill.name}`,
|
|
551
|
-
`<!-- source: ${skill.repo} | domains: ${skill.domains.join(", ")} | id: ${skill.id} -->`,
|
|
552
|
-
"",
|
|
553
|
-
body,
|
|
554
|
-
].join("\n");
|
|
555
|
-
}
|
|
556
|
-
function assembleSuperSkill(opts) {
|
|
557
|
-
const now = new Date().toISOString();
|
|
558
|
-
const layerLabel = {
|
|
559
|
-
core: "Core — always loaded",
|
|
560
|
-
extended: "Extended — medium+ context models",
|
|
561
|
-
reference: "Reference — large context models only",
|
|
562
|
-
};
|
|
563
|
-
const estimatedTokens = Math.ceil(opts.sections.join("").length / 4);
|
|
564
|
-
const lines = [
|
|
565
|
-
"---",
|
|
566
|
-
"name: super-skill",
|
|
567
|
-
`layer: ${opts.layer}`,
|
|
568
|
-
`description: ${layerLabel[opts.layer]} — ${opts.skillCount} skills across ${opts.domainCount} domains`,
|
|
569
|
-
`version: ${now.slice(0, 10)}`,
|
|
570
|
-
`estimated_tokens: ${estimatedTokens}`,
|
|
571
|
-
"---",
|
|
572
|
-
"",
|
|
573
|
-
`# Super Skill — ${opts.layer.charAt(0).toUpperCase() + opts.layer.slice(1)}`,
|
|
574
|
-
"",
|
|
575
|
-
`> Generated by **superskill** skill marketplace`,
|
|
576
|
-
`> Profile: **${opts.profileName}** | Layer: **${opts.layer}** | Skills: **${opts.skillCount}** | Domains: **${opts.domainCount}** | Generated: ${now}`,
|
|
577
|
-
"",
|
|
578
|
-
];
|
|
579
|
-
if (opts.fetchErrors.length > 0) {
|
|
580
|
-
lines.push("## Fetch Errors", "");
|
|
581
|
-
for (const err of opts.fetchErrors) {
|
|
582
|
-
lines.push(`- ${err}`);
|
|
583
|
-
}
|
|
584
|
-
lines.push("");
|
|
585
|
-
}
|
|
586
|
-
if (opts.sections.length > 0) {
|
|
587
|
-
lines.push(opts.sections.join("\n\n---\n\n"));
|
|
588
|
-
lines.push("");
|
|
589
|
-
}
|
|
590
|
-
return lines.join("\n");
|
|
591
|
-
}
|
|
2
|
+
//
|
|
3
|
+
// Barrel re-export — this file preserves backward compatibility.
|
|
4
|
+
// All logic has been split into focused modules:
|
|
5
|
+
// activate.ts — activateSkills, matchTaskToDomains, TASK_DOMAIN_MAP, ActivateResult
|
|
6
|
+
// resolve.ts — resolveCommand, collisionsCommand, catalogCommand + result types
|
|
7
|
+
// generate.ts — generateCommand, LayerInfo, GenerateResult
|
|
8
|
+
// manifest.ts — generateManifest, loadSkillContent, getSkillAwarenessBlock + types
|
|
9
|
+
// helpers.ts — shared helpers (fetchSkillContent, formatSection, etc.)
|
|
10
|
+
export { catalogCommand, collisionsCommand, resolveCommand } from "./resolve.js";
|
|
11
|
+
export { generateCommand } from "./generate.js";
|
|
12
|
+
export { generateManifest, loadSkillContent, getSkillAwarenessBlock } from "./manifest.js";
|
|
13
|
+
export { activateSkills, matchTaskToDomains, TASK_DOMAIN_MAP } from "./activate.js";
|
|
592
14
|
//# sourceMappingURL=marketplace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/commands/skill/marketplace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/commands/skill/marketplace.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,iEAAiE;AACjE,iDAAiD;AACjD,uFAAuF;AACvF,oFAAoF;AACpF,8DAA8D;AAC9D,sFAAsF;AACtF,2EAA2E;AAE3E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGjF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAG3F,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|