Skip to content

Back to the catalog

vlt 1.5.0 Adds Agent Skills Management
socket.devarticle

vlt 1.5.0 Adds Agent Skills Management

vlt 1.5.0 adds a `vlt skills` command that finds agent skills (SKILL.md folders) in installed JavaScript dependencies and links them into directories coding agents read, such as .agents/skills and .claude/skills. Selections are saved as allow-skills in vlt.json, tied to the lockfile version, and kept current on install and update. Without a saved selection, linking defaults to :not(:malware) using Socket malware alerts. pnpm 12.11.0 added similar linking.

TL;DR Reports vlt 1.5.0's skills command, which links dependency-shipped agent skills into coding agent folders and filters out Socket-flagged malware packages.
Also seen from another angle🛡️ Security →
Document

What it claims

vlt skills in vlt 1.5.0 handles agent skills shipped inside npm dependencies as package-manager state. It does not copy the files once and leave them. The links point at the package version in the lockfile, and installs and updates refresh them. Exposing a package's skills to an agent is a separate, opt-in step from installing the package. vlt already uses the same split for install scripts, where vlt build decides which scripts may run.

How it works

The command scans only packages already installed in the project. It never fetches anything to find skills. Linking writes into .agents/skills by default, which Codex, Cursor, GitHub Copilot and Gemini CLI read. It also detects agent folders at the project root and links into their skill directories, for example .claude/skills when .claude exists. The skills-dir setting overrides these destinations.

Selection uses vlt's query syntax. A new :skill() selector picks individual skills within a package. The page does not show its argument format. The Socket-backed security selectors also work here, so a team can exclude packages flagged for typosquatting, vulnerabilities or obfuscated code as well as malware.

flowchart TD
  A[vlt skills link] --> B{Query given or allow-skills saved?}
  B -- yes --> C[Use that selection]
  B -- no --> D[Default :not malware]
  C --> E[Link into .agents/skills and detected agent dirs]
  D --> E
  E --> F[Saved as allow-skills in vlt.json]
  F --> G[install / update / vlt ci re-link]
  G --> E

The selection is saved as allow-skills in vlt.json. After that, later installs and updates keep the links current, and vlt ci applies the same selection when a teammate clones the repository. When no selection is saved and no query is given, the default :not(:malware) uses Socket's high-confidence malware alerts to exclude skills from flagged packages.

How to use it

From the documentation example:

vlt install agent-browser
vlt skills
vlt skills link "#agent-browser"

The first command installs the package. vlt skills lists the skills that installed packages provide. The last command links agent-browser's skills into the project's agent directories.

Limits

The default filter blocks only packages with high-confidence Socket malware alerts. Skills from unflagged packages are linked if selected, and stricter rules must be written by hand. Vetting depends on Socket's data. The page does not cover how other agent directories are detected beyond the .claude example. It also does not cover conflicts between skills with the same name or the exact :skill() syntax.

For comparison, the page says pnpm 12.11.0 links skills only from direct dependencies, after approval through pnpm approve. vlt claims finer per-skill selection and query-based filtering on top of that model.

Organisations named here

  • Socket
  • vlt
  • pnpm
  • Claude Code
  • Cursor
  • GitHub Copilot
  • Sarah Gooding

Technologies named here

  • vlt
  • vlt skills
  • vlt ci
  • vlt build
  • skills-dir
  • :skill selector
  • Socket
  • agent-browser
  • pnpm
  • Codex
  • Cursor
  • GitHub Copilot
  • Gemini CLI
  • Claude
  • npm
  • Node.js
  • Claude Code
  • JavaScript

Techniques named here

  • Agent skills
  • Lockfile-versioned skill linking
  • Security-filtered skill selection