skilld 1.6.2 → 1.7.1

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 (83) hide show
  1. package/README.md +29 -20
  2. package/dist/_chunks/agent.mjs +14 -4
  3. package/dist/_chunks/agent.mjs.map +1 -1
  4. package/dist/_chunks/assemble.mjs +1 -1
  5. package/dist/_chunks/author-group.mjs +17 -0
  6. package/dist/_chunks/author-group.mjs.map +1 -0
  7. package/dist/_chunks/author.mjs +11 -12
  8. package/dist/_chunks/author.mjs.map +1 -1
  9. package/dist/_chunks/cache.mjs +12 -2
  10. package/dist/_chunks/cache.mjs.map +1 -1
  11. package/dist/_chunks/cache2.mjs +1 -1
  12. package/dist/_chunks/cli-helpers.mjs +4 -120
  13. package/dist/_chunks/cli-helpers.mjs.map +1 -1
  14. package/dist/_chunks/config.mjs +119 -27
  15. package/dist/_chunks/config.mjs.map +1 -1
  16. package/dist/_chunks/core.mjs +2 -2
  17. package/dist/_chunks/embedding-cache2.mjs +1 -1
  18. package/dist/_chunks/index.d.mts +4 -1
  19. package/dist/_chunks/index.d.mts.map +1 -1
  20. package/dist/_chunks/index3.d.mts +81 -78
  21. package/dist/_chunks/index3.d.mts.map +1 -1
  22. package/dist/_chunks/install.mjs +22 -34
  23. package/dist/_chunks/install.mjs.map +1 -1
  24. package/dist/_chunks/list.mjs +1 -1
  25. package/dist/_chunks/lockfile.mjs +5 -1
  26. package/dist/_chunks/lockfile.mjs.map +1 -1
  27. package/dist/_chunks/prefix.mjs +108 -0
  28. package/dist/_chunks/prefix.mjs.map +1 -0
  29. package/dist/_chunks/prepare.mjs +6 -2
  30. package/dist/_chunks/prepare.mjs.map +1 -1
  31. package/dist/_chunks/prepare2.mjs +4 -4
  32. package/dist/_chunks/prepare2.mjs.map +1 -1
  33. package/dist/_chunks/prompts.mjs +4 -237
  34. package/dist/_chunks/prompts.mjs.map +1 -1
  35. package/dist/_chunks/search-helpers.mjs +99 -0
  36. package/dist/_chunks/search-helpers.mjs.map +1 -0
  37. package/dist/_chunks/search-interactive.mjs +2 -2
  38. package/dist/_chunks/search-interactive.mjs.map +1 -1
  39. package/dist/_chunks/search.mjs +219 -1
  40. package/dist/_chunks/search.mjs.map +1 -0
  41. package/dist/_chunks/skill.mjs +329 -0
  42. package/dist/_chunks/skill.mjs.map +1 -0
  43. package/dist/_chunks/skills.mjs +2 -2
  44. package/dist/_chunks/sources.mjs +1180 -987
  45. package/dist/_chunks/sources.mjs.map +1 -1
  46. package/dist/_chunks/sync-registry.mjs +59 -0
  47. package/dist/_chunks/sync-registry.mjs.map +1 -0
  48. package/dist/_chunks/sync-shared2.mjs +14 -12
  49. package/dist/_chunks/sync-shared2.mjs.map +1 -1
  50. package/dist/_chunks/sync.mjs +253 -158
  51. package/dist/_chunks/sync.mjs.map +1 -1
  52. package/dist/_chunks/sync2.mjs +1 -1
  53. package/dist/_chunks/uninstall.mjs +5 -4
  54. package/dist/_chunks/uninstall.mjs.map +1 -1
  55. package/dist/_chunks/upload.mjs +152 -0
  56. package/dist/_chunks/upload.mjs.map +1 -0
  57. package/dist/_chunks/validate.mjs +1 -1
  58. package/dist/_chunks/version.mjs +30 -0
  59. package/dist/_chunks/version.mjs.map +1 -0
  60. package/dist/_chunks/wizard.mjs +3 -2
  61. package/dist/_chunks/wizard.mjs.map +1 -1
  62. package/dist/agent/index.d.mts +3 -1
  63. package/dist/agent/index.d.mts.map +1 -1
  64. package/dist/agent/index.mjs +4 -3
  65. package/dist/cache/index.d.mts +2 -2
  66. package/dist/cache/index.mjs +3 -3
  67. package/dist/cli.mjs +48 -21
  68. package/dist/cli.mjs.map +1 -1
  69. package/dist/index.d.mts +2 -2
  70. package/dist/index.mjs +3 -3
  71. package/dist/prepare.mjs +1 -1
  72. package/dist/sources/index.d.mts +2 -2
  73. package/dist/sources/index.mjs +2 -2
  74. package/dist/types.d.mts +2 -2
  75. package/package.json +12 -12
  76. package/dist/THIRD-PARTY-LICENSES.md +0 -38
  77. package/dist/_chunks/formatting.mjs +0 -82
  78. package/dist/_chunks/formatting.mjs.map +0 -1
  79. package/dist/_chunks/libs/@sinclair/typebox.mjs +0 -2304
  80. package/dist/_chunks/libs/@sinclair/typebox.mjs.map +0 -1
  81. package/dist/_chunks/rolldown-runtime.mjs +0 -11
  82. package/dist/_chunks/search2.mjs +0 -310
  83. package/dist/_chunks/search2.mjs.map +0 -1
@@ -1,30 +1,122 @@
1
+ import { n as yamlParseKV, r as yamlUnescape, t as yamlEscape } from "./yaml.mjs";
1
2
  import { homedir } from "node:os";
2
- import { join, resolve } from "pathe";
3
- const VALID_PKG_NAME = /^(?:@[a-z0-9][-a-z0-9._]*\/)?[a-z0-9][-a-z0-9._]*$/;
4
- const VALID_VERSION = /^[a-z0-9][-\w.+]*$/i;
5
- function getVersionKey(version) {
6
- return version;
7
- }
8
- function getCacheKey(name, version) {
9
- return `${name}@${getVersionKey(version)}`;
10
- }
11
- function getCacheDir(name, version) {
12
- if (!VALID_PKG_NAME.test(name)) throw new Error(`Invalid package name: ${name}`);
13
- if (!VALID_VERSION.test(version)) throw new Error(`Invalid version: ${version}`);
14
- const dir = resolve(REFERENCES_DIR, getCacheKey(name, version));
15
- if (!dir.startsWith(REFERENCES_DIR)) throw new Error(`Path traversal detected: ${dir}`);
16
- return dir;
17
- }
18
- const CACHE_DIR = join(homedir(), ".skilld");
19
- const REFERENCES_DIR = join(CACHE_DIR, "references");
20
- const REPOS_DIR = join(CACHE_DIR, "repos");
21
- function getRepoCacheDir(owner, repo) {
22
- if (owner.includes("..") || repo.includes("..") || owner.includes("/") || repo.includes("/")) throw new Error(`Invalid repo path: ${owner}/${repo}`);
23
- return join(REPOS_DIR, owner, repo);
24
- }
25
- function getPackageDbPath(name, version) {
26
- return join(REFERENCES_DIR, getCacheKey(name, version), "search.db");
27
- }
28
- export { getRepoCacheDir as a, getVersionKey as c, getPackageDbPath as i, REFERENCES_DIR as n, getCacheDir as o, REPOS_DIR as r, getCacheKey as s, CACHE_DIR as t };
3
+ import { join } from "pathe";
4
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
+ const defaultFeatures = {
6
+ search: true,
7
+ issues: true,
8
+ discussions: true,
9
+ releases: true
10
+ };
11
+ const CONFIG_DIR = join(homedir(), ".skilld");
12
+ const CONFIG_PATH = join(CONFIG_DIR, "config.yaml");
13
+ let configCache;
14
+ function hasConfig() {
15
+ return existsSync(CONFIG_PATH);
16
+ }
17
+ function hasCompletedWizard() {
18
+ if (!existsSync(CONFIG_PATH)) return false;
19
+ const config = readConfig();
20
+ return config.features !== void 0 || config.model !== void 0 || config.skipLlm !== void 0;
21
+ }
22
+ function readConfig() {
23
+ if (configCache) return {
24
+ ...configCache,
25
+ features: configCache.features ? { ...configCache.features } : void 0,
26
+ projects: configCache.projects ? [...configCache.projects] : void 0
27
+ };
28
+ if (!existsSync(CONFIG_PATH)) return {};
29
+ const content = readFileSync(CONFIG_PATH, "utf-8");
30
+ const config = {};
31
+ let inBlock = null;
32
+ const projects = [];
33
+ const features = {};
34
+ for (const line of content.split("\n")) {
35
+ if (line.startsWith("projects:")) {
36
+ inBlock = "projects";
37
+ continue;
38
+ }
39
+ if (line.startsWith("features:")) {
40
+ inBlock = "features";
41
+ continue;
42
+ }
43
+ if (inBlock === "projects") {
44
+ if (line.startsWith(" - ")) {
45
+ projects.push(yamlUnescape(line.slice(4)));
46
+ continue;
47
+ }
48
+ inBlock = null;
49
+ }
50
+ if (inBlock === "features") {
51
+ const m = line.match(/^ {2}(\w+):\s*(.+)/);
52
+ if (m) {
53
+ const key = m[1];
54
+ if (key in defaultFeatures) features[key] = m[2] === "true";
55
+ continue;
56
+ }
57
+ inBlock = null;
58
+ }
59
+ const kv = yamlParseKV(line);
60
+ if (!kv) continue;
61
+ const [key, value] = kv;
62
+ if (key === "model" && value) config.model = value;
63
+ if (key === "agent" && value) config.agent = value;
64
+ if (key === "skipLlm") config.skipLlm = value === "true";
65
+ }
66
+ if (projects.length > 0) config.projects = projects;
67
+ if (Object.keys(features).length > 0) config.features = {
68
+ ...defaultFeatures,
69
+ ...features
70
+ };
71
+ configCache = config;
72
+ return config;
73
+ }
74
+ function writeConfig(config) {
75
+ mkdirSync(CONFIG_DIR, {
76
+ recursive: true,
77
+ mode: 448
78
+ });
79
+ let yaml = "";
80
+ if (config.model) yaml += `model: ${config.model}\n`;
81
+ if (config.agent) yaml += `agent: ${config.agent}\n`;
82
+ if (config.skipLlm) yaml += `skipLlm: true\n`;
83
+ if (config.features) {
84
+ yaml += "features:\n";
85
+ for (const [k, v] of Object.entries(config.features)) yaml += ` ${k}: ${v}\n`;
86
+ }
87
+ if (config.projects?.length) {
88
+ yaml += "projects:\n";
89
+ for (const p of config.projects) yaml += ` - ${yamlEscape(p)}\n`;
90
+ }
91
+ writeFileSync(CONFIG_PATH, yaml, { mode: 384 });
92
+ configCache = void 0;
93
+ }
94
+ function updateConfig(updates) {
95
+ writeConfig({
96
+ ...readConfig(),
97
+ ...updates
98
+ });
99
+ }
100
+ function registerProject(projectPath) {
101
+ const config = readConfig();
102
+ const projects = new Set(config.projects || []);
103
+ projects.add(projectPath);
104
+ writeConfig({
105
+ ...config,
106
+ projects: [...projects]
107
+ });
108
+ }
109
+ function unregisterProject(projectPath) {
110
+ const config = readConfig();
111
+ const projects = (config.projects || []).filter((p) => p !== projectPath);
112
+ writeConfig({
113
+ ...config,
114
+ projects
115
+ });
116
+ }
117
+ function getRegisteredProjects() {
118
+ return readConfig().projects || [];
119
+ }
120
+ export { readConfig as a, updateConfig as c, hasConfig as i, getRegisteredProjects as n, registerProject as o, hasCompletedWizard as r, unregisterProject as s, defaultFeatures as t };
29
121
 
30
122
  //# sourceMappingURL=config.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.mjs","names":[],"sources":["../../src/cache/version.ts","../../src/cache/config.ts"],"sourcesContent":["/**\n * Version utilities\n */\n\nimport { resolve } from 'pathe'\nimport { REFERENCES_DIR } from './config.ts'\n\n/** Validate npm package name (scoped or unscoped) */\nconst VALID_PKG_NAME = /^(?:@[a-z0-9][-a-z0-9._]*\\/)?[a-z0-9][-a-z0-9._]*$/\n\n/** Validate version string (semver-ish, no path separators) */\nconst VALID_VERSION = /^[a-z0-9][-\\w.+]*$/i\n\n/**\n * Get exact version key for cache keying\n */\nexport function getVersionKey(version: string): string {\n return version\n}\n\n/**\n * Get cache key for a package: name@version\n */\nexport function getCacheKey(name: string, version: string): string {\n return `${name}@${getVersionKey(version)}`\n}\n\n/**\n * Get path to cached package references.\n * Validates name/version to prevent path traversal.\n */\nexport function getCacheDir(name: string, version: string): string {\n if (!VALID_PKG_NAME.test(name))\n throw new Error(`Invalid package name: ${name}`)\n if (!VALID_VERSION.test(version))\n throw new Error(`Invalid version: ${version}`)\n\n const dir = resolve(REFERENCES_DIR, getCacheKey(name, version))\n if (!dir.startsWith(REFERENCES_DIR))\n throw new Error(`Path traversal detected: ${dir}`)\n return dir\n}\n","/**\n * Cache configuration\n */\n\nimport { homedir } from 'node:os'\nimport { join } from 'pathe'\nimport { getCacheKey } from './version.ts'\n\n/** Global cache directory */\nexport const CACHE_DIR = join(homedir(), '.skilld')\n\n/** References subdirectory */\nexport const REFERENCES_DIR = join(CACHE_DIR, 'references')\n\n/** Repo-level cache (issues, discussions, releases shared across monorepo packages) */\nexport const REPOS_DIR = join(CACHE_DIR, 'repos')\n\n/** Get repo cache dir for owner/repo with path traversal validation */\nexport function getRepoCacheDir(owner: string, repo: string): string {\n if (owner.includes('..') || repo.includes('..') || owner.includes('/') || repo.includes('/'))\n throw new Error(`Invalid repo path: ${owner}/${repo}`)\n return join(REPOS_DIR, owner, repo)\n}\n\n/** Get search DB path for a specific package@version */\nexport function getPackageDbPath(name: string, version: string): string {\n return join(REFERENCES_DIR, getCacheKey(name, version), 'search.db')\n}\n"],"mappings":";;;AAQA,MAAM,gBAAA;AAGN,SAAM,cAAgB,SAAA;;;AAKtB,SAAgB,YAAA,MAAc,SAAyB;AACrD,QAAO,GAAA,KAAA,GAAA,cAAA,QAAA;;;;AAMT,KAAA,CAAA,cAAgB,KAAY,QAAc,CAAA,OAAyB,IAAA,MAAA,oBAAA,UAAA;CACjE,MAAA,MAAU,QAAQ,gBAAc,YAAQ,MAAA,QAAA,CAAA;;;;AAQxC,MAAK,YAAA,KAAe,SAClB,EAAA,UAAU;MAIZ,iBAAoB,KAAA,WAAgB,aAAY;AAGhD,MAAA,YAAO,KAAA,WAAA,QAAA;;;;;AC/BT,SAAa,iBAAiB,MAAS,SAAE;;;AAMzC,SAAa,mBAAiB,GAAA,iBAAmB,GAAA,oBAAA,GAAA,kBAAA,GAAA,eAAA,GAAA,aAAA,GAAA,eAAA,GAAA,aAAA"}
1
+ {"version":3,"file":"config.mjs","names":[],"sources":["../../src/core/config.ts"],"sourcesContent":["import type { OptimizeModel } from '../agent/index.ts'\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport { join } from 'pathe'\nimport { yamlEscape, yamlParseKV, yamlUnescape } from './yaml.ts'\n\nexport interface FeaturesConfig {\n search: boolean\n issues: boolean\n discussions: boolean\n releases: boolean\n}\n\nexport const defaultFeatures: FeaturesConfig = {\n search: true,\n issues: true,\n discussions: true,\n releases: true,\n}\n\nexport interface SkilldConfig {\n model?: OptimizeModel\n agent?: string\n features?: FeaturesConfig\n projects?: string[]\n skipLlm?: boolean\n}\n\nconst CONFIG_DIR = join(homedir(), '.skilld')\nconst CONFIG_PATH = join(CONFIG_DIR, 'config.yaml')\n\nlet configCache: SkilldConfig | undefined\n\nexport function hasConfig(): boolean {\n return existsSync(CONFIG_PATH)\n}\n\n/** Whether the first-run wizard has been completed (not just agent selection) */\nexport function hasCompletedWizard(): boolean {\n if (!existsSync(CONFIG_PATH))\n return false\n const config = readConfig()\n return config.features !== undefined || config.model !== undefined || config.skipLlm !== undefined\n}\n\nexport function readConfig(): SkilldConfig {\n if (configCache) {\n return {\n ...configCache,\n features: configCache.features ? { ...configCache.features } : undefined,\n projects: configCache.projects ? [...configCache.projects] : undefined,\n }\n }\n if (!existsSync(CONFIG_PATH))\n return {}\n\n const content = readFileSync(CONFIG_PATH, 'utf-8')\n const config: SkilldConfig = {}\n let inBlock: 'projects' | 'features' | null = null\n const projects: string[] = []\n const features: Partial<FeaturesConfig> = {}\n\n for (const line of content.split('\\n')) {\n if (line.startsWith('projects:')) {\n inBlock = 'projects'\n continue\n }\n if (line.startsWith('features:')) {\n inBlock = 'features'\n continue\n }\n if (inBlock === 'projects') {\n if (line.startsWith(' - ')) {\n projects.push(yamlUnescape(line.slice(4)))\n continue\n }\n inBlock = null\n }\n if (inBlock === 'features') {\n const m = line.match(/^ {2}(\\w+):\\s*(.+)/)\n if (m) {\n const key = m[1] as keyof FeaturesConfig\n if (key in defaultFeatures)\n features[key] = m[2] === 'true'\n continue\n }\n inBlock = null\n }\n const kv = yamlParseKV(line)\n if (!kv)\n continue\n const [key, value] = kv\n if (key === 'model' && value)\n config.model = value as OptimizeModel\n if (key === 'agent' && value)\n config.agent = value\n if (key === 'skipLlm')\n config.skipLlm = value === 'true'\n }\n\n if (projects.length > 0)\n config.projects = projects\n if (Object.keys(features).length > 0)\n config.features = { ...defaultFeatures, ...features }\n configCache = config\n return config\n}\n\nexport function writeConfig(config: SkilldConfig): void {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 })\n\n let yaml = ''\n if (config.model)\n yaml += `model: ${config.model}\\n`\n if (config.agent)\n yaml += `agent: ${config.agent}\\n`\n if (config.skipLlm)\n yaml += `skipLlm: true\\n`\n if (config.features) {\n yaml += 'features:\\n'\n for (const [k, v] of Object.entries(config.features)) {\n yaml += ` ${k}: ${v}\\n`\n }\n }\n if (config.projects?.length) {\n yaml += 'projects:\\n'\n for (const p of config.projects) {\n yaml += ` - ${yamlEscape(p)}\\n`\n }\n }\n\n writeFileSync(CONFIG_PATH, yaml, { mode: 0o600 })\n configCache = undefined\n}\n\nexport function updateConfig(updates: Partial<SkilldConfig>): void {\n const config = readConfig()\n writeConfig({ ...config, ...updates })\n}\n\nexport function registerProject(projectPath: string): void {\n const config = readConfig()\n const projects = new Set(config.projects || [])\n projects.add(projectPath)\n writeConfig({ ...config, projects: [...projects] })\n}\n\nexport function unregisterProject(projectPath: string): void {\n const config = readConfig()\n const projects = (config.projects || []).filter(p => p !== projectPath)\n writeConfig({ ...config, projects })\n}\n\nexport function getRegisteredProjects(): string[] {\n return readConfig().projects || []\n}\n"],"mappings":"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"}
@@ -3,8 +3,8 @@ import "./sanitize.mjs";
3
3
  import "./yaml.mjs";
4
4
  import "./markdown.mjs";
5
5
  import "./shared.mjs";
6
- import "./cli-helpers.mjs";
6
+ import "./skill.mjs";
7
+ import "./config.mjs";
7
8
  import "./lockfile.mjs";
8
9
  import "./skills.mjs";
9
- import "./formatting.mjs";
10
10
  export {};
@@ -1,4 +1,4 @@
1
- import { t as CACHE_DIR } from "./config.mjs";
1
+ import { i as CACHE_DIR } from "./version.mjs";
2
2
  import "./cache.mjs";
3
3
  import { join } from "pathe";
4
4
  import { rmSync } from "node:fs";
@@ -43,6 +43,9 @@ declare function linkShippedSkill(baseDir: string, skillName: string, targetDir:
43
43
  * Check if package is cached at given version
44
44
  */
45
45
  declare function isCached(name: string, version: string): boolean;
46
+ /** Check if cache only has docs/README.md (pkg/ already has this) */
47
+ declare function isReadmeOnlyCache(cacheDir: string): boolean;
48
+ declare function inferDocsTypeFromCache(cacheDir: string, source?: string): 'llms.txt' | 'readme' | 'docs';
46
49
  /**
47
50
  * Ensure cache directories exist
48
51
  */
@@ -144,5 +147,5 @@ declare function getCacheKey(name: string, version: string): string;
144
147
  * Validates name/version to prevent path traversal.
145
148
  */
146
149
  declare function getCacheDir(name: string, version: string): string;
147
- export { REPOS_DIR as A, linkShippedSkill as C, CachedPackage as D, CachedDoc as E, getRepoCacheDir as M, CACHE_DIR as O, getShippedSkills as S, CacheConfig as T, readCachedSection as _, clearCache as a, writeToRepoCache as b, hasShippedDocs as c, linkPkg as d, linkPkgNamed as f, readCachedDocs as g, listReferenceFiles as h, clearAllCache as i, getPackageDbPath as j, REFERENCES_DIR as k, isCached as l, listCached as m, getCacheKey as n, ensureCacheDir as o, linkRepoCachedDir as p, getVersionKey as r, getPkgKeyFiles as s, getCacheDir as t, linkCachedDir as u, writeSections as v, resolvePkgDir as w, ShippedSkill as x, writeToCache as y };
150
+ export { CACHE_DIR as A, ShippedSkill as C, CacheConfig as D, resolvePkgDir as E, REPOS_DIR as M, getPackageDbPath as N, CachedDoc as O, getRepoCacheDir as P, writeToRepoCache as S, linkShippedSkill as T, listReferenceFiles as _, clearCache as a, writeSections as b, hasShippedDocs as c, isReadmeOnlyCache as d, linkCachedDir as f, listCached as g, linkRepoCachedDir as h, clearAllCache as i, REFERENCES_DIR as j, CachedPackage as k, inferDocsTypeFromCache as l, linkPkgNamed as m, getCacheKey as n, ensureCacheDir as o, linkPkg as p, getVersionKey as r, getPkgKeyFiles as s, getCacheDir as t, isCached as u, readCachedDocs as v, getShippedSkills as w, writeToCache as x, readCachedSection as y };
148
151
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/cache/config.ts","../../src/cache/types.ts","../../src/core/prepare.ts","../../src/cache/storage.ts","../../src/cache/version.ts"],"mappings":"AASA;;;;cAAa,SAAA;AAGb;AAAA,cAAa,cAAA;;cAGA,SAAA;;iBAGG,eAAA,CAAgB,KAAA,UAAe,IAAA;;iBAO/B,gBAAA,CAAiB,IAAA,UAAc,OAAA;AAhB/C;;;AAAA,UCLiB,WAAA;EDKkC;ECHjD,IAAA;EDMyD;ECJzD,OAAA;AAAA;AAAA,UAGe,aAAA;EACf,IAAA;EACA,OAAA;EACA,GAAA;AAAA;AAAA,UAGe,SAAA;EACf,IAAA;EACA,OAAA;AAAA;;iBCLc,aAAA,CAAc,IAAA,UAAc,GAAA,UAAa,OAAA;AAAA,UAiDxC,YAAA;EACf,SAAA;EACA,QAAA;AAAA;;iBAIc,gBAAA,CAAiB,IAAA,UAAc,GAAA,UAAa,OAAA,YAAmB,YAAA;;iBAe/D,gBAAA,CAAiB,OAAA,UAAiB,SAAA,UAAmB,SAAA;;AFxErE;;iBGmBgB,QAAA,CAAS,IAAA,UAAc,OAAA;;;AHhBvC;iBGuBgB,cAAA,CAAA;;;;iBAQA,YAAA,CACd,IAAA,UACA,OAAA,UACA,IAAA,EAAM,SAAA;;;;iBAiBQ,gBAAA,CACd,KAAA,UACA,IAAA,UACA,IAAA,EAAM,SAAA;AH5CR;;;;AAAA,iBG8DgB,iBAAA,CAAkB,QAAA,UAAkB,KAAA,UAAe,IAAA,UAAc,MAAA;;AFnFjF;;;;;AAOA;;;iBEkGgB,aAAA,CAAc,QAAA,UAAkB,IAAA,UAAc,OAAA,UAAiB,MAAA;;;;;AD/F/E;;;;iBC4HgB,OAAA,CAAQ,QAAA,UAAkB,IAAA,UAAc,GAAA,UAAa,OAAA;;;;;AD3ErE;;;iBCmGgB,YAAA,CAAa,QAAA,UAAkB,IAAA,UAAc,GAAA,UAAa,OAAA;;AD7F1E;;;iBCmHgB,cAAA,CAAe,IAAA,UAAc,GAAA,UAAa,OAAA;;;;;;;iBAuC1C,aAAA,CAAc,IAAA,UAAc,OAAA,UAAiB,QAAA,EAAU,KAAA;EAAQ,IAAA;EAAc,OAAA;AAAA;;;;iBAY7E,iBAAA,CAAkB,IAAA,UAAc,OAAA,UAAiB,IAAA;AAAA,iBAOjD,cAAA,CAAe,IAAA,UAAc,GAAA,UAAa,OAAA;;AAnN1D;;iBAoOgB,UAAA,CAAA,GAAc,aAAA;;;AA7N9B;iBA4OgB,cAAA,CAAe,IAAA,UAAc,OAAA,WAAkB,SAAA;;;;iBA+B/C,UAAA,CAAW,IAAA,UAAc,OAAA;;;;iBAYzB,aAAA,CAAA;;;;;iBAeA,kBAAA,CAAmB,QAAA,UAAkB,QAAA;AHnUrD;;;;;AAGA;iBIIgB,aAAA,CAAc,OAAA;;;;iBAOd,WAAA,CAAY,IAAA,UAAc,OAAA;;;;;iBAQ1B,WAAA,CAAY,IAAA,UAAc,OAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/cache/config.ts","../../src/cache/types.ts","../../src/core/prepare.ts","../../src/cache/storage.ts","../../src/cache/version.ts"],"mappings":"AAQA;;;;cAAa,SAAA;AAGb;AAAA,cAAa,cAAA;;cAGA,SAAA;;iBAGG,eAAA,CAAgB,KAAA,UAAe,IAAA;;iBAO/B,gBAAA,CAAiB,IAAA,UAAc,OAAA;AAhB/C;;;AAAA,UCJiB,WAAA;EDIkC;ECFjD,IAAA;EDKyD;ECHzD,OAAA;AAAA;AAAA,UAGe,aAAA;EACf,IAAA;EACA,OAAA;EACA,GAAA;AAAA;AAAA,UAGe,SAAA;EACf,IAAA;EACA,OAAA;AAAA;;iBCEc,aAAA,CAAc,IAAA,UAAc,GAAA,UAAa,OAAA;AAAA,UAiDxC,YAAA;EACf,SAAA;EACA,QAAA;AAAA;;iBAIc,gBAAA,CAAiB,IAAA,UAAc,GAAA,UAAa,OAAA,YAAmB,YAAA;;iBAe/D,gBAAA,CAAiB,OAAA,UAAiB,SAAA,UAAmB,SAAA;;AFhFrE;;iBGoBgB,QAAA,CAAS,IAAA,UAAc,OAAA;;iBAKvB,iBAAA,CAAkB,QAAA;AAAA,iBAQlB,sBAAA,CAAuB,QAAA,UAAkB,MAAA;;;;iBASzC,cAAA,CAAA;AHpChB;;;AAAA,iBG4CgB,YAAA,CACd,IAAA,UACA,OAAA,UACA,IAAA,EAAM,SAAA;;AHxCR;;iBGyDgB,gBAAA,CACd,KAAA,UACA,IAAA,UACA,IAAA,EAAM,SAAA;;;;AFhFR;iBEkGgB,iBAAA,CAAkB,QAAA,UAAkB,KAAA,UAAe,IAAA,UAAc,MAAA;;;;AF3FjF;;;;;;iBEiHgB,aAAA,CAAc,QAAA,UAAkB,IAAA,UAAc,OAAA,UAAiB,MAAA;;ADvG/E;;;;;;;iBCoIgB,OAAA,CAAQ,QAAA,UAAkB,IAAA,UAAc,GAAA,UAAa,OAAA;;ADnFrE;;;;;AAMA;iBCqGgB,YAAA,CAAa,QAAA,UAAkB,IAAA,UAAc,GAAA,UAAa,OAAA;;;;;iBAsB1D,cAAA,CAAe,IAAA,UAAc,GAAA,UAAa,OAAA;;;;AD5G1D;;;iBCmJgB,aAAA,CAAc,IAAA,UAAc,OAAA,UAAiB,QAAA,EAAU,KAAA;EAAQ,IAAA;EAAc,OAAA;AAAA;;;;iBAY7E,iBAAA,CAAkB,IAAA,UAAc,OAAA,UAAiB,IAAA;AAAA,iBAOjD,cAAA,CAAe,IAAA,UAAc,GAAA,UAAa,OAAA;;;;iBAiB1C,UAAA,CAAA,GAAc,aAAA;;;;iBAed,cAAA,CAAe,IAAA,UAAc,OAAA,WAAkB,SAAA;AArP/D;;;AAAA,iBAoRgB,UAAA,CAAW,IAAA,UAAc,OAAA;;AA3QzC;;iBAuRgB,aAAA,CAAA;;;AA/QhB;;iBA8RgB,kBAAA,CAAmB,QAAA,UAAkB,QAAA;AHnVrD;;;;;AAGA;iBIKgB,aAAA,CAAc,OAAA;;;;iBAOd,WAAA,CAAY,IAAA,UAAc,OAAA;;;;;iBAQ1B,WAAA,CAAY,IAAA,UAAc,OAAA"}
@@ -9,6 +9,84 @@ interface CachedDoc$1 {
9
9
  * Returns CachedDoc[] with releases/blog-{version}.md files
10
10
  */
11
11
  declare function fetchBlogReleases(packageName: string, installedVersion: string): Promise<CachedDoc$1[]>;
12
+ /**
13
+ * Doc resolver types
14
+ */
15
+ interface NpmPackageInfo {
16
+ name: string;
17
+ version?: string;
18
+ description?: string;
19
+ homepage?: string;
20
+ repository?: string | {
21
+ type: string;
22
+ url: string;
23
+ directory?: string;
24
+ };
25
+ readme?: string;
26
+ dependencies?: Record<string, string>;
27
+ devDependencies?: Record<string, string>;
28
+ peerDependencies?: Record<string, string>;
29
+ }
30
+ interface ResolvedPackage {
31
+ name: string;
32
+ version?: string;
33
+ /** ISO date string when this version was released */
34
+ releasedAt?: string;
35
+ description?: string;
36
+ /** Production dependencies with version specifiers */
37
+ dependencies?: Record<string, string>;
38
+ /** npm dist-tags with version and release date */
39
+ distTags?: Record<string, {
40
+ version: string;
41
+ releasedAt?: string;
42
+ }>;
43
+ docsUrl?: string;
44
+ llmsUrl?: string;
45
+ readmeUrl?: string;
46
+ repoUrl?: string;
47
+ /** Git docs folder - versioned docs from repo */
48
+ gitDocsUrl?: string;
49
+ /** Git tag/ref used for gitDocsUrl */
50
+ gitRef?: string;
51
+ /** True when gitRef is a branch fallback (no version tag found) */
52
+ gitDocsFallback?: boolean;
53
+ /** URL pattern to crawl for docs */
54
+ crawlUrl?: string;
55
+ }
56
+ interface LocalDependency {
57
+ name: string;
58
+ version: string;
59
+ }
60
+ interface LlmsContent {
61
+ raw: string;
62
+ /** Markdown links extracted from llms.txt */
63
+ links: LlmsLink[];
64
+ }
65
+ interface LlmsLink {
66
+ title: string;
67
+ url: string;
68
+ }
69
+ interface FetchedDoc {
70
+ url: string;
71
+ title: string;
72
+ content: string;
73
+ }
74
+ interface ResolveAttempt {
75
+ source: 'npm' | 'crates' | 'github-docs' | 'github-meta' | 'github-search' | 'llms.txt' | 'readme';
76
+ url?: string;
77
+ status: 'success' | 'not-found' | 'error';
78
+ message?: string;
79
+ }
80
+ interface ResolveResult {
81
+ package: ResolvedPackage | null;
82
+ attempts: ResolveAttempt[];
83
+ /** npm registry version, available even when doc resolution fails */
84
+ registryVersion?: string;
85
+ }
86
+ declare function resolveCrateDocsWithAttempts(crateName: string, options?: {
87
+ version?: string;
88
+ onProgress?: (message: string) => void;
89
+ }): Promise<ResolveResult>;
12
90
  /**
13
91
  * Website crawl doc source — fetches docs by crawling a URL pattern
14
92
  */
@@ -136,80 +214,6 @@ declare function parseSkillFrontmatterName(content: string): {
136
214
  declare function fetchGitSkills(source: GitSkillSource, onProgress?: (msg: string) => void): Promise<{
137
215
  skills: RemoteSkill[];
138
216
  }>;
139
- /**
140
- * Doc resolver types
141
- */
142
- interface NpmPackageInfo {
143
- name: string;
144
- version?: string;
145
- description?: string;
146
- homepage?: string;
147
- repository?: string | {
148
- type: string;
149
- url: string;
150
- directory?: string;
151
- };
152
- readme?: string;
153
- dependencies?: Record<string, string>;
154
- devDependencies?: Record<string, string>;
155
- peerDependencies?: Record<string, string>;
156
- }
157
- interface ResolvedPackage {
158
- name: string;
159
- version?: string;
160
- /** ISO date string when this version was released */
161
- releasedAt?: string;
162
- description?: string;
163
- /** Production dependencies with version specifiers */
164
- dependencies?: Record<string, string>;
165
- /** npm dist-tags with version and release date */
166
- distTags?: Record<string, {
167
- version: string;
168
- releasedAt?: string;
169
- }>;
170
- docsUrl?: string;
171
- llmsUrl?: string;
172
- readmeUrl?: string;
173
- repoUrl?: string;
174
- /** Git docs folder - versioned docs from repo */
175
- gitDocsUrl?: string;
176
- /** Git tag/ref used for gitDocsUrl */
177
- gitRef?: string;
178
- /** True when gitRef is a branch fallback (no version tag found) */
179
- gitDocsFallback?: boolean;
180
- /** URL pattern to crawl for docs */
181
- crawlUrl?: string;
182
- }
183
- interface LocalDependency {
184
- name: string;
185
- version: string;
186
- }
187
- interface LlmsContent {
188
- raw: string;
189
- /** Markdown links extracted from llms.txt */
190
- links: LlmsLink[];
191
- }
192
- interface LlmsLink {
193
- title: string;
194
- url: string;
195
- }
196
- interface FetchedDoc {
197
- url: string;
198
- title: string;
199
- content: string;
200
- }
201
- interface ResolveAttempt {
202
- source: 'npm' | 'github-docs' | 'github-meta' | 'github-search' | 'llms.txt' | 'readme';
203
- url?: string;
204
- status: 'success' | 'not-found' | 'error';
205
- message?: string;
206
- }
207
- interface ResolveResult {
208
- package: ResolvedPackage | null;
209
- attempts: ResolveAttempt[];
210
- /** npm registry version, available even when doc resolution fails */
211
- registryVersion?: string;
212
- }
213
217
  /** Minimum git-doc file count to prefer over llms.txt */
214
218
  declare const MIN_GIT_DOCS = 5;
215
219
  /** True when git-docs exist but are too few to be useful (< MIN_GIT_DOCS) */
@@ -534,9 +538,6 @@ declare function generateReleaseIndex(releasesOrOpts: GitHubRelease[] | ReleaseI
534
538
  * 2. If no releases found, try CHANGELOG.md as fallback
535
539
  */
536
540
  declare function fetchReleaseNotes(owner: string, repo: string, installedVersion: string, gitRef?: string, packageName?: string, fromDate?: string, changelogRef?: string): Promise<CachedDoc[]>;
537
- /**
538
- * Shared utilities for doc resolution
539
- */
540
541
  declare const $fetch: _$ofetch.$Fetch;
541
542
  /**
542
543
  * Fetch text content from URL
@@ -566,6 +567,8 @@ declare function parseGitHubUrl(url: string): {
566
567
  owner: string;
567
568
  repo: string;
568
569
  } | null;
570
+ /** Parse owner/repo slug from GitHub URL */
571
+ declare function parseGitHubRepoSlug(url: string | undefined): string | undefined;
569
572
  /**
570
573
  * Normalize git repo URL to https
571
574
  */
@@ -582,5 +585,5 @@ declare function parsePackageSpec(spec: string): {
582
585
  * Extract branch hint from URL fragment (e.g. "git+https://...#main" → "main")
583
586
  */
584
587
  declare function extractBranchHint(url: string): string | undefined;
585
- export { formatIssueAsMarkdown as $, ResolveOptions as A, formatDiscussionAsMarkdown as At, resolveInstalledVersion as B, getDocOverride as C, parseGitSkillInput as Ct, getRepoEntry as D, generateDocsIndex as Dt, getRelatedPackages as E, resolveEntryFiles as Et, fetchPkgDist as F, downloadLlmsDocs as G, resolvePackageDocs as H, getInstalledSkillVersion as I, fetchLlmsUrl as J, extractSections as K, parseVersionSpecifier as L, fetchLatestVersion as M, fetchCrawledDocs as Mt, fetchNpmPackage as N, toCrawlPattern as Nt, getRepoKeyForPackage as O, GitHubDiscussion as Ot, fetchNpmRegistryMeta as P, fetchBlogReleases as Pt, fetchGitHubIssues as Q, readLocalDependencies as R, getCrawlUrl as S, fetchGitSkills as St, getPrereleaseChangelogRef as T, EntryFile as Tt, resolvePackageDocsWithAttempts as U, resolveLocalPackageDocs as V, searchNpmPackages as W, parseMarkdownLinks as X, normalizeLlmsLinks as Y, GitHubIssue as Z, parseSemver as _, ResolveAttempt as _t, isGitHubRepoUrl as a, fetchGitHubRepoMeta as at, DocOverride as b, GitSkillSource as bt, parsePackageSpec as c, filterFrameworkDocs as ct, ReleaseIndexOptions as d, validateGitDocsWithLlms as dt, generateIssueIndex as et, SemVer as f, FetchedDoc as ft, isPrerelease as g, NpmPackageInfo as gt, generateReleaseIndex as h, LocalDependency as ht, fetchText as i, fetchGitDocs as it, ResolveStep as j, generateDiscussionIndex as jt, LocalPackageInfo as k, fetchGitHubDiscussions as kt, verifyUrl as l, isShallowGitDocs as lt, fetchReleaseNotes as m, LlmsLink as mt, extractBranchHint as n, GitDocsResult as nt, normalizeRepoUrl as o, fetchReadme as ot, compareSemver as p, LlmsContent as pt, fetchLlmsTxt as q, fetchGitHubRaw as r, MIN_GIT_DOCS as rt, parseGitHubUrl as s, fetchReadmeContent as st, $fetch as t, isGhAvailable as tt, GitHubRelease as u, resolveGitHubRepo as ut, BlogPreset as v, ResolveResult as vt, getFilePatterns as w, parseSkillFrontmatterName as wt, getBlogPreset as x, RemoteSkill as xt, BlogRelease as y, ResolvedPackage as yt, readLocalPackageInfo as z };
588
+ export { fetchGitHubIssues as $, LocalPackageInfo as A, LlmsLink as At, readLocalPackageInfo as B, getCrawlUrl as C, formatDiscussionAsMarkdown as Ct, getRelatedPackages as D, resolveCrateDocsWithAttempts as Dt, getPrereleaseChangelogRef as E, toCrawlPattern as Et, fetchNpmRegistryMeta as F, ResolvedPackage as Ft, searchNpmPackages as G, resolveLocalPackageDocs as H, fetchPkgDist as I, fetchBlogReleases as It, fetchLlmsTxt as J, downloadLlmsDocs as K, getInstalledSkillVersion as L, ResolveStep as M, NpmPackageInfo as Mt, fetchLatestVersion as N, ResolveAttempt as Nt, getRepoEntry as O, FetchedDoc as Ot, fetchNpmPackage as P, ResolveResult as Pt, GitHubIssue as Q, parseVersionSpecifier as R, getBlogPreset as S, fetchGitHubDiscussions as St, getFilePatterns as T, fetchCrawledDocs as Tt, resolvePackageDocs as U, resolveInstalledVersion as V, resolvePackageDocsWithAttempts as W, normalizeLlmsLinks as X, fetchLlmsUrl as Y, parseMarkdownLinks as Z, isPrerelease as _, parseSkillFrontmatterName as _t, isGitHubRepoUrl as a, fetchGitDocs as at, BlogRelease as b, generateDocsIndex as bt, parseGitHubUrl as c, fetchReadmeContent as ct, GitHubRelease as d, resolveGitHubRepo as dt, formatIssueAsMarkdown as et, ReleaseIndexOptions as f, validateGitDocsWithLlms as ft, generateReleaseIndex as g, parseGitSkillInput as gt, fetchReleaseNotes as h, fetchGitSkills as ht, fetchText as i, MIN_GIT_DOCS as it, ResolveOptions as j, LocalDependency as jt, getRepoKeyForPackage as k, LlmsContent as kt, parsePackageSpec as l, filterFrameworkDocs as lt, compareSemver as m, RemoteSkill as mt, extractBranchHint as n, isGhAvailable as nt, normalizeRepoUrl as o, fetchGitHubRepoMeta as ot, SemVer as p, GitSkillSource as pt, extractSections as q, fetchGitHubRaw as r, GitDocsResult as rt, parseGitHubRepoSlug as s, fetchReadme as st, $fetch as t, generateIssueIndex as tt, verifyUrl as u, isShallowGitDocs as ut, parseSemver as v, EntryFile as vt, getDocOverride as w, generateDiscussionIndex as wt, DocOverride as x, GitHubDiscussion as xt, BlogPreset as y, resolveEntryFiles as yt, readLocalDependencies as z };
586
589
  //# sourceMappingURL=index3.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.d.mts","names":[],"sources":["../../src/sources/blog-releases.ts","../../src/sources/crawl.ts","../../src/sources/discussions.ts","../../src/sources/docs.ts","../../src/sources/entries.ts","../../src/sources/git-skills.ts","../../src/sources/types.ts","../../src/sources/github.ts","../../src/sources/issues.ts","../../src/sources/llms.ts","../../src/sources/npm.ts","../../src/sources/package-registry.ts","../../src/sources/releases.ts","../../src/sources/utils.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index3.d.mts","names":[],"sources":["../../src/sources/blog-releases.ts","../../src/sources/types.ts","../../src/sources/crates.ts","../../src/sources/crawl.ts","../../src/sources/discussions.ts","../../src/sources/docs.ts","../../src/sources/entries.ts","../../src/sources/git-skills.ts","../../src/sources/github.ts","../../src/sources/issues.ts","../../src/sources/llms.ts","../../src/sources/npm.ts","../../src/sources/package-registry.ts","../../src/sources/releases.ts","../../src/sources/utils.ts"],"mappings":"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"}
@@ -1,17 +1,18 @@
1
- import { a as getRepoCacheDir, i as getPackageDbPath, o as getCacheDir } from "./config.mjs";
1
+ import { a as getModelLabel, r as createToolProgress, s as optimizeDocs } from "./agent.mjs";
2
+ import { c as getRepoCacheDir, s as getPackageDbPath, t as getCacheDir } from "./version.mjs";
2
3
  import { i as readPackageJsonSafe } from "./package-json.mjs";
3
4
  import { n as linkShippedSkill, r as resolvePkgDir, t as getShippedSkills } from "./prepare.mjs";
4
5
  import { n as sanitizeMarkdown } from "./sanitize.mjs";
5
- import { a as hasShippedDocs, f as listReferenceFiles, g as writeToCache, i as getPkgKeyFiles, l as linkPkgNamed, o as isCached, p as readCachedDocs, r as ensureCacheDir } from "./cache.mjs";
6
+ import { a as hasShippedDocs, c as isReadmeOnlyCache, d as linkPkgNamed, h as readCachedDocs, i as getPkgKeyFiles, m as listReferenceFiles, o as inferDocsTypeFromCache, r as ensureCacheDir, s as isCached, v as writeToCache } from "./cache.mjs";
6
7
  import { r as createIndex, t as SearchDepsUnavailableError } from "./retriv.mjs";
7
8
  import { n as getSharedSkillsDir } from "./shared.mjs";
8
- import { C as downloadLlmsDocs, D as normalizeLlmsLinks, M as resolveEntryFiles, T as fetchLlmsTxt, Z as fetchGitHubRaw, b as isShallowGitDocs, d as resolvePackageDocs, h as fetchGitDocs, k as fetchGitSkills, tt as parseGitHubUrl, v as fetchReadmeContent, y as filterFrameworkDocs } from "./sources.mjs";
9
+ import { A as filterFrameworkDocs, E as fetchGitDocs, I as fetchLlmsTxt, P as downloadLlmsDocs, Q as fetchGitHubRaw, R as normalizeLlmsLinks, _ as resolveEntryFiles, d as resolvePackageDocs, j as isShallowGitDocs, k as fetchReadmeContent, m as fetchGitSkills, rt as parseGitHubUrl } from "./sources.mjs";
9
10
  import { a as targets } from "./detect.mjs";
10
- import { i as linkSkillToAgents, t as generateSkillMd } from "./prompts.mjs";
11
- import { a as getModelLabel, r as createToolProgress, s as optimizeDocs } from "./agent.mjs";
12
- import { O as readConfig, _ as promptForAgent, b as resolveAgent, w as defaultFeatures, x as sharedArgs } from "./cli-helpers.mjs";
13
- import { i as readLock, n as parsePackages, o as syncLockfilesToDirs, s as writeLock, t as mergeLocks } from "./lockfile.mjs";
14
- import { l as timedSpinner } from "./formatting.mjs";
11
+ import { _ as timedSpinner, n as writeGeneratedSkillMd, o as linkSkillToAgents, r as writeSkillMd } from "./skill.mjs";
12
+ import { a as readConfig, t as defaultFeatures } from "./config.mjs";
13
+ import { _ as promptForAgent, b as resolveAgent, x as sharedArgs } from "./cli-helpers.mjs";
14
+ import { a as readLock, c as writeLock, n as parsePackageNames, r as parsePackages, s as syncLockfilesToDirs, t as mergeLocks } from "./lockfile.mjs";
15
+ import { r as toStoragePackageName } from "./prefix.mjs";
15
16
  import { S as writePromptFiles, a as classifyCachedDoc, b as selectLlmConfig, g as indexResources } from "./sync-shared2.mjs";
16
17
  import { n as shutdownWorker } from "./pool2.mjs";
17
18
  import "./sync.mjs";
@@ -47,7 +48,7 @@ async function installCommand(opts) {
47
48
  const skillDir = join(skillsDir, name);
48
49
  const referencesPath = join(skillDir, ".skilld");
49
50
  const skillMdPath = join(skillDir, "SKILL.md");
50
- if (!existsSync(skillDir) || !existsSync(skillMdPath) || !existsSync(referencesPath) || hasStaleReferences(referencesPath, info.packageName || name, info.version, features)) toRestore.push({
51
+ if (!existsSync(skillDir) || !existsSync(skillMdPath) || !existsSync(referencesPath) || hasStaleReferences(referencesPath, toStoragePackageName(info.packageName || name), info.version, features)) toRestore.push({
51
52
  name,
52
53
  info
53
54
  });
@@ -62,7 +63,7 @@ async function installCommand(opts) {
62
63
  const regenerated = [];
63
64
  for (const { name, info } of toRestore) {
64
65
  const version = info.version;
65
- const pkgName = info.packageName || unsanitizeName(name, info.source);
66
+ const pkgName = toStoragePackageName(info.packageName || unsanitizeName(name, info.source));
66
67
  if (info.source === "shipped") {
67
68
  const match = getShippedSkills(pkgName, cwd, version).find((s) => s.skillName === name);
68
69
  if (match) {
@@ -85,7 +86,7 @@ async function installCommand(opts) {
85
86
  if (match) {
86
87
  const skillDir = join(skillsDir, name);
87
88
  mkdirSync(skillDir, { recursive: true });
88
- writeFileSync(join(skillDir, "SKILL.md"), sanitizeMarkdown(match.content));
89
+ writeSkillMd(skillDir, sanitizeMarkdown(match.content));
89
90
  for (const f of match.files) {
90
91
  const filePath = join(skillDir, f.path);
91
92
  mkdirSync(dirname(filePath), { recursive: true });
@@ -105,7 +106,7 @@ async function installCommand(opts) {
105
106
  mkdirSync(referencesPath, { recursive: true });
106
107
  linkPkgSymlink(referencesPath, pkgName, cwd, version);
107
108
  for (const pkg of parsePackages(info.packages)) linkPkgNamed(skillDir, pkg.name, cwd, pkg.version);
108
- if (!pkgHasShippedDocs(pkgName, cwd, version) && !isReadmeOnly(globalCachePath)) {
109
+ if (!pkgHasShippedDocs(pkgName, cwd, version) && !isReadmeOnlyCache(globalCachePath)) {
109
110
  const docsLink = join(referencesPath, "docs");
110
111
  const cachedDocs = join(globalCachePath, "docs");
111
112
  if (existsSync(docsLink)) unlinkSync(docsLink);
@@ -291,7 +292,7 @@ async function installCommand(opts) {
291
292
  mkdirSync(referencesPath, { recursive: true });
292
293
  linkPkgSymlink(referencesPath, pkgName, cwd, version);
293
294
  for (const pkg of parsePackages(info.packages)) linkPkgNamed(skillDir, pkg.name, cwd, pkg.version);
294
- if (!isReadmeOnly(globalCachePath)) {
295
+ if (!isReadmeOnlyCache(globalCachePath)) {
295
296
  const docsLink = join(referencesPath, "docs");
296
297
  const cachedDocsDir = join(globalCachePath, "docs");
297
298
  if (existsSync(docsLink)) unlinkSync(docsLink);
@@ -391,12 +392,6 @@ function linkPkgSymlink(referencesDir, name, cwd, version) {
391
392
  if (existsSync(pkgLink)) unlinkSync(pkgLink);
392
393
  symlinkSync(pkgPath, pkgLink, "junction");
393
394
  }
394
- function isReadmeOnly(cacheDir) {
395
- const docsDir = join(cacheDir, "docs");
396
- if (!existsSync(docsDir)) return false;
397
- const files = readdirSync(docsDir);
398
- return files.length === 1 && files[0] === "README.md";
399
- }
400
395
  function pkgHasShippedDocs(name, cwd, version) {
401
396
  const pkgPath = resolvePkgDir(name, cwd, version);
402
397
  if (!pkgPath) return false;
@@ -442,12 +437,10 @@ async function enhanceRegenerated(pkgName, version, skillDir, model, sections, c
442
437
  const pkgJsonResult = readPackageJsonSafe(join(pkgPath, "package.json"));
443
438
  if (pkgJsonResult) description = pkgJsonResult.parsed.description;
444
439
  }
445
- let docsType = "docs";
446
- if (existsSync(join(globalCachePath, "docs", "llms.txt"))) docsType = "llms.txt";
447
- else if (isReadmeOnly(globalCachePath)) docsType = "readme";
440
+ const docsType = inferDocsTypeFromCache(globalCachePath);
448
441
  const dirName = skillDir.split("/").pop();
449
- const allPackages = parsePackages(packages).map((p) => ({ name: p.name }));
450
- const skillMd = generateSkillMd({
442
+ const allPackages = parsePackageNames(packages);
443
+ writeGeneratedSkillMd(skillDir, {
451
444
  name: pkgName,
452
445
  version,
453
446
  description,
@@ -463,7 +456,6 @@ async function enhanceRegenerated(pkgName, version, skillDir, model, sections, c
463
456
  packages: allPackages.length > 1 ? allPackages : void 0,
464
457
  features
465
458
  });
466
- writeFileSync(join(skillDir, "SKILL.md"), skillMd);
467
459
  } else llmLog.message("Enhancement skipped");
468
460
  }
469
461
  const installCommandDef = defineCommand({
@@ -491,8 +483,7 @@ const installCommandDef = defineCommand({
491
483
  }
492
484
  });
493
485
  function regenerateBaseSkillMd(skillDir, pkgName, version, cwd, allSkillNames, source, packages) {
494
- const skillMdPath = join(skillDir, "SKILL.md");
495
- if (existsSync(skillMdPath)) return false;
486
+ if (existsSync(join(skillDir, "SKILL.md"))) return false;
496
487
  const pkgPath = resolvePkgDir(pkgName, cwd, version);
497
488
  let description;
498
489
  if (pkgPath) {
@@ -500,17 +491,16 @@ function regenerateBaseSkillMd(skillDir, pkgName, version, cwd, allSkillNames, s
500
491
  if (pkgResult) description = pkgResult.parsed.description;
501
492
  }
502
493
  const globalCachePath = getCacheDir(pkgName, version);
503
- let docsType = "docs";
504
- if (source?.includes("llms.txt") || existsSync(join(globalCachePath, "docs", "llms.txt"))) docsType = "llms.txt";
505
- else if (isReadmeOnly(globalCachePath)) docsType = "readme";
494
+ const docsType = inferDocsTypeFromCache(globalCachePath, source);
506
495
  const feat = readConfig().features ?? defaultFeatures;
507
496
  const hasIssues = feat.issues && existsSync(join(globalCachePath, "issues"));
508
497
  const hasDiscussions = feat.discussions && existsSync(join(globalCachePath, "discussions"));
509
498
  const hasReleases = feat.releases && existsSync(join(globalCachePath, "releases"));
510
499
  const relatedSkills = allSkillNames.filter((n) => n !== pkgName);
511
500
  const dirName = skillDir.split("/").pop();
512
- const allPackages = parsePackages(packages).map((p) => ({ name: p.name }));
513
- const content = generateSkillMd({
501
+ const allPackages = parsePackageNames(packages);
502
+ mkdirSync(skillDir, { recursive: true });
503
+ writeGeneratedSkillMd(skillDir, {
514
504
  name: pkgName,
515
505
  version,
516
506
  description,
@@ -525,8 +515,6 @@ function regenerateBaseSkillMd(skillDir, pkgName, version, cwd, allSkillNames, s
525
515
  packages: allPackages.length > 1 ? allPackages : void 0,
526
516
  features: readConfig().features ?? defaultFeatures
527
517
  });
528
- mkdirSync(skillDir, { recursive: true });
529
- writeFileSync(skillMdPath, content);
530
518
  return true;
531
519
  }
532
520
  function hasStaleReferences(referencesPath, pkgName, version, features) {