superskill 0.2.6 → 0.3.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 (113) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +0 -4
  3. package/README.md +118 -134
  4. package/dist/cli.js +5 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/init.js +1 -1
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/skill/activate.d.ts +28 -0
  9. package/dist/commands/skill/activate.js +207 -0
  10. package/dist/commands/skill/activate.js.map +1 -0
  11. package/dist/commands/skill/catalog.d.ts +38 -3
  12. package/dist/commands/skill/catalog.js +125 -178
  13. package/dist/commands/skill/catalog.js.map +1 -1
  14. package/dist/commands/skill/generate.d.ts +28 -0
  15. package/dist/commands/skill/generate.js +180 -0
  16. package/dist/commands/skill/generate.js.map +1 -0
  17. package/dist/commands/skill/helpers.d.ts +14 -0
  18. package/dist/commands/skill/helpers.js +82 -0
  19. package/dist/commands/skill/helpers.js.map +1 -0
  20. package/dist/commands/skill/install.js +1 -1
  21. package/dist/commands/skill/install.js.map +1 -1
  22. package/dist/commands/skill/manifest.d.ts +26 -0
  23. package/dist/commands/skill/manifest.js +90 -0
  24. package/dist/commands/skill/manifest.js.map +1 -0
  25. package/dist/commands/skill/marketplace.d.ts +8 -122
  26. package/dist/commands/skill/marketplace.js +13 -591
  27. package/dist/commands/skill/marketplace.js.map +1 -1
  28. package/dist/commands/skill/resolve.d.ts +47 -0
  29. package/dist/commands/skill/resolve.js +101 -0
  30. package/dist/commands/skill/resolve.js.map +1 -0
  31. package/dist/commands/skill/validate.js +1 -1
  32. package/dist/commands/skill/validate.js.map +1 -1
  33. package/dist/commands/skill/web-discovery.d.ts +19 -15
  34. package/dist/commands/skill/web-discovery.js +107 -158
  35. package/dist/commands/skill/web-discovery.js.map +1 -1
  36. package/dist/config.js +1 -1
  37. package/dist/config.js.map +1 -1
  38. package/dist/core/registry.js +3 -5
  39. package/dist/core/registry.js.map +1 -1
  40. package/dist/lib/analytics.d.ts +55 -0
  41. package/dist/lib/analytics.js +167 -0
  42. package/dist/lib/analytics.js.map +1 -0
  43. package/dist/lib/auto-profile.js +1 -1
  44. package/dist/lib/auto-profile.js.map +1 -1
  45. package/dist/lib/escape-regex.js +1 -1
  46. package/dist/lib/escape-regex.js.map +1 -1
  47. package/dist/lib/frontmatter.js +1 -1
  48. package/dist/lib/frontmatter.js.map +1 -1
  49. package/dist/lib/github-client.d.ts +19 -0
  50. package/dist/lib/github-client.js +68 -0
  51. package/dist/lib/github-client.js.map +1 -0
  52. package/dist/lib/project-detector.js +1 -1
  53. package/dist/lib/project-detector.js.map +1 -1
  54. package/dist/lib/registry-loader.d.ts +64 -0
  55. package/dist/lib/registry-loader.js +115 -0
  56. package/dist/lib/registry-loader.js.map +1 -0
  57. package/dist/lib/safe-external-path.js +1 -1
  58. package/dist/lib/safe-external-path.js.map +1 -1
  59. package/dist/lib/search-engine.js +1 -1
  60. package/dist/lib/search-engine.js.map +1 -1
  61. package/dist/lib/security-scanner.d.ts +16 -0
  62. package/dist/lib/security-scanner.js +44 -0
  63. package/dist/lib/security-scanner.js.map +1 -0
  64. package/dist/lib/session-registry.js +1 -1
  65. package/dist/lib/session-registry.js.map +1 -1
  66. package/dist/lib/skill-cache.d.ts +34 -0
  67. package/dist/lib/skill-cache.js +150 -0
  68. package/dist/lib/skill-cache.js.map +1 -0
  69. package/dist/lib/skill-registry.js +1 -1
  70. package/dist/lib/skill-registry.js.map +1 -1
  71. package/dist/lib/skill-session.d.ts +37 -0
  72. package/dist/lib/skill-session.js +62 -0
  73. package/dist/lib/skill-session.js.map +1 -0
  74. package/dist/lib/stack-detector.js +1 -1
  75. package/dist/lib/stack-detector.js.map +1 -1
  76. package/dist/lib/text-utils.d.ts +14 -0
  77. package/dist/lib/text-utils.js +45 -0
  78. package/dist/lib/text-utils.js.map +1 -0
  79. package/dist/lib/token-estimator.js +1 -1
  80. package/dist/lib/token-estimator.js.map +1 -1
  81. package/dist/lib/trigger-matcher.d.ts +45 -0
  82. package/dist/lib/trigger-matcher.js +129 -0
  83. package/dist/lib/trigger-matcher.js.map +1 -0
  84. package/dist/lib/url-utils.d.ts +17 -0
  85. package/dist/lib/url-utils.js +45 -0
  86. package/dist/lib/url-utils.js.map +1 -0
  87. package/dist/lib/vault-fs.js +1 -1
  88. package/dist/lib/vault-fs.js.map +1 -1
  89. package/dist/mcp-server.js +11 -1
  90. package/dist/mcp-server.js.map +1 -1
  91. package/dist/setup/configure.js +1 -1
  92. package/dist/setup/configure.js.map +1 -1
  93. package/dist/setup/detect.js +1 -1
  94. package/dist/setup/detect.js.map +1 -1
  95. package/dist/setup/instructions.js +1 -1
  96. package/dist/setup/instructions.js.map +1 -1
  97. package/dist/setup/json-config.js +1 -1
  98. package/dist/setup/json-config.js.map +1 -1
  99. package/dist/setup/postinstall.js +22 -1
  100. package/dist/setup/postinstall.js.map +1 -1
  101. package/dist/setup/preuninstall.js +1 -1
  102. package/dist/setup/preuninstall.js.map +1 -1
  103. package/dist/setup/teardown.js +1 -1
  104. package/dist/setup/teardown.js.map +1 -1
  105. package/dist/setup/toml-config.js +1 -1
  106. package/dist/setup/toml-config.js.map +1 -1
  107. package/dist/setup/types.js +1 -1
  108. package/dist/setup/types.js.map +1 -1
  109. package/dist/test-helpers.js +1 -1
  110. package/dist/test-helpers.js.map +1 -1
  111. package/package.json +3 -3
  112. package/registry/index.json +1162 -0
  113. package/LICENSE-COMMERCIAL.md +0 -46
@@ -0,0 +1,47 @@
1
+ export interface CatalogResult {
2
+ total: number;
3
+ repos: {
4
+ repo: string;
5
+ count: number;
6
+ }[];
7
+ domains: {
8
+ id: string;
9
+ name: string;
10
+ skill_count: number;
11
+ }[];
12
+ skills: import("./catalog.js").CatalogSkill[];
13
+ }
14
+ export interface CollisionResult {
15
+ collisions: Array<{
16
+ domain_id: string;
17
+ domain_name: string;
18
+ skills: Array<{
19
+ id: string;
20
+ name: string;
21
+ repo: string;
22
+ description: string;
23
+ }>;
24
+ }>;
25
+ total_collision_domains: number;
26
+ total_affected_skills: number;
27
+ }
28
+ export interface ResolveResult {
29
+ success: boolean;
30
+ profile_name: string;
31
+ resolutions: Array<{
32
+ domain: string;
33
+ chosen: string;
34
+ alternatives: string[];
35
+ }>;
36
+ active_skills: string[];
37
+ error?: string;
38
+ }
39
+ export declare function catalogCommand(options: {
40
+ domain?: string;
41
+ repo?: string;
42
+ search?: string;
43
+ }): Promise<CatalogResult>;
44
+ export declare function collisionsCommand(): Promise<CollisionResult>;
45
+ export declare function resolveCommand(options: {
46
+ profile?: string;
47
+ }): Promise<ResolveResult>;
@@ -0,0 +1,101 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ import { getCatalog, getDomains, detectCollisions, searchCatalog, getProfile, getBuiltInProfiles, } from "./catalog.js";
3
+ // ── Commands ─────────────────────────────────────────
4
+ export async function catalogCommand(options) {
5
+ const filtered = searchCatalog({
6
+ domain: options.domain,
7
+ repo: options.repo,
8
+ text: options.search,
9
+ });
10
+ const repoCount = new Map();
11
+ const domainSkills = new Map();
12
+ for (const skill of filtered) {
13
+ repoCount.set(skill.repo, (repoCount.get(skill.repo) ?? 0) + 1);
14
+ for (const d of skill.domains) {
15
+ const set = domainSkills.get(d) ?? new Set();
16
+ set.add(skill.id);
17
+ domainSkills.set(d, set);
18
+ }
19
+ }
20
+ return {
21
+ total: filtered.length,
22
+ repos: Array.from(repoCount.entries())
23
+ .map(([repo, count]) => ({ repo, count }))
24
+ .sort((a, b) => b.count - a.count),
25
+ domains: Array.from(domainSkills.entries())
26
+ .map(([id, skills]) => ({
27
+ id,
28
+ name: getDomains().find((d) => d.id === id)?.name ?? id,
29
+ skill_count: skills.size,
30
+ }))
31
+ .sort((a, b) => b.skill_count - a.skill_count),
32
+ skills: filtered,
33
+ };
34
+ }
35
+ export async function collisionsCommand() {
36
+ const collisions = detectCollisions();
37
+ const affected = new Set();
38
+ const mapped = collisions.map((c) => {
39
+ const skills = c.skills.map((s) => {
40
+ affected.add(s.id);
41
+ return { id: s.id, name: s.name, repo: s.repo, description: s.description };
42
+ });
43
+ return {
44
+ domain_id: c.domain.id,
45
+ domain_name: c.domain.name,
46
+ skills,
47
+ };
48
+ });
49
+ return {
50
+ collisions: mapped,
51
+ total_collision_domains: mapped.length,
52
+ total_affected_skills: affected.size,
53
+ };
54
+ }
55
+ export async function resolveCommand(options) {
56
+ const profileName = options.profile ?? "ecc-first";
57
+ const profile = getProfile(profileName);
58
+ if (!profile) {
59
+ const available = getBuiltInProfiles().map((p) => p.name).join(", ");
60
+ return {
61
+ success: false,
62
+ profile_name: profileName,
63
+ resolutions: [],
64
+ active_skills: [],
65
+ error: `Unknown profile: "${profileName}". Available: ${available}`,
66
+ };
67
+ }
68
+ const collisions = detectCollisions();
69
+ const collisionDomainIds = new Set(collisions.map((c) => c.domain.id));
70
+ // Build resolution report
71
+ const resolutions = profile.resolutions.map((r) => {
72
+ const collision = collisions.find((c) => c.domain.id === r.domain_id);
73
+ return {
74
+ domain: r.domain_id,
75
+ chosen: r.chosen_skill_id,
76
+ alternatives: collision
77
+ ? collision.skills.filter((s) => s.id !== r.chosen_skill_id).map((s) => s.id)
78
+ : [],
79
+ };
80
+ });
81
+ // Collect active skill IDs: chosen winners + all non-colliding skills
82
+ const activeSkillIds = new Set();
83
+ // Add collision winners
84
+ for (const r of profile.resolutions) {
85
+ activeSkillIds.add(r.chosen_skill_id);
86
+ }
87
+ // Add non-colliding skills (domains with only one repo)
88
+ for (const skill of getCatalog()) {
89
+ const allDomainsNonColliding = skill.domains.every((d) => !collisionDomainIds.has(d));
90
+ if (allDomainsNonColliding) {
91
+ activeSkillIds.add(skill.id);
92
+ }
93
+ }
94
+ return {
95
+ success: true,
96
+ profile_name: profileName,
97
+ resolutions,
98
+ active_skills: [...activeSkillIds].sort(),
99
+ };
100
+ }
101
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/commands/skill/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later OR Commercial
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
2
  import { readFile } from "fs/promises";
3
3
  import { parseFrontmatter } from "../../lib/frontmatter.js";
4
4
  import { validateSkillFrontmatter } from "./schema.js";
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/skill/validate.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAoB,MAAM,aAAa,CAAC;AAYzE,KAAK,UAAU,QAAQ,CAAC,GAAW;IACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,KAAK,CAAC,MAAc;IAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAwB;IAExB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,wBAAyB,CAAW,CAAC,OAAO,EAAE,CAAC;SACzD,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAEzD,OAAO;QACL,KAAK;QACL,MAAM;QACN,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAmC,CAAC,CAAC,CAAC,SAAS;KACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/skill/validate.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAoB,MAAM,aAAa,CAAC;AAYzE,KAAK,UAAU,QAAQ,CAAC,GAAW;IACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,KAAK,CAAC,MAAc;IAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAwB;IAExB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,wBAAyB,CAAW,CAAC,OAAO,EAAE,CAAC;SACzD,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAEzD,OAAO;QACL,KAAK;QACL,MAAM;QACN,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAmC,CAAC,CAAC,CAAC,SAAS;KACrE,CAAC;AACJ,CAAC"}
@@ -1,7 +1,17 @@
1
- /**
2
- * Web Discovery search GitHub for skills not in the local catalog.
3
- * Called as a fallback when activateSkills() finds zero matches.
4
- */
1
+ export { scanForPromptInjection } from "../../lib/security-scanner.js";
2
+ export { normalizeCacheKey } from "../../lib/text-utils.js";
3
+ export interface DiscoveryCacheEntry {
4
+ results: DiscoveredSkill[];
5
+ timestamp: string;
6
+ ttl_hours: number;
7
+ }
8
+ export interface DiscoveryCache {
9
+ entries: Record<string, DiscoveryCacheEntry>;
10
+ }
11
+ /** Visible for testing — override cache file path. */
12
+ export declare let _cacheFilePath: string;
13
+ export declare function _setCacheFilePath(p: string): void;
14
+ export declare function _resetCacheFilePath(): void;
5
15
  export interface DiscoveredSkill {
6
16
  name: string;
7
17
  description: string;
@@ -16,10 +26,14 @@ export interface WebDiscoveryResult {
16
26
  results: DiscoveredSkill[];
17
27
  error?: string;
18
28
  }
29
+ /**
30
+ * Clear the discovery cache. Exported for testing.
31
+ */
32
+ export declare function clearDiscoveryCache(): Promise<void>;
19
33
  /**
20
34
  * Search GitHub for SKILL.md files matching a task description.
21
35
  * Uses the GitHub Search API (code search + repo search).
22
- * Unauthenticated: 10 req/min. With GITHUB_TOKEN: 30 req/min.
36
+ * Results are cached for 24 hours to avoid hitting GitHub API rate limits.
23
37
  */
24
38
  export declare function searchGitHubForSkills(task: string): Promise<WebDiscoveryResult>;
25
39
  /**
@@ -32,16 +46,6 @@ export declare function fetchDiscoveredSkill(sourceUrl: string): Promise<{
32
46
  error?: string;
33
47
  warnings?: string[];
34
48
  }>;
35
- /**
36
- * Scan skill content for prompt injection patterns.
37
- * Skills are markdown injected into LLM context — malicious content
38
- * could instruct the LLM to exfiltrate data, run commands, or ignore user intent.
39
- */
40
- export declare function scanForPromptInjection(content: string): {
41
- blocked: boolean;
42
- reason?: string;
43
- warnings: string[];
44
- };
45
49
  /**
46
50
  * Format discovery results for presentation to the user via the LLM.
47
51
  */
@@ -1,17 +1,108 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later OR Commercial
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ /**
3
+ * Web Discovery — search GitHub for skills not in the local catalog.
4
+ * Called as a fallback when activateSkills() finds zero matches.
5
+ *
6
+ * Delegates to focused modules:
7
+ * - github-client.ts — GitHub Search API
8
+ * - security-scanner.ts — prompt injection detection
9
+ * - text-utils.ts — keyword extraction
10
+ * - url-utils.ts — URL conversion, relative age formatting
11
+ */
12
+ import { homedir } from "os";
13
+ import { join } from "path";
14
+ import { readFile, writeFile, rename, mkdir } from "fs/promises";
15
+ import { searchGitHubCode, searchGitHubRepos } from "../../lib/github-client.js";
16
+ import { scanForPromptInjection } from "../../lib/security-scanner.js";
17
+ import { extractKeywords, buildSearchQuery, normalizeCacheKey } from "../../lib/text-utils.js";
18
+ import { toRawUrl, getRelativeAge } from "../../lib/url-utils.js";
19
+ // Re-export for backward compatibility
20
+ export { scanForPromptInjection } from "../../lib/security-scanner.js";
21
+ export { normalizeCacheKey } from "../../lib/text-utils.js";
22
+ const CACHE_DIR = join(homedir(), ".superskill");
23
+ const CACHE_FILE = join(CACHE_DIR, "discovery-cache.json");
24
+ const DEFAULT_TTL_HOURS = 24;
25
+ const MAX_CACHE_ENTRIES = 100;
26
+ /** Visible for testing — override cache file path. */
27
+ export let _cacheFilePath = CACHE_FILE;
28
+ export function _setCacheFilePath(p) {
29
+ _cacheFilePath = p;
30
+ }
31
+ export function _resetCacheFilePath() {
32
+ _cacheFilePath = CACHE_FILE;
33
+ }
34
+ // ── Cache Helpers ────────────────────────────────────
35
+ async function readCache() {
36
+ try {
37
+ const raw = await readFile(_cacheFilePath, "utf-8");
38
+ const parsed = JSON.parse(raw);
39
+ if (parsed && typeof parsed === "object" && parsed.entries && typeof parsed.entries === "object") {
40
+ return parsed;
41
+ }
42
+ return { entries: {} };
43
+ }
44
+ catch {
45
+ return { entries: {} };
46
+ }
47
+ }
48
+ async function writeCache(cache) {
49
+ try {
50
+ const dir = _cacheFilePath.substring(0, _cacheFilePath.lastIndexOf("/"));
51
+ await mkdir(dir, { recursive: true });
52
+ const tmp = _cacheFilePath + ".tmp." + process.pid;
53
+ await writeFile(tmp, JSON.stringify(cache, null, 2), "utf-8");
54
+ await rename(tmp, _cacheFilePath);
55
+ }
56
+ catch {
57
+ // Never crash on cache write failure
58
+ }
59
+ }
60
+ function isCacheEntryValid(entry) {
61
+ const age = Date.now() - new Date(entry.timestamp).getTime();
62
+ const ttlMs = (entry.ttl_hours || DEFAULT_TTL_HOURS) * 60 * 60 * 1000;
63
+ return age < ttlMs;
64
+ }
65
+ function evictOldest(cache) {
66
+ const keys = Object.keys(cache.entries);
67
+ if (keys.length <= MAX_CACHE_ENTRIES)
68
+ return;
69
+ const sorted = keys.sort((a, b) => {
70
+ const ta = new Date(cache.entries[a].timestamp).getTime();
71
+ const tb = new Date(cache.entries[b].timestamp).getTime();
72
+ return ta - tb;
73
+ });
74
+ const toRemove = sorted.slice(0, keys.length - MAX_CACHE_ENTRIES);
75
+ for (const key of toRemove) {
76
+ delete cache.entries[key];
77
+ }
78
+ }
79
+ /**
80
+ * Clear the discovery cache. Exported for testing.
81
+ */
82
+ export async function clearDiscoveryCache() {
83
+ await writeCache({ entries: {} });
84
+ }
2
85
  /**
3
86
  * Search GitHub for SKILL.md files matching a task description.
4
87
  * Uses the GitHub Search API (code search + repo search).
5
- * Unauthenticated: 10 req/min. With GITHUB_TOKEN: 30 req/min.
88
+ * Results are cached for 24 hours to avoid hitting GitHub API rate limits.
6
89
  */
7
90
  export async function searchGitHubForSkills(task) {
8
91
  const keywords = extractKeywords(task);
9
92
  if (keywords.length === 0) {
10
93
  return { success: false, results: [], error: "Could not extract search keywords from task" };
11
94
  }
95
+ const cacheKey = normalizeCacheKey(task);
96
+ // Check cache
97
+ if (cacheKey) {
98
+ const cache = await readCache();
99
+ const entry = cache.entries[cacheKey];
100
+ if (entry && isCacheEntryValid(entry)) {
101
+ return { success: true, results: entry.results };
102
+ }
103
+ }
12
104
  const query = buildSearchQuery(keywords);
13
105
  try {
14
- // Search for repos with SKILL.md files matching keywords
15
106
  const results = await Promise.allSettled([
16
107
  searchGitHubCode(query),
17
108
  searchGitHubRepos(keywords),
@@ -31,7 +122,19 @@ export async function searchGitHubForSkills(task) {
31
122
  // Sort by stars descending (trust signal)
32
123
  skills.sort((a, b) => b.stars - a.stars);
33
124
  // Cap at 5 results
34
- return { success: true, results: skills.slice(0, 5) };
125
+ const capped = skills.slice(0, 5);
126
+ // Store in cache
127
+ if (cacheKey) {
128
+ const cache = await readCache();
129
+ cache.entries[cacheKey] = {
130
+ results: capped,
131
+ timestamp: new Date().toISOString(),
132
+ ttl_hours: DEFAULT_TTL_HOURS,
133
+ };
134
+ evictOldest(cache);
135
+ await writeCache(cache);
136
+ }
137
+ return { success: true, results: capped };
35
138
  }
36
139
  catch (err) {
37
140
  return { success: false, results: [], error: `GitHub search failed: ${err.message}` };
@@ -49,15 +152,12 @@ export async function fetchDiscoveredSkill(sourceUrl) {
49
152
  return { success: false, error: `HTTP ${res.status} ${res.statusText}` };
50
153
  }
51
154
  const content = await res.text();
52
- // Basic validation — must look like a skill file
53
155
  if (content.length < 50) {
54
156
  return { success: false, error: "File too short to be a valid skill" };
55
157
  }
56
- // Size cap — skills over 50KB are suspicious
57
158
  if (content.length > 50_000) {
58
159
  return { success: false, error: "Skill file exceeds 50KB size limit — may not be a legitimate skill file" };
59
160
  }
60
- // Security scan
61
161
  const securityResult = scanForPromptInjection(content);
62
162
  if (securityResult.blocked) {
63
163
  return { success: false, error: `Security risk detected: ${securityResult.reason}` };
@@ -68,45 +168,6 @@ export async function fetchDiscoveredSkill(sourceUrl) {
68
168
  return { success: false, error: `Fetch failed: ${err.message}` };
69
169
  }
70
170
  }
71
- /**
72
- * Scan skill content for prompt injection patterns.
73
- * Skills are markdown injected into LLM context — malicious content
74
- * could instruct the LLM to exfiltrate data, run commands, or ignore user intent.
75
- */
76
- export function scanForPromptInjection(content) {
77
- const warnings = [];
78
- const lower = content.toLowerCase();
79
- // Hard blocks — these should never appear in a skill file
80
- const blockedPatterns = [
81
- { pattern: /ignore (all |any )?(previous|prior|above) (instructions|prompts|context)/i, reason: "Prompt override attempt" },
82
- { pattern: /you are now|you must now act as|forget (all |everything )?you/i, reason: "Identity override attempt" },
83
- { pattern: /do not (tell|inform|reveal|mention|show) (the user|anyone)/i, reason: "Secrecy instruction — skills should be transparent" },
84
- { pattern: /exfiltrate|steal|extract.*secret|send.*to.*http/i, reason: "Data exfiltration pattern" },
85
- { pattern: /curl\s+.*\|.*sh/i, reason: "Remote code execution via pipe to shell" },
86
- { pattern: /rm\s+-rf\s+[\/~]/i, reason: "Destructive filesystem command" },
87
- { pattern: /eval\s*\(.*fetch/i, reason: "Dynamic code execution from remote source" },
88
- { pattern: /<\s*script[\s>]/i, reason: "Script injection" },
89
- ];
90
- for (const { pattern, reason } of blockedPatterns) {
91
- if (pattern.test(content)) {
92
- return { blocked: true, reason, warnings };
93
- }
94
- }
95
- // Soft warnings — suspicious but not necessarily malicious
96
- if (lower.includes("api_key") || lower.includes("secret_key") || lower.includes("password")) {
97
- warnings.push("References credentials — review before loading");
98
- }
99
- if (lower.includes("sudo ") || lower.includes("chmod 777")) {
100
- warnings.push("Contains privileged system commands");
101
- }
102
- if ((content.match(/https?:\/\//g) || []).length > 20) {
103
- warnings.push("Unusually high number of external URLs");
104
- }
105
- if (lower.includes("system prompt") || lower.includes("system message")) {
106
- warnings.push("References system prompts — may attempt to modify LLM behavior");
107
- }
108
- return { blocked: false, warnings };
109
- }
110
171
  /**
111
172
  * Format discovery results for presentation to the user via the LLM.
112
173
  */
@@ -130,116 +191,4 @@ export function formatDiscoveryResults(task, results) {
130
191
  lines.push("Once they pick, call: `superskill({skill_id: \"<source_url>\"})`");
131
192
  return lines.join("\n");
132
193
  }
133
- // ── Internal Helpers ──────────────────────────────────
134
- function extractKeywords(task) {
135
- const stopwords = new Set([
136
- "a", "an", "the", "is", "are", "was", "were", "be", "been", "being",
137
- "have", "has", "had", "do", "does", "did", "will", "would", "could",
138
- "should", "may", "might", "shall", "can", "need", "dare", "ought",
139
- "used", "to", "of", "in", "for", "on", "with", "at", "by", "from",
140
- "as", "into", "through", "during", "before", "after", "above", "below",
141
- "between", "out", "off", "over", "under", "again", "further", "then",
142
- "once", "here", "there", "when", "where", "why", "how", "all", "both",
143
- "each", "few", "more", "most", "other", "some", "such", "no", "not",
144
- "only", "own", "same", "so", "than", "too", "very", "just", "because",
145
- "but", "and", "or", "if", "while", "about", "up", "that", "this",
146
- "it", "its", "my", "me", "i", "we", "our", "you", "your", "help",
147
- "get", "give", "make", "use", "want", "let", "try", "find", "show",
148
- ]);
149
- return task
150
- .toLowerCase()
151
- .replace(/[^a-z0-9\s-]/g, "")
152
- .split(/\s+/)
153
- .filter((w) => w.length > 2 && !stopwords.has(w));
154
- }
155
- function buildSearchQuery(keywords) {
156
- // Search for SKILL.md files matching keywords
157
- return `${keywords.join(" ")} filename:SKILL`;
158
- }
159
- async function searchGitHubCode(query) {
160
- const headers = {
161
- Accept: "application/vnd.github.v3+json",
162
- "User-Agent": "superskill",
163
- };
164
- const token = process.env.GITHUB_TOKEN;
165
- if (token)
166
- headers.Authorization = `Bearer ${token}`;
167
- const url = `https://api.github.com/search/code?q=${encodeURIComponent(query)}&per_page=10`;
168
- const res = await fetch(url, { headers });
169
- if (!res.ok) {
170
- if (res.status === 403)
171
- return []; // Rate limited, fail gracefully
172
- throw new Error(`GitHub code search: ${res.status} ${res.statusText}`);
173
- }
174
- const data = await res.json();
175
- return (data.items ?? [])
176
- .filter((item) => item.name.toLowerCase().includes("skill"))
177
- .map((item) => ({
178
- name: inferSkillName(item.path, item.repository.full_name),
179
- description: item.repository.description ?? "No description",
180
- source_url: item.html_url,
181
- repo: item.repository.full_name,
182
- stars: item.repository.stargazers_count,
183
- updated_at: item.repository.updated_at,
184
- path: item.path,
185
- }));
186
- }
187
- async function searchGitHubRepos(keywords) {
188
- const headers = {
189
- Accept: "application/vnd.github.v3+json",
190
- "User-Agent": "superskill",
191
- };
192
- const token = process.env.GITHUB_TOKEN;
193
- if (token)
194
- headers.Authorization = `Bearer ${token}`;
195
- const query = `${keywords.join(" ")} skill claude in:name,description,readme`;
196
- const url = `https://api.github.com/search/repositories?q=${encodeURIComponent(query)}&sort=stars&per_page=5`;
197
- const res = await fetch(url, { headers });
198
- if (!res.ok) {
199
- if (res.status === 403)
200
- return [];
201
- throw new Error(`GitHub repo search: ${res.status} ${res.statusText}`);
202
- }
203
- const data = await res.json();
204
- return (data.items ?? []).map((repo) => ({
205
- name: repo.full_name.split("/")[1] ?? repo.full_name,
206
- description: repo.description ?? "No description",
207
- source_url: `${repo.html_url}/blob/main/SKILL.md`,
208
- repo: repo.full_name,
209
- stars: repo.stargazers_count,
210
- updated_at: repo.updated_at,
211
- path: "SKILL.md",
212
- }));
213
- }
214
- function inferSkillName(path, repo) {
215
- // Try to extract skill name from path like "skills/user-story/SKILL.md"
216
- const parts = path.split("/");
217
- if (parts.length >= 2) {
218
- const dir = parts[parts.length - 2];
219
- if (dir !== "skills" && dir !== ".agents") {
220
- return dir.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
221
- }
222
- }
223
- return repo.split("/")[1]?.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()) ?? repo;
224
- }
225
- function toRawUrl(htmlUrl) {
226
- // Convert github.com blob URL to raw.githubusercontent.com
227
- return htmlUrl
228
- .replace("github.com", "raw.githubusercontent.com")
229
- .replace("/blob/", "/");
230
- }
231
- function getRelativeAge(dateStr) {
232
- const now = Date.now();
233
- const then = new Date(dateStr).getTime();
234
- const days = Math.floor((now - then) / (1000 * 60 * 60 * 24));
235
- if (days < 1)
236
- return "today";
237
- if (days === 1)
238
- return "yesterday";
239
- if (days < 30)
240
- return `${days} days ago`;
241
- if (days < 365)
242
- return `${Math.floor(days / 30)} months ago`;
243
- return `${Math.floor(days / 365)} years ago`;
244
- }
245
194
  //# sourceMappingURL=web-discovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-discovery.js","sourceRoot":"","sources":["../../../src/commands/skill/web-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-discovery.js","sourceRoot":"","sources":["../../../src/commands/skill/web-discovery.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later OR Commercial
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
2
  import { homedir } from "os";
3
3
  import { resolve } from "path";
4
4
  import { detectProject } from "./lib/project-detector.js";
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ1D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,mEAAmE,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,mDAAmD,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,YAA4B;IAE5B,IAAI,IAAI,GAAG,YAAY,IAAI,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,aAAa,CAAC;IACpD,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QACnC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjB,sEAAsE;IACtE,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,WAAW,SAAS,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAE3E,OAAO;QACL,SAAS;QACT,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACvG,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;KACjG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ1D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,mEAAmE,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,mDAAmD,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,YAA4B;IAE5B,IAAI,IAAI,GAAG,YAAY,IAAI,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,aAAa,CAAC;IACpD,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QACnC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjB,sEAAsE;IACtE,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,WAAW,SAAS,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAE3E,OAAO;QACL,SAAS;QACT,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACvG,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;KACjG,CAAC;AACJ,CAAC"}