@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
package/docs/doctor.md CHANGED
@@ -12,7 +12,7 @@ providing actionable suggestions for any problems found.
12
12
  **Purpose:** Check environment and project setup health
13
13
 
14
14
  **What it checks:**
15
- 1. Node.js version (>=20 required)
15
+ 1. Node.js version (>=22.13.0 required — the range comes from the CLI's own `engines.node`)
16
16
  2. Git installed and version
17
17
  3. Current directory is a git repository
18
18
  4. Configuration file exists (vibe-agent-toolkit.config.yaml)
@@ -96,7 +96,7 @@ Running diagnostic checks...
96
96
  Current: 0.1.0 — up to date
97
97
 
98
98
  ✅ Node.js version
99
- v22.0.0 (meets requirement: >=20.0.0)
99
+ v22.13.0 (meets requirement: >=22.13.0)
100
100
 
101
101
  ✅ Git installed
102
102
  git version 2.43.0
@@ -148,12 +148,12 @@ Running diagnostic checks...
148
148
 
149
149
  When checks fail, doctor provides specific suggestions:
150
150
 
151
- ### Node.js Version Too Old
151
+ ### Node.js Version Out of Range
152
152
 
153
153
  ```
154
154
  ❌ Node.js version
155
- v18.0.0 is too old. Node.js 20+ required.
156
- 💡 Upgrade Node.js: https://nodejs.org/ or use nvm
155
+ v22.4.0 does not satisfy the required range. Node.js >=22.13.0 required.
156
+ 💡 Install a Node.js version in that range: https://nodejs.org/ or use nvm
157
157
  ```
158
158
 
159
159
  ### Git Not Installed
@@ -248,7 +248,7 @@ fi
248
248
 
249
249
  ### Node.js Version Check
250
250
 
251
- - **Requirement:** Node.js 20 or higher
251
+ - **Requirement:** Node.js >=22.13.0, read at runtime from the CLI's `engines.node` so this check cannot drift behind the floor. Checked against `process.version` — the interpreter running VAT — not against a spawned `node` from `PATH`, which differs under any version manager.
252
252
  - **Why:** VAT uses modern JavaScript features
253
253
  - **Fix:** Install Node.js from https://nodejs.org/ or use nvm
254
254
 
package/docs/index.md CHANGED
@@ -94,7 +94,7 @@ Diagnose vat setup and environment health
94
94
 
95
95
  **What it does:**
96
96
 
97
- - Checks Node.js version (>=20 required)
97
+ - Checks Node.js version (>=22.13.0 required)
98
98
  - Checks Git installation and repository
99
99
  - Validates configuration file exists and is valid
100
100
  - Checks vat version and available updates
package/docs/rag.md CHANGED
@@ -53,7 +53,8 @@ vat rag clear
53
53
 
54
54
  **Exit Codes:**
55
55
  - `0` - Indexing completed successfully
56
- - `2` - System error (config invalid, database error, etc.)
56
+ - `1` - Indexed with errors: the run finished, `status: partial`, and `errors` names each resource whose content is NOT in the index — one the provider failed to chunk or embed, or one the crawl enumerated but could not read (a permission-denied file is reported here, never silently dropped)
57
+ - `2` - System error (config invalid, database error, a `rag_documents` table whose columns an earlier build typed differently — the message names the columns and `vat rag clear` is the remedy, etc.)
57
58
 
58
59
  **Output:** YAML on stdout with indexing statistics
59
60
 
@@ -68,6 +69,7 @@ vat rag index docs/
68
69
  # status: success
69
70
  # resourcesIndexed: 12
70
71
  # resourcesSkipped: 0
72
+ # resourcesEmpty: 0 # frontmatter-only or blank files: counted, not stored
71
73
  # resourcesUpdated: 0
72
74
  # chunksCreated: 48
73
75
  # chunksDeleted: 0
package/docs/resources.md CHANGED
@@ -114,7 +114,11 @@ for the loud-cwd fallback policy and the projectRoot discovery ladder.
114
114
 
115
115
  **Exit Codes:**
116
116
  - `0` - Validation passed
117
- - `1` - Validation errors found
117
+ - `1` - Validation errors found — including a run that scanned no file at all
118
+ (`filesScanned: 0`), which is reported as one non-overridable
119
+ `RESOURCE_CHECK_BROKEN` error rather than as a pass: a `--collection` that
120
+ matched nothing or a path with no markdown is not a verdict about anything.
121
+ The reason and the remedy are also printed on stderr as a warning
118
122
  - `2` - System error
119
123
 
120
124
  **Output:**
package/docs/skills.md CHANGED
@@ -47,85 +47,58 @@ See `docs/validation-codes.md` for the full code reference with per-code descrip
47
47
 
48
48
  ### vat skills validate [path]
49
49
 
50
- **Purpose:** Validate SKILL.md files for correctness and best practices
50
+ **Purpose:** Validate the skills a project declares, before packaging — the gate `vat validate` and `vat verify` run as their `skills` phase.
51
51
 
52
52
  **What it does:**
53
- 1. Discovers all SKILL.md files in the target directory
54
- 2. Validates both resource rules (links, frontmatter) and skill-specific rules
55
- 3. Reports errors and warnings in structured format
56
- 4. Exits 0 if valid, 1 if errors found (warnings don't fail)
57
-
58
- **Validation Modes:**
59
-
60
- **Project mode (default):**
61
- - Respects `vibe-agent-toolkit.config.yaml` boundaries
62
- - Strict filename validation - must be exactly "SKILL.md" (case-sensitive)
63
- - Errors on non-standard filenames (skill.md, Skill.md, etc.)
64
-
65
- **User mode (--user flag):**
66
- - Scans `~/.claude/plugins` and `~/.claude/skills`
67
- - Permissive validation - non-standard filenames generate warnings only
68
- - More tolerant for user-installed content
69
-
70
- **Path mode (explicit path):**
71
- - Scans specified directory
72
- - Strict filename validation like project mode
53
+ 1. Reads `vibe-agent-toolkit.config.yaml` from `[path]` (default: current directory) and discovers every file its `skills.include` / `skills.exclude` globs match
54
+ 2. Validates each with the packaging validator: frontmatter, links and link depth, size/complexity, `files:` config, compat observations — under the merged `skills.defaults` + `skills.config.<name>` validation config (`severity` + `allow`)
55
+ 3. Publishes a YAML document to stdout and a findings report to stderr
56
+ 4. Exits 0, 1 or 2 — see below
73
57
 
74
58
  **Arguments:**
75
- - `[path]` - Path to validate (defaults to current directory)
59
+ - `[path]` — a directory that holds `vibe-agent-toolkit.config.yaml`. It scopes *which config is read*, not which files are scanned; the globs in that config do the scanning. A path that does not exist, is not a directory, or holds no config is refused (exit 2) rather than silently rescoping the run to nothing. There is no `--user` mode and no "scan this directory" mode.
76
60
 
77
61
  **Options:**
78
- - `--user` - Validate user-installed skills in ~/.claude
79
- - `--debug` - Enable debug logging
62
+ - `--skill <name>` — validate one discovered skill only (narrows what is reported on, not what counts as declared test input)
63
+ - `-v, --verbose` — publish every validated skill, findings or not, with full detail (`allErrors`, `ignoredErrors`, `observations`, `evidence`, metadata) and one block per finding on stderr
64
+ - `-d, --debug` — debug logging
80
65
 
81
- **Exit Codes:**
82
- - `0` - All validations passed
83
- - `1` - Validation errors found (warnings don't fail)
84
- - `2` - System error (directory not found, config invalid)
66
+ **Exit codes:**
85
67
 
86
- **Validation Checks:**
68
+ | Exit | When |
69
+ |---|---|
70
+ | `0` | No active `error` finding (warnings and info do not fail; allowed errors do not fail) |
71
+ | `1` | An active `error` finding on any skill, **or** the run validated no skill: `skills.include` matched nothing (typo, renamed directory, an `exclude` that swallows every match). Refused as one non-overridable `RESOURCE_CHECK_BROKEN` naming the globs — a green over zero skills is not a verdict |
72
+ | `2` | Could not run: `[path]` refused, config invalid, `projectRoot` not found |
87
73
 
88
- *Resource validation:*
89
- - Internal file links (relative paths)
90
- - Anchor links within files (#heading)
91
- - Cross-file anchor links (file.md#heading)
92
- - Frontmatter schema validation
74
+ A config with no `skills:` block at all is "nothing to validate": no document, exit 0 — declaring no skills is a choice, and both orchestrators skip the phase on that config.
93
75
 
94
- *Skill-specific validation:*
95
- - Reserved word checks (name field)
96
- - XML tag detection (name/description fields)
97
- - Console compatibility warnings
98
- - Required frontmatter fields (name, description)
76
+ **What a matched file must be.** Every file the globs match is validated as a skill and counted in `skillsValidated`. A matched file with no YAML frontmatter block — or one whose block does not parse — is refused with `SKILL_MISSING_FRONTMATTER` at `error` (non-overridable), located at the file's project-relative path. So a glob that drifts onto a `README.md`, or a `SKILL.md` that lost its fence, fails the run instead of passing under its H1 as a name. A frontmatter block without a `name` is legal (agentskills.io makes `name` optional) and is not refused on that ground.
99
77
 
100
- *Filename validation:*
101
- - Must be "SKILL.md" (uppercase)
102
- - Strict mode: errors on skill.md, Skill.md
103
- - Permissive mode: warnings only
78
+ **Output:**
79
+
80
+ Default `results[]` lists only skills WITH findings — per-skill counts and a per-code tally, dominant code first; a clean skill is omitted and a zero bucket is an absent field. `skillsValidated` is the true denominator regardless. `issueCounts` always equals the sum of the per-skill rows plus `runIssueCounts` (run-level findings: `ALLOW_UNUSED` entries and the zero-skill refusal).
104
81
 
105
- **Output Format:**
106
82
  ```yaml
107
- status: success | error
108
- skillsValidated: 3
83
+ status: error # success | warning | error — worst actionable severity in the run
84
+ issueCounts: { errors: 1, warnings: 0, info: 0 }
85
+ runIssueCounts: { errors: 0, warnings: 0, info: 0 }
86
+ skillsValidated: 2
109
87
  results:
110
- - path: resources/skills/SKILL.md
111
- status: success
112
- skill:
113
- name: my-skill
114
- description: Skill description
115
- issues: []
116
- durationSecs: 0.245
88
+ - skillName: Beta
89
+ status: error
90
+ errors: 1
91
+ codes:
92
+ SKILL_MISSING_FRONTMATTER: 1
93
+ runIssues: []
94
+ durationSecs: 0.31
117
95
  ```
118
96
 
119
- **Examples:**
120
- ```bash
121
- # Validate all project skills (default)
122
- vat skills validate
123
-
124
- # Validate user-installed skills
125
- vat skills validate --user
97
+ stderr prints the same thing as one line per skill, with every `error` finding rendered in full beneath its row (location, message, fix) at every verbosity.
126
98
 
127
- # Validate specific directory
128
- vat skills validate packages/my-agent/resources/skills
99
+ **Example:**
100
+ ```bash
101
+ vat skills validate packages/my-pkg/ # read packages/my-pkg/vibe-agent-toolkit.config.yaml
129
102
  ```
130
103
 
131
104
  **Requirements:**
@@ -525,6 +498,18 @@ skills:
525
498
  warning: Non-standard filename (should be SKILL.md)
526
499
  ```
527
500
 
501
+ When the scan could not list a directory (a root-owned or quarantined directory under
502
+ `~/.claude/plugins`, say), `status` is `warning` and the document names each such directory,
503
+ root-relative, with the errno — `skillsFound` is then a floor, not the answer:
504
+
505
+ ```yaml
506
+ status: warning
507
+ ...
508
+ unreadable:
509
+ - path: plugins/locked
510
+ code: EACCES
511
+ ```
512
+
528
513
  **Examples:**
529
514
  ```bash
530
515
  # List project skills (default)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-agent-toolkit/cli",
3
- "version": "0.2.0-rc.5",
3
+ "version": "0.2.0-rc.7",
4
4
  "description": "Command-line interface for vibe-agent-toolkit",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,20 +41,20 @@
41
41
  "author": "Jeff Dutton",
42
42
  "license": "MIT",
43
43
  "engines": {
44
- "node": ">=22.0.0"
44
+ "node": ">=22.13.0"
45
45
  },
46
46
  "//dependencies-note": "DO NOT add example agent packages or adopter packages here. Adopter packages (like vat-development-agents) depend on the CLI binary at build time — declaring them as deps creates a circular build dependency. They are built in a second turbo pass via package#task overrides in turbo.json.",
47
47
  "dependencies": {
48
48
  "@anthropic-ai/sdk": "^0.71.2",
49
- "@vibe-agent-toolkit/agent-config": "0.2.0-rc.5",
50
- "@vibe-agent-toolkit/agent-skills": "0.2.0-rc.5",
51
- "@vibe-agent-toolkit/claude-marketplace": "0.2.0-rc.5",
52
- "@vibe-agent-toolkit/discovery": "0.2.0-rc.5",
53
- "@vibe-agent-toolkit/gateway-mcp": "0.2.0-rc.5",
54
- "@vibe-agent-toolkit/projection-sqlite": "0.2.0-rc.5",
55
- "@vibe-agent-toolkit/resources": "0.2.0-rc.5",
56
- "@vibe-agent-toolkit/schema": "0.2.0-rc.5",
57
- "@vibe-agent-toolkit/utils": "0.2.0-rc.5",
49
+ "@vibe-agent-toolkit/agent-config": "0.2.0-rc.7",
50
+ "@vibe-agent-toolkit/agent-skills": "0.2.0-rc.7",
51
+ "@vibe-agent-toolkit/claude-marketplace": "0.2.0-rc.7",
52
+ "@vibe-agent-toolkit/discovery": "0.2.0-rc.7",
53
+ "@vibe-agent-toolkit/gateway-mcp": "0.2.0-rc.7",
54
+ "@vibe-agent-toolkit/projection-sqlite": "0.2.0-rc.7",
55
+ "@vibe-agent-toolkit/resources": "0.2.0-rc.7",
56
+ "@vibe-agent-toolkit/schema": "0.2.0-rc.7",
57
+ "@vibe-agent-toolkit/utils": "0.2.0-rc.7",
58
58
  "adm-zip": "^0.6.0",
59
59
  "commander": "^12.1.0",
60
60
  "picomatch": "^4.0.3",
@@ -69,12 +69,12 @@
69
69
  "@types/picomatch": "^4.0.2",
70
70
  "@types/semver": "^7.7.1",
71
71
  "@types/tar": "^6.1.13",
72
- "@vibe-agent-toolkit/dev-tools": "0.2.0-rc.5",
73
- "@vibe-agent-toolkit/rag": "0.2.0-rc.5",
74
- "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.5",
72
+ "@vibe-agent-toolkit/dev-tools": "0.2.0-rc.7",
73
+ "@vibe-agent-toolkit/rag": "0.2.0-rc.7",
74
+ "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.7",
75
75
  "rimraf": "^6.0.1",
76
76
  "typescript": "^5.7.3",
77
- "vitest": "^3.2.4"
77
+ "vitest": "^4.1.11"
78
78
  },
79
79
  "publishConfig": {
80
80
  "access": "public"
@@ -83,10 +83,10 @@
83
83
  "type": "git",
84
84
  "url": "https://github.com/jdutton/vibe-agent-toolkit.git"
85
85
  },
86
- "//peerDependencies-note": "The RAG backends are OPTIONAL PEERS, never optionalDependencies. `optionalDependencies` are INSTALLED BY DEFAULT by npm and pnpm alike - 'optional' there means the install may fail without failing the build, not that it is skipped - so declaring them that way shipped ~240 MB (onnxruntime-web 136 MB, a LanceDB platform binary 93 MB, a third apache-arrow, protobufjs) to every adopter, contradicting the seam in src/utils/optional-backend.ts that exists precisely to keep them out. Optional peers are NOT auto-installed, so the manifest now says what that module already says: these ship separately, and an absent one is a legible error naming the package to install. projection-sqlite is deliberately NOT in this group: it has zero third-party dependencies (only node:sqlite, which is built into Node) and a 152 KB dist, so the platform-binary argument that justifies the seam is simply false for it. It is also what `vat resources query` builds its ephemeral in-memory store from, and a query surface that works only where a backend was separately installed is the capability gate the projection design forbids.",
86
+ "//peerDependencies-note": "The RAG backends are OPTIONAL PEERS, never optionalDependencies. `optionalDependencies` are INSTALLED BY DEFAULT by npm and pnpm alike - 'optional' there means the install may fail without failing the build, not that it is skipped - so declaring them that way shipped ~287 MB unpacked (onnxruntime-web 137.5 MB, a LanceDB platform binary 97.8 MB, gpt-tokenizer 42.2 MB, apache-arrow 5.3 MB, protobufjs 3.0 MB; measured on darwin-arm64 against this release's pins, and the platform binary is larger on win32-x64) to every adopter, contradicting the seam in src/utils/optional-backend.ts that exists precisely to keep them out. Optional peers are NOT auto-installed, so the manifest now says what that module already says: these ship separately, and an absent one is a legible error naming the package to install. projection-sqlite is deliberately NOT in this group: it has zero third-party dependencies (only node:sqlite, which is built into Node) and a 152 KB dist, so the platform-binary argument that justifies the seam is simply false for it. It is also what `vat resources query` builds its ephemeral in-memory store from, and a query surface that works only where a backend was separately installed is the capability gate the projection design forbids.",
87
87
  "peerDependencies": {
88
- "@vibe-agent-toolkit/rag": "0.2.0-rc.5",
89
- "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.5"
88
+ "@vibe-agent-toolkit/rag": "0.2.0-rc.7",
89
+ "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.7"
90
90
  },
91
91
  "peerDependenciesMeta": {
92
92
  "@vibe-agent-toolkit/rag": {