@vibe-agent-toolkit/cli 0.2.0-rc.6 → 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 (194) 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 +605 -140
  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/context.js +1 -1
  29. package/dist/commands/claude/context.js.map +1 -1
  30. package/dist/commands/claude/marketplace/validate.d.ts +55 -22
  31. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  32. package/dist/commands/claude/marketplace/validate.js +380 -75
  33. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  34. package/dist/commands/claude/org/skills.d.ts +84 -3
  35. package/dist/commands/claude/org/skills.d.ts.map +1 -1
  36. package/dist/commands/claude/org/skills.js +218 -46
  37. package/dist/commands/claude/org/skills.js.map +1 -1
  38. package/dist/commands/claude/plugin/build.d.ts +8 -0
  39. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  40. package/dist/commands/claude/plugin/build.js +16 -2
  41. package/dist/commands/claude/plugin/build.js.map +1 -1
  42. package/dist/commands/claude/plugin/tree-copy.d.ts +72 -0
  43. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  44. package/dist/commands/claude/plugin/tree-copy.js +215 -10
  45. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  46. package/dist/commands/corpus/index.d.ts.map +1 -1
  47. package/dist/commands/corpus/index.js +3 -0
  48. package/dist/commands/corpus/index.js.map +1 -1
  49. package/dist/commands/corpus/report.d.ts +0 -1
  50. package/dist/commands/corpus/report.d.ts.map +1 -1
  51. package/dist/commands/corpus/report.js +0 -1
  52. package/dist/commands/corpus/report.js.map +1 -1
  53. package/dist/commands/corpus/runner.d.ts +58 -1
  54. package/dist/commands/corpus/runner.d.ts.map +1 -1
  55. package/dist/commands/corpus/runner.js +90 -15
  56. package/dist/commands/corpus/runner.js.map +1 -1
  57. package/dist/commands/corpus/scan.d.ts.map +1 -1
  58. package/dist/commands/corpus/scan.js +0 -1
  59. package/dist/commands/corpus/scan.js.map +1 -1
  60. package/dist/commands/doctor.d.ts +14 -0
  61. package/dist/commands/doctor.d.ts.map +1 -1
  62. package/dist/commands/doctor.js +96 -18
  63. package/dist/commands/doctor.js.map +1 -1
  64. package/dist/commands/okf/index.d.ts +11 -0
  65. package/dist/commands/okf/index.d.ts.map +1 -0
  66. package/dist/commands/okf/index.js +102 -0
  67. package/dist/commands/okf/index.js.map +1 -0
  68. package/dist/commands/okf/validate.d.ts +82 -0
  69. package/dist/commands/okf/validate.d.ts.map +1 -0
  70. package/dist/commands/okf/validate.js +157 -0
  71. package/dist/commands/okf/validate.js.map +1 -0
  72. package/dist/commands/phase-utils.d.ts +19 -3
  73. package/dist/commands/phase-utils.d.ts.map +1 -1
  74. package/dist/commands/phase-utils.js +26 -5
  75. package/dist/commands/phase-utils.js.map +1 -1
  76. package/dist/commands/rag/index-command.d.ts +27 -2
  77. package/dist/commands/rag/index-command.d.ts.map +1 -1
  78. package/dist/commands/rag/index-command.js +44 -7
  79. package/dist/commands/rag/index-command.js.map +1 -1
  80. package/dist/commands/rag/index.d.ts.map +1 -1
  81. package/dist/commands/rag/index.js +2 -0
  82. package/dist/commands/rag/index.js.map +1 -1
  83. package/dist/commands/resources/check-progress.d.ts +3 -0
  84. package/dist/commands/resources/check-progress.d.ts.map +1 -1
  85. package/dist/commands/resources/check-progress.js +6 -0
  86. package/dist/commands/resources/check-progress.js.map +1 -1
  87. package/dist/commands/resources/check.d.ts +33 -4
  88. package/dist/commands/resources/check.d.ts.map +1 -1
  89. package/dist/commands/resources/check.js +131 -44
  90. package/dist/commands/resources/check.js.map +1 -1
  91. package/dist/commands/resources/index.d.ts.map +1 -1
  92. package/dist/commands/resources/index.js +41 -9
  93. package/dist/commands/resources/index.js.map +1 -1
  94. package/dist/commands/resources/query.d.ts +18 -1
  95. package/dist/commands/resources/query.d.ts.map +1 -1
  96. package/dist/commands/resources/query.js +29 -4
  97. package/dist/commands/resources/query.js.map +1 -1
  98. package/dist/commands/resources/validate.d.ts +29 -0
  99. package/dist/commands/resources/validate.d.ts.map +1 -1
  100. package/dist/commands/resources/validate.js +116 -13
  101. package/dist/commands/resources/validate.js.map +1 -1
  102. package/dist/commands/skill/review.d.ts.map +1 -1
  103. package/dist/commands/skill/review.js +9 -2
  104. package/dist/commands/skill/review.js.map +1 -1
  105. package/dist/commands/skill/test/run.d.ts.map +1 -1
  106. package/dist/commands/skill/test/run.js +21 -6
  107. package/dist/commands/skill/test/run.js.map +1 -1
  108. package/dist/commands/skills/build.d.ts.map +1 -1
  109. package/dist/commands/skills/build.js +16 -3
  110. package/dist/commands/skills/build.js.map +1 -1
  111. package/dist/commands/skills/list.d.ts +2 -1
  112. package/dist/commands/skills/list.d.ts.map +1 -1
  113. package/dist/commands/skills/list.js +31 -9
  114. package/dist/commands/skills/list.js.map +1 -1
  115. package/dist/commands/skills/skill-discovery.d.ts +40 -1
  116. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  117. package/dist/commands/skills/skill-discovery.js +32 -3
  118. package/dist/commands/skills/skill-discovery.js.map +1 -1
  119. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  120. package/dist/commands/skills/validate-command.js +11 -3
  121. package/dist/commands/skills/validate-command.js.map +1 -1
  122. package/dist/commands/skills/validate.d.ts +66 -7
  123. package/dist/commands/skills/validate.d.ts.map +1 -1
  124. package/dist/commands/skills/validate.js +133 -29
  125. package/dist/commands/skills/validate.js.map +1 -1
  126. package/dist/commands/verify.d.ts +94 -3
  127. package/dist/commands/verify.d.ts.map +1 -1
  128. package/dist/commands/verify.js +192 -45
  129. package/dist/commands/verify.js.map +1 -1
  130. package/dist/skill-resolution/packaging-config.d.ts +49 -5
  131. package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
  132. package/dist/skill-resolution/packaging-config.js +59 -19
  133. package/dist/skill-resolution/packaging-config.js.map +1 -1
  134. package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
  135. package/dist/skill-resolution/resolve-skill-reference.js +6 -3
  136. package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
  137. package/dist/utils/command-error.d.ts +31 -0
  138. package/dist/utils/command-error.d.ts.map +1 -1
  139. package/dist/utils/command-error.js +45 -0
  140. package/dist/utils/command-error.js.map +1 -1
  141. package/dist/utils/edge-lens-evaluation.d.ts +83 -0
  142. package/dist/utils/edge-lens-evaluation.d.ts.map +1 -0
  143. package/dist/utils/edge-lens-evaluation.js +110 -0
  144. package/dist/utils/edge-lens-evaluation.js.map +1 -0
  145. package/dist/utils/optional-backend.d.ts +5 -4
  146. package/dist/utils/optional-backend.d.ts.map +1 -1
  147. package/dist/utils/optional-backend.js +5 -4
  148. package/dist/utils/optional-backend.js.map +1 -1
  149. package/dist/utils/project-root-policy.d.ts +20 -0
  150. package/dist/utils/project-root-policy.d.ts.map +1 -1
  151. package/dist/utils/project-root-policy.js +32 -0
  152. package/dist/utils/project-root-policy.js.map +1 -1
  153. package/dist/utils/projection-query.d.ts +41 -4
  154. package/dist/utils/projection-query.d.ts.map +1 -1
  155. package/dist/utils/projection-query.js +44 -10
  156. package/dist/utils/projection-query.js.map +1 -1
  157. package/dist/utils/projection-store.d.ts +41 -15
  158. package/dist/utils/projection-store.d.ts.map +1 -1
  159. package/dist/utils/projection-store.js +65 -18
  160. package/dist/utils/projection-store.js.map +1 -1
  161. package/dist/utils/repeatable-option.d.ts +37 -0
  162. package/dist/utils/repeatable-option.d.ts.map +1 -0
  163. package/dist/utils/repeatable-option.js +39 -0
  164. package/dist/utils/repeatable-option.js.map +1 -0
  165. package/dist/utils/resource-loader.d.ts +4 -3
  166. package/dist/utils/resource-loader.d.ts.map +1 -1
  167. package/dist/utils/resource-loader.js +61 -30
  168. package/dist/utils/resource-loader.js.map +1 -1
  169. package/dist/utils/root-argv.d.ts +53 -0
  170. package/dist/utils/root-argv.d.ts.map +1 -0
  171. package/dist/utils/root-argv.js +215 -0
  172. package/dist/utils/root-argv.js.map +1 -0
  173. package/dist/utils/run-integrity.d.ts +95 -0
  174. package/dist/utils/run-integrity.d.ts.map +1 -0
  175. package/dist/utils/run-integrity.js +102 -0
  176. package/dist/utils/run-integrity.js.map +1 -0
  177. package/dist/utils/sqlite-experimental-warning.d.ts +69 -0
  178. package/dist/utils/sqlite-experimental-warning.d.ts.map +1 -0
  179. package/dist/utils/sqlite-experimental-warning.js +144 -0
  180. package/dist/utils/sqlite-experimental-warning.js.map +1 -0
  181. package/dist/utils/user-context-scanner.d.ts +8 -0
  182. package/dist/utils/user-context-scanner.d.ts.map +1 -1
  183. package/dist/utils/user-context-scanner.js +4 -0
  184. package/dist/utils/user-context-scanner.js.map +1 -1
  185. package/dist/utils/validate-help-files.d.ts.map +1 -1
  186. package/dist/utils/validate-help-files.js +9 -2
  187. package/dist/utils/validate-help-files.js.map +1 -1
  188. package/docs/audit.md +120 -7
  189. package/docs/doctor.md +6 -6
  190. package/docs/index.md +1 -1
  191. package/docs/rag.md +3 -1
  192. package/docs/resources.md +5 -1
  193. package/docs/skills.md +47 -62
  194. package/package.json +18 -18
@@ -24,6 +24,14 @@ const DISCOVERY_EXCLUDE = [
24
24
  * then its filename. Exported so the Claude plugin build resolves a plugin-local
25
25
  * skill's name through the SAME definition `vat skills build` uses — per-skill
26
26
  * config is keyed by name, so two answers would mean two effective configs.
27
+ *
28
+ * The fallback is a KEY, not a verdict. A name is optional on the agentskills.io
29
+ * schema, so a nameless frontmatter block is a legal skill and needs a key; a
30
+ * file with NO frontmatter at all is not a skill, but discovery still returns it
31
+ * under this key so the glob match is reported rather than dropped — the
32
+ * packaging validator refuses it as `SKILL_MISSING_FRONTMATTER`, located at the
33
+ * file's path. Excluding it here instead would shrink the denominator silently,
34
+ * which is the exact tell-less drop `includeUntracked` below exists to prevent.
27
35
  */
28
36
  export async function readSkillName(skillPath) {
29
37
  const parsed = await parseFileCached(skillPath, 'markdown');
@@ -84,7 +92,7 @@ function groupIncludePatternsByBase(include, projectRoot) {
84
92
  * the root does not exist (mirrors audit's filesystem-first tolerance for
85
93
  * patterns pointing at nothing).
86
94
  */
87
- async function crawlOneBase(base, globs) {
95
+ async function crawlOneBase(base, globs, projectRoot, unreadable) {
88
96
  // eslint-disable-next-line security/detect-non-literal-fs-filename -- base derived from validated config
89
97
  if (!existsSync(base)) {
90
98
  return [];
@@ -102,8 +110,27 @@ async function crawlOneBase(base, globs) {
102
110
  // this and keeps the fast path (unlike `respectGitignore: false`, which costs
103
111
  // a full walk); the inventory lane already used it for the same reason.
104
112
  includeUntracked: true,
113
+ // Under `'refuse'`, a directory the crawl cannot LIST stops discovery, by
114
+ // name. The alternative — enumerate around it — is the same tell-less drop
115
+ // described above, from the other direction: one fewer skill, exit 0, and
116
+ // every command downstream (build, validate, verify, audit's config-aware
117
+ // lane) confidently working from the shorter list. The remedy names
118
+ // `skills.include` rather than `skills.exclude`, because `exclude` is
119
+ // applied to the crawl's RESULT and cannot stop the crawl from entering
120
+ // the directory; only a narrower include base can. Expressed against the
121
+ // project root — the coordinates the include pattern itself is written in,
122
+ // `..` and all.
123
+ //
124
+ // A caller that has decided to degrade passes its handler straight through
125
+ // (see {@link DiscoveryUnreadablePolicy}); the refusal is then reported by
126
+ // that caller, and the crawl continues past the directory.
127
+ unreadable: unreadable === 'refuse'
128
+ ? { refuse: { root: projectRoot, remedy: SKILLS_INCLUDE_REMEDY } }
129
+ : unreadable,
105
130
  });
106
131
  }
132
+ /** The knob an adopter has when `skills.include` reaches a directory the crawl cannot list. */
133
+ export const SKILLS_INCLUDE_REMEDY = 'Fix the permissions on that directory, or narrow the `skills.include` pattern so its base no longer reaches into it.';
107
134
  /**
108
135
  * Discover skills from config yaml skills section.
109
136
  *
@@ -119,9 +146,11 @@ async function crawlOneBase(base, globs) {
119
146
  *
120
147
  * @param skillsConfig - The skills section from vibe-agent-toolkit.config.yaml
121
148
  * @param projectRoot - Absolute path to project root (where config yaml lives)
149
+ * @param unreadable - What to do with a directory the crawl cannot list —
150
+ * see {@link DiscoveryUnreadablePolicy}; required, no default
122
151
  * @returns Array of discovered skills with names and source paths
123
152
  */
124
- export async function discoverSkillsFromConfig(skillsConfig, projectRoot) {
153
+ export async function discoverSkillsFromConfig(skillsConfig, projectRoot, unreadable) {
125
154
  const { include, exclude } = skillsConfig;
126
155
  const patternsByBase = groupIncludePatternsByBase(include, projectRoot);
127
156
  const userExcludeMatcher = exclude && exclude.length > 0
@@ -129,7 +158,7 @@ export async function discoverSkillsFromConfig(skillsConfig, projectRoot) {
129
158
  : null;
130
159
  const foundAbsPaths = new Set();
131
160
  for (const [base, globs] of patternsByBase) {
132
- const crawled = await crawlOneBase(base, globs);
161
+ const crawled = await crawlOneBase(base, globs, projectRoot, unreadable);
133
162
  for (const absPath of crawled) {
134
163
  if (userExcludeMatcher) {
135
164
  const relFromProject = toForwardSlash(safePath.relative(projectRoot, absPath));
@@ -1 +1 @@
1
- {"version":3,"file":"skill-discovery.js","sourceRoot":"","sources":["../../../src/commands/skills/skill-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-discovery.js","sourceRoot":"","sources":["../../../src/commands/skills/skill-discovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-command.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,qBAAqB,IAAI,OAAO,CA6G/C"}
1
+ {"version":3,"file":"validate-command.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,qBAAqB,IAAI,OAAO,CAqH/C"}
@@ -43,8 +43,10 @@ Description:
43
43
 
44
44
  Validation Checks:
45
45
  Required (non-overridable):
46
- - Valid YAML frontmatter
47
- - Skill has a name
46
+ - A YAML frontmatter block that parses. A matched file with none — a
47
+ README the glob drifted onto, a SKILL.md that lost its fence — is
48
+ refused as SKILL_MISSING_FRONTMATTER at error, not passed as a skill.
49
+ (A block without a name is legal — agentskills.io makes name optional.)
48
50
  - No reserved words (anthropic/claude)
49
51
  - No broken internal links
50
52
  - No circular references
@@ -107,9 +109,15 @@ Output:
107
109
  Run-level findings (validation.allow entries no skill matched) are printed
108
110
  in full in both forms; they belong to the project config, not to any skill.
109
111
 
112
+ A run that validated ZERO skills — skills.include globs that matched no
113
+ SKILL.md — is refused, not passed: one non-overridable RESOURCE_CHECK_BROKEN
114
+ at error naming the globs, status: error, exit 1. A config with no skills:
115
+ block at all is "nothing to validate": no document, exit 0.
116
+
110
117
  Exit Codes:
111
118
  0 - All validations passed (or all errors allowed by valid config)
112
- 1 - Validation errors found (severity=error, not allowed)
119
+ 1 - Validation errors found (severity=error, not allowed), or the run
120
+ validated no skill (skills.include matched nothing)
113
121
  2 - System error (config invalid, skill path not found)
114
122
 
115
123
  Requirements:
@@ -1 +1 @@
1
- {"version":3,"file":"validate-command.js","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAA2B,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAqC,eAAe,EAAE,MAAM,eAAe,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,aAAa,GAAuB;IACxC,OAAO,EAAE,qBAAqB;IAC9B,aAAa,EAAE,qBAAqB;CACrC,CAAC;AAEF,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO;SACJ,WAAW,CAAC,sEAAsE,CAAC;SACnF,QAAQ,CAAC,QAAQ,EAAE,iEAAiE,CAAC;SACrF,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,4FAA4F,CAAC;SACrH,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,OAAqC,EAAE,EAAE;QACnF,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC;SACD,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0FL,CACI,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"validate-command.js","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAA2B,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAqC,eAAe,EAAE,MAAM,eAAe,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,aAAa,GAAuB;IACxC,OAAO,EAAE,qBAAqB;IAC9B,aAAa,EAAE,qBAAqB;CACrC,CAAC;AAEF,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO;SACJ,WAAW,CAAC,sEAAsE,CAAC;SACnF,QAAQ,CAAC,QAAQ,EAAE,iEAAiE,CAAC;SACrF,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,4FAA4F,CAAC;SACrH,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,OAAqC,EAAE,EAAE;QACnF,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC;SACD,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGL,CACI,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * using validateSkillForPackaging with merged packaging config.
6
6
  */
7
7
  import { type DeclaredEvalSuite, type PackagingValidationResult, type SkillPackagingConfig, type SkillValidationSharedContext } from '@vibe-agent-toolkit/agent-skills';
8
- import { ResourceRegistry, type ProjectConfig, type ResourcePopulationSource } from '@vibe-agent-toolkit/resources';
8
+ import { ResourceRegistry, type ProjectConfig, type ResourcePopulationSource, type SkillsConfig } from '@vibe-agent-toolkit/resources';
9
9
  import { type SeverityCounts, type ValidationIssue } from '@vibe-agent-toolkit/schema';
10
10
  import { type createLogger } from '../../utils/logger.js';
11
11
  import { type PhaseOutcome } from '../phase-utils.js';
@@ -36,6 +36,46 @@ type ValidationStatus = 'success' | 'warning' | 'error';
36
36
  * validated at the time is what produced 78 warnings from 3 real entries.
37
37
  */
38
38
  type RunIssues = readonly ValidationIssue[];
39
+ /**
40
+ * The discovery declaration a run's document answers for: the globs that
41
+ * decided which skills it validated. Only these two keys are read, so a caller
42
+ * with a full `SkillsConfig` and a test with two arrays hand in the same thing.
43
+ */
44
+ export type SkillDiscoveryPatterns = Pick<SkillsConfig, 'include' | 'exclude'>;
45
+ /**
46
+ * The run-level findings, with the run-integrity refusal derived in front of
47
+ * them when the run validated no skill.
48
+ *
49
+ * 🚨 **Zero skills validated is an ERROR, not a clean run.** `skills.include`
50
+ * globs that discover nothing — a typo, a renamed directory, an `exclude` that
51
+ * swallows every match — used to take an early return that printed one info
52
+ * line and published NO document at exit 0, and `vat validate` folded that into
53
+ * `status: success`: the gate the docs name as THE gate, green forever on a
54
+ * config that checked nothing. `vat verify` refused the identical config in its
55
+ * `packaged-content` phase and its message sent the operator to this command,
56
+ * which then said nothing.
57
+ *
58
+ * 🔑 The ONE seam both channels read. {@link buildValidateSummary} (the
59
+ * document) and {@link formatValidationReportLines} (stderr) both derive their
60
+ * issue set here, so "denominator zero, status clean" is unrepresentable on
61
+ * either channel rather than merely unwritten, and the exit code — derived from
62
+ * the document's own counts — agrees with both by construction. Through the
63
+ * shared mechanism in `run-integrity.ts`: one non-overridable
64
+ * `RESOURCE_CHECK_BROKEN` at `error`.
65
+ *
66
+ * Only the empty GLOB is refused. A config with no `skills:` block at all is a
67
+ * choice — the project declares no skills — and both orchestrators already skip
68
+ * this phase on that config; the phase declines it the same way (no document,
69
+ * exit 0) rather than inventing a refusal for a gate nobody declared.
70
+ *
71
+ * @param results - One result per skill the run validated: the denominator
72
+ * @param runIssues - The run's own findings so far (`ALLOW_UNUSED`), so an
73
+ * existing run-integrity report is not duplicated
74
+ * @param patterns - The discovery globs, named in the refusal so the operator
75
+ * sees what matched nothing
76
+ * @returns The run-level issues the document and the stderr report publish
77
+ */
78
+ export declare function withRunIntegrity(results: readonly PackagingValidationResult[], runIssues: RunIssues, patterns: SkillDiscoveryPatterns): ValidationIssue[];
39
79
  /**
40
80
  * Build the YAML summary object.
41
81
  *
@@ -62,8 +102,13 @@ type RunIssues = readonly ValidationIssue[];
62
102
  * zeros: `issueCounts` and `runIssueCounts` keep their complete
63
103
  * `{errors, warnings, info}` shape in both modes, because they are the
64
104
  * reconciliation identity rather than something a reader scans.
105
+ *
106
+ * A run over ZERO skills is refused here, not passed — see
107
+ * {@link withRunIntegrity}, which is why the discovery `patterns` are a
108
+ * parameter of a document builder: the refusal names the globs that matched
109
+ * nothing, and the builder is where the refusal is derived.
65
110
  */
66
- export declare function buildValidateSummary(results: PackagingValidationResult[], duration: number, verbose: boolean, runIssues: RunIssues): {
111
+ export declare function buildValidateSummary(results: PackagingValidationResult[], duration: number, verbose: boolean, runIssues: RunIssues, patterns: SkillDiscoveryPatterns): {
67
112
  status: ValidationStatus;
68
113
  issueCounts: SeverityCounts;
69
114
  runIssueCounts: SeverityCounts;
@@ -89,8 +134,12 @@ export declare function buildValidateSummary(results: PackagingValidationResult[
89
134
  * Run-level findings and the banner are printed in full either way — there are
90
135
  * ~14 of the former, and they belong to the project config rather than to any
91
136
  * asset, so there is no row for them to collapse into.
137
+ *
138
+ * Reads the same seam as the document builder ({@link withRunIntegrity}), so a
139
+ * run over zero skills prints the refusal here too rather than a green banner
140
+ * over a document that says `error`.
92
141
  */
93
- export declare function formatValidationReportLines(results: PackagingValidationResult[], runIssues: RunIssues, verbose: boolean): string[];
142
+ export declare function formatValidationReportLines(results: PackagingValidationResult[], runIssues: RunIssues, verbose: boolean, patterns: SkillDiscoveryPatterns): string[];
94
143
  /**
95
144
  * Log validation progress for a single skill.
96
145
  *
@@ -161,10 +210,20 @@ export declare function buildSharedValidationContext(skills: ValidatableSkill[],
161
210
  * Validate every configured skill and hand back the document and exit code,
162
211
  * printing the document nowhere.
163
212
  *
164
- * The phase entry point for `vat validate` and `vat verify`. The two early
165
- * returns publish NO document — an unconfigured or empty run prints nothing on
166
- * stdout and exits 0, exactly as the child process did, and
167
- * `phaseResultFromOutcome` records that as `success` with no `report`.
213
+ * The phase entry point for `vat validate` and `vat verify`. The one early
214
+ * return publishes NO document: a config with no `skills:` block prints one
215
+ * info line, exits 0, and `phaseResultFromOutcome` records that as `success`
216
+ * with no `report` — both orchestrators skip the phase on that config anyway,
217
+ * because declaring no skills is a choice.
218
+ *
219
+ * A `skills:` block whose globs discover nothing is NOT a second early return.
220
+ * It used to be — one info line, no document, exit 0 — and that made `vat
221
+ * validate` green forever on a typo'd glob. It now runs through the same
222
+ * builder as a populated batch, which refuses a zero denominator (see
223
+ * {@link withRunIntegrity}): a document with one `RESOURCE_CHECK_BROKEN` at
224
+ * `error`, `status: error`, exit 1. Exit 1 and not 2, deliberately: the run
225
+ * completed and the gate FAILED, which is the class an operator's CI already
226
+ * handles; 2 is for a run that could not answer at all.
168
227
  */
169
228
  export declare function runSkillsValidatePhase(pathArg: string | undefined, options: SkillsValidateCommandOptions): Promise<PhaseOutcome>;
170
229
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Discovers skills from config yaml skills.include/exclude, validates each
5
5
  * using validateSkillForPackaging with merged packaging config.
6
6
  */
7
- import { validateSkillForPackaging, } from '@vibe-agent-toolkit/agent-skills';
7
+ import { conventionalSuiteProbe, validateSkillForPackaging, } from '@vibe-agent-toolkit/agent-skills';
8
8
  import { ResourceRegistry, } from '@vibe-agent-toolkit/resources';
9
9
  import { allowUnusedIssues, calculateValidationStatus, countBySeverity, createAllowUsageLedger, } from '@vibe-agent-toolkit/schema';
10
10
  import { findProjectRoot, safePath } from '@vibe-agent-toolkit/utils';
@@ -16,6 +16,7 @@ import { formatDurationSecs } from '../../utils/duration.js';
16
16
  import { formatIssueLines, formatRunIssueLines, formatSeverityBreakdown, issuesToRenderAtVerbosity, summarizeFindings, sumSeverityCounts, } from '../../utils/issue-rendering.js';
17
17
  import { requireProjectRoot } from '../../utils/project-root-policy.js';
18
18
  import { RESOURCES_CRAWL_ENV, RESOURCES_CRAWL_PROJECTION, withResourcePopulationSource, } from '../../utils/resource-loader.js';
19
+ import { nothingCheckedFinding } from '../../utils/run-integrity.js';
19
20
  import { collectDeclaredEvalSuites, mergeSkillPackagingConfig } from '../../utils/skill-packaging-config.js';
20
21
  import { renderSkillQualityFooter } from '../../utils/skill-quality-footer.js';
21
22
  import { applyConfigVerdicts } from '../../utils/verdict-helpers.js';
@@ -32,6 +33,62 @@ import { discoverSkillsFromConfig } from './skill-discovery.js';
32
33
  function batchIssues(results) {
33
34
  return results.flatMap((r) => r.allErrors);
34
35
  }
36
+ /**
37
+ * The run-level findings, with the run-integrity refusal derived in front of
38
+ * them when the run validated no skill.
39
+ *
40
+ * 🚨 **Zero skills validated is an ERROR, not a clean run.** `skills.include`
41
+ * globs that discover nothing — a typo, a renamed directory, an `exclude` that
42
+ * swallows every match — used to take an early return that printed one info
43
+ * line and published NO document at exit 0, and `vat validate` folded that into
44
+ * `status: success`: the gate the docs name as THE gate, green forever on a
45
+ * config that checked nothing. `vat verify` refused the identical config in its
46
+ * `packaged-content` phase and its message sent the operator to this command,
47
+ * which then said nothing.
48
+ *
49
+ * 🔑 The ONE seam both channels read. {@link buildValidateSummary} (the
50
+ * document) and {@link formatValidationReportLines} (stderr) both derive their
51
+ * issue set here, so "denominator zero, status clean" is unrepresentable on
52
+ * either channel rather than merely unwritten, and the exit code — derived from
53
+ * the document's own counts — agrees with both by construction. Through the
54
+ * shared mechanism in `run-integrity.ts`: one non-overridable
55
+ * `RESOURCE_CHECK_BROKEN` at `error`.
56
+ *
57
+ * Only the empty GLOB is refused. A config with no `skills:` block at all is a
58
+ * choice — the project declares no skills — and both orchestrators already skip
59
+ * this phase on that config; the phase declines it the same way (no document,
60
+ * exit 0) rather than inventing a refusal for a gate nobody declared.
61
+ *
62
+ * @param results - One result per skill the run validated: the denominator
63
+ * @param runIssues - The run's own findings so far (`ALLOW_UNUSED`), so an
64
+ * existing run-integrity report is not duplicated
65
+ * @param patterns - The discovery globs, named in the refusal so the operator
66
+ * sees what matched nothing
67
+ * @returns The run-level issues the document and the stderr report publish
68
+ */
69
+ export function withRunIntegrity(results, runIssues, patterns) {
70
+ return [
71
+ ...nothingCheckedFinding(results.length, runIssues, () => nothingDiscoveredMessage(patterns)),
72
+ ...runIssues,
73
+ ];
74
+ }
75
+ /** The globs as an operator wrote them, back-quoted and comma-separated. */
76
+ function quoteGlobs(globs) {
77
+ return globs.map((glob) => `\`${glob}\``).join(', ');
78
+ }
79
+ /** What did not run, and what the operator can do — invariant 5 of `run-integrity.ts`. */
80
+ function nothingDiscoveredMessage(patterns) {
81
+ const include = quoteGlobs(patterns.include);
82
+ const exclude = patterns.exclude === undefined || patterns.exclude.length === 0
83
+ ? ''
84
+ : ` after \`skills.exclude\` (${quoteGlobs(patterns.exclude)})`;
85
+ return 'vat skills validate validated 0 skills, so this run is not a verdict: nothing was checked,'
86
+ + ' and the document reads the same as a run over clean skills. The `skills.include` globs in'
87
+ + ` vibe-agent-toolkit.config.yaml (${include}) matched no SKILL.md${exclude} — usually a typo`
88
+ + ' in the glob, a renamed directory, or an exclude that swallows every match. Fix the patterns'
89
+ + ' so they discover the skills this project ships, or remove the `skills:` block if it ships'
90
+ + ' none.';
91
+ }
35
92
  /**
36
93
  * One skill's VERBOSE YAML entry: the whole result plus the per-severity counts
37
94
  * its two-valued `status` cannot express.
@@ -114,12 +171,18 @@ function toSummaryYamlResult(result) {
114
171
  * zeros: `issueCounts` and `runIssueCounts` keep their complete
115
172
  * `{errors, warnings, info}` shape in both modes, because they are the
116
173
  * reconciliation identity rather than something a reader scans.
174
+ *
175
+ * A run over ZERO skills is refused here, not passed — see
176
+ * {@link withRunIntegrity}, which is why the discovery `patterns` are a
177
+ * parameter of a document builder: the refusal names the globs that matched
178
+ * nothing, and the builder is where the refusal is derived.
117
179
  */
118
- export function buildValidateSummary(results, duration, verbose, runIssues) {
180
+ export function buildValidateSummary(results, duration, verbose, runIssues, patterns) {
119
181
  const skillIssues = batchIssues(results);
120
- const runIssueCounts = countBySeverity(runIssues);
182
+ const published = withRunIntegrity(results, runIssues, patterns);
183
+ const runIssueCounts = countBySeverity(published);
121
184
  return {
122
- status: calculateValidationStatus([...skillIssues, ...runIssues]),
185
+ status: calculateValidationStatus([...skillIssues, ...published]),
123
186
  issueCounts: sumSeverityCounts([countBySeverity(skillIssues), runIssueCounts]),
124
187
  runIssueCounts,
125
188
  // `skillsValidated` stays the true denominator even though the default
@@ -139,7 +202,7 @@ export function buildValidateSummary(results, duration, verbose, runIssues) {
139
202
  results: verbose
140
203
  ? results.map((r) => toVerboseYamlResult(r))
141
204
  : results.filter((r) => hasFindings(r)).map((r) => toSummaryYamlResult(r)),
142
- runIssues: [...runIssues],
205
+ runIssues: published,
143
206
  durationSecs: formatDurationSecs(duration),
144
207
  };
145
208
  }
@@ -261,9 +324,14 @@ function reportBanner(status, counts) {
261
324
  * Run-level findings and the banner are printed in full either way — there are
262
325
  * ~14 of the former, and they belong to the project config rather than to any
263
326
  * asset, so there is no row for them to collapse into.
327
+ *
328
+ * Reads the same seam as the document builder ({@link withRunIntegrity}), so a
329
+ * run over zero skills prints the refusal here too rather than a green banner
330
+ * over a document that says `error`.
264
331
  */
265
- export function formatValidationReportLines(results, runIssues, verbose) {
266
- const issues = [...batchIssues(results), ...runIssues];
332
+ export function formatValidationReportLines(results, runIssues, verbose, patterns) {
333
+ const published = withRunIntegrity(results, runIssues, patterns);
334
+ const issues = [...batchIssues(results), ...published];
267
335
  const counts = countBySeverity(issues);
268
336
  const status = calculateValidationStatus(issues);
269
337
  const lines = [reportBanner(status, counts)];
@@ -272,7 +340,7 @@ export function formatValidationReportLines(results, runIssues, verbose) {
272
340
  continue;
273
341
  lines.push(...skillReportLines(result, verbose));
274
342
  }
275
- const runLines = formatRunIssueLines(runIssues);
343
+ const runLines = formatRunIssueLines(published);
276
344
  if (runLines.length > 0) {
277
345
  lines.push(...runLines, '');
278
346
  }
@@ -281,7 +349,7 @@ export function formatValidationReportLines(results, runIssues, verbose) {
281
349
  /**
282
350
  * Output validation report to stdout (YAML) and stderr (human-readable)
283
351
  */
284
- function reportValidationToStderr(results, logger, verbose, runIssues) {
352
+ function reportValidationToStderr(results, logger, verbose, runIssues, patterns) {
285
353
  // Collect all emitted codes across skills (both errors and warnings) to drive the footer
286
354
  const emittedCodes = new Set();
287
355
  for (const r of results) {
@@ -289,11 +357,11 @@ function reportValidationToStderr(results, logger, verbose, runIssues) {
289
357
  emittedCodes.add(issue.code);
290
358
  }
291
359
  }
292
- for (const issue of runIssues) {
360
+ for (const issue of withRunIntegrity(results, runIssues, patterns)) {
293
361
  emittedCodes.add(issue.code);
294
362
  }
295
363
  const hasSkillFindings = results.some((r) => calculateValidationStatus(r.allErrors) !== 'success');
296
- for (const line of formatValidationReportLines(results, runIssues, verbose)) {
364
+ for (const line of formatValidationReportLines(results, runIssues, verbose, patterns)) {
297
365
  logger.info(line);
298
366
  }
299
367
  renderSkillQualityFooter(logger, hasSkillFindings, emittedCodes);
@@ -346,6 +414,9 @@ export async function buildSkillsValidateRegistry(projectRoot, options = {}) {
346
414
  const registry = await ResourceRegistry.fromCrawl({
347
415
  baseDir: projectRoot,
348
416
  include: ['**/*.md'],
417
+ // `vat skills validate` acts on this registry as the whole population: a
418
+ // directory it cannot list refuses the run by name, exit 2.
419
+ unreadable: 'refuse',
349
420
  ...(populationSource !== undefined && { populationSource }),
350
421
  }, config === undefined ? undefined : { config });
351
422
  registry.resolveLinks();
@@ -357,11 +428,28 @@ export async function buildSharedValidationContext(skills, projectSkills, config
357
428
  // package and matched per skill, so only the batch can say an entry matched
358
429
  // nothing. Always present, so no early return can drop it.
359
430
  const allowLedger = createAllowUsageLedger();
431
+ // The RUN's conventional-suite probe, and it belongs beside the ledger rather
432
+ // than with the two optimizations below: resolving a skill's test input probes
433
+ // `<skill-root>/evals/evals.json` for the subject AND for every entry in
434
+ // `projectSkills`, so a probe minted per skill asks S questions per skill and
435
+ // S² per run about the same S paths. Measured with the lab on a 103-skill
436
+ // adopter: 10,815 probes over 103 distinct paths, half the command's entire
437
+ // filesystem traffic; with the run's probe threaded, ~103.
438
+ //
439
+ // Created here, once, and handed to every skill in the batch — that is the
440
+ // whole contract of `SkillValidationSharedContext.suiteProbe`, whose fallback
441
+ // (`?? conventionalSuiteProbe()`) treats an omitting caller as claiming ITS
442
+ // call is the whole run. This lane loops, so omitting it made that claim
443
+ // falsely and silently.
444
+ //
445
+ // NOT module-scoped: the answer is a filesystem snapshot, and a cache
446
+ // outliving the run keeps answering for a tree that has since changed.
447
+ const suiteProbe = conventionalSuiteProbe();
360
448
  // Likewise not an optimization: the test-input rule is project-wide, so this
361
449
  // lane must model a bundle that excludes EVERY declared suite, not just the
362
450
  // subject's. Present even for an empty batch, so no early return can drop it.
363
451
  if (skills.length === 0) {
364
- return { allowLedger, projectSkills };
452
+ return { allowLedger, projectSkills, suiteProbe, unreadable: 'refuse' };
365
453
  }
366
454
  const projectRoots = new Set();
367
455
  const gitRoots = new Set();
@@ -379,7 +467,7 @@ export async function buildSharedValidationContext(skills, projectSkills, config
379
467
  gitRoots.add(safePath.resolve(gitRoot));
380
468
  }
381
469
  }
382
- const context = { allowLedger, projectSkills };
470
+ const context = { allowLedger, projectSkills, suiteProbe, unreadable: 'refuse' };
383
471
  // One tracker per repo; when the batch spans repos, skip rather than spawn
384
472
  // multiple `git ls-files`.
385
473
  //
@@ -441,10 +529,20 @@ export async function buildSharedValidationContext(skills, projectSkills, config
441
529
  * Validate every configured skill and hand back the document and exit code,
442
530
  * printing the document nowhere.
443
531
  *
444
- * The phase entry point for `vat validate` and `vat verify`. The two early
445
- * returns publish NO document — an unconfigured or empty run prints nothing on
446
- * stdout and exits 0, exactly as the child process did, and
447
- * `phaseResultFromOutcome` records that as `success` with no `report`.
532
+ * The phase entry point for `vat validate` and `vat verify`. The one early
533
+ * return publishes NO document: a config with no `skills:` block prints one
534
+ * info line, exits 0, and `phaseResultFromOutcome` records that as `success`
535
+ * with no `report` — both orchestrators skip the phase on that config anyway,
536
+ * because declaring no skills is a choice.
537
+ *
538
+ * A `skills:` block whose globs discover nothing is NOT a second early return.
539
+ * It used to be — one info line, no document, exit 0 — and that made `vat
540
+ * validate` green forever on a typo'd glob. It now runs through the same
541
+ * builder as a populated batch, which refuses a zero denominator (see
542
+ * {@link withRunIntegrity}): a document with one `RESOURCE_CHECK_BROKEN` at
543
+ * `error`, `status: error`, exit 1. Exit 1 and not 2, deliberately: the run
544
+ * completed and the gate FAILED, which is the class an operator's CI already
545
+ * handles; 2 is for a run that could not answer at all.
448
546
  */
449
547
  export async function runSkillsValidatePhase(pathArg, options) {
450
548
  const { logger, cwd, startTime } = setupCommandContext(pathArg, options.debug);
@@ -460,12 +558,14 @@ export async function runSkillsValidatePhase(pathArg, options) {
460
558
  logger.info('No skills section in config yaml — nothing to validate');
461
559
  return { document: undefined, exitCode: 0 };
462
560
  }
463
- // Discover skills from config yaml (relative to cwd where config lives)
464
- const discovered = await discoverSkillsFromConfig(config.skills, cwd);
465
- if (discovered.length === 0) {
466
- logger.info('ℹ️ No skills found matching config yaml skills.include patterns');
467
- return { document: undefined, exitCode: 0 };
468
- }
561
+ // Discover skills from config yaml (relative to cwd where config lives).
562
+ // `'refuse'`: one fewer skill at exit 0 is the drop this command must not
563
+ // make. The throw lands in the catch below → `reportCommandError`, exit 2.
564
+ const discovered = await discoverSkillsFromConfig(config.skills, cwd, 'refuse');
565
+ // No early return on `discovered.length === 0` — see the function comment.
566
+ // The empty batch flows through every step below unchanged: the shared
567
+ // context is built for zero skills (its ledger and probe exist regardless),
568
+ // the loop runs zero times, and the builder refuses the zero denominator.
469
569
  // Merge packaging config for each skill.
470
570
  const { defaults, config: perSkillConfig } = config.skills;
471
571
  const validatableSkills = discovered.map(skill => ({
@@ -504,11 +604,13 @@ export async function runSkillsValidatePhase(pathArg, options) {
504
604
  : allowUnusedIssues(sharedContext.allowLedger);
505
605
  const duration = Date.now() - startTime;
506
606
  const verbose = options.verbose === true;
507
- const document = buildValidateSummary(results, duration, verbose, runIssues);
508
- reportValidationToStderr(results, logger, verbose, runIssues);
509
- const hasErrors = results.some(r => r.status === 'error')
510
- || runIssues.some(i => i.severity === 'error');
511
- return { document, exitCode: hasErrors ? 1 : 0 };
607
+ const document = buildValidateSummary(results, duration, verbose, runIssues, config.skills);
608
+ reportValidationToStderr(results, logger, verbose, runIssues, config.skills);
609
+ // The exit code is read off the DOCUMENT, not recomputed beside it, so the
610
+ // two cannot disagree: whatever the builder refused, the process refuses.
611
+ // `issueCounts.errors` counts an active error on any skill and every
612
+ // run-level error alike — including the zero-denominator refusal.
613
+ return { document, exitCode: document.issueCounts.errors > 0 ? 1 : 0 };
512
614
  }
513
615
  catch (error) {
514
616
  return {
@@ -522,8 +624,10 @@ export async function runSkillsValidatePhase(pathArg, options) {
522
624
  * Skills validate command implementation
523
625
  */
524
626
  export async function validateCommand(pathArg, options) {
627
+ // `undefined`: this command offers no `--format`, so its failure envelope is
628
+ // YAML like its report.
525
629
  finishCommand(await runSkillsValidatePhase(pathArg, options), (document) => {
526
630
  writeYamlSummary(document);
527
- });
631
+ }, undefined);
528
632
  }
529
633
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"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"}