Single-binary vendoring package manager for coding-agent skills (Claude Code, Codex)
翻译准备中
正在加载完整 README。
查看完整 README ↗vd builds a vendor-locked skills tree once and emits the manifest each agent stack expects. Today that's:
| Agent | Status | What vd build emits |
|---|---|---|
| Claude Code | ✅ first-class | .claude-plugin/marketplace.json + plugin.json (bundle or per-skill mode) |
| OpenAI Codex | ✅ first-class | .agents/skills/<name> repo-scope symlinks; vd install codex for user scope; prompt-context hooks via vd install hooks |
| Factory Droid | ✅ skills | .factory/skills/<name> repo entries (relative symlinks on Unix, copies on Windows); vd install droid for user scope |
| Pi | ✅ skills | .pi/skills/<name> repo entries (relative symlinks on Unix, copies on Windows); vd install pi for user scope |
| Cursor | ✅ skills | vd install cursor writes $HOME/.cursor/skills/<name> (or $VD_CURSOR_HOME/skills); --scope repo writes .cursor/skills/<name> (relative symlinks on Unix, copies on Windows) |
Droid, Pi, and Cursor support is skills-only. It does not install their plugins, hooks, extensions, or observability integrations.
You're already running two or three coding agents. They all want skills but each wants a different layout, a different manifest, a different install path. So you copy-paste between repos, lose track of what came from where, and your agents drift out of sync with their upstreams.
vd-cli flips this:
skills.toml is the source of truth for which skills, from where, pinned at what SHA.vd sync fetches atomically, detects local edits before overwriting, populates a deterministic cache.vd build regenerates every agent's manifest byte-for-byte from the lock. No drift between Claude's marketplace.json and Codex's symlinks.Install script (macOS/Linux):
curl -fsSL https://raw.githubusercontent.com/vanducng/vd-cli/main/install.sh | sh
Installs to ~/.local/bin (override with VD_INSTALL_DIR, pin with VD_VERSION). Later upgrades: vd upgrade.
Homebrew:
brew install vanducng/tap/vd
Homebrew 5.x requires trusting third-party taps first: brew trust vanducng/tap.
Pre-built binaries: see releases for darwin/linux/windows × amd64/arm64.
Windows release archives are zip files. In PowerShell:
$version = "v2.1.0"
$asset = "vd_windows_x86_64.zip"
Invoke-WebRequest "https://github.com/vanducng/vd-cli/releases/download/$version/$asset" -OutFile $asset
Expand-Archive $asset -DestinationPath ".\vd" -Force
.\vd\vd.exe --version
Use vd_windows_arm64.zip on Windows ARM64.
From source:
git clone https://github.com/vanducng/vd-cli.git
cd vd-cli
make build && mv vd /usr/local/bin/vd
# 1. Bootstrap a manifest at the repo root
vd init
# 2. Track an upstream skill
vd add browserbase/skills/browser --as browser
# 3. Vendor it locally (fetches, hashes, locks)
vd sync
# 4. Emit manifests for every configured agent
vd build
# 5. (Optional) detect local agents and install user-level skills
vd install
# 6. (Optional) or target one agent
vd install cursor
vd install codex
vd install droid
vd install pi
After these commands:
skills/browser/ — the vendored skill source, ready to edit..claude-plugin/marketplace.json + plugin.json — Claude Code picks it up automatically..agents/skills/browser — Codex repo-scope symlink resolves to skills/browser/..factory/skills/browser - Droid repo entry links to skills/browser/ on Unix and copies it on Windows..pi/skills/browser - Pi repo entry links to skills/browser/ on Unix and copies it on Windows.$HOME/.cursor/skills/browser — Cursor user-scope entry from vd install cursor (or .cursor/skills/browser with --scope repo).skills.lock — pinned commit SHA, content hash, every byte deterministic.以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗