🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
Skill manager for Claude Code and other agents
vskill is a package manager for AI skills that scans before install and supports many agent platforms. It gives you a CLI and a local studio for authoring, evaluating, publishing, and installing skills and plugins.
Builders who want a safer way to add reusable skills and bundles to Claude Code, Cursor, Copilot, Codex, Gemini CLI, or Windsurf.
You can install and manage AI skills with a security scan and a clear publish flow instead of copying files by hand.
What it does
Scan before install
Runs a multi-step check before every install, including pattern rules, a blocklist, and intent analysis.
Skill Studio
Opens a local studio for creating, editing, benchmarking, and publishing skills.
Cross-platform support
Works across many agent platforms, including Claude Code, Cursor, Copilot, Codex, Gemini CLI, and Windsurf.
Plugin and skill bundles
Lets you install grouped bundles as plugins, or individual skills from the catalog.
Eval and compare
Runs A/B comparisons and model sweeps so you can check whether a skill actually helps.
Private skill access
Supports GitHub login and tenant-aware access for private skill installs.
How to get it
- 1Run
# Install one skill npx vskill@latest install remotion-dev/skills/remotion-best-practices # Browse a repo, pick interactively npx vskill@latest install remotion-dev/skills # Install a Claude Code plugin (full domain bundle) npx vskill@latest install --repo anton-abyzov/vskill --plugin frontend
README
vskill
The package manager for AI skills.
Author. Eval. Publish. Install — across 53 agent platforms.
All releases: github.com/anton-abyzov/vskill/releases
# Browser studio — zero install
npx vskill@latest studio # open the local IDE for AI skills
npx vskill@latest install remotion-best-practices
Native Mac, Windows, and Linux desktop apps available at
GitHub Releases — 1.5 s cold launch,
no telemetry. macOS Apple Silicon is signed by Developer ID Application: EasyChamp, Inc.
and notarized + stapled by Apple — no Gatekeeper warning.
The desktop app wraps the same studio runtime as npx vskill studio in a Tauri 2 shell:
native menu bar, global ⌘K find-skill palette, ⌘, Preferences with General / Updates /
Privacy / Advanced tabs, settings persisted to ~/.vskill/settings.json (atomic, 0600 perms),
and signed auto-update via tauri-plugin-updater against minisign-signed manifests.
Why vskill
36.82% of AI skills have security flaws (Snyk ToxicSkills). And the ones that aren't malicious often don't even improve the model — they just feel like they should.
vskill is built around three problems:
- Trust — every install runs a 3-tier scan (52 patterns → blocklist → LLM intent). No
--skip-scan. - Proof — Skill Studio runs A/B evals so you can show a skill makes a model better, not assume it.
- Reach — one skill, 53 agents (Claude Code, Cursor, Copilot, Codex, Windsurf, Zed, Gemini CLI, Ollama, …).
Skill Studio — the local IDE for skills
npx vskill@latest studio
A localhost workbench opens at a deterministic per-project port. You can:
- Author new skills with an AI-assisted generator (Anthropic skill-creator engine or vskill native — first-class peers, you pick).
- Edit SKILL.md live with a Linear/Raycast-grade UI.
- Run benchmarks with SSE-streamed pass/fail across Claude, GPT, Llama, Gemini, local Ollama / LM Studio.
- A/B compare with vs. without your skill — blind LLM judge ranks outputs as EFFECTIVE / MARGINAL / INEFFECTIVE / DEGRADING.
- Cross-model sweep the same skill across providers (Anthropic Batch API supported — 50% cheaper).
- Find skills from the verified-skill.com registry with a
⌘⇧Kpalette, install with consent + provenance. - Publish with one click —
git pushfrom the UI, then opens the submit form on verified-skill.com pre-filled.
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.
How install works
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Source │────>│ Scan │────>│ Verify │────>│ Install │
│ │ │ │ │ │ │ │
│ GitHub │ │ 52 rules │ │ LLM │ │ Pin SHA │
│ Registry │ │ Blocklist│ │ intent │ │ Lock ver │
│ Local │ │ Patterns │ │ analysis │ │ Symlink │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
Every install runs the full pipeline. SARIF v2.1.0 output is available for CI (vskill audit --ci).
Quick Start
# Install one skill
npx vskill@latest install remotion-dev/skills/remotion-best-practices
# Browse a repo, pick interactively
npx vskill@latest install remotion-dev/skills
# Install a Claude Code plugin (full domain bundle)
npx vskill@latest install --repo anton-abyzov/vskill --plugin frontend
Install globally for repeat use: npm i -g vskill
Behind a private npm registry? See Getting Started for the E401 workaround.
What ships today
| Surface | Count | Notes |
|---|---|---|
| Agent platforms | 53 | Claude Code, Cursor, Copilot, Windsurf, Codex, Gemini CLI, Zed, Ollama, LM Studio, … |
| Plugins | 8 | Multi-skill bundles for Claude Code |
| Skills | 14 | Individual SKILL.md files inside plugins |
| Top-level CLI commands | 22 | install, studio, eval, find, scan, audit, submit, skill, keys, … |
| Tests | 307 test files | More tests than source files |
Plugins (Claude Code)
| Plugin | Skills |
|---|---|
| frontend | figma-connect, frontend-design, task-skill-announcer |
| personal | obsidian-brain, greet-anton, tax-filing |
| marketing | slack-messaging, social-media-posting |
| skills | skill-builder, scout |
| mobile | appstore |
| google-workspace | gws |
| easychamp | tournament-manager |
| productivity | survey-passing |
Install all eight: npx vskill@latest install --repo anton-abyzov/vskill --all
Browse the full catalog → verified-skill.com/docs/plugins
Commands you'll actually use
npx vskill@latest studio # open local IDE
npx vskill@latest install <skill> # install with full security scan
npx vskill@latest find <query> # search verified-skill.com registry
npx vskill@latest list --installed # what's installed where
npx vskill@latest diff <skill> v1 v2 # compare versions before upgrading
npx vskill@latest skill new # create a new skill (AI-assisted)
npx vskill@latest eval sweep <skill> # benchmark across models
npx vskill@latest audit --ci # SARIF v2.1.0 for CI
npx vskill@latest keys set anthropic # store API keys in ~/.vskill/keys.env
npx vskill@latest auth login # sign in to GitHub for private skills
Full reference → verified-skill.com/docs/cli-reference
Authentication (GitHub, for private skills)
vskill auth signs you in to GitHub using the official Device Flow so the CLI
can install skills from private repos and the local Studio can list your org's
private catalog.
npx vskill@latest auth login # interactive Device Flow — copy code, visit URL
npx vskill@latest auth status # show the current GitHub identity
npx vskill@latest auth logout # forget all stored tokens
npx vskill@latest whoami # combined identity + active tenant snapshot
How it works:
-
vskill auth loginrequests a device + user code fromgithub.com/login/device/code. -
You visit
https://github.com/login/deviceand enter the 8-character code (rendered asXXXX-XXXX). -
The CLI polls
github.com/login/oauth/access_tokenuntil you authorize, then validates againstapi.github.com/user. -
The CLI calls
POST /api/v1/auth/github/exchange-for-vsk-tokento mint a verified-skill API token (vsk_…) scoped to the same identity. -
Both tokens are stored in your OS keychain (macOS Keychain / Windows DPAPI / libsecret) under distinct service names:
com.verifiedskill.desktop/github-oauth-token→gho_…(raw GitHub OAuth)com.verifiedskill.desktop/vskill-token→vsk_…(verified-skill API token)
On systems without a keyring daemon, both fall back to
~/.vskill/keys.envwith mode0600and a startup warning.
If the exchange step fails (network error, 5xx), login still succeeds with just the gho_… token and the CLI prints Logged in (legacy mode — some features unavailable). Re-run vskill auth login later to mint the vsk_… token without losing your session.
Where the tokens are used:
vskill add <skill>,vskill list,vskill marketplace— every request toverified-skill.comcarriesAuthorization: Bearer <vsk_… or gho_…>(preferringvsk_when present). Anonymous requests for public skills still work when no token is stored.vskill install <github-url>— added asAuthorization: Bearer …on every fetch toapi.github.comandraw.githubusercontent.com. Public skills still install anonymously.vskill studio— the local eval-server proxies private routes (/api/v1/private/*,/api/v1/tenants/*) to verified-skill.com with the bearer header injected at the proxy boundary. Your browser never holds the token.
Configuration:
VSKILL_GITHUB_CLIENT_ID— the OAuth/Appclient_idused during Device Flow. Defaults are baked in for the public Skill Studio App; set this only if you are running a self-hosted variant.VSKILL_TENANT— overrides the active tenant for a single invocation (CI / scripted use). See "Tenant resolution priority" below.
Inspect status of all credentials in one place:
npx vskill@latest keys list # shows AI provider keys + the github slot
npx vskill@latest whoami # email, token prefix, active tenant, all tenants
Tenants and vskill orgs
When your GitHub identity belongs to multiple organizations that have the Skill Studio App installed, each org is a tenant in verified-skill.com. The CLI calls them "orgs" for symmetry with gh org, gcloud config configurations, and kubectl config use-context.
npx vskill@latest orgs list # table: slug | name | role | active (* marks the active tenant)
npx vskill@latest orgs use <slug> # write currentTenant to ~/.vskill/config.json
npx vskill@latest orgs current # print the active tenant slug, or `(none)`
orgs and whoami are anonymous-safe — running them without a stored token prints Not logged in. Run \vskill auth login`.` and exits non-zero (orgs returns 0; whoami returns 1) without crashing.
Tenant resolution priority
When a tenant-scoped command (vskill add, vskill install for a private skill, etc.) needs to pick an active tenant, it walks this list in order — first match wins:
--tenant <slug>flag — per-command override (highest precedence).VSKILL_TENANTenv var — non-interactive / CI use.currentTenantin~/.vskill/config.json— the persistent active tenant set byvskill orgs useor the Studio sidebar picker.- Auto-pick when N=1 — if you belong to exactly one tenant, that one is used silently.
- Error — if you belong to N>1 tenants and none of (1)–(3) is set, the CLI prints
Multiple tenants available — set one with \vskill orgs use `.` and exits non-zero. The CLI never silently picks one of N>1.
The same ~/.vskill/config.json is shared with Skill Studio — switching tenants in Studio's sidebar picker updates the same file the CLI reads, so the two surfaces stay in sync.
vskill add resolution order (private skills)
When you run vskill add <skill>, the resolver tries:
- The public registry.
- The active tenant's scoped registry (resolved via the priority above).
- Other tenants you belong to, in parallel HEAD requests — first match wins.
If a --tenant <slug> flag is set, only the public registry and that tenant are tried.
Common error messages:
Skill found in multiple tenants: acme, contoso. Re-run with --tenant <slug> or set an active tenant: vskill orgs use <slug>.— ambiguity guard for N>1 with no active tenant.Authentication failed. Run \vskill auth login` to re-authenticate.` — the registry returned 401. The keychain is not auto-cleared (you might be on a flaky network).Upgrade required: <message> (<upgradeUrl>)— the registry returned 402: skill exists in this tenant but you lack entitlement.
Private skill workflow
Once authenticated, installing a private org skill is identical to a public one — the CLI silently attaches the keychain token to every request:
npx vskill@latest auth login # one-time setup (mints gho_ + vsk_)
npx vskill@latest orgs use acme # pick a tenant if you belong to multiple
npx vskill@latest add private-skill # private skill installs same as public
The local skill bundle on disk never contains your GitHub token — the token is used only at fetch time. Your project's vskill.lock records source: "private" and the org name so future updates re-authenticate correctly.
Customer-facing setup walkthrough → .specweave/docs/external/private-repos-quickstart.md (in the umbrella repo).
Security & Compliance
Skill Studio private-repo support (increment 0826) ships with documented threat model, verification checklist, SOC 2 evidence map, and operational runbooks — all in the umbrella repo under .specweave/docs/:
- Customer quickstart —
.specweave/docs/external/private-repos-quickstart.md - Vendor security questionnaire —
.specweave/docs/external/security-questionnaire-template.md - Threat model & verification checklist —
.specweave/docs/internal/security/0826-*.md - SOC 2 evidence map —
.specweave/docs/internal/compliance/0826-soc2-evidence-map.md - Operations + rotation runbooks —
.specweave/docs/internal/runbooks/0826-*.md
Recent highlights (0.5.x)
- 0.5.129 — Studio Publish: one-click
git push+ open verified-skill.com submit pre-filled - 0.5.12x — Studio Find palette (
⌘⇧K): search the registry from inside Studio - 0.5.11x — Engine selector in Create flow: choose Anthropic skill-creator or vskill native
- 0.5.10x — Multi-project tabs, deterministic per-project port (3077–3177), bookmarkable URLs
- 0.5.0x — A/B comparison with blind LLM judge, cross-model sweep, MCP-skill simulation mode
Full changelog → github.com/anton-abyzov/vskill/releases
Learn more
| Topic | Where |
|---|---|
| Quick start & first install | verified-skill.com/docs/getting-started |
| Full CLI reference | verified-skill.com/docs/cli-reference |
| Security model & 3-tier verification | verified-skill.com/docs/security-guidelines |
| Plugin marketplace | verified-skill.com/docs/plugins |
| Submit a skill for verification | verified-skill.com/docs/submitting |
| FAQ | verified-skill.com/docs/faq |
| Browse the registry | verified-skill.com |
Contributing
Issues and PRs welcome at github.com/anton-abyzov/vskill. To submit a skill to the registry, see verified-skill.com/docs/submitting.
Inside this repo dependency install scripts are disabled (.npmrc): run npm ci, then npm run setup (rebuilds esbuild), and npm run security:scan before pushing — see SECURITY.md.
License
MIT
Files in the repo
- .agents
- .claude
- .claude-plugin
- .continue
- .gemini
- .github
- .junie
- .specweave
- .trae
- .vskill
- assets
- docs
- e2e
- plugins
- scripts
- skills
- src
- src-tauri
- test
- test-results
- .gitignore
- .npmrc
- agents.json
- CHANGELOG.md
- eslint.config.js
- figma.config.json
- LICENSE
- lighthouse.config.js
- package-lock.json
- package.json
- playwright.config.ts
- README.md
- SECURITY.md
- tsconfig.json
- vitest.config.ts
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More tools
The best-benchmarked open-source AI memory system. And it's free.
Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.