@vibe-agent-toolkit/cli 0.1.41-rc.4 → 0.1.41-rc.6
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.
- package/dist/bin.js +2 -4
- package/dist/bin.js.map +1 -1
- package/dist/commands/agent/help.d.ts.map +1 -1
- package/dist/commands/agent/help.js +2 -4
- package/dist/commands/agent/help.js.map +1 -1
- package/dist/commands/claude/org/skills.d.ts +13 -0
- package/dist/commands/claude/org/skills.d.ts.map +1 -1
- package/dist/commands/claude/org/skills.js +57 -30
- package/dist/commands/claude/org/skills.js.map +1 -1
- package/dist/commands/claude/plugin/build.d.ts +1 -1
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +239 -82
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/install.d.ts.map +1 -1
- package/dist/commands/claude/plugin/install.js +7 -2
- package/dist/commands/claude/plugin/install.js.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.d.ts +10 -3
- package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
- package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
- package/dist/commands/claude/plugin/uninstall.js +10 -2
- package/dist/commands/claude/plugin/uninstall.js.map +1 -1
- package/dist/commands/rag/help.d.ts.map +1 -1
- package/dist/commands/rag/help.js +2 -4
- package/dist/commands/rag/help.js.map +1 -1
- package/dist/commands/resources/help.d.ts.map +1 -1
- package/dist/commands/resources/help.js +2 -4
- package/dist/commands/resources/help.js.map +1 -1
- package/dist/commands/resources/validate.d.ts +19 -0
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +51 -0
- package/dist/commands/resources/validate.js.map +1 -1
- package/dist/commands/skill/test/configure.d.ts.map +1 -1
- package/dist/commands/skill/test/configure.js +1 -1
- package/dist/commands/skill/test/configure.js.map +1 -1
- package/dist/commands/skill/test/run.d.ts +111 -24
- package/dist/commands/skill/test/run.d.ts.map +1 -1
- package/dist/commands/skill/test/run.js +328 -63
- package/dist/commands/skill/test/run.js.map +1 -1
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +3 -32
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/install.d.ts.map +1 -1
- package/dist/commands/skills/install.js +79 -25
- package/dist/commands/skills/install.js.map +1 -1
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +9 -5
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/skill-discovery.d.ts +7 -0
- package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
- package/dist/commands/skills/skill-discovery.js +5 -3
- package/dist/commands/skills/skill-discovery.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +7 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/skill-resolution/classify.d.ts +7 -2
- package/dist/skill-resolution/classify.d.ts.map +1 -1
- package/dist/skill-resolution/classify.js +7 -2
- package/dist/skill-resolution/classify.js.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.d.ts +10 -8
- package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.js +62 -23
- package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
- package/dist/skill-resolution/types.d.ts +3 -2
- package/dist/skill-resolution/types.d.ts.map +1 -1
- package/dist/utils/help-loader.d.ts +16 -0
- package/dist/utils/help-loader.d.ts.map +1 -1
- package/dist/utils/help-loader.js +31 -1
- package/dist/utils/help-loader.js.map +1 -1
- package/dist/utils/skill-packaging-config.d.ts +15 -6
- package/dist/utils/skill-packaging-config.d.ts.map +1 -1
- package/dist/utils/skill-packaging-config.js +23 -5
- package/dist/utils/skill-packaging-config.js.map +1 -1
- package/docs/index.md +39 -0
- package/docs/skill-test.md +213 -0
- package/docs/skills.md +29 -4
- package/package.json +13 -13
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# vat skill test - Eval Harness Commands
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The `vat skill test` commands run a packaged skill's eval suite in a headless,
|
|
6
|
+
context-isolated Claude session. Each eval runs in two roles: a blind **executor**
|
|
7
|
+
(the skill under test) performs the task, then a separate **grader** judges the
|
|
8
|
+
captured transcript and emits a verdict.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
vat skill test run <skill> # execute the eval suite
|
|
12
|
+
vat skill test configure <skill> # persist knobs into vibe-agent-toolkit.config.yaml
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
> **This command executes skill code.** It is context-isolated, not an OS sandbox.
|
|
16
|
+
> `--i-understand-this-runs-skill-code` is required to acknowledge that.
|
|
17
|
+
|
|
18
|
+
Note the singular `vat skill` — distinct from the `vat skills` (plural) packaging
|
|
19
|
+
commands documented in [skills.md](./skills.md).
|
|
20
|
+
|
|
21
|
+
## Two config homes
|
|
22
|
+
|
|
23
|
+
Most knobs exist both as a CLI flag (one-off) and a config key (persisted). **Flags
|
|
24
|
+
override config.** There are two places config lives:
|
|
25
|
+
|
|
26
|
+
| Home | Location | Holds |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| **Per-skill** | `skills.config.<skill>.test` | Everything about testing *one* skill — model under test, budgets, evals, companions |
|
|
29
|
+
| **Global** | top-level `test:` node | Judge/pipeline knobs shared by every skill — `graderModel`, `concurrency` |
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
# vibe-agent-toolkit.config.yaml
|
|
33
|
+
test: # GLOBAL — the judge and the pipeline
|
|
34
|
+
graderModel: claude-sonnet-5
|
|
35
|
+
concurrency: 4
|
|
36
|
+
|
|
37
|
+
skills:
|
|
38
|
+
config:
|
|
39
|
+
my-skill:
|
|
40
|
+
test: # PER-SKILL — the thing under test
|
|
41
|
+
model: claude-opus-5
|
|
42
|
+
timeout: 1500
|
|
43
|
+
auth: subscription
|
|
44
|
+
requireAuth: subscription
|
|
45
|
+
evals: evals/suite.json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Both blocks are validated under a **strict** schema — an unknown key is a config
|
|
49
|
+
error, not a silent no-op. (This is the deliberate inverse of `evals.json`, which
|
|
50
|
+
VAT reads liberally as adopter-authored data.)
|
|
51
|
+
|
|
52
|
+
`vat skill test configure <skill>` writes the **per-skill** block using a
|
|
53
|
+
comment-preserving YAML upsert, and validates values before writing. Prefer it over
|
|
54
|
+
hand-editing.
|
|
55
|
+
|
|
56
|
+
## Per-skill knobs (`skills.config.<skill>.test`)
|
|
57
|
+
|
|
58
|
+
Every field is optional; an omitted knob falls back to its default.
|
|
59
|
+
|
|
60
|
+
| Config key | Type / unit | Default | CLI flag | Purpose |
|
|
61
|
+
|---|---|---|---|---|
|
|
62
|
+
| `model` | string | claude's own default | `--model <id>` | Model for the **executor** (the skill under test). Passed **verbatim** to `claude --model` — VAT does no mapping or validation. Pin it for reproducible runs. |
|
|
63
|
+
| `maxTurns` | integer > 0 | none | `--max-turns <n>` | Per-spawn cap on executor/grader turns. |
|
|
64
|
+
| `maxBudgetUsd` | number > 0 | none | `--max-budget-usd <n>` | Hard USD budget cap passed to the CLI. |
|
|
65
|
+
| `timeout` | integer, **seconds** | scales with eval count: ~`2min + 2min/eval`, floored at 5min, capped at 1h | `--timeout <s>` | Wall-clock timeout. An explicit value always overrides the scaled default. |
|
|
66
|
+
| `stall` | integer, **seconds** | none | `--stall <s>` | Stall watchdog — kill the spawn after this long with no stream output. |
|
|
67
|
+
| `evals` | string (path or npm specifier) | auto-detected `evals/evals.json` (see below) | `--evals <path>` | Which `evals.json` to grade against. `test.evals` resolves **relative to the skill source**; `--evals` resolves **relative to the current directory**. Either may be absolute, and either may be an npm bare specifier. An explicit value always wins over the default convention. |
|
|
68
|
+
| `auth` | `inherit` \| `subscription` \| `api-key` \| `auto` | `inherit` | `--auth <mode>` | Auth mechanism for the spawned session. |
|
|
69
|
+
| `requireAuth` | `subscription` \| `api-key` | none | `--require-auth <mech>` | Fail-fast guard: preflight exits `2` if the effective mechanism isn't this. |
|
|
70
|
+
| `baseline` | boolean | `false` | `--baseline` | Run the opt-in with/without A/B skill-lift comparison. |
|
|
71
|
+
| `skillCreator` | source descriptor | `{ vendored: true }` | — | Source for the vendored skill-creator rubric. |
|
|
72
|
+
| `with` | array of source descriptors | none | `--with name=<src>` | **Required** companion skills staged alongside the subject, invocable by it. |
|
|
73
|
+
| `optional` | array of source descriptors | none | `--with-optional name=<src>` | **Optional** companions — skipped with a warning if unresolvable. |
|
|
74
|
+
| `env` | map string→string | none | `--env KEY=VALUE` | Env vars injected into the **executor** spawn. Values interpolate `${fixturesDir}`, `${stagedSkillDir}`, `${harnessRoot}`, `${resultsDir}`. `${fixturesDir}` is **per-eval** — it names that eval's own staged workspace (`fixtures/` under the executor's working directory), so the eval must declare input `files`; using it on an eval without them fails the run (exit 2). Protected names (PATH, auth, model, admin) cannot be overridden. |
|
|
75
|
+
| `passEnv` | array of strings | none | `--pass-env KEY` | Names of host env vars to forward to the executor spawn if present. Protected names are ignored with a warning. |
|
|
76
|
+
| `build` | string (shell command) | none | — | Command run **once, before staging**, to generate build artifacts. Runs with `cwd` = config root. A non-zero exit aborts the run (exit `2`). |
|
|
77
|
+
|
|
78
|
+
A **source descriptor** is one of `{ workspace: <pkg> }`, `{ npm: <spec> }`,
|
|
79
|
+
`{ url: <u>, sha256?: <hash> }`, `{ path: <dir> }`, or `{ vendored: true }`. On the
|
|
80
|
+
command line the same sources are written as `name=workspace:<pkg>`,
|
|
81
|
+
`name=npm:<spec>`, `name=url:<u>`, `name=path:<dir>`, or `name=vendored` — the CLI
|
|
82
|
+
form requires an explicit companion `name=`, the config form derives it from the
|
|
83
|
+
resolved skill.
|
|
84
|
+
|
|
85
|
+
### Companion staging and builds
|
|
86
|
+
|
|
87
|
+
A `path:` companion whose source directory maps to a **declared** skill is **built**
|
|
88
|
+
first, exactly like the subject, so its `files:` build artifacts are injected — a
|
|
89
|
+
companion backed by a bundled executable stages functional rather than inert. A
|
|
90
|
+
required companion's build failure fails the run; an optional one falls back to raw
|
|
91
|
+
unbuilt source only when the failure is non-destructive. Each declared skill builds
|
|
92
|
+
**at most once per run**.
|
|
93
|
+
|
|
94
|
+
Staging the same name twice across the subject, `--with`, and `--with-optional` is a
|
|
95
|
+
duplicate-name error (exit `2`).
|
|
96
|
+
|
|
97
|
+
### The default eval-suite convention
|
|
98
|
+
|
|
99
|
+
**You do not need a `test:` block to have an eval suite.** If a skill has a file at:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
<skill-source-dir>/evals/evals.json
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
VAT treats that as the skill's suite — the same path `vat skill test run` has always defaulted to. Two things follow from it, and they are deliberately the same two things an explicit `test:` block would give you:
|
|
106
|
+
|
|
107
|
+
1. `vat skill test run <skill>` finds and runs the suite.
|
|
108
|
+
2. **The suite directory is excluded from packaged output.** It holds the `expected_output` / `expectations` answer key, so shipping it would both publish the answers and let a skill under test read its own key.
|
|
109
|
+
|
|
110
|
+
This is **auto-detection, not a requirement**. It is keyed on the suite *file* existing:
|
|
111
|
+
|
|
112
|
+
| On disk | Treated as a suite? |
|
|
113
|
+
|---|---|
|
|
114
|
+
| `<skill>/evals/evals.json` | **Yes** — run by the harness, excluded from the bundle |
|
|
115
|
+
| `<skill>/evals/` with no `evals.json` | No — ordinary content, ships normally |
|
|
116
|
+
| `<skill>/docs/evals/…` (any other location named `evals`) | No — ordinary content, ships normally |
|
|
117
|
+
| No `evals/` directory at all | No — nothing happens, no error, no warning |
|
|
118
|
+
|
|
119
|
+
A skill with no suite is completely unaffected: it packages exactly as it would have, with no error and nothing excluded. The convention never makes evals mandatory.
|
|
120
|
+
|
|
121
|
+
**Set `test.evals` explicitly** when your suite lives anywhere else — a shared directory, a per-skill subdirectory (VAT's own repo uses `evals/<skill-name>/evals.json`), or outside the skill tree. An explicit path always overrides the convention.
|
|
122
|
+
|
|
123
|
+
> Both lanes honor this. Before it was shared, the harness auto-detected the suite while the packager did not, so a skill relying on the default had its answer key published even though the harness was protecting it.
|
|
124
|
+
|
|
125
|
+
### Testing a skill you did not author
|
|
126
|
+
|
|
127
|
+
A correctly packaged skill ships **no** eval suite — the suite is the answer key, and excluding it from the bundle is the whole point of the convention above. So for any skill you install rather than write, there is nothing in its tree to grade against, and you have to supply the suite yourself:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
vat skill test run npm:@vendor/their-skill \
|
|
131
|
+
--evals ./our-audit-corpus/their-skill.json \
|
|
132
|
+
--i-understand-this-runs-skill-code
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
`--evals` resolves against the directory you run it from, so the path means what you typed. It may point anywhere — including outside the skill's tree entirely, which is the normal case here. It also accepts an npm bare specifier (`--evals @acme/skill-evals/their-skill.json`), honoring that package's `exports` map, so a shared corpus can be distributed as a package.
|
|
136
|
+
|
|
137
|
+
The suite is never copied into anything the executor can reach. Each eval's declared input `files` are resolved relative to the **suite's** directory and staged into that eval's own workspace, so fixtures travel with the suite rather than with the skill.
|
|
138
|
+
|
|
139
|
+
> **On sensitive fixtures.** `workspaces/` and `results/` are created `0700`, so a fixture that was never in your repo is not left readable by other local users. That is necessary but **not** sufficient: `grading.json` quotes the executor transcript verbatim as evidence, so anything the skill *reads out of* a fixture is written into `results/` as text — and `results/` survives `--keep` by design. Treat the harness output as being as sensitive as the fixtures you feed it.
|
|
140
|
+
|
|
141
|
+
## Global knobs (top-level `test:`)
|
|
142
|
+
|
|
143
|
+
| Config key | Type | Default | CLI flag | Purpose |
|
|
144
|
+
|---|---|---|---|---|
|
|
145
|
+
| `graderModel` | string | `claude-sonnet-5` | `--grader-model <id>` | Model for the fixed grader/judge. Passed verbatim to `claude --model`. Independent of `model` — you can run the skill under one model and grade under another. |
|
|
146
|
+
| `concurrency` | integer > 0 | `4` | `--concurrency <n>` | Width of the bounded-parallel executor→grader pipeline. |
|
|
147
|
+
|
|
148
|
+
## Run-only flags (no config key)
|
|
149
|
+
|
|
150
|
+
| Flag | Purpose |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `--i-understand-this-runs-skill-code` | **Required.** Acknowledges the command executes skill code. |
|
|
153
|
+
| `--no-build` | Stage existing `dist` instead of building. Errors if absent for the subject or a **required** companion; an optional companion falls back to raw source with a warning. |
|
|
154
|
+
| `--refresh` | Force a full re-stage, ignoring existing staged content. |
|
|
155
|
+
| `--keep` | Keep the harness directory after the run (needed to inspect `results/`). |
|
|
156
|
+
| `--dry-run` | Build and stage exactly as a real run would, then stop without spawning Claude — no session, no tokens. It **does build** (when `--i-understand-this-runs-skill-code` is passed), because the question a dry run answers is "what happens if I drop this flag", and a preview built from a stale `dist/` answers it wrongly. **Without** the acknowledgement it does not build — building runs the repo's `test.build` hook, an arbitrary shell command — so it falls back to an existing `dist/` and warns it may be stale. `--no-build` skips the build either way. |
|
|
157
|
+
| `--out <dir>` / `--workdir <dir>` | Override the harness output / working directory. |
|
|
158
|
+
| `--allow-eval-failure` | Opt out of fail-closed: exit `0` even when an eval fails. For interactive iteration. |
|
|
159
|
+
| `--allow-unverified-skill-source` | Skip the vendored manifest integrity check. |
|
|
160
|
+
| `--debug` | Enable debug logging. |
|
|
161
|
+
|
|
162
|
+
## Exit codes
|
|
163
|
+
|
|
164
|
+
The harness deliberately separates "the evals failed" from "the harness broke", so
|
|
165
|
+
CI can tolerate one and gate on the other.
|
|
166
|
+
|
|
167
|
+
- `0` - Run completed, all expectations passed
|
|
168
|
+
- `1` - Harness broke (internal error, stall, timeout, grader nonce failure)
|
|
169
|
+
- `2` - Preflight failure (bad config, unresolvable required companion, auth guard, `build` hook failed)
|
|
170
|
+
- `3` - Bootstrap failure
|
|
171
|
+
- `4` - **Eval failure** — the run completed but expectations did not all pass
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
vat skill test run my-skill --i-understand-this-runs-skill-code
|
|
175
|
+
case $? in
|
|
176
|
+
0) ;;
|
|
177
|
+
4) echo "evals failed (tolerated)" ;;
|
|
178
|
+
*) exit 1 ;; # harness broke — fail the build
|
|
179
|
+
esac
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Results
|
|
183
|
+
|
|
184
|
+
With `--keep`, the harness directory retains a `results/` tree that VAT is the sole
|
|
185
|
+
writer of:
|
|
186
|
+
|
|
187
|
+
- `grading.json` - per-expectation verdicts and the pass/total summary
|
|
188
|
+
- `friction.json` - packaging issues observed during the run (advisory)
|
|
189
|
+
- `tool-eval.json` - tool-expectation verdicts; always written, so check
|
|
190
|
+
`.evals.length` rather than file existence
|
|
191
|
+
|
|
192
|
+
## Examples
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Run a declared skill's suite, honoring its test: config
|
|
196
|
+
vat skill test run my-skill --i-understand-this-runs-skill-code
|
|
197
|
+
|
|
198
|
+
# Pin both models independently, keep the harness for inspection
|
|
199
|
+
vat skill test run my-skill --model claude-opus-5 --grader-model claude-sonnet-5 \
|
|
200
|
+
--keep --i-understand-this-runs-skill-code
|
|
201
|
+
|
|
202
|
+
# Stage a required companion the subject is expected to invoke
|
|
203
|
+
vat skill test run router-skill --with helper=path:./skills/helper \
|
|
204
|
+
--i-understand-this-runs-skill-code
|
|
205
|
+
|
|
206
|
+
# Persist knobs instead of passing them every time
|
|
207
|
+
vat skill test configure my-skill --auth subscription --require-auth subscription
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## See Also
|
|
211
|
+
|
|
212
|
+
- [skills.md](./skills.md) - `vat skills` (plural): packaging, validation, install
|
|
213
|
+
- [index.md](./index.md) - full CLI command index
|
package/docs/skills.md
CHANGED
|
@@ -315,14 +315,22 @@ for terminology.
|
|
|
315
315
|
|
|
316
316
|
**What it does:**
|
|
317
317
|
1. Resolves the source (local directory, ZIP, .tgz, or npm package)
|
|
318
|
-
2. Discovers one or more
|
|
318
|
+
2. Discovers one or more skill directories inside the source
|
|
319
319
|
3. Pre-validates every skill with `validateSkill()` — zero files written if validation fails
|
|
320
|
-
4.
|
|
321
|
-
5.
|
|
322
|
-
6.
|
|
320
|
+
4. Reads each skill's declared name, which is the name it installs under
|
|
321
|
+
5. Builds an install plan, detecting conflicts before touching the filesystem
|
|
322
|
+
6. Copies skill(s) to the resolved platform directory (all-or-nothing semantics)
|
|
323
|
+
7. Emits a YAML summary on stdout
|
|
323
324
|
|
|
324
325
|
Both `--target` and `--scope` are **required** — there are no defaults.
|
|
325
326
|
|
|
327
|
+
**Installed name:** a skill installs under the `name` its `SKILL.md` frontmatter
|
|
328
|
+
declares — the same identity `vat skills build` and the plugin build key on — not
|
|
329
|
+
the name of the directory it came from. A ZIP or npm source has no meaningful
|
|
330
|
+
directory name to use. If two skills in one source declare the same name, the
|
|
331
|
+
whole install fails rather than one silently overwriting the other. Use `--name`
|
|
332
|
+
to override (single-skill sources only).
|
|
333
|
+
|
|
326
334
|
**Supported Sources:**
|
|
327
335
|
- **Local directory:** `./path/to/skill-dir` — must contain `SKILL.md` at root or in subdirectories
|
|
328
336
|
- **Local ZIP file:** `./path/to/skill.zip` — extracted to a temp directory, then installed
|
|
@@ -354,6 +362,16 @@ Both `--target` and `--scope` are **required** — there are no defaults.
|
|
|
354
362
|
| `windsurf` | `~/.codeium/windsurf/skills/` | `.windsurf/skills/` |
|
|
355
363
|
| `agents` | `~/.agents/skills/` | `.agents/skills/` |
|
|
356
364
|
|
|
365
|
+
These paths were last reviewed against vendor conventions on 2026-04-08 and are
|
|
366
|
+
not verified at build or test time — the tests assert the table's shape, never
|
|
367
|
+
that a path is where a platform actually looks. If a vendor moves its convention,
|
|
368
|
+
installs land somewhere unread and every VAT check still passes. Re-check the
|
|
369
|
+
vendor's documentation before relying on a non-`claude` target.
|
|
370
|
+
|
|
371
|
+
**Visibility:** VAT's own inspection commands are Claude-scoped — `vat skills
|
|
372
|
+
list --user` and `vat audit --user` read `~/.claude` only. A skill installed to
|
|
373
|
+
any other target lands correctly but is invisible to them.
|
|
374
|
+
|
|
357
375
|
**Exit Codes:**
|
|
358
376
|
- `0` - Install successful (or dry-run complete)
|
|
359
377
|
- `1` - Install error (validation failed, conflict without `--force`, source not found, bad target/scope)
|
|
@@ -438,6 +456,10 @@ for terminology.
|
|
|
438
456
|
2. Reports validation status for each skill
|
|
439
457
|
3. Shows skill metadata (name, description, path)
|
|
440
458
|
|
|
459
|
+
The reported `name` is the one the skill's frontmatter declares — matching what
|
|
460
|
+
`vat skills install` would install it as — falling back to the directory name
|
|
461
|
+
only when the `SKILL.md` declares none.
|
|
462
|
+
|
|
441
463
|
**Modes:**
|
|
442
464
|
|
|
443
465
|
**Project mode (default):**
|
|
@@ -729,6 +751,8 @@ name: my-help # Instead of "help"
|
|
|
729
751
|
|
|
730
752
|
## Related Commands
|
|
731
753
|
|
|
754
|
+
- `vat skill test` - Run a skill's eval suite (note the **singular** `skill`); its
|
|
755
|
+
`test:` config surface is documented separately in [skill-test.md](./skill-test.md)
|
|
732
756
|
- `vat audit` - Comprehensive validation for plugins, marketplaces, and skills
|
|
733
757
|
- `vat resources validate` - Validate markdown resources (links, anchors)
|
|
734
758
|
- `vat doctor` - Check environment and installation health
|
|
@@ -738,5 +762,6 @@ name: my-help # Instead of "help"
|
|
|
738
762
|
## See Also
|
|
739
763
|
|
|
740
764
|
- [CLI Reference](./index.md) - Complete CLI documentation
|
|
765
|
+
- [Skill Test Command](./skill-test.md) - `vat skill test` eval harness and its config knobs
|
|
741
766
|
- [Audit Command](./audit.md) - Comprehensive validation
|
|
742
767
|
- [Resources Command](./resources.md) - Markdown resource validation
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibe-agent-toolkit/cli",
|
|
3
|
-
"version": "0.1.41-rc.
|
|
3
|
+
"version": "0.1.41-rc.6",
|
|
4
4
|
"description": "Command-line interface for vibe-agent-toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -41,17 +41,17 @@
|
|
|
41
41
|
"//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.",
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
44
|
-
"@vibe-agent-toolkit/agent-config": "0.1.41-rc.
|
|
45
|
-
"@vibe-agent-toolkit/agent-schema": "0.1.41-rc.
|
|
46
|
-
"@vibe-agent-toolkit/agent-skills": "0.1.41-rc.
|
|
47
|
-
"@vibe-agent-toolkit/claude-marketplace": "0.1.41-rc.
|
|
48
|
-
"@vibe-agent-toolkit/discovery": "0.1.41-rc.
|
|
49
|
-
"@vibe-agent-toolkit/gateway-mcp": "0.1.41-rc.
|
|
50
|
-
"@vibe-agent-toolkit/rag": "0.1.41-rc.
|
|
51
|
-
"@vibe-agent-toolkit/rag-lancedb": "0.1.41-rc.
|
|
52
|
-
"@vibe-agent-toolkit/resources": "0.1.41-rc.
|
|
53
|
-
"@vibe-agent-toolkit/utils": "0.1.41-rc.
|
|
54
|
-
"adm-zip": "^0.
|
|
44
|
+
"@vibe-agent-toolkit/agent-config": "0.1.41-rc.6",
|
|
45
|
+
"@vibe-agent-toolkit/agent-schema": "0.1.41-rc.6",
|
|
46
|
+
"@vibe-agent-toolkit/agent-skills": "0.1.41-rc.6",
|
|
47
|
+
"@vibe-agent-toolkit/claude-marketplace": "0.1.41-rc.6",
|
|
48
|
+
"@vibe-agent-toolkit/discovery": "0.1.41-rc.6",
|
|
49
|
+
"@vibe-agent-toolkit/gateway-mcp": "0.1.41-rc.6",
|
|
50
|
+
"@vibe-agent-toolkit/rag": "0.1.41-rc.6",
|
|
51
|
+
"@vibe-agent-toolkit/rag-lancedb": "0.1.41-rc.6",
|
|
52
|
+
"@vibe-agent-toolkit/resources": "0.1.41-rc.6",
|
|
53
|
+
"@vibe-agent-toolkit/utils": "0.1.41-rc.6",
|
|
54
|
+
"adm-zip": "^0.6.0",
|
|
55
55
|
"commander": "^12.1.0",
|
|
56
56
|
"picomatch": "^4.0.3",
|
|
57
57
|
"semver": "^7.7.3",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"@types/picomatch": "^4.0.2",
|
|
66
66
|
"@types/semver": "^7.7.1",
|
|
67
67
|
"@types/tar": "^6.1.13",
|
|
68
|
-
"@vibe-agent-toolkit/dev-tools": "0.1.41-rc.
|
|
68
|
+
"@vibe-agent-toolkit/dev-tools": "0.1.41-rc.6",
|
|
69
69
|
"rimraf": "^6.0.1",
|
|
70
70
|
"typescript": "^5.7.3",
|
|
71
71
|
"vitest": "^3.2.4"
|