@vibe-agent-toolkit/cli 0.2.0-rc.5 → 0.2.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +4 -4
  2. package/dist/bin.js +41 -158
  3. package/dist/bin.js.map +1 -1
  4. package/dist/command-loaders.d.ts +2 -2
  5. package/dist/command-loaders.d.ts.map +1 -1
  6. package/dist/command-loaders.js +4 -2
  7. package/dist/command-loaders.js.map +1 -1
  8. package/dist/commands/ard/emit.d.ts +104 -0
  9. package/dist/commands/ard/emit.d.ts.map +1 -0
  10. package/dist/commands/ard/emit.js +223 -0
  11. package/dist/commands/ard/emit.js.map +1 -0
  12. package/dist/commands/ard/index.d.ts +12 -0
  13. package/dist/commands/ard/index.d.ts.map +1 -0
  14. package/dist/commands/ard/index.js +79 -0
  15. package/dist/commands/ard/index.js.map +1 -0
  16. package/dist/commands/ard/surfaces.d.ts +56 -0
  17. package/dist/commands/ard/surfaces.d.ts.map +1 -0
  18. package/dist/commands/ard/surfaces.js +150 -0
  19. package/dist/commands/ard/surfaces.js.map +1 -0
  20. package/dist/commands/audit.d.ts +75 -8
  21. package/dist/commands/audit.d.ts.map +1 -1
  22. package/dist/commands/audit.js +726 -127
  23. package/dist/commands/audit.js.map +1 -1
  24. package/dist/commands/claude/budget.d.ts +13 -0
  25. package/dist/commands/claude/budget.d.ts.map +1 -1
  26. package/dist/commands/claude/budget.js +80 -28
  27. package/dist/commands/claude/budget.js.map +1 -1
  28. package/dist/commands/claude/claude-config.d.ts.map +1 -1
  29. package/dist/commands/claude/claude-config.js +6 -0
  30. package/dist/commands/claude/claude-config.js.map +1 -1
  31. package/dist/commands/claude/context.js +1 -1
  32. package/dist/commands/claude/context.js.map +1 -1
  33. package/dist/commands/claude/marketplace/validate.d.ts +55 -22
  34. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  35. package/dist/commands/claude/marketplace/validate.js +380 -75
  36. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  37. package/dist/commands/claude/org/helpers.d.ts +59 -1
  38. package/dist/commands/claude/org/helpers.d.ts.map +1 -1
  39. package/dist/commands/claude/org/helpers.js +58 -7
  40. package/dist/commands/claude/org/helpers.js.map +1 -1
  41. package/dist/commands/claude/org/index.d.ts.map +1 -1
  42. package/dist/commands/claude/org/index.js +24 -16
  43. package/dist/commands/claude/org/index.js.map +1 -1
  44. package/dist/commands/claude/org/skills.d.ts +509 -0
  45. package/dist/commands/claude/org/skills.d.ts.map +1 -1
  46. package/dist/commands/claude/org/skills.js +1364 -94
  47. package/dist/commands/claude/org/skills.js.map +1 -1
  48. package/dist/commands/claude/org/users.d.ts.map +1 -1
  49. package/dist/commands/claude/org/users.js +3 -1
  50. package/dist/commands/claude/org/users.js.map +1 -1
  51. package/dist/commands/claude/org/workspaces.d.ts.map +1 -1
  52. package/dist/commands/claude/org/workspaces.js +5 -2
  53. package/dist/commands/claude/org/workspaces.js.map +1 -1
  54. package/dist/commands/claude/plugin/build.d.ts +8 -0
  55. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  56. package/dist/commands/claude/plugin/build.js +16 -2
  57. package/dist/commands/claude/plugin/build.js.map +1 -1
  58. package/dist/commands/claude/plugin/tree-copy.d.ts +72 -0
  59. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  60. package/dist/commands/claude/plugin/tree-copy.js +215 -10
  61. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  62. package/dist/commands/corpus/index.d.ts.map +1 -1
  63. package/dist/commands/corpus/index.js +3 -0
  64. package/dist/commands/corpus/index.js.map +1 -1
  65. package/dist/commands/corpus/report.d.ts +0 -1
  66. package/dist/commands/corpus/report.d.ts.map +1 -1
  67. package/dist/commands/corpus/report.js +0 -1
  68. package/dist/commands/corpus/report.js.map +1 -1
  69. package/dist/commands/corpus/runner.d.ts +58 -1
  70. package/dist/commands/corpus/runner.d.ts.map +1 -1
  71. package/dist/commands/corpus/runner.js +90 -15
  72. package/dist/commands/corpus/runner.js.map +1 -1
  73. package/dist/commands/corpus/scan.d.ts.map +1 -1
  74. package/dist/commands/corpus/scan.js +0 -1
  75. package/dist/commands/corpus/scan.js.map +1 -1
  76. package/dist/commands/doctor.d.ts +14 -0
  77. package/dist/commands/doctor.d.ts.map +1 -1
  78. package/dist/commands/doctor.js +96 -18
  79. package/dist/commands/doctor.js.map +1 -1
  80. package/dist/commands/okf/index.d.ts +11 -0
  81. package/dist/commands/okf/index.d.ts.map +1 -0
  82. package/dist/commands/okf/index.js +102 -0
  83. package/dist/commands/okf/index.js.map +1 -0
  84. package/dist/commands/okf/validate.d.ts +82 -0
  85. package/dist/commands/okf/validate.d.ts.map +1 -0
  86. package/dist/commands/okf/validate.js +157 -0
  87. package/dist/commands/okf/validate.js.map +1 -0
  88. package/dist/commands/phase-utils.d.ts +19 -3
  89. package/dist/commands/phase-utils.d.ts.map +1 -1
  90. package/dist/commands/phase-utils.js +26 -5
  91. package/dist/commands/phase-utils.js.map +1 -1
  92. package/dist/commands/rag/index-command.d.ts +27 -2
  93. package/dist/commands/rag/index-command.d.ts.map +1 -1
  94. package/dist/commands/rag/index-command.js +44 -7
  95. package/dist/commands/rag/index-command.js.map +1 -1
  96. package/dist/commands/rag/index.d.ts.map +1 -1
  97. package/dist/commands/rag/index.js +2 -0
  98. package/dist/commands/rag/index.js.map +1 -1
  99. package/dist/commands/resources/check-progress.d.ts +3 -0
  100. package/dist/commands/resources/check-progress.d.ts.map +1 -1
  101. package/dist/commands/resources/check-progress.js +6 -0
  102. package/dist/commands/resources/check-progress.js.map +1 -1
  103. package/dist/commands/resources/check.d.ts +33 -4
  104. package/dist/commands/resources/check.d.ts.map +1 -1
  105. package/dist/commands/resources/check.js +131 -44
  106. package/dist/commands/resources/check.js.map +1 -1
  107. package/dist/commands/resources/index.d.ts.map +1 -1
  108. package/dist/commands/resources/index.js +41 -9
  109. package/dist/commands/resources/index.js.map +1 -1
  110. package/dist/commands/resources/query.d.ts +18 -1
  111. package/dist/commands/resources/query.d.ts.map +1 -1
  112. package/dist/commands/resources/query.js +29 -4
  113. package/dist/commands/resources/query.js.map +1 -1
  114. package/dist/commands/resources/validate.d.ts +29 -0
  115. package/dist/commands/resources/validate.d.ts.map +1 -1
  116. package/dist/commands/resources/validate.js +116 -13
  117. package/dist/commands/resources/validate.js.map +1 -1
  118. package/dist/commands/skill/review-checklist.d.ts.map +1 -1
  119. package/dist/commands/skill/review-checklist.js +35 -0
  120. package/dist/commands/skill/review-checklist.js.map +1 -1
  121. package/dist/commands/skill/review.d.ts.map +1 -1
  122. package/dist/commands/skill/review.js +9 -2
  123. package/dist/commands/skill/review.js.map +1 -1
  124. package/dist/commands/skill/test/configure.d.ts +37 -0
  125. package/dist/commands/skill/test/configure.d.ts.map +1 -1
  126. package/dist/commands/skill/test/configure.js +57 -12
  127. package/dist/commands/skill/test/configure.js.map +1 -1
  128. package/dist/commands/skill/test/run.d.ts.map +1 -1
  129. package/dist/commands/skill/test/run.js +21 -6
  130. package/dist/commands/skill/test/run.js.map +1 -1
  131. package/dist/commands/skills/build.d.ts.map +1 -1
  132. package/dist/commands/skills/build.js +16 -3
  133. package/dist/commands/skills/build.js.map +1 -1
  134. package/dist/commands/skills/list.d.ts +2 -1
  135. package/dist/commands/skills/list.d.ts.map +1 -1
  136. package/dist/commands/skills/list.js +31 -9
  137. package/dist/commands/skills/list.js.map +1 -1
  138. package/dist/commands/skills/skill-discovery.d.ts +40 -1
  139. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  140. package/dist/commands/skills/skill-discovery.js +32 -3
  141. package/dist/commands/skills/skill-discovery.js.map +1 -1
  142. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  143. package/dist/commands/skills/validate-command.js +11 -3
  144. package/dist/commands/skills/validate-command.js.map +1 -1
  145. package/dist/commands/skills/validate.d.ts +66 -7
  146. package/dist/commands/skills/validate.d.ts.map +1 -1
  147. package/dist/commands/skills/validate.js +133 -29
  148. package/dist/commands/skills/validate.js.map +1 -1
  149. package/dist/commands/verify.d.ts +94 -3
  150. package/dist/commands/verify.d.ts.map +1 -1
  151. package/dist/commands/verify.js +192 -45
  152. package/dist/commands/verify.js.map +1 -1
  153. package/dist/skill-resolution/packaging-config.d.ts +49 -5
  154. package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
  155. package/dist/skill-resolution/packaging-config.js +59 -19
  156. package/dist/skill-resolution/packaging-config.js.map +1 -1
  157. package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
  158. package/dist/skill-resolution/resolve-skill-reference.js +6 -3
  159. package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
  160. package/dist/utils/command-error.d.ts +31 -0
  161. package/dist/utils/command-error.d.ts.map +1 -1
  162. package/dist/utils/command-error.js +45 -0
  163. package/dist/utils/command-error.js.map +1 -1
  164. package/dist/utils/config-loader.d.ts.map +1 -1
  165. package/dist/utils/config-loader.js +22 -6
  166. package/dist/utils/config-loader.js.map +1 -1
  167. package/dist/utils/edge-lens-evaluation.d.ts +83 -0
  168. package/dist/utils/edge-lens-evaluation.d.ts.map +1 -0
  169. package/dist/utils/edge-lens-evaluation.js +110 -0
  170. package/dist/utils/edge-lens-evaluation.js.map +1 -0
  171. package/dist/utils/optional-backend.d.ts +5 -4
  172. package/dist/utils/optional-backend.d.ts.map +1 -1
  173. package/dist/utils/optional-backend.js +5 -4
  174. package/dist/utils/optional-backend.js.map +1 -1
  175. package/dist/utils/project-root-policy.d.ts +20 -0
  176. package/dist/utils/project-root-policy.d.ts.map +1 -1
  177. package/dist/utils/project-root-policy.js +32 -0
  178. package/dist/utils/project-root-policy.js.map +1 -1
  179. package/dist/utils/projection-query.d.ts +41 -4
  180. package/dist/utils/projection-query.d.ts.map +1 -1
  181. package/dist/utils/projection-query.js +44 -10
  182. package/dist/utils/projection-query.js.map +1 -1
  183. package/dist/utils/projection-store.d.ts +41 -15
  184. package/dist/utils/projection-store.d.ts.map +1 -1
  185. package/dist/utils/projection-store.js +65 -18
  186. package/dist/utils/projection-store.js.map +1 -1
  187. package/dist/utils/repeatable-option.d.ts +37 -0
  188. package/dist/utils/repeatable-option.d.ts.map +1 -0
  189. package/dist/utils/repeatable-option.js +39 -0
  190. package/dist/utils/repeatable-option.js.map +1 -0
  191. package/dist/utils/resource-loader.d.ts +4 -3
  192. package/dist/utils/resource-loader.d.ts.map +1 -1
  193. package/dist/utils/resource-loader.js +61 -30
  194. package/dist/utils/resource-loader.js.map +1 -1
  195. package/dist/utils/root-argv.d.ts +53 -0
  196. package/dist/utils/root-argv.d.ts.map +1 -0
  197. package/dist/utils/root-argv.js +215 -0
  198. package/dist/utils/root-argv.js.map +1 -0
  199. package/dist/utils/run-integrity.d.ts +95 -0
  200. package/dist/utils/run-integrity.d.ts.map +1 -0
  201. package/dist/utils/run-integrity.js +102 -0
  202. package/dist/utils/run-integrity.js.map +1 -0
  203. package/dist/utils/sqlite-experimental-warning.d.ts +69 -0
  204. package/dist/utils/sqlite-experimental-warning.d.ts.map +1 -0
  205. package/dist/utils/sqlite-experimental-warning.js +144 -0
  206. package/dist/utils/sqlite-experimental-warning.js.map +1 -0
  207. package/dist/utils/user-context-scanner.d.ts +8 -0
  208. package/dist/utils/user-context-scanner.d.ts.map +1 -1
  209. package/dist/utils/user-context-scanner.js +4 -0
  210. package/dist/utils/user-context-scanner.js.map +1 -1
  211. package/dist/utils/validate-help-files.d.ts.map +1 -1
  212. package/dist/utils/validate-help-files.js +9 -2
  213. package/dist/utils/validate-help-files.js.map +1 -1
  214. package/docs/audit.md +120 -7
  215. package/docs/doctor.md +6 -6
  216. package/docs/index.md +1 -1
  217. package/docs/rag.md +3 -1
  218. package/docs/resources.md +5 -1
  219. package/docs/skills.md +47 -62
  220. package/package.json +18 -18
@@ -14,11 +14,11 @@
14
14
  * are chosen by `selectInProcessVerifyPhases`. Every phase runs in this process.
15
15
  * Both sets are config-gated, and both are announced on startup.
16
16
  */
17
- import { existsSync } from 'node:fs';
17
+ import { existsSync, statSync } from 'node:fs';
18
18
  import { basename } from 'node:path';
19
19
  import { computeTreeCopiedSkillLocations, detectPackagedAgentInstructionFiles, explicitFilesConfigDests, } from '@vibe-agent-toolkit/agent-skills';
20
20
  import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/schema';
21
- import { safePath } from '@vibe-agent-toolkit/utils';
21
+ import { safePath, toForwardSlash } from '@vibe-agent-toolkit/utils';
22
22
  import { Command } from 'commander';
23
23
  import { handleCommandError } from '../utils/command-error.js';
24
24
  import { loadConfig } from '../utils/config-loader.js';
@@ -26,6 +26,7 @@ import { formatIssueLines } from '../utils/issue-rendering.js';
26
26
  import { resolveIssueSeverity } from '../utils/issue-severity.js';
27
27
  import { writeYamlOutput } from '../utils/output.js';
28
28
  import { requireProjectRoot } from '../utils/project-root-policy.js';
29
+ import { nothingCheckedFinding, runIntegrityFinding } from '../utils/run-integrity.js';
29
30
  import { mergeSkillPackagingConfig } from '../utils/skill-packaging-config.js';
30
31
  import { runMarketplaceValidatePhase } from './claude/marketplace/validate.js';
31
32
  import { runConsistencyChecks, } from './consistency-check.js';
@@ -93,7 +94,14 @@ Output:
93
94
  publish issueCounts {errors, warnings, info}; 'consistency' and
94
95
  'packaged-content' carry their findings into the document too, while
95
96
  'files-config-dests' publishes counts only and lists the missing dests on
96
- stderr.
97
+ stderr. 'packaged-content' also publishes bundlesInspected — the built
98
+ bundles it crawled — beside bundlesExpected (the bundles 'vat build'
99
+ produces for the skills this run discovered) and bundlesMissing (expected
100
+ bundles absent from dist/, by path). Zero inspected, or any missing, is
101
+ refused as RESOURCE_CHECK_BROKEN at error (exit 1) rather than reported as
102
+ a pass: a run that found none of the build (dist/ not built, or a
103
+ skills.include glob that matched nothing) or only part of it (a bundle
104
+ deleted, a skill added since the last build) is not a verdict on what ships.
97
105
  Progress and validation errors → stderr (streamed live)
98
106
 
99
107
  By default each delegated phase reports a per-asset summary plus the assets
@@ -135,11 +143,29 @@ function filesOf(entry) {
135
143
  return entry.packaging.files ?? [];
136
144
  }
137
145
  /**
138
- * Register a check for (skillName, outputDir, packaging) in the dedup map.
146
+ * Whether `dir` is a directory — `false` for a file, for nothing, and for a
147
+ * path the process cannot stat. All three are "no bundle here": a bundle is a
148
+ * tree, and a regular FILE sitting where one should be passed `existsSync`,
149
+ * was counted as built, and the packaged-content crawl then threw `Base path is
150
+ * not a directory: /abs/…` out of the whole command — exit 2, no document, an
151
+ * absolute path on stderr — where the missing-bundle lane names it at exit 1.
152
+ */
153
+ function isDirectory(dir) {
154
+ try {
155
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- outputDir is resolved from config, not user input
156
+ return statSync(dir).isDirectory();
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ }
162
+ /**
163
+ * Register a (skillName, outputDir, packaging) candidate.
139
164
  *
140
- * Skips silently if:
141
- * - outputDir does not exist on disk (not a candidate)
142
- * - the key was already added (dedup guard)
165
+ * A candidate whose output dir IS A DIRECTORY lands in `built` (deduplicated by
166
+ * key). An `expected` candidate is counted whether or not it exists, and one
167
+ * that is not a directory is named in `missing` — that absence is the finding,
168
+ * not a skip (see {@link isDirectory} for why "exists" is not enough).
143
169
  *
144
170
  * An EMPTY `files:` block is registered, not skipped: {@link checkFilesConfigDests}
145
171
  * has nothing to verify for such a skill and filters it out itself, but
@@ -147,27 +173,33 @@ function filesOf(entry) {
147
173
  * with no `files:` block is exactly the one whose agent-instruction file arrived by
148
174
  * some other route, and dropping it here would make the crawl blind to it.
149
175
  */
150
- function tryAddCheckEntry(checks, skillName, outputDir, packaging) {
151
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- outputDir is resolved from config, not user input
152
- if (!existsSync(outputDir))
176
+ function addCheckCandidate(outputs, seen, cwd, candidate, expected) {
177
+ const key = `${candidate.skillName}\0${candidate.outputDir}`;
178
+ if (seen.has(key))
153
179
  return;
154
- const key = `${skillName}\0${outputDir}`;
155
- if (!checks.has(key)) {
156
- checks.set(key, { skillName, outputDir, packaging });
157
- }
180
+ seen.add(key);
181
+ const exists = isDirectory(candidate.outputDir);
182
+ if (exists)
183
+ outputs.built.push(candidate);
184
+ if (!expected)
185
+ return;
186
+ outputs.expected += 1;
187
+ if (!exists)
188
+ outputs.missing.push(toForwardSlash(safePath.relative(cwd, candidate.outputDir)));
158
189
  }
159
190
  /**
160
- * Every built skill bundle this project's config accounts for that EXISTS on disk,
161
- * with the `files:` entries that govern it.
191
+ * Every built skill bundle this project's config accounts for, with the `files:`
192
+ * entries that govern it — those that EXIST on disk, and the coverage of those
193
+ * the build should have produced (see {@link BuiltSkillOutputs}).
162
194
  *
163
195
  * ONE enumeration of "where did `vat build` write this skill", shared by every
164
196
  * in-process verify phase, in the two locations the build actually uses:
165
197
  * - Pool skills: `dist/skills/<fsName>/`
166
198
  * - Tree-copy skills: `dist/.claude/plugins/.../skills/<name>/`
167
199
  *
168
- * Returns `[]` (never throws) for an unreadable config: `vat verify`'s delegated
169
- * phases report the real config error, and one of verify's own phases must not
170
- * race them with a second, worse diagnosis.
200
+ * Returns an empty enumeration (never throws) for an unreadable config: `vat
201
+ * verify`'s delegated phases report the real config error, and one of verify's
202
+ * own phases must not race them with a second, worse diagnosis.
171
203
  *
172
204
  * The pool arm enumerates the skills the run DISCOVERED, unioned with the keys of
173
205
  * `skills.config`. It used to be the config keys alone, which made both in-process
@@ -197,37 +229,44 @@ function tryAddCheckEntry(checks, skillName, outputDir, packaging) {
197
229
  * this command.
198
230
  */
199
231
  function collectBuiltSkillOutputs(cwd, discovered) {
232
+ const outputs = { built: [], expected: 0, missing: [] };
200
233
  try {
201
234
  const config = loadConfig(cwd);
202
235
  if (!config)
203
- return [];
236
+ return outputs;
204
237
  const skillsConfig = config.skills;
205
238
  const defaults = skillsConfig?.defaults;
206
- // Dedup map: key = `skillName\0outputDir` → check entry
207
- const checks = new Map();
239
+ // Dedup guard: key = `skillName\0outputDir`
240
+ const seen = new Set();
208
241
  // --- Pool skills: candidate dir is dist/skills/<fsName> ---
209
- const poolNames = new Set([
210
- ...discovered.map((skill) => skill.name),
211
- ...Object.keys(skillsConfig?.config ?? {}),
212
- ]);
242
+ // Expected only when discovered: `vat skills build` builds every discovered
243
+ // skill and nothing else (see BuiltSkillOutputs.expected).
244
+ const discoveredNames = new Set(discovered.map((skill) => skill.name));
245
+ const poolNames = new Set([...discoveredNames, ...Object.keys(skillsConfig?.config ?? {})]);
213
246
  for (const skillName of poolNames) {
214
247
  const perSkill = skillsConfig?.config?.[skillName];
215
248
  const outputDir = safePath.resolve(cwd, 'dist', 'skills', skillNameToFsPath(skillName));
216
- tryAddCheckEntry(checks, skillName, outputDir, mergeSkillPackagingConfig(defaults, perSkill));
249
+ addCheckCandidate(outputs, seen, cwd, { skillName, outputDir, packaging: mergeSkillPackagingConfig(defaults, perSkill) }, discoveredNames.has(skillName));
217
250
  }
218
251
  // --- Tree-copy skills: candidate dirs are plugin output skill dirs ---
252
+ // Always expected: every location here is a plugin-local skill the claude
253
+ // build phase packages into the plugin tree.
219
254
  for (const loc of computeTreeCopiedSkillLocations(config, cwd)) {
220
255
  // Per-skill config is keyed by the skill's declared NAME. `skillDirPath` is a
221
256
  // path (`group/nested-skill` for a nested skill), so try its trailing segment
222
257
  // too — the spelling that matches for every skill whose dir is named after it.
223
258
  const dirLeaf = basename(loc.skillDirPath);
224
259
  const perSkill = (skillsConfig?.config?.[loc.skillDirPath] ?? skillsConfig?.config?.[dirLeaf]);
225
- tryAddCheckEntry(checks, loc.skillDirPath, loc.skillOutputDir, mergeSkillPackagingConfig(defaults, perSkill));
260
+ addCheckCandidate(outputs, seen, cwd, {
261
+ skillName: loc.skillDirPath,
262
+ outputDir: loc.skillOutputDir,
263
+ packaging: mergeSkillPackagingConfig(defaults, perSkill),
264
+ }, true);
226
265
  }
227
- return [...checks.values()];
266
+ return outputs;
228
267
  }
229
268
  catch {
230
- return [];
269
+ return { built: [], expected: 0, missing: [] };
231
270
  }
232
271
  }
233
272
  /**
@@ -242,7 +281,7 @@ function collectBuiltSkillOutputs(cwd, discovered) {
242
281
  */
243
282
  export function checkFilesConfigDests(cwd, discovered) {
244
283
  const results = [];
245
- for (const check of collectBuiltSkillOutputs(cwd, discovered)) {
284
+ for (const check of collectBuiltSkillOutputs(cwd, discovered).built) {
246
285
  const { skillName, outputDir } = check;
247
286
  const mergedFiles = filesOf(check);
248
287
  if (mergedFiles.length === 0)
@@ -298,16 +337,26 @@ export function checkFilesConfigDests(cwd, discovered) {
298
337
  *
299
338
  * Locations anchor at `cwd`, the run's stated root, so a reader can open them.
300
339
  *
340
+ * Returns the count of bundles crawled beside the findings, because the phase
341
+ * that publishes them needs the denominator: zero findings over zero bundles is
342
+ * not a pass — see {@link buildPackagedContentPhase}.
343
+ *
301
344
  * @param discovered - The skills this run discovered from `skills.include`. See
302
345
  * {@link collectBuiltSkillOutputs} for why it is required rather than optional.
303
346
  */
304
347
  export function checkPackagedAgentInstructionFiles(cwd, discovered) {
305
348
  const issues = [];
306
- for (const check of collectBuiltSkillOutputs(cwd, discovered)) {
349
+ const outputs = collectBuiltSkillOutputs(cwd, discovered);
350
+ for (const check of outputs.built) {
307
351
  const raw = detectPackagedAgentInstructionFiles(check.outputDir, cwd, explicitFilesConfigDests(filesOf(check)));
308
352
  issues.push(...resolveIssueSeverity(raw, check.packaging.validation));
309
353
  }
310
- return issues;
354
+ return {
355
+ bundlesInspected: outputs.built.length,
356
+ bundlesExpected: outputs.expected,
357
+ bundlesMissing: outputs.missing,
358
+ issues,
359
+ };
311
360
  }
312
361
  /**
313
362
  * Load the project config without letting a broken one abort the command.
@@ -517,6 +566,79 @@ export function toPublishedIssue(issue) {
517
566
  ...(issue.reference === undefined ? {} : { reference: issue.reference }),
518
567
  };
519
568
  }
569
+ /**
570
+ * The refusal for a crawl that found only PART of the build.
571
+ *
572
+ * Mirrors `unresolvedLocalPluginsFinding` in `claude/marketplace/validate.ts`:
573
+ * the count declared, the count checked, and the missing ones BY NAME — the
574
+ * operator's next move is to look at those paths, so the message carries them.
575
+ * ONE finding however many are missing (run-integrity invariant 4).
576
+ *
577
+ * @param crawl - What the crawl found, over what
578
+ * @returns The one finding, or nothing when every expected bundle was inspected
579
+ */
580
+ function missingBundlesFinding(crawl) {
581
+ if (crawl.bundlesMissing.length === 0)
582
+ return [];
583
+ const named = crawl.bundlesMissing.map((dir) => `\`${dir}\``).join(', ');
584
+ return [runIntegrityFinding(`This run discovered skills that \`vat build\` produces ${crawl.bundlesExpected} bundle(s) for and`
585
+ + ` the packaged-content phase inspected ${crawl.bundlesInspected}, so this phase is not a verdict`
586
+ + ' on the build: a bundle that was never crawled reads the same as a clean one. Expected'
587
+ + ` bundle(s) not found on disk: ${named}. Usually \`vat build\` has not run since a skill was`
588
+ + ' added, failed part-way, or wrote somewhere other than dist/ — or the bundle was deleted.'
589
+ + ' Run `vat build` first, then re-run `vat verify`.')];
590
+ }
591
+ /**
592
+ * Build the `packaged-content` phase result from what the crawl found.
593
+ *
594
+ * 🚨 **Zero bundles is an ERROR, not a clean phase — and so is a MISSING one.**
595
+ * The phase is pushed unconditionally whenever `skills:` exists and it feeds the
596
+ * real exit code; `discoverSkillsFromConfig` returning `[]` on a typo'd glob —
597
+ * or `dist/` not having been built at all, or built somewhere else — gave the
598
+ * crawl nothing to walk, and nothing walked was zero findings was `success`,
599
+ * with no count in the document to say the phase had looked at nothing. `vat
600
+ * verify` exists to check the BUILT tree; a run that found none of it is not a
601
+ * verdict on it. Nor is a run that found half of it: with `bundlesInspected` as
602
+ * the only denominator, two discovered skills and one deleted bundle published
603
+ * `success` beside `bundlesInspected: 1`. The crawl now also carries what it
604
+ * should have found, and the document publishes both counts.
605
+ *
606
+ * Derived here, in the one function that produces this phase's document, and
607
+ * not in the command body, so no path through the orchestrator can publish
608
+ * `status: success` beside `bundlesInspected: 0` or beside a non-empty
609
+ * `bundlesMissing`. Through the shared mechanism in `run-integrity.ts`: one
610
+ * non-overridable `RESOURCE_CHECK_BROKEN` at `error`, which
611
+ * {@link exitCodeForPhases} then turns into exit 1. ONE, not two, when both
612
+ * apply: the missing-bundle refusal is derived first because it names paths,
613
+ * and {@link nothingCheckedFinding} stands down behind an existing
614
+ * run-integrity finding.
615
+ *
616
+ * Pure, and exported so the refusal is pinned without a project on disk.
617
+ */
618
+ export function buildPackagedContentPhase(crawl) {
619
+ const { bundlesInspected, bundlesExpected, bundlesMissing, issues: found } = crawl;
620
+ const missing = missingBundlesFinding(crawl);
621
+ const issues = [
622
+ ...missing,
623
+ ...nothingCheckedFinding(bundlesInspected, [...missing, ...found], () => 'The packaged-content phase inspected 0 built skill bundles, so this phase is not a'
624
+ + ' verdict: nothing was crawled for files that must not ship, and the document reads'
625
+ + ' the same as a run over clean bundles. Either `vat build` has not run (or wrote'
626
+ + ' somewhere other than dist/), or `skills.include` in vibe-agent-toolkit.config.yaml'
627
+ + ' matched no SKILL.md — usually a typo in the glob. Run `vat build` first; `vat skills'
628
+ + ' validate` lists what the globs discover.'),
629
+ ...found,
630
+ ];
631
+ return {
632
+ name: PACKAGED_CONTENT,
633
+ status: calculateValidationStatus(issues),
634
+ // The denominator, beside the counts it qualifies — and what it should have been.
635
+ bundlesInspected,
636
+ bundlesExpected,
637
+ bundlesMissing,
638
+ issueCounts: countBySeverity(issues),
639
+ issues: issues.map(toPublishedIssue),
640
+ };
641
+ }
520
642
  /**
521
643
  * `ConsistencyIssue` speaks the same severity vocabulary as `ValidationIssue`
522
644
  * but carries a free-form `code`, so it is counted through this projection —
@@ -529,8 +651,37 @@ function asValidationIssues(issues) {
529
651
  severity: issue.severity,
530
652
  message: issue.message,
531
653
  fix: issue.fix,
654
+ ...(issue.location === undefined ? {} : { location: issue.location }),
655
+ ...(issue.line === undefined ? {} : { line: issue.line }),
532
656
  }));
533
657
  }
658
+ /**
659
+ * Run the `packaged-content` phase: crawl, derive the phase document, and
660
+ * report THAT document's issues on stderr.
661
+ *
662
+ * 🚨 **The stderr report used to be gated on the crawl, one line before the
663
+ * refusal was derived.** `if (crawl.issues.length > 0) report(crawl.issues)`
664
+ * ran ahead of {@link buildPackagedContentPhase}, which is where the
665
+ * zero-bundle refusal is added — so on an unbuilt project the crawl found
666
+ * nothing, nothing was logged, the skills phase's `✅ All validations passed`
667
+ * stayed the last line on stderr, and the process exited 1 on a refusal that
668
+ * existed only in the YAML. Reporting from the phase result makes what stderr
669
+ * says and what the exit code is computed from one list, which is
670
+ * `run-integrity.ts` invariant 6.
671
+ *
672
+ * The round trip through `asValidationIssues` is deliberate rather than
673
+ * reporting the crawl's list plus a second derivation of the refusal: the
674
+ * document is the artifact of record, and stderr should render exactly what it
675
+ * carries, not a parallel computation that can drift from it.
676
+ */
677
+ export function runPackagedContentPhase(projectRoot, discoveredSkills, logger) {
678
+ const crawl = checkPackagedAgentInstructionFiles(projectRoot, discoveredSkills);
679
+ const phase = buildPackagedContentPhase(crawl);
680
+ if (phase.issues.length > 0) {
681
+ reportPackagedContentIssues(asValidationIssues(phase.issues), logger);
682
+ }
683
+ return phase;
684
+ }
534
685
  /**
535
686
  * Run the in-process consistency check phase and record its outcome.
536
687
  *
@@ -606,8 +757,12 @@ async function verifyTopLevelCommand(options, command) {
606
757
  // answer used to be a different one: `consistency` crawled, while
607
758
  // `files-config-dests` and `packaged-content` read `skills.config` keys and
608
759
  // were therefore blind to every skill discovered by a glob.
760
+ // `'refuse'`: a verify over a population it could not see is the
761
+ // green-without-checking shape this command exists to refuse. The throw
762
+ // lands in the command's catch → `handleCommandError`, exit 2, with the
763
+ // crawl's own root-relative sentence.
609
764
  const discoveredSkills = inProcess.length > 0 && config?.skills
610
- ? await discoverSkillsFromConfig(config.skills, projectRoot)
765
+ ? await discoverSkillsFromConfig(config.skills, projectRoot, 'refuse')
611
766
  : [];
612
767
  // Post-build files config check: verify all dest paths exist in built output
613
768
  if (inProcess.includes(FILES_CONFIG_DESTS)) {
@@ -626,18 +781,10 @@ async function verifyTopLevelCommand(options, command) {
626
781
  // than only logging them — a file that must not ship has to be visible in
627
782
  // `issueCounts`, or a CI consumer reads a clean report for a bundle carrying
628
783
  // one. Warnings do not fail the run; the exit code still comes from errors.
784
+ // The zero-bundle refusal is derived inside the builder and logged from the
785
+ // built phase, so stderr, the document and the exit code carry one list.
629
786
  if (inProcess.includes(PACKAGED_CONTENT)) {
630
- const packagedIssues = checkPackagedAgentInstructionFiles(projectRoot, discoveredSkills);
631
- if (packagedIssues.length > 0) {
632
- reportPackagedContentIssues(packagedIssues, logger);
633
- }
634
- const packagedResult = {
635
- name: PACKAGED_CONTENT,
636
- status: calculateValidationStatus(packagedIssues),
637
- issueCounts: countBySeverity(packagedIssues),
638
- issues: packagedIssues.map(toPublishedIssue),
639
- };
640
- phaseResults.push(packagedResult);
787
+ phaseResults.push(runPackagedContentPhase(projectRoot, discoveredSkills, logger));
641
788
  }
642
789
  // Consistency check: cross-reference discovered skills vs package.json and plugin assignments
643
790
  if (inProcess.includes('consistency')) {
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * `vibe-agent-toolkit.config.yaml` contributes.
11
11
  */
12
12
  import type { DeclaredEvalSuite, SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
13
+ import { type DiscoveryUnreadablePolicy } from '../commands/skills/skill-discovery.js';
13
14
  import { type loadConfig } from '../utils/config-loader.js';
14
15
  /** Clear the per-root discovery caches (call when fixtures mutate between in-process runs). */
15
16
  export declare function resetSkillDiscoveryCache(): void;
@@ -22,19 +23,62 @@ export declare function resetSkillDiscoveryCache(): void;
22
23
  * skill's eval suite is an answer key no matter whose bundle is being built.
23
24
  *
24
25
  * Memoized per config root so a run over N skills under one root pays for discovery
25
- * once, not N times. Returns `[]` when there is no governing config or no skills
26
- * section — wild mode, where there is no project to enumerate.
26
+ * once, not N times — and served from the SAME discovery {@link getDiscoveredSkillsByPath}
27
+ * ran for {@link resolveSkillPackagingConfig}, so one root is crawled once per run, not
28
+ * once per question, and a crawl that refuses answers both questions the same way.
29
+ * Returns `[]` when there is no governing config or no skills section — wild mode,
30
+ * where there is no project to enumerate.
31
+ *
32
+ * ⚠️ Swallows exactly one failure: a config that cannot be LOADED (`ConfigLoadError`),
33
+ * which the caller's own config resolution has already reported. A failed DISCOVERY is
34
+ * not that and propagates — see {@link resolveSkillPackagingConfig} for what it means.
35
+ * The old bare `catch` here treated the two alike, so a refused directory listing
36
+ * quietly became "this project declares no eval suites".
37
+ */
38
+ export declare function resolveProjectDeclaredEvalSuites(skillPath: string, unreadable: DiscoveryUnreadablePolicy): Promise<DeclaredEvalSuite[]>;
39
+ /**
40
+ * The config root's declared skills, as absolute SKILL.md path → declared name.
41
+ *
42
+ * One expansion of `skills.include` per root per run. A discovery that THROWS is
43
+ * not memoized — the next question re-asks the filesystem — and under `'refuse'`
44
+ * it throws whenever the crawl refuses a directory it cannot list
45
+ * (`DirectoryListingRefusedError` from `@vibe-agent-toolkit/utils/crawl`): the
46
+ * declared population is then unknown, and the caller decides whether that stops
47
+ * the command or degrades it. A caller that degrades passes `{ degrade }` and
48
+ * gets every skill the crawl COULD see, with the refusal handed to its handler
49
+ * — see `DiscoveryUnreadablePolicy`. Nothing here decides for them.
50
+ *
51
+ * ⚠️ The memo is per root, not per policy: the first question about a root
52
+ * decides how that root's refusals are handled for the rest of the run. Every
53
+ * command resets the memo at its start (`resetSkillDiscoveryCache`), and only
54
+ * `vat audit` degrades, so a run never mixes the two.
27
55
  */
28
- export declare function resolveProjectDeclaredEvalSuites(skillPath: string): Promise<DeclaredEvalSuite[]>;
29
- export declare function getDiscoveredSkillsByPath(skillsSection: NonNullable<ReturnType<typeof loadConfig>>['skills'], configRoot: string): Promise<Map<string, string>>;
56
+ export declare function getDiscoveredSkillsByPath(skillsSection: NonNullable<ReturnType<typeof loadConfig>>['skills'], configRoot: string, unreadable: DiscoveryUnreadablePolicy): Promise<Map<string, string>>;
30
57
  /**
31
58
  * Resolve the merged packaging config for one SKILL.md by walking UP to its
32
59
  * nearest-ancestor config and matching the skill by absolute path. Returns the
33
60
  * FULL merge (`skills.defaults` + `skills.config[name]`, keeping
34
61
  * `validation.allow`). `null` when there is no governing config, no `skills`
35
62
  * section, or the skill is not declared (wild mode).
63
+ *
64
+ * 🚨 `null` means "no config governs this skill" and NOTHING else. Two failures
65
+ * propagate instead of being folded into it, because both mean the answer is
66
+ * unknown rather than "none":
67
+ * - `ConfigLoadError` — the governing config exists and could not be loaded;
68
+ * - `DirectoryListingRefusedError` — the config loaded, but expanding its
69
+ * `skills.include` reached a directory the crawl could not list, so the
70
+ * declared population (and whether this skill is in it) is unknown.
71
+ * The second used to be swallowed by a bare `catch { return null; }` around the
72
+ * discovery, with no stated reason. Under it, ONE `chmod 000` directory anywhere
73
+ * an include pattern reaches returned `null` for EVERY skill under the config:
74
+ * `vat audit` validated them all config-free, reported `success`, exited 0 and
75
+ * named the directory only under `--debug`. A caller that would rather degrade
76
+ * than stop passes `{ degrade }` — `vat audit` does, files a
77
+ * `SCAN_PATH_UNREADABLE` finding on the directory, and every skill the crawl
78
+ * could still see keeps its config; the rest say `'refuse'`, as the same
79
+ * refusal already stops `vat skills validate` and `vat skills build`.
36
80
  */
37
- export declare function resolveSkillPackagingConfig(skillPath: string): Promise<SkillPackagingConfig | null>;
81
+ export declare function resolveSkillPackagingConfig(skillPath: string, unreadable: DiscoveryUnreadablePolicy): Promise<SkillPackagingConfig | null>;
38
82
  /**
39
83
  * Audit's display variant: keep `validation.severity`, drop `validation.allow`
40
84
  * (audit shows every finding, including ones an `allow` entry would suppress).
@@ -1 +1 @@
1
- {"version":3,"file":"packaging-config.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAIhG,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,2BAA2B,CAAC;AAS9E,+FAA+F;AAC/F,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsB9B;AAED,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnE,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY9B;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsBtC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAYjG"}
1
+ {"version":3,"file":"packaging-config.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGhG,OAAO,EAAE,KAAK,yBAAyB,EAA4B,MAAM,uCAAuC,CAAC;AACjH,OAAO,EAAmB,KAAK,UAAU,EAAoB,MAAM,2BAA2B,CAAC;AAS/F,+FAA+F;AAC/F,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAwB9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnE,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY9B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAiBtC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAYjG"}
@@ -1,6 +1,6 @@
1
1
  import { findProjectRoot, safePath } from '@vibe-agent-toolkit/utils';
2
2
  import { discoverSkillsFromConfig } from '../commands/skills/skill-discovery.js';
3
- import { loadConfigCached } from '../utils/config-loader.js';
3
+ import { ConfigLoadError, loadConfigCached } from '../utils/config-loader.js';
4
4
  import { collectDeclaredEvalSuites, mergeSkillPackagingConfig } from '../utils/skill-packaging-config.js';
5
5
  /** configRoot → (abs SKILL.md path → declared skill name). One expansion per root. */
6
6
  const skillDiscoveryCache = new Map();
@@ -20,10 +20,19 @@ export function resetSkillDiscoveryCache() {
20
20
  * skill's eval suite is an answer key no matter whose bundle is being built.
21
21
  *
22
22
  * Memoized per config root so a run over N skills under one root pays for discovery
23
- * once, not N times. Returns `[]` when there is no governing config or no skills
24
- * section — wild mode, where there is no project to enumerate.
23
+ * once, not N times — and served from the SAME discovery {@link getDiscoveredSkillsByPath}
24
+ * ran for {@link resolveSkillPackagingConfig}, so one root is crawled once per run, not
25
+ * once per question, and a crawl that refuses answers both questions the same way.
26
+ * Returns `[]` when there is no governing config or no skills section — wild mode,
27
+ * where there is no project to enumerate.
28
+ *
29
+ * ⚠️ Swallows exactly one failure: a config that cannot be LOADED (`ConfigLoadError`),
30
+ * which the caller's own config resolution has already reported. A failed DISCOVERY is
31
+ * not that and propagates — see {@link resolveSkillPackagingConfig} for what it means.
32
+ * The old bare `catch` here treated the two alike, so a refused directory listing
33
+ * quietly became "this project declares no eval suites".
25
34
  */
26
- export async function resolveProjectDeclaredEvalSuites(skillPath) {
35
+ export async function resolveProjectDeclaredEvalSuites(skillPath, unreadable) {
27
36
  const projectRoot = findProjectRoot(safePath.resolve(safePath.join(skillPath, '..')));
28
37
  if (projectRoot === null)
29
38
  return [];
@@ -34,24 +43,44 @@ export async function resolveProjectDeclaredEvalSuites(skillPath) {
34
43
  try {
35
44
  const config = loadConfigCached(projectRoot);
36
45
  if (config?.skills !== undefined) {
37
- suites = collectDeclaredEvalSuites(config.skills, await discoverSkillsFromConfig(config.skills, projectRoot));
46
+ const byPath = await getDiscoveredSkillsByPath(config.skills, projectRoot, unreadable);
47
+ suites = collectDeclaredEvalSuites(config.skills, [...byPath.entries()].map(([sourcePath, name]) => ({ name, sourcePath })));
38
48
  }
39
49
  }
40
- catch {
41
- // A broken or unreadable config is already reported by the caller's own config
42
- // load; degrade to the subject's own declaration rather than aborting the run.
50
+ catch (err) {
51
+ if (!(err instanceof ConfigLoadError))
52
+ throw err;
53
+ // Already reported by the caller's own config load; degrade to the subject's own
54
+ // declaration rather than aborting the run.
43
55
  suites = [];
44
56
  }
45
57
  declaredEvalSuiteCache.set(projectRoot, suites);
46
58
  return suites;
47
59
  }
48
- export async function getDiscoveredSkillsByPath(skillsSection, configRoot) {
60
+ /**
61
+ * The config root's declared skills, as absolute SKILL.md path → declared name.
62
+ *
63
+ * One expansion of `skills.include` per root per run. A discovery that THROWS is
64
+ * not memoized — the next question re-asks the filesystem — and under `'refuse'`
65
+ * it throws whenever the crawl refuses a directory it cannot list
66
+ * (`DirectoryListingRefusedError` from `@vibe-agent-toolkit/utils/crawl`): the
67
+ * declared population is then unknown, and the caller decides whether that stops
68
+ * the command or degrades it. A caller that degrades passes `{ degrade }` and
69
+ * gets every skill the crawl COULD see, with the refusal handed to its handler
70
+ * — see `DiscoveryUnreadablePolicy`. Nothing here decides for them.
71
+ *
72
+ * ⚠️ The memo is per root, not per policy: the first question about a root
73
+ * decides how that root's refusals are handled for the rest of the run. Every
74
+ * command resets the memo at its start (`resetSkillDiscoveryCache`), and only
75
+ * `vat audit` degrades, so a run never mixes the two.
76
+ */
77
+ export async function getDiscoveredSkillsByPath(skillsSection, configRoot, unreadable) {
49
78
  const cached = skillDiscoveryCache.get(configRoot);
50
79
  if (cached !== undefined)
51
80
  return cached;
52
81
  const map = new Map();
53
82
  if (skillsSection !== undefined) {
54
- const discovered = await discoverSkillsFromConfig(skillsSection, configRoot);
83
+ const discovered = await discoverSkillsFromConfig(skillsSection, configRoot, unreadable);
55
84
  for (const entry of discovered) {
56
85
  map.set(safePath.resolve(entry.sourcePath), entry.name);
57
86
  }
@@ -65,8 +94,25 @@ export async function getDiscoveredSkillsByPath(skillsSection, configRoot) {
65
94
  * FULL merge (`skills.defaults` + `skills.config[name]`, keeping
66
95
  * `validation.allow`). `null` when there is no governing config, no `skills`
67
96
  * section, or the skill is not declared (wild mode).
97
+ *
98
+ * 🚨 `null` means "no config governs this skill" and NOTHING else. Two failures
99
+ * propagate instead of being folded into it, because both mean the answer is
100
+ * unknown rather than "none":
101
+ * - `ConfigLoadError` — the governing config exists and could not be loaded;
102
+ * - `DirectoryListingRefusedError` — the config loaded, but expanding its
103
+ * `skills.include` reached a directory the crawl could not list, so the
104
+ * declared population (and whether this skill is in it) is unknown.
105
+ * The second used to be swallowed by a bare `catch { return null; }` around the
106
+ * discovery, with no stated reason. Under it, ONE `chmod 000` directory anywhere
107
+ * an include pattern reaches returned `null` for EVERY skill under the config:
108
+ * `vat audit` validated them all config-free, reported `success`, exited 0 and
109
+ * named the directory only under `--debug`. A caller that would rather degrade
110
+ * than stop passes `{ degrade }` — `vat audit` does, files a
111
+ * `SCAN_PATH_UNREADABLE` finding on the directory, and every skill the crawl
112
+ * could still see keeps its config; the rest say `'refuse'`, as the same
113
+ * refusal already stops `vat skills validate` and `vat skills build`.
68
114
  */
69
- export async function resolveSkillPackagingConfig(skillPath) {
115
+ export async function resolveSkillPackagingConfig(skillPath, unreadable) {
70
116
  const absSkillPath = safePath.resolve(skillPath);
71
117
  const skillDir = safePath.resolve(safePath.join(absSkillPath, '..'));
72
118
  const projectRoot = findProjectRoot(skillDir);
@@ -75,14 +121,8 @@ export async function resolveSkillPackagingConfig(skillPath) {
75
121
  const config = loadConfigCached(projectRoot);
76
122
  if (config?.skills === undefined)
77
123
  return null;
78
- let matchedName;
79
- try {
80
- const byPath = await getDiscoveredSkillsByPath(config.skills, projectRoot);
81
- matchedName = byPath.get(absSkillPath);
82
- }
83
- catch {
84
- return null;
85
- }
124
+ const byPath = await getDiscoveredSkillsByPath(config.skills, projectRoot, unreadable);
125
+ const matchedName = byPath.get(absSkillPath);
86
126
  if (matchedName === undefined)
87
127
  return null;
88
128
  const { defaults, config: perSkillConfig } = config.skills;