@vibe-agent-toolkit/agent-skills 0.2.0-rc.6 → 0.2.0-rc.8

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 (236) hide show
  1. package/README.md +5 -5
  2. package/dist/builder.d.ts.map +1 -1
  3. package/dist/builder.js +7 -17
  4. package/dist/builder.js.map +1 -1
  5. package/dist/content-type-routing.d.ts +32 -0
  6. package/dist/content-type-routing.d.ts.map +1 -1
  7. package/dist/content-type-routing.js +23 -0
  8. package/dist/content-type-routing.js.map +1 -1
  9. package/dist/files-config.d.ts +2 -2
  10. package/dist/files-config.d.ts.map +1 -1
  11. package/dist/files-config.js +1 -7
  12. package/dist/files-config.js.map +1 -1
  13. package/dist/import.d.ts.map +1 -1
  14. package/dist/import.js +0 -4
  15. package/dist/import.js.map +1 -1
  16. package/dist/index.d.ts +3 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +5 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/inventory/types.d.ts +8 -0
  21. package/dist/inventory/types.d.ts.map +1 -1
  22. package/dist/inventory/types.js.map +1 -1
  23. package/dist/parsers/frontmatter-parser.d.ts.map +1 -1
  24. package/dist/parsers/frontmatter-parser.js +30 -6
  25. package/dist/parsers/frontmatter-parser.js.map +1 -1
  26. package/dist/plugin-distribution-layout.d.ts.map +1 -1
  27. package/dist/plugin-distribution-layout.js +13 -2
  28. package/dist/plugin-distribution-layout.js.map +1 -1
  29. package/dist/post-build-checks.d.ts +9 -1
  30. package/dist/post-build-checks.d.ts.map +1 -1
  31. package/dist/post-build-checks.js +21 -13
  32. package/dist/post-build-checks.js.map +1 -1
  33. package/dist/schemas/allowed-tools.d.ts +31 -0
  34. package/dist/schemas/allowed-tools.d.ts.map +1 -0
  35. package/dist/schemas/allowed-tools.js +88 -0
  36. package/dist/schemas/allowed-tools.js.map +1 -0
  37. package/dist/schemas/index.d.ts +1 -0
  38. package/dist/schemas/index.d.ts.map +1 -1
  39. package/dist/schemas/index.js +1 -0
  40. package/dist/schemas/index.js.map +1 -1
  41. package/dist/schemas/installed-plugins-registry.d.ts.map +1 -1
  42. package/dist/schemas/installed-plugins-registry.js +7 -1
  43. package/dist/schemas/installed-plugins-registry.js.map +1 -1
  44. package/dist/schemas/marketplace-manifest.d.ts.map +1 -1
  45. package/dist/schemas/marketplace-manifest.js +17 -6
  46. package/dist/schemas/marketplace-manifest.js.map +1 -1
  47. package/dist/skill-identity.d.ts +8 -3
  48. package/dist/skill-identity.d.ts.map +1 -1
  49. package/dist/skill-identity.js +13 -6
  50. package/dist/skill-identity.js.map +1 -1
  51. package/dist/skill-packager.d.ts +87 -14
  52. package/dist/skill-packager.d.ts.map +1 -1
  53. package/dist/skill-packager.js +200 -72
  54. package/dist/skill-packager.js.map +1 -1
  55. package/dist/skill-source/content-hash.d.ts.map +1 -1
  56. package/dist/skill-source/content-hash.js +21 -10
  57. package/dist/skill-source/content-hash.js.map +1 -1
  58. package/dist/skill-source/fetch-cache.d.ts.map +1 -1
  59. package/dist/skill-source/fetch-cache.js +0 -5
  60. package/dist/skill-source/fetch-cache.js.map +1 -1
  61. package/dist/skill-source/git-clone.d.ts.map +1 -1
  62. package/dist/skill-source/git-clone.js +0 -2
  63. package/dist/skill-source/git-clone.js.map +1 -1
  64. package/dist/skill-source/sources/url-source.d.ts.map +1 -1
  65. package/dist/skill-source/sources/url-source.js +0 -1
  66. package/dist/skill-source/sources/url-source.js.map +1 -1
  67. package/dist/skill-source/stage.d.ts.map +1 -1
  68. package/dist/skill-source/stage.js +0 -6
  69. package/dist/skill-source/stage.js.map +1 -1
  70. package/dist/skill-test/baseline-integrity.d.ts.map +1 -1
  71. package/dist/skill-test/baseline-integrity.js +8 -2
  72. package/dist/skill-test/baseline-integrity.js.map +1 -1
  73. package/dist/skill-test/build-hook.d.ts +3 -2
  74. package/dist/skill-test/build-hook.d.ts.map +1 -1
  75. package/dist/skill-test/build-hook.js +4 -4
  76. package/dist/skill-test/build-hook.js.map +1 -1
  77. package/dist/skill-test/declared-env.d.ts +5 -4
  78. package/dist/skill-test/declared-env.d.ts.map +1 -1
  79. package/dist/skill-test/declared-env.js +7 -9
  80. package/dist/skill-test/declared-env.js.map +1 -1
  81. package/dist/skill-test/eval-executor.d.ts +1 -1
  82. package/dist/skill-test/eval-executor.js +2 -2
  83. package/dist/skill-test/eval-executor.js.map +1 -1
  84. package/dist/skill-test/eval-fragment.d.ts +12 -8
  85. package/dist/skill-test/eval-fragment.d.ts.map +1 -1
  86. package/dist/skill-test/eval-fragment.js +18 -10
  87. package/dist/skill-test/eval-fragment.js.map +1 -1
  88. package/dist/skill-test/eval-grader.d.ts +64 -6
  89. package/dist/skill-test/eval-grader.d.ts.map +1 -1
  90. package/dist/skill-test/eval-grader.js +139 -77
  91. package/dist/skill-test/eval-grader.js.map +1 -1
  92. package/dist/skill-test/eval-inputs.d.ts +8 -7
  93. package/dist/skill-test/eval-inputs.d.ts.map +1 -1
  94. package/dist/skill-test/eval-inputs.js +9 -11
  95. package/dist/skill-test/eval-inputs.js.map +1 -1
  96. package/dist/skill-test/eval-lint.d.ts +4 -4
  97. package/dist/skill-test/eval-lint.js +5 -5
  98. package/dist/skill-test/eval-lint.js.map +1 -1
  99. package/dist/skill-test/eval-suite-isolation.d.ts.map +1 -1
  100. package/dist/skill-test/eval-suite-isolation.js +8 -5
  101. package/dist/skill-test/eval-suite-isolation.js.map +1 -1
  102. package/dist/skill-test/evals-template.d.ts +1 -1
  103. package/dist/skill-test/evals-template.d.ts.map +1 -1
  104. package/dist/skill-test/evals-template.js +1 -3
  105. package/dist/skill-test/evals-template.js.map +1 -1
  106. package/dist/skill-test/executor-prompt.d.ts +2 -2
  107. package/dist/skill-test/executor-prompt.js +2 -2
  108. package/dist/skill-test/failure-reason.d.ts +113 -0
  109. package/dist/skill-test/failure-reason.d.ts.map +1 -0
  110. package/dist/skill-test/failure-reason.js +124 -0
  111. package/dist/skill-test/failure-reason.js.map +1 -0
  112. package/dist/skill-test/fragment-merge.d.ts +2 -2
  113. package/dist/skill-test/fragment-merge.js +4 -4
  114. package/dist/skill-test/grader-prompt.d.ts +2 -2
  115. package/dist/skill-test/grader-prompt.d.ts.map +1 -1
  116. package/dist/skill-test/grader-prompt.js +12 -8
  117. package/dist/skill-test/grader-prompt.js.map +1 -1
  118. package/dist/skill-test/grading-adapter.d.ts +7 -3
  119. package/dist/skill-test/grading-adapter.d.ts.map +1 -1
  120. package/dist/skill-test/grading-adapter.js +10 -9
  121. package/dist/skill-test/grading-adapter.js.map +1 -1
  122. package/dist/skill-test/harness-location.d.ts +3 -2
  123. package/dist/skill-test/harness-location.d.ts.map +1 -1
  124. package/dist/skill-test/harness-location.js +5 -16
  125. package/dist/skill-test/harness-location.js.map +1 -1
  126. package/dist/skill-test/index.d.ts +1 -1
  127. package/dist/skill-test/index.d.ts.map +1 -1
  128. package/dist/skill-test/index.js +1 -1
  129. package/dist/skill-test/index.js.map +1 -1
  130. package/dist/skill-test/lock.d.ts +11 -10
  131. package/dist/skill-test/lock.d.ts.map +1 -1
  132. package/dist/skill-test/lock.js +13 -14
  133. package/dist/skill-test/lock.js.map +1 -1
  134. package/dist/skill-test/pipeline.d.ts +3 -1
  135. package/dist/skill-test/pipeline.d.ts.map +1 -1
  136. package/dist/skill-test/pipeline.js +5 -1
  137. package/dist/skill-test/pipeline.js.map +1 -1
  138. package/dist/skill-test/preflight.d.ts.map +1 -1
  139. package/dist/skill-test/preflight.js +0 -1
  140. package/dist/skill-test/preflight.js.map +1 -1
  141. package/dist/skill-test/prompt-invariants.d.ts +4 -2
  142. package/dist/skill-test/prompt-invariants.d.ts.map +1 -1
  143. package/dist/skill-test/prompt-invariants.js +5 -4
  144. package/dist/skill-test/prompt-invariants.js.map +1 -1
  145. package/dist/skill-test/run-harness.d.ts +160 -123
  146. package/dist/skill-test/run-harness.d.ts.map +1 -1
  147. package/dist/skill-test/run-harness.js +309 -173
  148. package/dist/skill-test/run-harness.js.map +1 -1
  149. package/dist/skill-test/staging.d.ts +12 -6
  150. package/dist/skill-test/staging.d.ts.map +1 -1
  151. package/dist/skill-test/staging.js +15 -12
  152. package/dist/skill-test/staging.js.map +1 -1
  153. package/dist/skill-test/tier-plan.d.ts +1 -1
  154. package/dist/skill-test/tier-plan.js +1 -1
  155. package/dist/skill-test/tool-eval-schema.js +2 -2
  156. package/dist/skill-test/vendor-manifest.d.ts +2 -1
  157. package/dist/skill-test/vendor-manifest.d.ts.map +1 -1
  158. package/dist/skill-test/vendor-manifest.js +10 -10
  159. package/dist/skill-test/vendor-manifest.js.map +1 -1
  160. package/dist/test-input.d.ts +2 -2
  161. package/dist/test-input.d.ts.map +1 -1
  162. package/dist/test-input.js +4 -5
  163. package/dist/test-input.js.map +1 -1
  164. package/dist/validators/agent-instruction-presence.d.ts.map +1 -1
  165. package/dist/validators/agent-instruction-presence.js +44 -2
  166. package/dist/validators/agent-instruction-presence.js.map +1 -1
  167. package/dist/validators/bundled-resource-link-detection.d.ts +5 -3
  168. package/dist/validators/bundled-resource-link-detection.d.ts.map +1 -1
  169. package/dist/validators/bundled-resource-link-detection.js +38 -38
  170. package/dist/validators/bundled-resource-link-detection.js.map +1 -1
  171. package/dist/validators/compat-detectors.d.ts +17 -0
  172. package/dist/validators/compat-detectors.d.ts.map +1 -1
  173. package/dist/validators/compat-detectors.js +46 -19
  174. package/dist/validators/compat-detectors.js.map +1 -1
  175. package/dist/validators/format-detection.d.ts +3 -0
  176. package/dist/validators/format-detection.d.ts.map +1 -1
  177. package/dist/validators/format-detection.js +41 -26
  178. package/dist/validators/format-detection.js.map +1 -1
  179. package/dist/validators/frontmatter-validation.js +1 -1
  180. package/dist/validators/frontmatter-validation.js.map +1 -1
  181. package/dist/validators/marketplace-validator.d.ts.map +1 -1
  182. package/dist/validators/marketplace-validator.js +6 -1
  183. package/dist/validators/marketplace-validator.js.map +1 -1
  184. package/dist/validators/mcp-tool-qualification.d.ts +1 -1
  185. package/dist/validators/mcp-tool-qualification.js +1 -1
  186. package/dist/validators/packaged-size-limit.d.ts.map +1 -1
  187. package/dist/validators/packaged-size-limit.js +0 -2
  188. package/dist/validators/packaged-size-limit.js.map +1 -1
  189. package/dist/validators/packaging-validator.d.ts +33 -4
  190. package/dist/validators/packaging-validator.d.ts.map +1 -1
  191. package/dist/validators/packaging-validator.js +95 -22
  192. package/dist/validators/packaging-validator.js.map +1 -1
  193. package/dist/validators/plugin-hosted-shape.d.ts +3 -1
  194. package/dist/validators/plugin-hosted-shape.d.ts.map +1 -1
  195. package/dist/validators/plugin-hosted-shape.js +5 -6
  196. package/dist/validators/plugin-hosted-shape.js.map +1 -1
  197. package/dist/validators/referenced-path-missing.d.ts +15 -6
  198. package/dist/validators/referenced-path-missing.d.ts.map +1 -1
  199. package/dist/validators/referenced-path-missing.js +42 -22
  200. package/dist/validators/referenced-path-missing.js.map +1 -1
  201. package/dist/validators/registry-validator.d.ts.map +1 -1
  202. package/dist/validators/registry-validator.js +0 -1
  203. package/dist/validators/registry-validator.js.map +1 -1
  204. package/dist/validators/rule-engine/index.d.ts +1 -1
  205. package/dist/validators/rule-engine/rule-context.d.ts +3 -3
  206. package/dist/validators/rule-engine/rule-context.js +1 -1
  207. package/dist/validators/rule-engine/rule-engine.d.ts +1 -1
  208. package/dist/validators/rule-engine/rule-engine.js +5 -5
  209. package/dist/validators/rule-engine/rule-engine.js.map +1 -1
  210. package/dist/validators/skill-validator.d.ts.map +1 -1
  211. package/dist/validators/skill-validator.js +41 -51
  212. package/dist/validators/skill-validator.js.map +1 -1
  213. package/dist/validators/source-only-codes.js +1 -1
  214. package/dist/validators/source-only-codes.js.map +1 -1
  215. package/dist/validators/types.d.ts +21 -1
  216. package/dist/validators/types.d.ts.map +1 -1
  217. package/dist/validators/unified-validator.d.ts.map +1 -1
  218. package/dist/validators/unified-validator.js +3 -4
  219. package/dist/validators/unified-validator.js.map +1 -1
  220. package/dist/validators/validation-rules.d.ts +3 -3
  221. package/dist/validators/validation-rules.d.ts.map +1 -1
  222. package/dist/validators/validation-rules.js +9 -38
  223. package/dist/validators/validation-rules.js.map +1 -1
  224. package/dist/validators/walker-to-issues.d.ts +2 -0
  225. package/dist/validators/walker-to-issues.d.ts.map +1 -1
  226. package/dist/validators/walker-to-issues.js +17 -12
  227. package/dist/validators/walker-to-issues.js.map +1 -1
  228. package/dist/walk-link-graph.d.ts +2 -0
  229. package/dist/walk-link-graph.d.ts.map +1 -1
  230. package/dist/walk-link-graph.js +46 -15
  231. package/dist/walk-link-graph.js.map +1 -1
  232. package/package.json +12 -20
  233. package/dist/skill-test/exit-codes.d.ts +0 -134
  234. package/dist/skill-test/exit-codes.d.ts.map +0 -1
  235. package/dist/skill-test/exit-codes.js +0 -224
  236. package/dist/skill-test/exit-codes.js.map +0 -1
@@ -11,22 +11,29 @@
11
11
  * a path, so every lane answers the question the same way.
12
12
  */
13
13
  import { readFileSync } from 'node:fs';
14
+ import { isPathAbsentError } from '@vibe-agent-toolkit/utils';
14
15
  import { parseFrontmatter } from './parsers/frontmatter-parser.js';
15
16
  /**
16
17
  * Read the name a SKILL.md declares for itself.
17
18
  *
18
- * Returns `undefined` when the file is unreadable, has no frontmatter, or
19
- * declares no usable `name` — callers decide whether that is fatal or whether
20
- * some fallback (typically the directory leaf) applies.
19
+ * Returns `undefined` when there is no file at the path, it has no frontmatter,
20
+ * or it declares no usable `name` — callers decide whether that is fatal or
21
+ * whether some fallback (typically the directory leaf) applies.
22
+ *
23
+ * A file that IS there but could not be read (a permission refusal, a path
24
+ * component that is a directory) throws: `undefined` means "declares no name",
25
+ * and a refusal has not established that — a caller falling back to the
26
+ * directory leaf would otherwise rename the skill on the operator's behalf.
21
27
  */
22
28
  export function readDeclaredSkillName(skillMdPath) {
23
29
  let content;
24
30
  try {
25
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- caller-supplied skill path
26
31
  content = readFileSync(skillMdPath, 'utf-8');
27
32
  }
28
- catch {
29
- return undefined;
33
+ catch (error) {
34
+ if (isPathAbsentError(error))
35
+ return undefined;
36
+ throw error;
30
37
  }
31
38
  return declaredSkillNameIn(content);
32
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skill-identity.js","sourceRoot":"","sources":["../src/skill-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,iGAAiG;QACjG,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEnD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"skill-identity.js","sourceRoot":"","sources":["../src/skill-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,iBAAiB,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEnD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC"}
@@ -14,9 +14,11 @@
14
14
  * Uses ResourceRegistry + transformContent() from @vibe-agent-toolkit/resources
15
15
  * for link resolution and rewriting (replacing the previous inline regex approach).
16
16
  */
17
- import { ResourceRegistry, type ResourcePopulationSource } from '@vibe-agent-toolkit/resources';
17
+ import { ResourceRegistry, type ResourceLink, type ResourcePopulationSource } from '@vibe-agent-toolkit/resources';
18
18
  import { type AllowUsageLedger, type ValidationConfig, type ValidationIssue } from '@vibe-agent-toolkit/schema';
19
+ import { VatError } from '@vibe-agent-toolkit/utils';
19
20
  import { type GitTracker } from '@vibe-agent-toolkit/utils/git';
21
+ import { type PackagingTarget } from './content-type-routing.js';
20
22
  import { type SkillFileEntry } from './files-config.js';
21
23
  import { type ConventionalSuiteProbe, type DeclaredEvalSuite } from './test-input.js';
22
24
  import { type PackagingValidationResult, type SkillPackagingConfig } from './validators/packaging-validator.js';
@@ -24,12 +26,6 @@ import { type PackagingValidationResult, type SkillPackagingConfig } from './val
24
26
  * Resource naming strategy type
25
27
  */
26
28
  export type ResourceNamingStrategy = 'basename' | 'resource-id' | 'preserve-path';
27
- /**
28
- * Packaging target: determines ZIP directory structure
29
- * - 'claude-code': Standard VAT format with resources/ subdirectory (default)
30
- * - 'claude-web': Claude.ai web upload format with references/, scripts/, assets/ subdirectories
31
- */
32
- export type PackagingTarget = 'claude-code' | 'claude-web';
33
29
  export interface PackageSkillOptions {
34
30
  /**
35
31
  * Output directory for packaged skill
@@ -111,8 +107,10 @@ export interface PackageSkillOptions {
111
107
  /**
112
108
  * Packaging target — controls the ZIP directory structure produced.
113
109
  *
114
- * - 'claude-code' (default): Standard VAT layout with resources/ subdirectory
115
- * - 'claude-web': Claude.ai web upload layout with references/, scripts/, assets/ subdirectories
110
+ * - 'claude-code' (default): Standard VAT layout, routed by extension into
111
+ * resources/, scripts/, templates/, assets/
112
+ * - 'claude-web': Claude.ai web upload layout — every resource flattened into
113
+ * references/, extensions ignored (see `PackagingTarget`)
116
114
  *
117
115
  * Default: 'claude-code'
118
116
  */
@@ -390,12 +388,87 @@ export declare function createProjectRegistry(projectRoot: string, options?: Pro
390
388
  */
391
389
  export declare function synthesizeAssetId(assetPath: string): string;
392
390
  /**
393
- * Determine the resource subdirectory for a file.
391
+ * Copy a single file, optionally rewriting markdown links using transformContent().
392
+ *
393
+ * For markdown files with rewriteLinks enabled:
394
+ * 1. Reads the source file
395
+ * 2. Finds the corresponding resource in the "from" registry
396
+ * 3. Calls transformContent() with the resource's links, unified rules, and "to" registry
397
+ * 4. Writes the result
398
+ *
399
+ * All link rewriting (bundled, excluded, inline, reference-style definitions)
400
+ * is handled by a single transformContent() call with ordered rules.
401
+ *
402
+ * For non-markdown files, performs a plain binary copy.
403
+ */
404
+ /**
405
+ * Re-base a resource's link spans onto the frontmatter-stripped body.
406
+ *
407
+ * ## 🚨 Why this exists: the span rewrite was INERT here, and could mis-splice
408
+ *
409
+ * `transformContent` identifies each link by its parsed `[startOffset,
410
+ * endOffset)` span rather than by replaying a regex and correlating on href —
411
+ * which is the whole point, because the two grammars disagree about what the
412
+ * href IS. Its docstring states the precondition outright: *links must come from
413
+ * the same bytes as content*.
414
+ *
415
+ * This call site violated it. `resource.links` are parsed from the WHOLE FILE,
416
+ * and `editor.body` has the frontmatter block removed — so every offset was off
417
+ * by the frontmatter's length. Measured on a four-line skill: span `[45, 77)`
418
+ * against a body shifted by 40, where `body.slice(45, 81)` is `"ails.\n"`. Every
419
+ * splice declined and every link fell back to the pre-fix regex path, so the
420
+ * headline defect (`[![alt](img)](url)` silently not rewritten) was still
421
+ * shipping. Worse, a stale span can land on a *different*, structurally valid
422
+ * link and rewrite ITS href to the first link's target.
423
+ *
424
+ * ## The re-base is VERIFIED, not assumed
425
+ *
426
+ * Subtracting `content.length - body.length` is correct if and only if `body` is
427
+ * a literal SUFFIX of `content` — that is exactly the statement "every body index
428
+ * `i` is content index `i + offset`". `String.endsWith` decides it outright, so
429
+ * the arithmetic is checked rather than argued, and a body that is not a suffix
430
+ * comes back with its spans REMOVED instead of with coordinates nothing verified.
431
+ * `openFrontmatter` does yield a suffix today, across CRLF, a commented block, an
432
+ * absent block and empty input; the check is what keeps that a fact rather than a
433
+ * comment that outlives the code it describes.
434
+ *
435
+ * ⛔ **This used to claim `splicableFrom` as its backstop, and that claim was
436
+ * false.** The words were: "`splicableFrom` refuses any span whose destination is
437
+ * not exactly the parser's href, so a misalignment that survives this degrades to
438
+ * *no rewrite* rather than to a wrong one." It does not. That comparison is keyed
439
+ * on the HREF, which two links in one document routinely share, so a stale span
440
+ * landing on a same-href neighbour passes it and the neighbour is rewritten
441
+ * through the first link's metadata. Constructed and pinned in
442
+ * `packages/resources/test/content-transform.test.ts` › *two links sharing an
443
+ * href defeat the destination comparison*, where a tuned frontmatter length makes
444
+ * two labels swap places. A mitigation keyed on a value the two candidates have
445
+ * in common cannot be a guarantee, and a guard resting on one is resting on
446
+ * nothing.
447
+ *
448
+ * 🔑 What holds instead, in full, because the precondition has two halves:
449
+ *
450
+ * 1. *The spans address `content`* — discharged by the reader, not by this
451
+ * function. `resource.links` and `content` must come from the same decode of
452
+ * the same file, which is why the caller's read is pinned to
453
+ * `readTextContent` with a 🚨 of its own. A second reader is the one way this
454
+ * half fails, and it fails invisibly.
455
+ * 2. *The subtraction maps `content` onto `body`* — discharged here, by
456
+ * `endsWith`.
457
+ *
458
+ * `splicableFrom`'s destination check remains a useful mitigation for the
459
+ * residue. It is not counted on, and nothing here degrades gracefully because of
460
+ * it.
394
461
  *
395
- * For claude-web target: uses the existing references directory.
396
- * For claude-code target: uses content-type routing based on file extension.
462
+ * @param content - The file as read, which the links were parsed from
463
+ * @param body - The frontmatter-stripped body the rewrite will run over
464
+ * @param links - The resource's links, carrying whole-file offsets
465
+ * @param onUnverifiable - Called when `body` is not a suffix of `content`, so the
466
+ * caller can say which file lost its span-driven rewrite. Never called on the
467
+ * normal path.
468
+ * @returns The same links with offsets stated against `body`, or with no offsets
469
+ * at all when the re-base could not be verified
397
470
  */
398
- export declare function getResourceSubdirForFile(filePath: string, target: PackagingTarget): string;
471
+ export declare function bodyRelativeLinks(content: string, body: string, links: readonly ResourceLink[], onUnverifiable: () => void): ResourceLink[];
399
472
  /**
400
473
  * Extract H1 title from markdown content
401
474
  *
@@ -424,7 +497,7 @@ export declare function generateTargetPath(filePath: string, basePath: string, s
424
497
  * Thrown when a claude-web ZIP exceeds the 8MB Claude.ai upload limit.
425
498
  * The CLI catches this and exits with code 1.
426
499
  */
427
- export declare class ZipSizeLimitError extends Error {
500
+ export declare class ZipSizeLimitError extends VatError {
428
501
  readonly sizeBytes: number;
429
502
  readonly limitBytes: number;
430
503
  constructor(sizeBytes: number, limitBytes: number);
@@ -1 +1 @@
1
- {"version":3,"file":"skill-packager.d.ts","sourceRoot":"","sources":["../src/skill-packager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-packager.d.ts","sourceRoot":"","sources":["../src/skill-packager.ts"],"names":[],"mappings":"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"}