skilld 1.7.0 → 1.7.2

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 (68) hide show
  1. package/dist/_chunks/agent.mjs +14 -5
  2. package/dist/_chunks/agent.mjs.map +1 -1
  3. package/dist/_chunks/assemble.mjs +1 -1
  4. package/dist/_chunks/author.mjs +6 -9
  5. package/dist/_chunks/author.mjs.map +1 -1
  6. package/dist/_chunks/cache.mjs +11 -1
  7. package/dist/_chunks/cache.mjs.map +1 -1
  8. package/dist/_chunks/cli-helpers.mjs +1 -1
  9. package/dist/_chunks/core.mjs +1 -1
  10. package/dist/_chunks/index.d.mts +4 -1
  11. package/dist/_chunks/index.d.mts.map +1 -1
  12. package/dist/_chunks/index3.d.mts +3 -1
  13. package/dist/_chunks/index3.d.mts.map +1 -1
  14. package/dist/_chunks/install.mjs +523 -85
  15. package/dist/_chunks/install.mjs.map +1 -1
  16. package/dist/_chunks/list.mjs +1 -1
  17. package/dist/_chunks/lockfile.mjs +4 -1
  18. package/dist/_chunks/lockfile.mjs.map +1 -1
  19. package/dist/_chunks/prefix.mjs +5 -5
  20. package/dist/_chunks/prefix.mjs.map +1 -1
  21. package/dist/_chunks/prepare2.mjs +4 -4
  22. package/dist/_chunks/prepare2.mjs.map +1 -1
  23. package/dist/_chunks/prompts.mjs +3 -142
  24. package/dist/_chunks/prompts.mjs.map +1 -1
  25. package/dist/_chunks/search-helpers.mjs +2 -2
  26. package/dist/_chunks/search-interactive.mjs +1 -1
  27. package/dist/_chunks/search.mjs +1 -1
  28. package/dist/_chunks/shared.mjs +463 -1
  29. package/dist/_chunks/shared.mjs.map +1 -1
  30. package/dist/_chunks/skill.mjs +329 -0
  31. package/dist/_chunks/skill.mjs.map +1 -0
  32. package/dist/_chunks/skills.mjs +3 -3
  33. package/dist/_chunks/sources.mjs +7 -3
  34. package/dist/_chunks/sources.mjs.map +1 -1
  35. package/dist/_chunks/sync-registry.mjs +4 -4
  36. package/dist/_chunks/sync-registry.mjs.map +1 -1
  37. package/dist/_chunks/sync-shared2.mjs +9 -10
  38. package/dist/_chunks/sync-shared2.mjs.map +1 -1
  39. package/dist/_chunks/sync.mjs +48 -62
  40. package/dist/_chunks/sync.mjs.map +1 -1
  41. package/dist/_chunks/uninstall.mjs +2 -2
  42. package/dist/_chunks/upload.mjs +1 -1
  43. package/dist/_chunks/validate.mjs +1 -1
  44. package/dist/_chunks/wizard.mjs +1 -1
  45. package/dist/agent/index.d.mts +3 -1
  46. package/dist/agent/index.d.mts.map +1 -1
  47. package/dist/agent/index.mjs +4 -4
  48. package/dist/cache/index.d.mts +2 -2
  49. package/dist/cache/index.mjs +2 -2
  50. package/dist/cli.mjs +5 -6
  51. package/dist/cli.mjs.map +1 -1
  52. package/dist/index.d.mts +2 -2
  53. package/dist/index.mjs +1 -1
  54. package/dist/prepare.mjs +1 -1
  55. package/dist/sources/index.d.mts +2 -2
  56. package/dist/sources/index.mjs +3 -3
  57. package/dist/types.d.mts +2 -2
  58. package/package.json +6 -5
  59. package/dist/THIRD-PARTY-LICENSES.md +0 -38
  60. package/dist/_chunks/formatting.mjs +0 -82
  61. package/dist/_chunks/formatting.mjs.map +0 -1
  62. package/dist/_chunks/install2.mjs +0 -554
  63. package/dist/_chunks/install2.mjs.map +0 -1
  64. package/dist/_chunks/libs/@sinclair/typebox.mjs +0 -2304
  65. package/dist/_chunks/libs/@sinclair/typebox.mjs.map +0 -1
  66. package/dist/_chunks/package-registry.mjs +0 -465
  67. package/dist/_chunks/package-registry.mjs.map +0 -1
  68. package/dist/_chunks/rolldown-runtime.mjs +0 -11
@@ -3,6 +3,468 @@ import { existsSync } from "node:fs";
3
3
  import { execSync } from "node:child_process";
4
4
  import { diff, gt, valid } from "semver";
5
5
  import { isWindows } from "std-env";
6
+ const REPO_REGISTRY = {
7
+ "vuejs/core": {
8
+ owner: "vuejs",
9
+ repo: "core",
10
+ docsRepo: "docs",
11
+ docsPath: "src",
12
+ homepage: "https://vuejs.org",
13
+ prereleaseChangelogRef: "minor",
14
+ packages: {
15
+ "vue": {
16
+ primary: true,
17
+ filePatterns: ["*.vue"],
18
+ rules: ["ALWAYS use `<script setup lang=\"ts\">`", "Use ```vue code fences for SFC examples containing `<script>` or `<template>` tags, ```ts for plain TypeScript"]
19
+ },
20
+ "@vue/compiler-core": {},
21
+ "@vue/compiler-dom": {},
22
+ "@vue/reactivity": {},
23
+ "@vue/runtime-core": {},
24
+ "@vue/runtime-dom": {},
25
+ "@vue/shared": {}
26
+ },
27
+ blogReleases: [
28
+ {
29
+ version: "3.5",
30
+ url: "https://blog.vuejs.org/posts/vue-3-5",
31
+ date: "2024-09-01"
32
+ },
33
+ {
34
+ version: "3.4",
35
+ url: "https://blog.vuejs.org/posts/vue-3-4",
36
+ date: "2023-12-28"
37
+ },
38
+ {
39
+ version: "3.3",
40
+ url: "https://blog.vuejs.org/posts/vue-3-3",
41
+ date: "2023-05-11"
42
+ },
43
+ {
44
+ version: "3.2",
45
+ url: "https://blog.vuejs.org/posts/vue-3-2",
46
+ date: "2021-08-05"
47
+ },
48
+ {
49
+ version: "3.1",
50
+ url: "https://blog.vuejs.org/posts/vue-3-1",
51
+ date: "2021-06-07"
52
+ },
53
+ {
54
+ version: "3.0",
55
+ url: "https://blog.vuejs.org/posts/vue-3-0",
56
+ date: "2020-09-18"
57
+ }
58
+ ]
59
+ },
60
+ "tailwindlabs/tailwindcss": {
61
+ owner: "tailwindlabs",
62
+ repo: "tailwindcss",
63
+ docsRepo: "tailwindcss.com",
64
+ docsPath: "src/docs",
65
+ homepage: "https://tailwindcss.com",
66
+ packages: { tailwindcss: { primary: true } }
67
+ },
68
+ "withastro/astro": {
69
+ owner: "withastro",
70
+ repo: "astro",
71
+ docsRepo: "docs",
72
+ docsPath: "src/content/docs/en",
73
+ homepage: "https://docs.astro.build",
74
+ packages: { astro: {
75
+ primary: true,
76
+ filePatterns: ["*.astro"]
77
+ } }
78
+ },
79
+ "vueuse/vueuse": {
80
+ owner: "vueuse",
81
+ repo: "vueuse",
82
+ docsPath: "packages",
83
+ packages: { "@vueuse/core": { primary: true } }
84
+ },
85
+ "sveltejs/svelte": {
86
+ owner: "sveltejs",
87
+ repo: "svelte",
88
+ packages: { svelte: {
89
+ primary: true,
90
+ filePatterns: ["*.svelte"],
91
+ rules: ["ALWAYS use runes syntax ($state, $derived, $effect, $props)"]
92
+ } }
93
+ },
94
+ "solidjs/solid": {
95
+ owner: "solidjs",
96
+ repo: "solid",
97
+ packages: { "solid-js": {
98
+ primary: true,
99
+ filePatterns: ["*.jsx", "*.tsx"]
100
+ } }
101
+ },
102
+ "QwikDev/qwik": {
103
+ owner: "QwikDev",
104
+ repo: "qwik",
105
+ packages: { qwik: {
106
+ primary: true,
107
+ filePatterns: ["*.tsx"]
108
+ } }
109
+ },
110
+ "marko-js/marko": {
111
+ owner: "marko-js",
112
+ repo: "marko",
113
+ packages: { marko: {
114
+ primary: true,
115
+ filePatterns: ["*.marko"]
116
+ } }
117
+ },
118
+ "riot/riot": {
119
+ owner: "riot",
120
+ repo: "riot",
121
+ packages: { riot: {
122
+ primary: true,
123
+ filePatterns: ["*.riot"]
124
+ } }
125
+ },
126
+ "microsoft/TypeScript": {
127
+ owner: "microsoft",
128
+ repo: "TypeScript",
129
+ packages: { typescript: {
130
+ primary: true,
131
+ filePatterns: [
132
+ "*.ts",
133
+ "*.tsx",
134
+ "*.mts",
135
+ "*.cts"
136
+ ]
137
+ } },
138
+ blogReleases: [
139
+ {
140
+ version: "6.0",
141
+ url: "https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta/",
142
+ date: "2026-02-11",
143
+ title: "Announcing TypeScript 6.0 Beta"
144
+ },
145
+ {
146
+ version: "5.9",
147
+ url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/",
148
+ date: "2025-08-01",
149
+ title: "Announcing TypeScript 5.9"
150
+ },
151
+ {
152
+ version: "5.8",
153
+ url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/",
154
+ date: "2025-02-28",
155
+ title: "Announcing TypeScript 5.8"
156
+ },
157
+ {
158
+ version: "5.7",
159
+ url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/",
160
+ date: "2024-11-22",
161
+ title: "Announcing TypeScript 5.7"
162
+ },
163
+ {
164
+ version: "5.6",
165
+ url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/",
166
+ date: "2024-09-09",
167
+ title: "Announcing TypeScript 5.6"
168
+ },
169
+ {
170
+ version: "5.5",
171
+ url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-5/",
172
+ date: "2024-06-20",
173
+ title: "Announcing TypeScript 5.5"
174
+ }
175
+ ]
176
+ },
177
+ "jashkenas/coffeescript": {
178
+ owner: "jashkenas",
179
+ repo: "coffeescript",
180
+ packages: { coffeescript: {
181
+ primary: true,
182
+ filePatterns: ["*.coffee"]
183
+ } }
184
+ },
185
+ "gkz/LiveScript": {
186
+ owner: "gkz",
187
+ repo: "LiveScript",
188
+ packages: { livescript: {
189
+ primary: true,
190
+ filePatterns: ["*.ls"]
191
+ } }
192
+ },
193
+ "elm/compiler": {
194
+ owner: "elm",
195
+ repo: "compiler",
196
+ packages: { elm: {
197
+ primary: true,
198
+ filePatterns: ["*.elm"]
199
+ } }
200
+ },
201
+ "sass/dart-sass": {
202
+ owner: "sass",
203
+ repo: "dart-sass",
204
+ packages: { sass: {
205
+ primary: true,
206
+ filePatterns: ["*.scss", "*.sass"]
207
+ } }
208
+ },
209
+ "less/less.js": {
210
+ owner: "less",
211
+ repo: "less.js",
212
+ packages: { less: {
213
+ primary: true,
214
+ filePatterns: ["*.less"]
215
+ } }
216
+ },
217
+ "stylus/stylus": {
218
+ owner: "stylus",
219
+ repo: "stylus",
220
+ packages: { stylus: {
221
+ primary: true,
222
+ filePatterns: ["*.styl"]
223
+ } }
224
+ },
225
+ "postcss/postcss": {
226
+ owner: "postcss",
227
+ repo: "postcss",
228
+ packages: { postcss: {
229
+ primary: true,
230
+ filePatterns: ["*.css", "*.pcss"]
231
+ } }
232
+ },
233
+ "pugjs/pug": {
234
+ owner: "pugjs",
235
+ repo: "pug",
236
+ packages: { pug: {
237
+ primary: true,
238
+ filePatterns: ["*.pug"]
239
+ } }
240
+ },
241
+ "mde/ejs": {
242
+ owner: "mde",
243
+ repo: "ejs",
244
+ packages: { ejs: {
245
+ primary: true,
246
+ filePatterns: ["*.ejs"]
247
+ } }
248
+ },
249
+ "handlebars-lang/handlebars.js": {
250
+ owner: "handlebars-lang",
251
+ repo: "handlebars.js",
252
+ packages: { handlebars: {
253
+ primary: true,
254
+ filePatterns: ["*.hbs", "*.handlebars"]
255
+ } }
256
+ },
257
+ "janl/mustache.js": {
258
+ owner: "janl",
259
+ repo: "mustache.js",
260
+ packages: { mustache: {
261
+ primary: true,
262
+ filePatterns: ["*.mustache"]
263
+ } }
264
+ },
265
+ "mozilla/nunjucks": {
266
+ owner: "mozilla",
267
+ repo: "nunjucks",
268
+ packages: { nunjucks: {
269
+ primary: true,
270
+ filePatterns: ["*.njk"]
271
+ } }
272
+ },
273
+ "Shopify/liquid": {
274
+ owner: "Shopify",
275
+ repo: "liquid",
276
+ packages: { liquid: {
277
+ primary: true,
278
+ filePatterns: ["*.liquid"]
279
+ } }
280
+ },
281
+ "eemeli/yaml": {
282
+ owner: "eemeli",
283
+ repo: "yaml",
284
+ packages: { yaml: {
285
+ primary: true,
286
+ filePatterns: ["*.yaml", "*.yml"]
287
+ } }
288
+ },
289
+ "nodeca/js-yaml": {
290
+ owner: "nodeca",
291
+ repo: "js-yaml",
292
+ packages: { "js-yaml": {
293
+ primary: true,
294
+ filePatterns: ["*.yaml", "*.yml"]
295
+ } }
296
+ },
297
+ "BinaryMuse/toml-node": {
298
+ owner: "BinaryMuse",
299
+ repo: "toml-node",
300
+ packages: {
301
+ "toml": {
302
+ primary: true,
303
+ filePatterns: ["*.toml"]
304
+ },
305
+ "@iarna/toml": { filePatterns: ["*.toml"] }
306
+ }
307
+ },
308
+ "json5/json5": {
309
+ owner: "json5",
310
+ repo: "json5",
311
+ packages: { json5: {
312
+ primary: true,
313
+ filePatterns: ["*.json5"]
314
+ } }
315
+ },
316
+ "microsoft/node-jsonc-parser": {
317
+ owner: "microsoft",
318
+ repo: "node-jsonc-parser",
319
+ packages: { "jsonc-parser": {
320
+ primary: true,
321
+ filePatterns: ["*.jsonc"]
322
+ } }
323
+ },
324
+ "markdown-it/markdown-it": {
325
+ owner: "markdown-it",
326
+ repo: "markdown-it",
327
+ packages: { "markdown-it": {
328
+ primary: true,
329
+ filePatterns: ["*.md"]
330
+ } }
331
+ },
332
+ "markedjs/marked": {
333
+ owner: "markedjs",
334
+ repo: "marked",
335
+ packages: { marked: {
336
+ primary: true,
337
+ filePatterns: ["*.md"]
338
+ } }
339
+ },
340
+ "remarkjs/remark": {
341
+ owner: "remarkjs",
342
+ repo: "remark",
343
+ packages: { remark: {
344
+ primary: true,
345
+ filePatterns: ["*.md", "*.mdx"]
346
+ } }
347
+ },
348
+ "mdx-js/mdx": {
349
+ owner: "mdx-js",
350
+ repo: "mdx",
351
+ packages: { "@mdx-js/mdx": {
352
+ primary: true,
353
+ filePatterns: ["*.mdx"]
354
+ } }
355
+ },
356
+ "graphql/graphql-js": {
357
+ owner: "graphql",
358
+ repo: "graphql-js",
359
+ packages: {
360
+ "graphql": {
361
+ primary: true,
362
+ filePatterns: ["*.graphql", "*.gql"]
363
+ },
364
+ "graphql-tag": { filePatterns: ["*.graphql", "*.gql"] }
365
+ }
366
+ },
367
+ "dotansimha/graphql-code-generator": {
368
+ owner: "dotansimha",
369
+ repo: "graphql-code-generator",
370
+ packages: { "@graphql-codegen/cli": {
371
+ primary: true,
372
+ filePatterns: ["*.graphql", "*.gql"]
373
+ } }
374
+ },
375
+ "quasarframework/quasar": {
376
+ owner: "quasarframework",
377
+ repo: "quasar",
378
+ docsPath: "docs/src/pages",
379
+ docsRef: "dev",
380
+ homepage: "https://quasar.dev",
381
+ packages: { quasar: { primary: true } }
382
+ },
383
+ "motiondivision/motion-vue": {
384
+ owner: "motiondivision",
385
+ repo: "motion-vue",
386
+ homepage: "https://motion.dev",
387
+ crawlUrl: "https://motion.dev/docs/vue**",
388
+ packages: { "motion-v": { primary: true } }
389
+ },
390
+ "prisma/prisma": {
391
+ owner: "prisma",
392
+ repo: "prisma",
393
+ packages: {
394
+ "prisma": {
395
+ primary: true,
396
+ filePatterns: ["*.prisma"]
397
+ },
398
+ "@prisma/client": { filePatterns: ["*.prisma"] }
399
+ }
400
+ },
401
+ "nicolo-ribaudo/tc39-proposal-wasm-esm-integration": {
402
+ owner: "nicolo-ribaudo",
403
+ repo: "tc39-proposal-wasm-esm-integration",
404
+ packages: { "wasm-pack": {
405
+ primary: true,
406
+ filePatterns: ["*.wasm"]
407
+ } }
408
+ }
409
+ };
410
+ const PACKAGE_TO_REPO_MAP = {};
411
+ for (const [repoKey, entry] of Object.entries(REPO_REGISTRY)) for (const packageName of Object.keys(entry.packages)) PACKAGE_TO_REPO_MAP[packageName] = repoKey;
412
+ function getDocOverride(packageName) {
413
+ const repoKey = PACKAGE_TO_REPO_MAP[packageName];
414
+ if (!repoKey) return void 0;
415
+ const entry = REPO_REGISTRY[repoKey];
416
+ if (!entry?.docsRepo && !entry?.docsPath) return void 0;
417
+ return {
418
+ owner: entry.owner,
419
+ repo: entry.docsRepo || entry.repo,
420
+ path: entry.docsPath || "",
421
+ ref: entry.docsRef,
422
+ homepage: entry.homepage
423
+ };
424
+ }
425
+ function getBlogPreset(packageName) {
426
+ const repoKey = PACKAGE_TO_REPO_MAP[packageName];
427
+ if (!repoKey) return void 0;
428
+ const entry = REPO_REGISTRY[repoKey];
429
+ if (!entry?.blogReleases) return void 0;
430
+ return {
431
+ packageName,
432
+ releases: entry.blogReleases
433
+ };
434
+ }
435
+ function getFilePatterns(packageName) {
436
+ const repoKey = PACKAGE_TO_REPO_MAP[packageName];
437
+ if (!repoKey) return void 0;
438
+ return REPO_REGISTRY[repoKey]?.packages[packageName]?.filePatterns;
439
+ }
440
+ function getRepoEntry(repoKey) {
441
+ return REPO_REGISTRY[repoKey];
442
+ }
443
+ function getRepoKeyForPackage(packageName) {
444
+ return PACKAGE_TO_REPO_MAP[packageName];
445
+ }
446
+ function getPackageRules(packageName) {
447
+ const repoKey = PACKAGE_TO_REPO_MAP[packageName];
448
+ if (!repoKey) return [];
449
+ return REPO_REGISTRY[repoKey]?.packages[packageName]?.rules ?? [];
450
+ }
451
+ function getPrereleaseChangelogRef(packageName) {
452
+ const repoKey = PACKAGE_TO_REPO_MAP[packageName];
453
+ if (!repoKey) return void 0;
454
+ return REPO_REGISTRY[repoKey]?.prereleaseChangelogRef;
455
+ }
456
+ function getCrawlUrl(packageName) {
457
+ const repoKey = PACKAGE_TO_REPO_MAP[packageName];
458
+ if (!repoKey) return void 0;
459
+ return REPO_REGISTRY[repoKey]?.crawlUrl;
460
+ }
461
+ function getRelatedPackages(packageName) {
462
+ const repoKey = PACKAGE_TO_REPO_MAP[packageName];
463
+ if (!repoKey) return [];
464
+ const entry = REPO_REGISTRY[repoKey];
465
+ if (!entry) return [];
466
+ return Object.keys(entry.packages);
467
+ }
6
468
  function mapInsert(map, key, create) {
7
469
  let val = map.get(key);
8
470
  if (val === void 0) {
@@ -36,6 +498,6 @@ function getSharedSkillsDir(cwd = process.cwd()) {
36
498
  const dir = join(cwd, SHARED_SKILLS_DIR);
37
499
  return existsSync(dir) ? dir : null;
38
500
  }
39
- export { semverDiff as a, resolveSkilldCommand as i, getSharedSkillsDir as n, semverGt as o, mapInsert as r, semverValid as s, SHARED_SKILLS_DIR as t };
501
+ export { semverDiff as a, getBlogPreset as c, getFilePatterns as d, getPackageRules as f, getRepoKeyForPackage as g, getRepoEntry as h, resolveSkilldCommand as i, getCrawlUrl as l, getRelatedPackages as m, getSharedSkillsDir as n, semverGt as o, getPrereleaseChangelogRef as p, mapInsert as r, semverValid as s, SHARED_SKILLS_DIR as t, getDocOverride as u };
40
502
 
41
503
  //# sourceMappingURL=shared.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.mjs","names":["_semverValid","_semverGt","_semverDiff"],"sources":["../../src/core/shared.ts"],"sourcesContent":["import { execSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\nimport { join } from 'pathe'\nimport { diff as _semverDiff, gt as _semverGt, valid as _semverValid } from 'semver'\nimport { isWindows } from 'std-env'\n\n/** Get-or-create for Maps. Polyfill for Map.getOrInsertComputed (not yet in Node.js). */\nexport function mapInsert<K, V>(map: Map<K, V>, key: K, create: () => V): V {\n let val = map.get(key)\n if (val === undefined) {\n val = create()\n map.set(key, val)\n }\n return val\n}\n\n/** Returns the cleaned version if valid semver, null otherwise. */\nexport function semverValid(v: string): string | null {\n return _semverValid(v, true)\n}\n\n/** Compare two semver strings: returns true if a > b. Handles prereleases. */\nexport function semverGt(a: string, b: string): boolean {\n return _semverGt(a, b, true)\n}\n\n/** Returns the semver diff type between two versions (e.g. 'major', 'minor', 'patch', 'prerelease'), or null if equal/invalid. */\nexport function semverDiff(a: string, b: string): string | null {\n return _semverDiff(a, b)\n}\n\nlet _skilldCommand: string | undefined\n\n/** Resolve the skilld CLI command — returns `skilld` if the binary is in PATH, otherwise `npx -y skilld` */\nexport function resolveSkilldCommand(): string {\n if (_skilldCommand !== undefined)\n return _skilldCommand\n try {\n const lookup = isWindows ? 'where' : 'which'\n execSync(`${lookup} skilld`, { stdio: 'ignore' })\n _skilldCommand = 'skilld'\n }\n catch {\n _skilldCommand = 'npx -y skilld'\n }\n return _skilldCommand\n}\n\nexport const SHARED_SKILLS_DIR = '.skills'\n\n/** Returns the shared skills directory path if `.skills/` exists at project root, else null */\nexport function getSharedSkillsDir(cwd: string = process.cwd()): string | null {\n const dir = join(cwd, SHARED_SKILLS_DIR)\n return existsSync(dir) ? dir : null\n}\n"],"mappings":";;;;;AAOA,SAAgB,UAAgB,KAAgB,KAAQ,QAAoB;CAC1E,IAAI,MAAM,IAAI,IAAI,IAAI;AACtB,KAAI,QAAQ,KAAA,GAAW;AACrB,QAAM,QAAQ;AACd,MAAI,IAAI,KAAK,IAAI;;AAEnB,QAAO;;AAIT,SAAgB,YAAY,GAA0B;AACpD,QAAOA,MAAa,GAAG,KAAK;;AAI9B,SAAgB,SAAS,GAAW,GAAoB;AACtD,QAAOC,GAAU,GAAG,GAAG,KAAK;;AAI9B,SAAgB,WAAW,GAAW,GAA0B;AAC9D,QAAOC,KAAY,GAAG,EAAE;;AAG1B,IAAI;AAGJ,SAAgB,uBAA+B;AAC7C,KAAI,mBAAmB,KAAA,EACrB,QAAO;AACT,KAAI;AAEF,WAAS,GADM,YAAY,UAAU,QAClB,UAAU,EAAE,OAAO,UAAU,CAAC;AACjD,mBAAiB;SAEb;AACJ,mBAAiB;;AAEnB,QAAO;;AAGT,MAAa,oBAAoB;AAGjC,SAAgB,mBAAmB,MAAc,QAAQ,KAAK,EAAiB;CAC7E,MAAM,MAAM,KAAK,KAAK,kBAAkB;AACxC,QAAO,WAAW,IAAI,GAAG,MAAM"}
1
+ {"version":3,"file":"shared.mjs","names":["_semverValid","_semverGt","_semverDiff"],"sources":["../../src/sources/package-registry.ts","../../src/core/shared.ts"],"sourcesContent":["/**\n * Unified package registry — single source of truth for package metadata.\n * Consolidates doc overrides, blog presets, and file patterns.\n * Keyed by GitHub 'owner/repo' (source code repo).\n */\n\nexport interface BlogRelease {\n version: string\n url: string\n date: string\n title?: string\n}\n\nexport interface PackageEntry {\n filePatterns?: string[]\n primary?: boolean\n /** Extra rules injected into skill generation prompts */\n rules?: string[]\n}\n\nexport interface RepoEntry {\n owner: string\n repo: string\n /** Separate docs repo name (e.g. 'docs' → owner/docs) */\n docsRepo?: string\n /** Path prefix to filter markdown files */\n docsPath?: string\n /** Branch/ref override */\n docsRef?: string\n /** Homepage URL */\n homepage?: string\n /** URL pattern to crawl for docs (glob, e.g. 'https://example.com/docs/**') */\n crawlUrl?: string\n /** Branch to fetch CHANGELOG.md from when installed version is a prerelease (e.g. 'minor' for Vue) */\n prereleaseChangelogRef?: string\n /** Packages in this repo */\n packages: Record<string, PackageEntry>\n /** Curated blog release posts */\n blogReleases?: BlogRelease[]\n}\n\n// Backwards-compatible types\nexport interface DocOverride {\n owner: string\n repo: string\n path: string\n ref?: string\n homepage?: string\n}\n\nexport interface BlogPreset {\n packageName: string\n releases: BlogRelease[]\n}\n\n// ── Registry ──\n\nconst REPO_REGISTRY: Record<string, RepoEntry> = {\n // ── Frameworks with doc overrides ──\n\n 'vuejs/core': {\n owner: 'vuejs',\n repo: 'core',\n docsRepo: 'docs',\n docsPath: 'src',\n homepage: 'https://vuejs.org',\n prereleaseChangelogRef: 'minor',\n packages: {\n 'vue': { primary: true, filePatterns: ['*.vue'], rules: ['ALWAYS use `<script setup lang=\"ts\">`', 'Use ```vue code fences for SFC examples containing `<script>` or `<template>` tags, ```ts for plain TypeScript'] },\n '@vue/compiler-core': {},\n '@vue/compiler-dom': {},\n '@vue/reactivity': {},\n '@vue/runtime-core': {},\n '@vue/runtime-dom': {},\n '@vue/shared': {},\n },\n blogReleases: [\n { version: '3.5', url: 'https://blog.vuejs.org/posts/vue-3-5', date: '2024-09-01' },\n { version: '3.4', url: 'https://blog.vuejs.org/posts/vue-3-4', date: '2023-12-28' },\n { version: '3.3', url: 'https://blog.vuejs.org/posts/vue-3-3', date: '2023-05-11' },\n { version: '3.2', url: 'https://blog.vuejs.org/posts/vue-3-2', date: '2021-08-05' },\n { version: '3.1', url: 'https://blog.vuejs.org/posts/vue-3-1', date: '2021-06-07' },\n { version: '3.0', url: 'https://blog.vuejs.org/posts/vue-3-0', date: '2020-09-18' },\n ],\n },\n\n 'tailwindlabs/tailwindcss': {\n owner: 'tailwindlabs',\n repo: 'tailwindcss',\n docsRepo: 'tailwindcss.com',\n docsPath: 'src/docs',\n homepage: 'https://tailwindcss.com',\n packages: {\n tailwindcss: { primary: true },\n },\n },\n\n 'withastro/astro': {\n owner: 'withastro',\n repo: 'astro',\n docsRepo: 'docs',\n docsPath: 'src/content/docs/en',\n homepage: 'https://docs.astro.build',\n packages: {\n astro: { primary: true, filePatterns: ['*.astro'] },\n },\n },\n\n 'vueuse/vueuse': {\n owner: 'vueuse',\n repo: 'vueuse',\n docsPath: 'packages',\n packages: {\n '@vueuse/core': { primary: true },\n },\n },\n\n // ── Frameworks (file patterns only) ──\n\n 'sveltejs/svelte': {\n owner: 'sveltejs',\n repo: 'svelte',\n packages: {\n svelte: { primary: true, filePatterns: ['*.svelte'], rules: ['ALWAYS use runes syntax ($state, $derived, $effect, $props)'] },\n },\n },\n\n 'solidjs/solid': {\n owner: 'solidjs',\n repo: 'solid',\n packages: {\n 'solid-js': { primary: true, filePatterns: ['*.jsx', '*.tsx'] },\n },\n },\n\n 'QwikDev/qwik': {\n owner: 'QwikDev',\n repo: 'qwik',\n packages: {\n qwik: { primary: true, filePatterns: ['*.tsx'] },\n },\n },\n\n 'marko-js/marko': {\n owner: 'marko-js',\n repo: 'marko',\n packages: {\n marko: { primary: true, filePatterns: ['*.marko'] },\n },\n },\n\n 'riot/riot': {\n owner: 'riot',\n repo: 'riot',\n packages: {\n riot: { primary: true, filePatterns: ['*.riot'] },\n },\n },\n\n // ── Languages/transpilers ──\n\n 'microsoft/TypeScript': {\n owner: 'microsoft',\n repo: 'TypeScript',\n packages: {\n typescript: { primary: true, filePatterns: ['*.ts', '*.tsx', '*.mts', '*.cts'] },\n },\n blogReleases: [\n { version: '6.0', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta/', date: '2026-02-11', title: 'Announcing TypeScript 6.0 Beta' },\n { version: '5.9', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/', date: '2025-08-01', title: 'Announcing TypeScript 5.9' },\n { version: '5.8', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/', date: '2025-02-28', title: 'Announcing TypeScript 5.8' },\n { version: '5.7', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/', date: '2024-11-22', title: 'Announcing TypeScript 5.7' },\n { version: '5.6', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/', date: '2024-09-09', title: 'Announcing TypeScript 5.6' },\n { version: '5.5', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-5/', date: '2024-06-20', title: 'Announcing TypeScript 5.5' },\n ],\n },\n\n 'jashkenas/coffeescript': {\n owner: 'jashkenas',\n repo: 'coffeescript',\n packages: {\n coffeescript: { primary: true, filePatterns: ['*.coffee'] },\n },\n },\n\n 'gkz/LiveScript': {\n owner: 'gkz',\n repo: 'LiveScript',\n packages: {\n livescript: { primary: true, filePatterns: ['*.ls'] },\n },\n },\n\n 'elm/compiler': {\n owner: 'elm',\n repo: 'compiler',\n packages: {\n elm: { primary: true, filePatterns: ['*.elm'] },\n },\n },\n\n // ── CSS preprocessors ──\n\n 'sass/dart-sass': {\n owner: 'sass',\n repo: 'dart-sass',\n packages: {\n sass: { primary: true, filePatterns: ['*.scss', '*.sass'] },\n },\n },\n\n 'less/less.js': {\n owner: 'less',\n repo: 'less.js',\n packages: {\n less: { primary: true, filePatterns: ['*.less'] },\n },\n },\n\n 'stylus/stylus': {\n owner: 'stylus',\n repo: 'stylus',\n packages: {\n stylus: { primary: true, filePatterns: ['*.styl'] },\n },\n },\n\n 'postcss/postcss': {\n owner: 'postcss',\n repo: 'postcss',\n packages: {\n postcss: { primary: true, filePatterns: ['*.css', '*.pcss'] },\n },\n },\n\n // ── Template engines ──\n\n 'pugjs/pug': {\n owner: 'pugjs',\n repo: 'pug',\n packages: {\n pug: { primary: true, filePatterns: ['*.pug'] },\n },\n },\n\n 'mde/ejs': {\n owner: 'mde',\n repo: 'ejs',\n packages: {\n ejs: { primary: true, filePatterns: ['*.ejs'] },\n },\n },\n\n 'handlebars-lang/handlebars.js': {\n owner: 'handlebars-lang',\n repo: 'handlebars.js',\n packages: {\n handlebars: { primary: true, filePatterns: ['*.hbs', '*.handlebars'] },\n },\n },\n\n 'janl/mustache.js': {\n owner: 'janl',\n repo: 'mustache.js',\n packages: {\n mustache: { primary: true, filePatterns: ['*.mustache'] },\n },\n },\n\n 'mozilla/nunjucks': {\n owner: 'mozilla',\n repo: 'nunjucks',\n packages: {\n nunjucks: { primary: true, filePatterns: ['*.njk'] },\n },\n },\n\n 'Shopify/liquid': {\n owner: 'Shopify',\n repo: 'liquid',\n packages: {\n liquid: { primary: true, filePatterns: ['*.liquid'] },\n },\n },\n\n // ── Data formats ──\n\n 'eemeli/yaml': {\n owner: 'eemeli',\n repo: 'yaml',\n packages: {\n yaml: { primary: true, filePatterns: ['*.yaml', '*.yml'] },\n },\n },\n\n 'nodeca/js-yaml': {\n owner: 'nodeca',\n repo: 'js-yaml',\n packages: {\n 'js-yaml': { primary: true, filePatterns: ['*.yaml', '*.yml'] },\n },\n },\n\n 'BinaryMuse/toml-node': {\n owner: 'BinaryMuse',\n repo: 'toml-node',\n packages: {\n 'toml': { primary: true, filePatterns: ['*.toml'] },\n '@iarna/toml': { filePatterns: ['*.toml'] },\n },\n },\n\n 'json5/json5': {\n owner: 'json5',\n repo: 'json5',\n packages: {\n json5: { primary: true, filePatterns: ['*.json5'] },\n },\n },\n\n 'microsoft/node-jsonc-parser': {\n owner: 'microsoft',\n repo: 'node-jsonc-parser',\n packages: {\n 'jsonc-parser': { primary: true, filePatterns: ['*.jsonc'] },\n },\n },\n\n // ── Markdown ──\n\n 'markdown-it/markdown-it': {\n owner: 'markdown-it',\n repo: 'markdown-it',\n packages: {\n 'markdown-it': { primary: true, filePatterns: ['*.md'] },\n },\n },\n\n 'markedjs/marked': {\n owner: 'markedjs',\n repo: 'marked',\n packages: {\n marked: { primary: true, filePatterns: ['*.md'] },\n },\n },\n\n 'remarkjs/remark': {\n owner: 'remarkjs',\n repo: 'remark',\n packages: {\n remark: { primary: true, filePatterns: ['*.md', '*.mdx'] },\n },\n },\n\n 'mdx-js/mdx': {\n owner: 'mdx-js',\n repo: 'mdx',\n packages: {\n '@mdx-js/mdx': { primary: true, filePatterns: ['*.mdx'] },\n },\n },\n\n // ── GraphQL ──\n\n 'graphql/graphql-js': {\n owner: 'graphql',\n repo: 'graphql-js',\n packages: {\n 'graphql': { primary: true, filePatterns: ['*.graphql', '*.gql'] },\n 'graphql-tag': { filePatterns: ['*.graphql', '*.gql'] },\n },\n },\n\n 'dotansimha/graphql-code-generator': {\n owner: 'dotansimha',\n repo: 'graphql-code-generator',\n packages: {\n '@graphql-codegen/cli': { primary: true, filePatterns: ['*.graphql', '*.gql'] },\n },\n },\n\n // ── UI Frameworks ──\n\n 'quasarframework/quasar': {\n owner: 'quasarframework',\n repo: 'quasar',\n docsPath: 'docs/src/pages',\n docsRef: 'dev',\n homepage: 'https://quasar.dev',\n packages: {\n quasar: { primary: true },\n },\n },\n\n // ── Animation ──\n\n 'motiondivision/motion-vue': {\n owner: 'motiondivision',\n repo: 'motion-vue',\n homepage: 'https://motion.dev',\n crawlUrl: 'https://motion.dev/docs/vue**',\n packages: {\n 'motion-v': { primary: true },\n },\n },\n\n // ── Other ──\n\n 'prisma/prisma': {\n owner: 'prisma',\n repo: 'prisma',\n packages: {\n 'prisma': { primary: true, filePatterns: ['*.prisma'] },\n '@prisma/client': { filePatterns: ['*.prisma'] },\n },\n },\n\n 'nicolo-ribaudo/tc39-proposal-wasm-esm-integration': {\n owner: 'nicolo-ribaudo',\n repo: 'tc39-proposal-wasm-esm-integration',\n packages: {\n 'wasm-pack': { primary: true, filePatterns: ['*.wasm'] },\n },\n },\n}\n\n// ── Reverse index (auto-generated) ──\n\nconst PACKAGE_TO_REPO_MAP: Record<string, string> = {}\n\nfor (const [repoKey, entry] of Object.entries(REPO_REGISTRY)) {\n for (const packageName of Object.keys(entry.packages)) {\n PACKAGE_TO_REPO_MAP[packageName] = repoKey\n }\n}\n\n// ── Backwards-compatible helpers ──\n\nexport function getDocOverride(packageName: string): DocOverride | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n const entry = REPO_REGISTRY[repoKey]\n if (!entry?.docsRepo && !entry?.docsPath)\n return undefined\n\n return {\n owner: entry.owner,\n repo: entry.docsRepo || entry.repo,\n path: entry.docsPath || '',\n ref: entry.docsRef,\n homepage: entry.homepage,\n }\n}\n\nexport function getBlogPreset(packageName: string): BlogPreset | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n const entry = REPO_REGISTRY[repoKey]\n if (!entry?.blogReleases)\n return undefined\n\n return {\n packageName,\n releases: entry.blogReleases,\n }\n}\n\nexport function getFilePatterns(packageName: string): string[] | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n return REPO_REGISTRY[repoKey]?.packages[packageName]?.filePatterns\n}\n\n// ── New APIs ──\n\nexport function getRepoEntry(repoKey: string): RepoEntry | undefined {\n return REPO_REGISTRY[repoKey]\n}\n\nexport function getRepoKeyForPackage(packageName: string): string | undefined {\n return PACKAGE_TO_REPO_MAP[packageName]\n}\n\nexport function getPackageRules(packageName: string): string[] {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return []\n return REPO_REGISTRY[repoKey]?.packages[packageName]?.rules ?? []\n}\n\nexport function getPrereleaseChangelogRef(packageName: string): string | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n return REPO_REGISTRY[repoKey]?.prereleaseChangelogRef\n}\n\nexport function getCrawlUrl(packageName: string): string | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n return REPO_REGISTRY[repoKey]?.crawlUrl\n}\n\nexport function getRelatedPackages(packageName: string): string[] {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return []\n const entry = REPO_REGISTRY[repoKey]\n if (!entry)\n return []\n return Object.keys(entry.packages)\n}\n","import { execSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\nimport { join } from 'pathe'\nimport { diff as _semverDiff, gt as _semverGt, valid as _semverValid } from 'semver'\nimport { isWindows } from 'std-env'\n\n/** Get-or-create for Maps. Polyfill for Map.getOrInsertComputed (not yet in Node.js). */\nexport function mapInsert<K, V>(map: Map<K, V>, key: K, create: () => V): V {\n let val = map.get(key)\n if (val === undefined) {\n val = create()\n map.set(key, val)\n }\n return val\n}\n\n/** Returns the cleaned version if valid semver, null otherwise. */\nexport function semverValid(v: string): string | null {\n return _semverValid(v, true)\n}\n\n/** Compare two semver strings: returns true if a > b. Handles prereleases. */\nexport function semverGt(a: string, b: string): boolean {\n return _semverGt(a, b, true)\n}\n\n/** Returns the semver diff type between two versions (e.g. 'major', 'minor', 'patch', 'prerelease'), or null if equal/invalid. */\nexport function semverDiff(a: string, b: string): string | null {\n return _semverDiff(a, b)\n}\n\nlet _skilldCommand: string | undefined\n\n/** Resolve the skilld CLI command — returns `skilld` if the binary is in PATH, otherwise `npx -y skilld` */\nexport function resolveSkilldCommand(): string {\n if (_skilldCommand !== undefined)\n return _skilldCommand\n try {\n const lookup = isWindows ? 'where' : 'which'\n execSync(`${lookup} skilld`, { stdio: 'ignore' })\n _skilldCommand = 'skilld'\n }\n catch {\n _skilldCommand = 'npx -y skilld'\n }\n return _skilldCommand\n}\n\nexport const SHARED_SKILLS_DIR = '.skills'\n\n/** Returns the shared skills directory path if `.skills/` exists at project root, else null */\nexport function getSharedSkillsDir(cwd: string = process.cwd()): string | null {\n const dir = join(cwd, SHARED_SKILLS_DIR)\n return existsSync(dir) ? dir : null\n}\n"],"mappings":"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"}