Tuff for VS Code
See the agent capabilities installed in a project, and act on them, without
leaving the editor.
Tuff manages the skills, tools, hooks, workflows, and MCP servers a coding
agent reads from a repository. This extension is a view onto that: it runs
the tuff CLI and renders what it reports.

What it does
- Scan for what you already have. Most projects have skills sitting in
.claude, .cursor, or .agents that Tuff knows nothing about. Scanning
lists them and tracks the ones you pick, where they already are — nothing
is moved or copied. A folder with no tuff.lock is offered tuff init
first, since tracking is the half that needs one. Needs Tuff 0.7.0 or
newer.
- A capabilities tree, grouped by kind, showing every installed skill,
tool, hook, workflow, and MCP server, the version recorded for it, and the
agents it was installed for.
- Drift at a glance. A capability edited by hand since it was installed
shows as modified; one whose files are gone shows as missing. The status
bar carries the same counts, so a hand edit is visible before an agent
session runs into it.
- Updates, when you ask for them. Checking for updates reaches the
network and clones git sources, so it is a command rather than something
the view does on its own. Once run, rows show the move available, the
claimed size of the change, and any release tag that moved or vanished
upstream.
- Commands on a row. Show local changes, show upstream changes, update,
and reveal on disk. Clicking a capability opens its entry file.
- MCP doctor, which spawns each installed server and reports what it
actually answers.
- Add from a git URL. Paste a repository, or a directory inside one
such as a skills.sh link, and Tuff installs it for the harnesses this
project uses. The name is prefilled from the URL;
name@1.2.0 pins a
release.
- The built-in MCP catalog, browsable from the view menu: pick a curated
server and Tuff installs it for the harnesses this project uses. An entry
needing an API key names the variables and asks first; Tuff records the
variable name, never the value. Needs Tuff 0.7.0 or newer.
Requirements
The extension does not bundle a binary. It runs the tuff you have
installed, so there is one Tuff on the machine and one place versions come
from. Install it first:
uv tool install tuffcli # or: brew install kannandreams/tuff/tuff
tuff --version
The installation guide covers the other
channels. Version 0.6.0 or newer is required, since the extension reads the
--json output that release added to list, outdated, and diff.
Scanning and the MCP catalog need 0.7.0, the release that added
tuff scan and tuff mcp catalog; on an older CLI those two commands say
so and the rest of the view keeps working.
If tuff is not on the editor's PATH, set tuff.path to its full path.
Works in
VS Code, and editors that install VS Code extensions, including Cursor.
Claude Code and Codex sessions running inside VS Code see the same project,
so the tree reflects whatever those sessions install.
Under Remote-SSH, WSL, or a dev container the extension runs on the remote
side, where the files and the tuff binary are. It stays off in a
Restricted Mode folder until you trust it, because Run MCP Doctor starts
the project's own MCP servers, and it does not run in a virtual workspace,
which has no files on disk for the CLI to read.
New to Tuff? Help: Welcome, then Get Started with Tuff, walks
through install, initialize, scan, and the catalog, running each command
from the page.
Settings
| Setting |
Default |
What it does |
tuff.path |
tuff |
Path to the executable. |
tuff.scope |
all |
Which scope the tree lists: all, project, or global. |
tuff.checkUpdatesOnStartup |
false |
Check for updates when a workspace opens. Off because it reaches the network. |
Not in this version
- Diagnostics in the Problems panel. Drift is reported per capability
rather than per file, so a squiggle would have nothing accurate to point
at. It needs a CLI that reports which files drifted.
- Editing capabilities. Installing, deleting, and packing stay in the
CLI. This is a view with a few safe actions, not a replacement for it.
Links
MIT licensed.