From mise-toolkit
Wiring VSCode to mise — the hverlin.mise-vscode extension, the terminal.integrated.automationProfile.osx quirk, dual-mode setup (mise activate in .zshrc plus shims in .zprofile), and why VSCode tasks / debuggers need special handling beyond just setting PATH.
npx claudepluginhub ray-manaloto/claude-code-marketplace --plugin mise-toolkitThis skill uses the workspace's default tool permissions.
VSCode is the #1 editor used with mise, and it has more quirks than any other. This skill covers all of them.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Share bugs, ideas, or general feedback.
VSCode is the #1 editor used with mise, and it has more quirks than any other. This skill covers all of them.
hverlin.mise-vscode. Best UX.code --install-extension hverlin.mise-vscode
What it does:
mise.toml and surfaces tools + tasks in a sidebar view.Mise: ... command palette entries (Install, Run Task, Show Current Tools).redact = true env vars in the UI.What it doesn't do:
.vscode/launch.json) find interpreters. The debugger still resolves python / node / etc. via PATH.So the extension alone is not sufficient if the project uses debuggers or launch configurations with mise-managed tools. You still want mode 2.
In settings.json (Workspace > User):
{
"terminal.integrated.env.osx": {
"PATH": "${env:HOME}/.local/share/mise/shims:${env:PATH}"
},
"terminal.integrated.env.linux": {
"PATH": "${env:HOME}/.local/share/mise/shims:${env:PATH}"
},
"terminal.integrated.env.windows": {
"PATH": "${env:USERPROFILE}\\AppData\\Local\\mise\\shims;${env:PATH}"
}
}
This handles interactive terminals. But there's a gotcha:
automationProfile quirk (the #1 VSCode-mise bug)VSCode spawns subprocesses for tasks, debug launches, and external tools via a different shell profile than the integrated terminal. It's called the automation profile. On macOS it defaults to a non-login /bin/zsh, which means your ~/.zshrc does run but your ~/.zprofile doesn't.
If you have eval "$(mise activate zsh)" in ~/.zshrc, good — tasks will see mise tools.
If you have it in ~/.zprofile instead (common advice for login-shell performance), tasks will not see mise tools and you'll get "command not found" on every debug or task run.
Fix: force the automation profile through a login shell:
{
"terminal.integrated.automationProfile.osx": {
"path": "/bin/zsh",
"args": ["-l"]
},
"terminal.integrated.automationProfile.linux": {
"path": "/bin/bash",
"args": ["-l"]
}
}
Now tasks and debuggers get a login shell, which runs ~/.zprofile / ~/.bash_profile, which runs mise activate, which puts tools on PATH.
This is the single most common VSCode+mise problem. If a task "suddenly stops working" after a fresh macOS setup, this is usually why.
Do both:
settings.json for non-interactive paths.mise activate in ~/.zshrc (not ~/.zprofile, or in both).With dual mode, every path VSCode takes to find a tool eventually hits mise:
mise activate → shims and exact versions.mise activate → shims.mise-vscode extension reads config directly.Install the ms-python.python extension. It will detect interpreters from PATH, so shims-on-PATH works. In command palette, Python: Select Interpreter and pick the ~/.local/share/mise/installs/python/<ver>/bin/python entry.
Pin the interpreter in .vscode/settings.json:
{
"python.defaultInterpreterPath": "${env:HOME}/.local/share/mise/shims/python"
}
ms-vscode.js-debug uses the node on PATH. Shims-on-PATH works. No extra setup needed.
golang.go reads go from PATH, and also supports go.goroot / go.alternateTools. Shims-on-PATH is enough for 99% of cases.
rust-lang.rust-analyzer needs cargo and rustc on PATH. Shims-on-PATH works. Install rust via mise as a regular tool.
The Java extension uses java.configuration.runtimes — point it at ~/.local/share/mise/installs/java/<ver> explicitly. The shims path alone is not enough for the Java extension.
~/.zshrc is a symlink into a dotfiles repo, mise may track the symlink target for trust. Run mise trust ~/dotfiles/mise/config.toml explicitly once.mise.toml is loaded independently. The mise-vscode extension picks one as the active context.mise-shell-activation — the host-side mise activate details.mise-pathing-and-shims — how shims work under the hood.mise-ide-activation — cross-IDE overview./mise-vscode-setup — guided wiring.marketplace.visualstudio.com/items?itemName=hverlin.mise-vscode.