vskill 0.5.129 → 0.5.131
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/README.md +91 -659
- package/agents.json +1 -1
- package/dist/eval-server/api-routes.js +32 -3
- package/dist/eval-server/api-routes.js.map +1 -1
- package/dist/eval-server/installed-version.d.ts +36 -0
- package/dist/eval-server/installed-version.js +73 -0
- package/dist/eval-server/installed-version.js.map +1 -0
- package/dist/eval-server/skill-name-resolver.js +16 -11
- package/dist/eval-server/skill-name-resolver.js.map +1 -1
- package/dist/scanner/patterns.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<strong>The package manager for AI skills.</strong><br/>
|
|
5
|
-
|
|
5
|
+
Author. Eval. Publish. Install — across 53 agent platforms.
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
9
|
<a href="https://www.npmjs.com/package/vskill"><img src="https://img.shields.io/npm/v/vskill?color=cb3837&logo=npm" alt="npm" /></a>
|
|
10
10
|
<a href="https://www.npmjs.com/package/vskill"><img src="https://img.shields.io/npm/dw/vskill?color=cb3837&logo=npm&label=downloads" alt="downloads" /></a>
|
|
11
|
-
<img src="https://img.shields.io/badge/agents-
|
|
12
|
-
<img src="https://img.shields.io/badge/plugins-
|
|
13
|
-
<img src="https://img.shields.io/badge/skills-
|
|
11
|
+
<img src="https://img.shields.io/badge/agents-53_platforms-0969DA" alt="53 agents" />
|
|
12
|
+
<img src="https://img.shields.io/badge/plugins-8-8B5CF6" alt="8 plugins" />
|
|
13
|
+
<img src="https://img.shields.io/badge/skills-14-10B981" alt="14 skills" />
|
|
14
14
|
<a href="https://verified-skill.com"><img src="https://img.shields.io/badge/registry-verified--skill.com-F59E0B" alt="registry" /></a>
|
|
15
15
|
<img src="https://img.shields.io/badge/license-MIT-green" alt="MIT" />
|
|
16
16
|
</p>
|
|
@@ -18,725 +18,157 @@
|
|
|
18
18
|
<br/>
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
+
npx vskill studio # open the local IDE for AI skills
|
|
21
22
|
npx vskill install remotion-best-practices
|
|
22
23
|
```
|
|
23
24
|
|
|
24
25
|
<br/>
|
|
25
26
|
|
|
26
|
-
##
|
|
27
|
+
## Why vskill
|
|
27
28
|
|
|
28
29
|
**36.82% of AI skills have security flaws** ([Snyk ToxicSkills](https://snyk.io/blog/toxicskills-malicious-ai-agent-skills-clawhub/)).
|
|
30
|
+
And the ones that aren't malicious often *don't even improve the model* — they just feel like they should.
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
vskill is built around three problems:
|
|
31
33
|
|
|
32
|
-
- **
|
|
33
|
-
- **
|
|
34
|
-
- **
|
|
35
|
-
- **No blocklist** — known-bad skills install just fine
|
|
36
|
-
|
|
37
|
-
vskill fixes all of this.
|
|
38
|
-
|
|
39
|
-
<br/>
|
|
40
|
-
|
|
41
|
-
## How It Works
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
45
|
-
│ Source │────>│ Scan │────>│ Verify │────>│ Install │
|
|
46
|
-
│ │ │ │ │ │ │ │
|
|
47
|
-
│ GitHub │ │ 38 rules │ │ LLM │ │ Pin SHA │
|
|
48
|
-
│ Registry │ │ Blocklist│ │ analysis │ │ Lock ver │
|
|
49
|
-
│ Local │ │ Patterns │ │ Intent │ │ Symlink │
|
|
50
|
-
└──────────┘ └──────────┘ └──────────┘ └──────────┘
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Every install goes through the security pipeline. No exceptions. No `--skip-scan`.
|
|
34
|
+
- **Trust** — every install runs a 3-tier scan (52 patterns → blocklist → LLM intent). No `--skip-scan`.
|
|
35
|
+
- **Proof** — Skill Studio runs A/B evals so you can *show* a skill makes a model better, not assume it.
|
|
36
|
+
- **Reach** — one skill, 53 agents (Claude Code, Cursor, Copilot, Codex, Windsurf, Zed, Gemini CLI, Ollama, …).
|
|
54
37
|
|
|
55
38
|
<br/>
|
|
56
39
|
|
|
57
|
-
##
|
|
40
|
+
## Skill Studio — the local IDE for skills
|
|
58
41
|
|
|
59
42
|
```bash
|
|
60
|
-
|
|
61
|
-
npx vskill install remotion-dev/skills/remotion-best-practices
|
|
62
|
-
|
|
63
|
-
# Browse a repo and pick interactively
|
|
64
|
-
npx vskill install remotion-dev/skills
|
|
65
|
-
|
|
66
|
-
# Install a plugin (Claude Code)
|
|
67
|
-
npx vskill install --repo anton-abyzov/vskill --plugin mobile
|
|
43
|
+
npx vskill studio
|
|
68
44
|
```
|
|
69
45
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
> **Getting E401 errors?** If your project has a `.npmrc` pointing to a private registry (e.g. AWS CodeArtifact, GitHub Packages), npx may fail with `npm error code E401`. Fix it by overriding the registry:
|
|
73
|
-
> ```bash
|
|
74
|
-
> npx --registry https://registry.npmjs.org vskill install <skill>
|
|
75
|
-
> ```
|
|
76
|
-
> Or install globally once to avoid this entirely: `npm i -g vskill --registry https://registry.npmjs.org`
|
|
77
|
-
|
|
78
|
-
<br/>
|
|
79
|
-
|
|
80
|
-
## Three-Tier Verification
|
|
81
|
-
|
|
82
|
-
| Tier | How | Trust Level |
|
|
83
|
-
|:-----|:----|:------------|
|
|
84
|
-
| **Scanned** | 38 deterministic pattern checks against known attack vectors | Baseline |
|
|
85
|
-
| **Verified** | Pattern scan + LLM-based intent analysis for subtle threats | Recommended |
|
|
86
|
-
| **Certified** | Full manual security review by the vskill team | Highest |
|
|
46
|
+
A localhost workbench opens at a deterministic per-project port. You can:
|
|
87
47
|
|
|
88
|
-
|
|
48
|
+
- **Author** new skills with an AI-assisted generator (Anthropic skill-creator engine *or* vskill native — first-class peers, you pick).
|
|
49
|
+
- **Edit** SKILL.md live with a Linear/Raycast-grade UI.
|
|
50
|
+
- **Run benchmarks** with SSE-streamed pass/fail across Claude, GPT, Llama, Gemini, local Ollama / LM Studio.
|
|
51
|
+
- **A/B compare** with vs. without your skill — blind LLM judge ranks outputs as EFFECTIVE / MARGINAL / INEFFECTIVE / DEGRADING.
|
|
52
|
+
- **Cross-model sweep** the same skill across providers (Anthropic Batch API supported — 50% cheaper).
|
|
53
|
+
- **Find skills** from the verified-skill.com registry with a `⌘⇧K` palette, install with consent + provenance.
|
|
54
|
+
- **Publish** with one click — `git push` from the UI, then opens the submit form on verified-skill.com pre-filled.
|
|
89
55
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
## 49 Agent Platforms
|
|
93
|
-
|
|
94
|
-
vskill auto-detects your installed agents and installs skills to all of them at once.
|
|
95
|
-
|
|
96
|
-
**CLI & Terminal** — Claude Code, Cursor, GitHub Copilot, Windsurf, Codex, Gemini CLI, Amp, Cline, Roo Code, Goose, Aider, Kilo, Devin, OpenHands, Qwen Code, Trae, and more
|
|
97
|
-
|
|
98
|
-
**IDE Extensions** — VS Code, JetBrains, Zed, Neovim, Emacs, Sublime Text, Xcode
|
|
99
|
-
|
|
100
|
-
**Cloud & Hosted** — Replit, Bolt, v0, GPT Pilot, Plandex, Sweep
|
|
56
|
+
CORS-free by design: the browser only ever talks to localhost. The server proxies to verified-skill.com and to provider APIs. Every mutation is logged to `~/.vskill/studio-ops.jsonl` for audit.
|
|
101
57
|
|
|
102
58
|
<br/>
|
|
103
59
|
|
|
104
|
-
##
|
|
105
|
-
|
|
106
|
-
vskill ships **7 expert skills** organized into **5 domain plugins**. Each plugin has its own namespace — install only what you need.
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
npx vskill install --repo anton-abyzov/vskill --plugin mobile
|
|
110
|
-
npx vskill install --repo anton-abyzov/vskill --plugin marketing
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Then invoke as `/plugin:skill` in your agent:
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
/mobile:appstore /marketing:social-media-posting
|
|
117
|
-
/google-workspace:gws /skills:scout
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Available Plugins
|
|
121
|
-
|
|
122
|
-
| Plugin | Description | Skills |
|
|
123
|
-
|--------|-------------|--------|
|
|
124
|
-
| **mobile** | React Native, Expo, Flutter, SwiftUI, Jetpack Compose, app store | `appstore` |
|
|
125
|
-
| **marketing** | Social media content creation, posting, and engagement across 11 platforms, plus Slack messaging | `social-media-posting` `slack-messaging` |
|
|
126
|
-
| **google-workspace** | Google Workspace CLI (gws) for Drive, Sheets, Docs, Calendar, Chat, Admin | `gws` |
|
|
127
|
-
| **skills** | Skill discovery, recommendations, and authoring | `scout` `skill-builder` |
|
|
128
|
-
| **productivity** | Expert network survey completion and paid expertise sharing | `survey-passing` |
|
|
129
|
-
|
|
130
|
-
<br/>
|
|
131
|
-
|
|
132
|
-
## Commands
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
vskill install <source> Install skill after security scan
|
|
136
|
-
vskill enable <skill> Enable a previously-installed skill in Claude Code
|
|
137
|
-
vskill disable <skill> Disable a skill (keep files on disk; flip the toggle)
|
|
138
|
-
vskill find <query> Search the verified-skill.com registry
|
|
139
|
-
vskill scan <path> Run security scan without installing
|
|
140
|
-
vskill list Show installed skills with status
|
|
141
|
-
vskill list --installed Per-scope enabled/disabled status table
|
|
142
|
-
vskill remove <skill> Remove an installed skill
|
|
143
|
-
vskill update [skill] Update with diff scanning (--all for everything)
|
|
144
|
-
vskill cleanup Remove stale plugin entries and orphaned cache
|
|
145
|
-
vskill audit [path] Full project security audit with LLM analysis
|
|
146
|
-
vskill info <skill> Show detailed skill information
|
|
147
|
-
vskill submit <source> Submit a skill for verification
|
|
148
|
-
vskill blocklist Manage blocked malicious skills
|
|
149
|
-
vskill init Initialize vskill in a project
|
|
150
|
-
vskill diff <s> <from> <to> Show multi-file diff between two versions
|
|
151
|
-
vskill keys <cmd> [provider] Manage LLM API keys (set/list/remove/path)
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## Enable / Disable
|
|
155
|
-
|
|
156
|
-
`vskill install` extracts a skill's files and (when the source is a Claude
|
|
157
|
-
Code marketplace plugin) registers the plugin in `~/.claude/settings.json`'s
|
|
158
|
-
`enabledPlugins`. Once installed, you can toggle it without re-downloading:
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
# Disable a skill — keeps files on disk, just removes the enabledPlugins entry.
|
|
162
|
-
vskill disable foo
|
|
163
|
-
|
|
164
|
-
# Re-enable later — same plugin id, no network round-trip.
|
|
165
|
-
vskill enable foo
|
|
166
|
-
|
|
167
|
-
# Project-scope toggle (writes <cwd>/.claude/settings.json instead of ~/).
|
|
168
|
-
vskill enable foo --scope project
|
|
169
|
-
|
|
170
|
-
# Preview what would happen (prints the exact `claude plugin install/uninstall`
|
|
171
|
-
# invocation, no subprocess spawn).
|
|
172
|
-
vskill enable foo --dry-run
|
|
173
|
-
vskill disable foo --dry-run
|
|
174
|
-
|
|
175
|
-
# Verbose — shows resolved binary path + scope + cwd.
|
|
176
|
-
vskill enable foo --verbose
|
|
177
|
-
|
|
178
|
-
# Machine-readable JSON.
|
|
179
|
-
vskill enable foo --json
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
Both commands wrap `claude plugin install/uninstall` per
|
|
183
|
-
[ADR 0724-01](../../.specweave/docs/internal/architecture/adr/0724-01-skill-enable-disable-via-claude-cli.md)
|
|
184
|
-
— vskill never writes `settings.json` directly. The commands are
|
|
185
|
-
**idempotent**: running `vskill enable foo` twice prints
|
|
186
|
-
`foo already enabled in user scope` on the second run and exits 0.
|
|
187
|
-
|
|
188
|
-
### Install with `--no-enable`
|
|
60
|
+
## How install works
|
|
189
61
|
|
|
190
|
-
For CI pipelines that want the files on disk and the lockfile entry written
|
|
191
|
-
but **not** the plugin registered:
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
vskill install anton-abyzov/skill-foo --no-enable
|
|
195
|
-
# … later, when you actually want it active:
|
|
196
|
-
vskill enable foo
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### `vskill list --installed`
|
|
200
|
-
|
|
201
|
-
Joins `vskill.lock` with `enabledPlugins` reads at user and project scope:
|
|
202
|
-
|
|
203
|
-
```
|
|
204
|
-
$ vskill list --installed
|
|
205
|
-
|
|
206
|
-
Installed Skills (3)
|
|
207
|
-
|
|
208
|
-
Skill Version Source User Scope Project Scope
|
|
209
|
-
foo 1.0.0 marketplace:o/r#foo enabled disabled
|
|
210
|
-
bar 2.1.0 marketplace:o/r#bar disabled enabled
|
|
211
|
-
baz 0.1.0 github:o/r#baz n/a n/a
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
The `n/a` rows are auto-discovered skills (no `marketplace` field in their
|
|
215
|
-
lockfile entry) — there's nothing to toggle for them; agents pick them up
|
|
216
|
-
directly from their `localSkillsDir`/`globalSkillsDir` on the filesystem.
|
|
217
|
-
|
|
218
|
-
JSON output (`--installed --json`) emits one object per skill with
|
|
219
|
-
`{name, version, source, enabledUser, enabledProject, autoDiscovered}` —
|
|
220
|
-
suitable for piping into `jq`.
|
|
221
|
-
|
|
222
|
-
### Multi-agent surface awareness
|
|
223
|
-
|
|
224
|
-
When you have Claude Code AND Cursor AND Codex CLI installed, both
|
|
225
|
-
`install` and `enable` print a per-agent line so you know exactly which
|
|
226
|
-
surface received the registration:
|
|
227
|
-
|
|
228
|
-
```
|
|
229
|
-
$ vskill enable foo
|
|
230
|
-
|
|
231
|
-
Enabled foo (foo@m) in user scope.
|
|
232
|
-
> Claude Code (user) — enabled via claude CLI
|
|
233
|
-
> Cursor — auto-discovers from .cursor/skills (no plugin enable needed)
|
|
234
|
-
> Codex CLI — auto-discovers from .codex/skills (no plugin enable needed)
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
For non-Claude-Code agents that auto-discover from disk, there is nothing
|
|
238
|
-
to toggle — the skill is live the moment its files exist in the agent's
|
|
239
|
-
`localSkillsDir`/`globalSkillsDir`. To stop loading, run
|
|
240
|
-
`vskill remove <name>`.
|
|
241
|
-
|
|
242
|
-
### `vskill cleanup --dry-run`
|
|
243
|
-
|
|
244
|
-
Preview which stale `enabledPlugins` entries would be removed before
|
|
245
|
-
running the real cleanup:
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
vskill cleanup --dry-run
|
|
249
|
-
# Dry-run — preview of stale plugin uninstalls:
|
|
250
|
-
# > claude plugin uninstall --scope user -- old-foo@m
|
|
251
|
-
# > claude plugin uninstall --scope project -- old-bar@m
|
|
252
|
-
#
|
|
253
|
-
# 2 stale entries removed from user scope, 0 from project scope, 5 in-sync skills left untouched.
|
|
254
62
|
```
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
```bash
|
|
264
|
-
# Full color diff (respects TTY + NO_COLOR / FORCE_COLOR)
|
|
265
|
-
vskill diff anton-abyzov/vskill/scout 4f2285d 71a9132
|
|
266
|
-
|
|
267
|
-
# Summary only: `filename +N -M` per file + a totals line
|
|
268
|
-
vskill diff anton-abyzov/vskill/scout 4f2285d 71a9132 --stat
|
|
269
|
-
|
|
270
|
-
# Machine-readable raw compare response (pretty JSON, no colors)
|
|
271
|
-
vskill diff anton-abyzov/vskill/scout 4f2285d 71a9132 --json | jq '.files[].filename'
|
|
272
|
-
|
|
273
|
-
# Glob-filter the file list (minimatch)
|
|
274
|
-
vskill diff anton-abyzov/vskill/scout 4f2285d 71a9132 --files "**/SKILL.md"
|
|
63
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
64
|
+
│ Source │────>│ Scan │────>│ Verify │────>│ Install │
|
|
65
|
+
│ │ │ │ │ │ │ │
|
|
66
|
+
│ GitHub │ │ 52 rules │ │ LLM │ │ Pin SHA │
|
|
67
|
+
│ Registry │ │ Blocklist│ │ intent │ │ Lock ver │
|
|
68
|
+
│ Local │ │ Patterns │ │ analysis │ │ Symlink │
|
|
69
|
+
└──────────┘ └──────────┘ └──────────┘ └──────────┘
|
|
275
70
|
```
|
|
276
71
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
| Flag | Description |
|
|
280
|
-
|:-----|:------------|
|
|
281
|
-
| `--stat` | Summary only — one line per file (`filename +N -M`) plus a totals line |
|
|
282
|
-
| `--json` | Pretty-printed raw compare JSON (platform response, filtered by `--files`). No colors — safe to pipe into `jq`. |
|
|
283
|
-
| `--files <pattern>` | Filter the file list via a `minimatch` glob (e.g. `**/*.md`) |
|
|
284
|
-
|
|
285
|
-
**Windows compatibility.** `vskill diff` is pure `fetch()` + `process.stdout.write`
|
|
286
|
-
— zero shell-outs to `git`, `diff`, or `less`. Colors use raw ANSI codes
|
|
287
|
-
(`\x1b[32m` / `\x1b[31m` / `\x1b[90m` / `\x1b[0m`) which Windows Terminal,
|
|
288
|
-
PowerShell 7+, and conhost-enabled cmd.exe (Windows 10 1511+) render
|
|
289
|
-
natively. The windows-latest CI install-smoke job (T-008, 0706) exercises
|
|
290
|
-
`diff --help` on every build, so PowerShell and cmd.exe stay first-class.
|
|
291
|
-
|
|
292
|
-
Golden test case: the `scout` skill between SHAs
|
|
293
|
-
`4f2285d...71a9132` returns 4 files with +590 insertions / -8 deletions.
|
|
294
|
-
See [https://github.com/anton-abyzov/vskill/compare/4f2285d...71a9132](https://github.com/anton-abyzov/vskill/compare/4f2285d...71a9132).
|
|
295
|
-
|
|
296
|
-
<details>
|
|
297
|
-
<summary><strong>Install flags</strong></summary>
|
|
298
|
-
|
|
299
|
-
| Flag | Description |
|
|
300
|
-
|:-----|:------------|
|
|
301
|
-
| `--yes` `-y` | Accept defaults, no prompts |
|
|
302
|
-
| `--global` `-g` | Install to global scope |
|
|
303
|
-
| `--copy` | Copy files instead of symlinking |
|
|
304
|
-
| `--skill <name>` | Pick a specific skill from a multi-skill repo |
|
|
305
|
-
| `--plugin <name>` | Pick a plugin by name (checks marketplace, then plugins/ folder) |
|
|
306
|
-
| `--plugin-dir <path>` | Local directory as plugin source |
|
|
307
|
-
| `--repo <owner/repo>` | Remote GitHub repo as plugin source |
|
|
308
|
-
| `--agent <id>` | Target a specific agent (e.g., `cursor`) |
|
|
309
|
-
| `--force` | Install even if blocklisted |
|
|
310
|
-
| `--cwd <path>` | Override project root |
|
|
311
|
-
| `--all` | Install all skills from a repo |
|
|
312
|
-
| `--no-enable` | Install files + lockfile entry, but skip `claude plugin install` |
|
|
313
|
-
| `--scope <scope>` | Plugin enable scope: `user` or `project` |
|
|
314
|
-
| `--dry-run` | Preview install / enable invocations without executing |
|
|
315
|
-
|
|
316
|
-
</details>
|
|
72
|
+
Every install runs the full pipeline. SARIF v2.1.0 output is available for CI (`vskill audit --ci`).
|
|
317
73
|
|
|
318
74
|
<br/>
|
|
319
75
|
|
|
320
|
-
##
|
|
321
|
-
|
|
322
|
-
Create and manage universal cross-tool skills with the `vskill skill` command family.
|
|
323
|
-
The bundled `skill-builder` meta-skill drives the flow from inside any supported
|
|
324
|
-
agent host (Claude Code, Cursor, Codex, Gemini CLI, etc.) with an automatic
|
|
325
|
-
path A/B/C fallback chain.
|
|
76
|
+
## Quick Start
|
|
326
77
|
|
|
327
78
|
```bash
|
|
328
|
-
|
|
329
|
-
vskill
|
|
330
|
-
vskill skill list
|
|
331
|
-
vskill skill info skill-builder
|
|
332
|
-
vskill skill publish skill-builder
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
Every emitted skill carries an `x-sw-schema-version: 1` marker on its frontmatter,
|
|
336
|
-
and ships with a `<name>-divergence.md` report that documents any frontmatter
|
|
337
|
-
fields dropped or translated per target (e.g. `allowed-tools` → OpenCode
|
|
338
|
-
`permission.bash: ask`).
|
|
339
|
-
|
|
340
|
-
<br/>
|
|
341
|
-
|
|
342
|
-
## Security Audit
|
|
79
|
+
# Install one skill
|
|
80
|
+
npx vskill install remotion-dev/skills/remotion-best-practices
|
|
343
81
|
|
|
344
|
-
|
|
82
|
+
# Browse a repo, pick interactively
|
|
83
|
+
npx vskill install remotion-dev/skills
|
|
345
84
|
|
|
346
|
-
|
|
347
|
-
vskill
|
|
348
|
-
vskill audit --ci --report sarif # CI-friendly SARIF output
|
|
349
|
-
vskill audit --severity high,critical # filter by severity
|
|
85
|
+
# Install a Claude Code plugin (full domain bundle)
|
|
86
|
+
npx vskill install --repo anton-abyzov/vskill --plugin frontend
|
|
350
87
|
```
|
|
351
88
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
## Skills vs Plugins
|
|
355
|
-
|
|
356
|
-
**Skills** are single `SKILL.md` files that work with any of the 49 supported agents. They follow the [Agent Skills Standard](https://agentskills.io) — drop a `SKILL.md` into the agent's commands directory.
|
|
89
|
+
Install globally for repeat use: `npm i -g vskill`
|
|
357
90
|
|
|
358
|
-
|
|
91
|
+
<sub>Behind a private npm registry? See <a href="https://verified-skill.com/docs/getting-started">Getting Started</a> for the E401 workaround.</sub>
|
|
359
92
|
|
|
360
93
|
<br/>
|
|
361
94
|
|
|
362
|
-
##
|
|
363
|
-
|
|
364
|
-
Even Anthropic ships the same skill in two places:
|
|
365
|
-
|
|
366
|
-
- [`anthropics/skills/frontend-design`](https://github.com/anthropics/skills/blob/main/skills/frontend-design/SKILL.md) (standalone)
|
|
367
|
-
- [`anthropics/claude-code/.../frontend-design`](https://github.com/anthropics/claude-code/blob/main/plugins/frontend-design/skills/frontend-design/SKILL.md) (plugin)
|
|
368
|
-
|
|
369
|
-
Install both? Duplicates. They diverge? Inconsistencies. vskill gives you one install path with version pinning and dedup, regardless of source.
|
|
370
|
-
|
|
371
|
-
<br/>
|
|
372
|
-
|
|
373
|
-
## Skill Evals
|
|
374
|
-
|
|
375
|
-
Every skill can include evaluations — standardized test cases that verify the skill actually improves LLM output. Skills with evals get quality scores on [verified-skill.com](https://verified-skill.com) and regression tracking across versions.
|
|
376
|
-
|
|
377
|
-
### How it works
|
|
378
|
-
|
|
379
|
-
**The eval system tests the skill's plan, not its execution.** It doesn't post to social media, generate images, or call external APIs. Instead, it measures whether your SKILL.md successfully teaches an LLM the correct behavior.
|
|
95
|
+
## What ships today
|
|
380
96
|
|
|
381
|
-
|
|
97
|
+
| Surface | Count | Notes |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| **Agent platforms** | **53** | Claude Code, Cursor, Copilot, Windsurf, Codex, Gemini CLI, Zed, Ollama, LM Studio, … |
|
|
100
|
+
| **Plugins** | **8** | Multi-skill bundles for Claude Code |
|
|
101
|
+
| **Skills** | **14** | Individual SKILL.md files inside plugins |
|
|
102
|
+
| **Top-level CLI commands** | **22** | `install`, `studio`, `eval`, `find`, `scan`, `audit`, `submit`, `skill`, `keys`, … |
|
|
103
|
+
| **Tests** | **307 test files** | More tests than source files |
|
|
382
104
|
|
|
383
|
-
|
|
384
|
-
2. The **eval prompt** (a realistic user request) is sent to the LLM
|
|
385
|
-
3. The LLM generates a **text response** describing what it would do
|
|
386
|
-
4. An **LLM judge** grades each assertion against that response
|
|
105
|
+
### Plugins (Claude Code)
|
|
387
106
|
|
|
388
|
-
|
|
107
|
+
| Plugin | Skills |
|
|
108
|
+
|---|---|
|
|
109
|
+
| **frontend** | figma-connect, frontend-design, task-skill-announcer |
|
|
110
|
+
| **personal** | obsidian-brain, greet-anton, tax-filing |
|
|
111
|
+
| **marketing** | slack-messaging, social-media-posting |
|
|
112
|
+
| **skills** | skill-builder, scout |
|
|
113
|
+
| **mobile** | appstore |
|
|
114
|
+
| **google-workspace** | gws |
|
|
115
|
+
| **easychamp** | tournament-manager |
|
|
116
|
+
| **productivity** | survey-passing |
|
|
389
117
|
|
|
390
|
-
|
|
118
|
+
Install all eight: `npx vskill install --repo anton-abyzov/vskill --all`
|
|
391
119
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
| Mode | What it does | When to use |
|
|
395
|
-
|------|-------------|-------------|
|
|
396
|
-
| **Benchmark** | Runs prompts WITH skill, grades assertions | Measure pass rate after edits |
|
|
397
|
-
| **A/B Comparison** | Runs each prompt WITH and WITHOUT skill, blind-judges both | Prove the skill adds value |
|
|
398
|
-
| **Activation Test** | Tests whether the skill correctly triggers on relevant prompts | Reduce false positives/negatives |
|
|
399
|
-
|
|
400
|
-
The **A/B comparison** randomly shuffles outputs as "Response A" and "Response B" before scoring, so the judge can't tell which used the skill. Each response is scored on content (1-5) and structure (1-5). The delta between skill and baseline averages produces a verdict: EFFECTIVE, MARGINAL, INEFFECTIVE, or DEGRADING.
|
|
401
|
-
|
|
402
|
-
### Unit testing vs integration testing
|
|
403
|
-
|
|
404
|
-
Skill evals are **unit tests** — they verify the skill's teaching quality in isolation, without calling external tools or APIs. This is a deliberate design choice:
|
|
405
|
-
|
|
406
|
-
| | Unit Tests (current) | Integration Tests |
|
|
407
|
-
|:---|:---|:---|
|
|
408
|
-
| **What** | Does the SKILL.md teach the right workflow? | Does the end-to-end tool execution work? |
|
|
409
|
-
| **Speed** | ~30s per case | ~3min per case |
|
|
410
|
-
| **Infrastructure** | None — any LLM provider | Real MCP servers, auth tokens, test data |
|
|
411
|
-
| **CI/CD** | Runs anywhere | Needs secrets, test workspaces |
|
|
412
|
-
| **Flakiness** | Low (deterministic text) | High (external APIs, rate limits) |
|
|
413
|
-
| **Coverage** | Workflow, tool selection, formatting, parameters | API compatibility, auth, error recovery |
|
|
414
|
-
|
|
415
|
-
**Why unit tests are sufficient for most skills:** The eval doesn't test whether Slack's API works — it tests whether your SKILL.md correctly teaches an LLM to use `slack_search_channels` before `slack_read_channel`, to use `thread_ts` for replies, and to format messages with `*bold*` instead of `**bold**`. If the teaching is correct, the execution follows.
|
|
416
|
-
|
|
417
|
-
#### MCP-dependent skills (Slack, GitHub, Linear, etc.)
|
|
418
|
-
|
|
419
|
-
Skills that reference MCP tools automatically get **simulation mode** during evals. The eval system detects MCP tool references in your SKILL.md and instructs the LLM to demonstrate the complete workflow with simulated tool responses. This means your assertions can test tool selection, parameter correctness, and workflow order — even without a real MCP connection.
|
|
420
|
-
|
|
421
|
-
```
|
|
422
|
-
Standard skill eval: MCP skill eval (automatic):
|
|
423
|
-
┌──────────┐ ┌──────────┐
|
|
424
|
-
│ SKILL.md │ → system prompt │ SKILL.md │ → system prompt
|
|
425
|
-
└──────────┘ └──────────┘ + simulation instructions
|
|
426
|
-
↓ ↓
|
|
427
|
-
┌──────────┐ ┌──────────┐
|
|
428
|
-
│ LLM │ → text response │ LLM │ → simulated workflow
|
|
429
|
-
└──────────┘ └──────────┘ (tool calls + mock responses)
|
|
430
|
-
↓ ↓
|
|
431
|
-
┌──────────┐ ┌──────────┐
|
|
432
|
-
│ Judge │ → pass/fail │ Judge │ → pass/fail
|
|
433
|
-
└──────────┘ └──────────┘
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
No configuration needed — if your SKILL.md mentions `slack_*`, `github_*`, `linear_*`, or `gws_*` tools, simulation mode activates automatically.
|
|
437
|
-
|
|
438
|
-
#### Activation testing
|
|
439
|
-
|
|
440
|
-
Skills can also include trigger accuracy tests in `evals/activation-prompts.json`:
|
|
441
|
-
|
|
442
|
-
```json
|
|
443
|
-
{
|
|
444
|
-
"prompts": [
|
|
445
|
-
{ "prompt": "check what's new in #engineering", "expected": "should_activate" },
|
|
446
|
-
{ "prompt": "send an email to the team", "expected": "should_not_activate" }
|
|
447
|
-
]
|
|
448
|
-
}
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
This tests whether your skill's `description` field in SKILL.md causes the skill to trigger on the right prompts (precision) and not miss relevant ones (recall). Results show TP/TN/FP/FN classification with precision, recall, and reliability metrics.
|
|
452
|
-
|
|
453
|
-
#### Cross-model testing
|
|
454
|
-
|
|
455
|
-
The eval system supports Claude (CLI or API), Anthropic API, and Ollama. Testing across models reveals:
|
|
456
|
-
- Whether your skill helps **weaker models** (Llama, Qwen) follow complex workflows
|
|
457
|
-
- Whether base model improvements have made a skill **unnecessary**
|
|
458
|
-
- Whether your simulation instructions are **clear enough** for smaller models
|
|
459
|
-
|
|
460
|
-
```bash
|
|
461
|
-
# Test with Opus (high-end)
|
|
462
|
-
VSKILL_EVAL_MODEL=opus npx vskill eval run my-skill
|
|
463
|
-
|
|
464
|
-
# Test with Ollama (open-source)
|
|
465
|
-
VSKILL_EVAL_PROVIDER=ollama VSKILL_EVAL_MODEL=llama3.1:8b npx vskill eval run my-skill
|
|
466
|
-
```
|
|
467
|
-
|
|
468
|
-
### Directory structure
|
|
469
|
-
|
|
470
|
-
```
|
|
471
|
-
your-skill/
|
|
472
|
-
├── SKILL.md # The skill definition
|
|
473
|
-
└── evals/
|
|
474
|
-
├── evals.json # Test cases + assertions
|
|
475
|
-
├── activation-prompts.json # Trigger accuracy tests (optional)
|
|
476
|
-
└── benchmark.json # Latest benchmark results (auto-generated)
|
|
477
|
-
```
|
|
478
|
-
|
|
479
|
-
### evals.json format
|
|
480
|
-
|
|
481
|
-
```json
|
|
482
|
-
{
|
|
483
|
-
"skill_name": "your-skill",
|
|
484
|
-
"evals": [
|
|
485
|
-
{
|
|
486
|
-
"id": 1,
|
|
487
|
-
"name": "Descriptive test name",
|
|
488
|
-
"prompt": "Realistic user prompt that tests the skill",
|
|
489
|
-
"expected_output": "Reference output (not graded, for human context)",
|
|
490
|
-
"files": [],
|
|
491
|
-
"assertions": [
|
|
492
|
-
{ "id": "a1", "text": "Output includes specific technique X", "type": "boolean" },
|
|
493
|
-
{ "id": "a2", "text": "Code example compiles without errors", "type": "boolean" }
|
|
494
|
-
]
|
|
495
|
-
}
|
|
496
|
-
]
|
|
497
|
-
}
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
### Writing good evals
|
|
501
|
-
|
|
502
|
-
- **Prompts** should be realistic user requests, not synthetic test inputs
|
|
503
|
-
- **Assertions** must be objectively verifiable — avoid subjective criteria like "well-written"
|
|
504
|
-
- Each eval case should test a distinct capability of the skill
|
|
505
|
-
- 3-5 eval cases with 2-4 assertions each is a good starting point
|
|
506
|
-
|
|
507
|
-
### CLI commands
|
|
508
|
-
|
|
509
|
-
```bash
|
|
510
|
-
npx vskill eval serve # Open visual eval UI (benchmark, compare, history)
|
|
511
|
-
npx vskill eval init <skill-dir> # Scaffold evals.json from SKILL.md via LLM
|
|
512
|
-
npx vskill eval run <skill-dir> # Run evals and grade assertions (CLI output)
|
|
513
|
-
npx vskill eval coverage # Show eval status for all skills
|
|
514
|
-
npx vskill eval generate-all # Batch-generate for all skills
|
|
515
|
-
```
|
|
516
|
-
|
|
517
|
-
### Visual eval UI
|
|
518
|
-
|
|
519
|
-
`vskill eval serve` launches a local web UI where you can:
|
|
520
|
-
- **Run benchmarks** — all cases or individually, with real-time streaming results
|
|
521
|
-
- **Compare A/B** — side-by-side with/without skill scoring and grouped bar charts
|
|
522
|
-
- **View history** — previous benchmark results load automatically
|
|
523
|
-
- **Edit evals** — add/remove assertions, create new eval cases
|
|
524
|
-
- **Switch models** — dropdown to change provider (Claude CLI, Anthropic API, Ollama) and model
|
|
525
|
-
|
|
526
|
-
Previous benchmark results are displayed on the skill detail page without re-running. Per-case pass/fail status, time, and token usage are shown inline.
|
|
527
|
-
|
|
528
|
-
## API Key Storage
|
|
529
|
-
|
|
530
|
-
`vskill` stores LLM provider API keys (Anthropic, OpenAI, OpenRouter) at `~/.vskill/keys.env` in dotenv format. One file. Same code path on macOS, Linux, and Windows.
|
|
531
|
-
|
|
532
|
-
### Storage location
|
|
533
|
-
|
|
534
|
-
| Platform | Default path | Permissions |
|
|
535
|
-
|:---|:---|:---|
|
|
536
|
-
| macOS | `~/.vskill/keys.env` | `0600` (owner read/write only) |
|
|
537
|
-
| Linux | `~/.vskill/keys.env` | `0600` (owner read/write only) |
|
|
538
|
-
| Windows | `%USERPROFILE%\.vskill\keys.env` | NTFS ACL (user-scoped) |
|
|
539
|
-
|
|
540
|
-
Override the default with `VSKILL_CONFIG_DIR` — useful for CI, hermetic tests, or multi-profile workflows. Example: `VSKILL_CONFIG_DIR=/tmp/test vskill keys set anthropic`.
|
|
541
|
-
|
|
542
|
-
Get the absolute path at any time:
|
|
543
|
-
```bash
|
|
544
|
-
vskill keys path
|
|
545
|
-
# /Users/you/.vskill/keys.env
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
### Precedence: real env vars ALWAYS win
|
|
549
|
-
|
|
550
|
-
If `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `OPENROUTER_API_KEY` is already set in your shell (from `direnv`, `1password-cli`, a CI secret, dotfiles, etc.), the stored key in `keys.env` is IGNORED for that provider. Real env vars are never overwritten by vskill's boot-time merge. This is the power-user escape hatch — vskill gets out of your way.
|
|
551
|
-
|
|
552
|
-
You can verify the resolved source via `vskill keys list`:
|
|
553
|
-
```
|
|
554
|
-
provider source key
|
|
555
|
-
anthropic env var ****ABCD
|
|
556
|
-
openai file ****EFGH
|
|
557
|
-
openrouter not set
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
### `vskill keys` subcommands
|
|
561
|
-
|
|
562
|
-
```bash
|
|
563
|
-
# Interactive masked paste (characters not echoed)
|
|
564
|
-
vskill keys set anthropic
|
|
565
|
-
|
|
566
|
-
# Piped stdin (dotfiles, provisioning scripts)
|
|
567
|
-
echo "$ANTHROPIC_KEY" | vskill keys set anthropic
|
|
568
|
-
|
|
569
|
-
# Table with stored/env/not-set status and redacted last-4
|
|
570
|
-
vskill keys list
|
|
571
|
-
|
|
572
|
-
# Idempotent remove (no error if not present)
|
|
573
|
-
vskill keys remove anthropic
|
|
574
|
-
|
|
575
|
-
# Print absolute path (same as the Settings modal footer)
|
|
576
|
-
vskill keys path
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
All four subcommands work identically on macOS, Linux, and Windows (enforced by a 3-OS CI matrix).
|
|
580
|
-
|
|
581
|
-
### Security model
|
|
582
|
-
|
|
583
|
-
- Plaintext file, `0600` on POSIX — matches the precedent of `aws`, `kubectl`, and `supabase` credential files. The threat model is "solo developer, local tool, user-home ACLs", NOT "stolen unlocked laptop".
|
|
584
|
-
- Keys are NEVER logged, printed to stdout, or embedded in error messages. Only redacted `****<last-4>` is ever emitted, verified by a log-capture unit test with an injected canary substring.
|
|
585
|
-
- The paste flow in Settings modal clears the input synchronously after POST — the raw key is never held across a React render boundary.
|
|
586
|
-
- If you want encryption at rest, set the provider env vars from your secrets manager (`direnv`, `1password-cli`, `pass`, etc.). The env var precedence rule means vskill will use them transparently and never read `keys.env` for those providers.
|
|
587
|
-
|
|
588
|
-
### Migration from legacy macOS Keychain tier
|
|
589
|
-
|
|
590
|
-
Users who stored keys via the previous `vskill-<provider>` Keychain entries get a one-click import banner on first boot of vskill >=0.5.70. Old Keychain entries are retained for 30 days post-import as a rollback safety net; after that you can remove them manually with `security delete-generic-password -s vskill-anthropic -a vskill-user`. Non-Darwin platforms: no-op.
|
|
591
|
-
|
|
592
|
-
### `.gitignore` suggestion
|
|
593
|
-
|
|
594
|
-
If you keep dotfiles in a Git repo, add this to `.gitignore`:
|
|
595
|
-
```
|
|
596
|
-
~/.vskill/keys.env
|
|
597
|
-
```
|
|
598
|
-
|
|
599
|
-
### First-run onboarding
|
|
600
|
-
|
|
601
|
-
When `vskill studio` starts with no stored key AND no env var set, the terminal prompts you to paste a key BEFORE opening the browser. Paste (masked) + Enter → saved + browser opens. Or decline and get a `vskill keys set <provider>` hint to run later. If ANY provider env var is already set, the prompt is skipped silently — no nagging power users.
|
|
120
|
+
Browse the full catalog → [verified-skill.com/docs/plugins](https://verified-skill.com/docs/plugins)
|
|
602
121
|
|
|
603
122
|
<br/>
|
|
604
123
|
|
|
605
|
-
##
|
|
606
|
-
|
|
607
|
-
vSkill Studio does not consume your Max/Pro subscription quota directly. It delegates to the official [Claude Code CLI](https://docs.claude.com/en/docs/claude-code), the sanctioned consumer per Anthropic's April 2026 Terms of Service update. The Claude adapter never reads `~/.claude/credentials*`, `~/.claude/auth*`, or `~/.claude/token*` — a bundled unit test (`src/eval/__tests__/claude-cli-compliance.test.ts`) plus a dist-bundle grep gate (`scripts/check-bundle-compliance.sh`) enforce this on every build.
|
|
608
|
-
|
|
609
|
-
Issue API keys for direct access at [platform.claude.com/settings/keys](https://platform.claude.com/settings/keys), [platform.openai.com/api-keys](https://platform.openai.com/api-keys), or [openrouter.ai/settings/keys](https://openrouter.ai/settings/keys). Keys entered in Studio's Settings modal (or via `vskill keys set`) are stored locally at `~/.vskill/keys.env` with `0600` permissions on POSIX — never synced, never committed to git, never transmitted off-device except to the provider's own API. See [API Key Storage](#api-key-storage) for the full storage model.
|
|
610
|
-
|
|
611
|
-
### Model configuration
|
|
612
|
-
|
|
613
|
-
The eval system supports multiple LLM providers. Switch between them in the eval UI dropdown or via environment variables.
|
|
614
|
-
|
|
615
|
-
| Provider | Models | Requirements |
|
|
616
|
-
|:---------|:-------|:-------------|
|
|
617
|
-
| **Claude Code (CLI)** | Sonnet, Opus, Haiku | `@anthropic-ai/claude-code` installed on PATH — Studio delegates to your existing Claude Code session. |
|
|
618
|
-
| **Anthropic API** | Claude Sonnet 4.6, Opus 4.6, Haiku 4.5 | `ANTHROPIC_API_KEY` env var, or `vskill keys set anthropic` |
|
|
619
|
-
| **OpenAI API** | GPT-4o, GPT-4o-mini, o1-mini | `OPENAI_API_KEY` env var, or `vskill keys set openai` |
|
|
620
|
-
| **OpenRouter** | Any OpenRouter-served model | `OPENROUTER_API_KEY` env var, or `vskill keys set openrouter` |
|
|
621
|
-
| **Ollama** | Any locally installed model | Ollama running at `localhost:11434` |
|
|
622
|
-
| **LM Studio** | Any model loaded in LM Studio | LM Studio running at `localhost:1234` (no API key needed) |
|
|
124
|
+
## Commands you'll actually use
|
|
623
125
|
|
|
624
126
|
```bash
|
|
625
|
-
#
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
#
|
|
633
|
-
#
|
|
634
|
-
OLLAMA_HOST=http://gpu-server:11434 VSKILL_EVAL_PROVIDER=ollama npx vskill eval run my-skill
|
|
635
|
-
|
|
636
|
-
# Use LM Studio with a locally loaded model (no API key required)
|
|
637
|
-
VSKILL_EVAL_PROVIDER=lm-studio VSKILL_EVAL_MODEL=qwen2.5-coder-7b npx vskill eval run my-skill
|
|
638
|
-
|
|
639
|
-
# Custom LM Studio endpoint
|
|
640
|
-
LM_STUDIO_BASE_URL=http://lan-box:1234/v1 VSKILL_EVAL_PROVIDER=lm-studio npx vskill eval run my-skill
|
|
127
|
+
vskill studio # open local IDE
|
|
128
|
+
vskill install <skill-or-plugin> # install with full security scan
|
|
129
|
+
vskill find <query> # search verified-skill.com registry
|
|
130
|
+
vskill list --installed # what's installed where
|
|
131
|
+
vskill diff <skill> v1 v2 # compare versions before upgrading
|
|
132
|
+
vskill skill new # create a new skill (AI-assisted)
|
|
133
|
+
vskill eval sweep <skill> # benchmark across models
|
|
134
|
+
vskill audit --ci # SARIF v2.1.0 for CI
|
|
135
|
+
vskill keys set anthropic # store API keys in ~/.vskill/keys.env
|
|
641
136
|
```
|
|
642
137
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
- **Skill creation/improvement**: Claude (Sonnet or Opus) produces the best SKILL.md refinements. Other models like Gemini and Codex can create skills too — they understand the SKILL.md format — but output quality may vary. See Anthropic's [Skill Creator](https://github.com/anthropics/skills/tree/main/skills/skill-creator) for the reference methodology.
|
|
646
|
-
- **Benchmarks & A/B comparisons**: Use any model. Cross-model testing reveals whether your skill helps weaker models, and whether base model improvements have made a capability uplift skill unnecessary.
|
|
647
|
-
- **Ollama**: Free, local, no API key. Useful for rapid iteration and validating cross-model portability.
|
|
648
|
-
- **LM Studio**: Free, local, OpenAI-compatible server. Defaults to `http://localhost:1234/v1`; override with `LM_STUDIO_BASE_URL`. LM Studio ignores the API key, so vskill sends a dummy `Bearer lm-studio` token automatically.
|
|
649
|
-
|
|
650
|
-
### Platform integration
|
|
651
|
-
|
|
652
|
-
Skills with `evals/evals.json` get:
|
|
653
|
-
- Quality evaluation results displayed at `/skills/[name]/evals`
|
|
654
|
-
- Admin editing at `/admin/evals` (admin-only)
|
|
655
|
-
- Regression tracking across eval runs
|
|
138
|
+
Full reference → [verified-skill.com/docs/cli-reference](https://verified-skill.com/docs/cli-reference)
|
|
656
139
|
|
|
657
140
|
<br/>
|
|
658
141
|
|
|
659
|
-
##
|
|
142
|
+
## Recent highlights (0.5.x)
|
|
660
143
|
|
|
661
|
-
|
|
144
|
+
- **0.5.129** — Studio Publish: one-click `git push` + open verified-skill.com submit pre-filled
|
|
145
|
+
- **0.5.12x** — Studio Find palette (`⌘⇧K`): search the registry from inside Studio
|
|
146
|
+
- **0.5.11x** — Engine selector in Create flow: choose Anthropic skill-creator *or* vskill native
|
|
147
|
+
- **0.5.10x** — Multi-project tabs, deterministic per-project port (3077–3177), bookmarkable URLs
|
|
148
|
+
- **0.5.0x** — A/B comparison with blind LLM judge, cross-model sweep, MCP-skill simulation mode
|
|
662
149
|
|
|
663
|
-
|
|
664
|
-
vskill find "react native" # search from CLI
|
|
665
|
-
vskill info remotion-best-practices # skill details
|
|
666
|
-
```
|
|
150
|
+
Full changelog → [github.com/anton-abyzov/vskill/releases](https://github.com/anton-abyzov/vskill/releases)
|
|
667
151
|
|
|
668
152
|
<br/>
|
|
669
153
|
|
|
670
|
-
##
|
|
671
|
-
|
|
672
|
-
vskill emits SKILL.md files that conform to the canonical specification at **[agentskills.io/specification](https://agentskills.io/specification)**.
|
|
673
|
-
|
|
674
|
-
The spec requires `tags` and `target-agents` to live **under a `metadata:` block**, not at the top level of the frontmatter:
|
|
675
|
-
|
|
676
|
-
```yaml
|
|
677
|
-
---
|
|
678
|
-
name: my-skill
|
|
679
|
-
description: "..."
|
|
680
|
-
version: 1.0.0
|
|
681
|
-
metadata:
|
|
682
|
-
tags:
|
|
683
|
-
- devtools
|
|
684
|
-
- cli
|
|
685
|
-
target-agents:
|
|
686
|
-
- claude-code
|
|
687
|
-
- cursor
|
|
688
|
-
---
|
|
689
|
-
```
|
|
690
|
-
|
|
691
|
-
### Validation
|
|
692
|
-
|
|
693
|
-
- **CI gate** — `npm run lint:skills-spec` walks the repo for every `SKILL.md` and blocks drift. Uses the external `skills-ref` CLI when available; otherwise falls back to a built-in check that enforces the `tags` / `target-agents` nesting rule.
|
|
694
|
-
- **Post-creation (Studio)** — the `interpretValidatorResult` / `formatValidatorReport` helpers in `src/eval-server/skill-create-routes.ts` wrap `skills-ref validate`. Warn-only by default (spec drift prints a `Validation warnings` block, skill file stays on disk); `strict: true` flips the outcome to a blocking error with exit code 1. A missing `skills-ref` binary is non-blocking by design — CI is the enforcement line.
|
|
154
|
+
## Learn more
|
|
695
155
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
```
|
|
707
|
-
~/.vskill/studio-ops.jsonl
|
|
708
|
-
```
|
|
709
|
-
|
|
710
|
-
The log is append-only. Each line conforms to the `StudioOp` shape:
|
|
711
|
-
|
|
712
|
-
```json
|
|
713
|
-
{"id":"<nanoid>","ts":1735123200000,"op":"promote","skillId":"<plugin>/<skill>","fromScope":"installed","toScope":"own","paths":{"source":"<abs>","dest":"<abs>"},"actor":"studio-ui"}
|
|
714
|
-
```
|
|
715
|
-
|
|
716
|
-
Open the drawer from the StatusBar ops-count chip (or press the chip from the keyboard) to browse the log live — new ops are pushed via SSE and prepended to the virtualized list.
|
|
717
|
-
|
|
718
|
-
**Tombstones (soft-delete).** Dismissing an op from the drawer appends a tombstone line `{"id":"<id>","tombstone":true}`. The UI hides tombstoned entries on read; the raw log still shows both the original op and the tombstone, preserving the audit trail.
|
|
719
|
-
|
|
720
|
-
**Manual rotation.** The log has no automatic rotation or compaction yet — if it grows large, rotate by hand:
|
|
721
|
-
|
|
722
|
-
```bash
|
|
723
|
-
mv ~/.vskill/studio-ops.jsonl ~/.vskill/studio-ops.jsonl.bak
|
|
724
|
-
```
|
|
725
|
-
|
|
726
|
-
The studio will re-create the file on the next write. A dedicated rotation / retention policy may land in a later increment once we have usage data.
|
|
156
|
+
| Topic | Where |
|
|
157
|
+
|---|---|
|
|
158
|
+
| Quick start & first install | [verified-skill.com/docs/getting-started](https://verified-skill.com/docs/getting-started) |
|
|
159
|
+
| Full CLI reference | [verified-skill.com/docs/cli-reference](https://verified-skill.com/docs/cli-reference) |
|
|
160
|
+
| Security model & 3-tier verification | [verified-skill.com/docs/security-guidelines](https://verified-skill.com/docs/security-guidelines) |
|
|
161
|
+
| Plugin marketplace | [verified-skill.com/docs/plugins](https://verified-skill.com/docs/plugins) |
|
|
162
|
+
| Submit a skill for verification | [verified-skill.com/docs/submitting](https://verified-skill.com/docs/submitting) |
|
|
163
|
+
| FAQ | [verified-skill.com/docs/faq](https://verified-skill.com/docs/faq) |
|
|
164
|
+
| Browse the registry | [verified-skill.com](https://verified-skill.com) |
|
|
727
165
|
|
|
728
166
|
<br/>
|
|
729
167
|
|
|
730
168
|
## Contributing
|
|
731
169
|
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
```bash
|
|
735
|
-
vskill submit your-org/your-repo/your-skill
|
|
736
|
-
```
|
|
737
|
-
|
|
738
|
-
<br/>
|
|
170
|
+
Issues and PRs welcome at [github.com/anton-abyzov/vskill](https://github.com/anton-abyzov/vskill). To submit a skill to the registry, see [verified-skill.com/docs/submitting](https://verified-skill.com/docs/submitting).
|
|
739
171
|
|
|
740
172
|
## License
|
|
741
173
|
|
|
742
|
-
|
|
174
|
+
MIT
|