A sidebar of buttons for your scripts, builds and deploys. Describe them once in commands-list.json — or let the extension pick up package.json scripts and .ps1 files — then chain them into multi-step operations and ship files to FTP/SFTP with live progress.
No task runner to learn. A JSON file in the repo root is the whole contract — commit it and the whole team gets the same buttons.
One entry per command in commands-list.json — or none: npm scripts and .ps1 are picked up.
{ "name": "Deploy",
"command": "./deploy.sh",
"group": "Ship" }It's a button in the sidebar. Re-runs reuse their terminal.
Chain steps, upload to FTP/SFTP, get notified.
Everything you used to keep in a README of “how to run this” — and the deploy script you never wanted to write.
FTP, FTPS and SFTP targets in server-uploads.local.json. Files, folders, globs and excludes; a connection pool; mirror mode that removes stale remote files; skipUnchanged for content-hashed builds. Cards show exactly which files changed since the last upload — and “Upload only modified” sends just those.
Ordered, cancellable sequences with per-step checkboxes and stopOnError.
Bind a start command to a hidden stop command. While it runs, its card shows a red stop icon that closes the terminal and runs the stop.
Mark critical commands as protected. They get a lock icon and a modal before anything runs.
This command requires confirmation.
Collapsible groups that remember their state, instant search across names, commands and groups, and a pinned Favorites group.
Give a server an sql block and get Query, Browse and Export tabs. Queries and dumps run on the server over SSH — seconds instead of minutes over the network.
| id | title | status |
|---|---|---|
| 412 | Pricing | publish |
| 418 | Contacts | publish |
| 431 | Spring sale | draft |
See, toggle and edit Claude Code hooks across project, local and user-global settings.json. Presets, copy and paste between projects.
Open any workspace and the panel is already populated. Need a starting set? The Recommended section adds a whole template — or single commands from it.
Not every file belongs to a tracked upload. Paste a spec into Commands Extension: Quick Upload from Spec — an agent can write it for you — and everything for one server goes over a single connection.
local => server:/dir uploads a file or a whole folder, keeping its structure.server:/path => local pulls from the server instead.del server:/path removes a file or folder — after a modal that lists exactly what was found.; or newlines, a live preview grouped by server, # comments ignored.img/logo.webm→ /wp-content/themes/mytheme/imgicons/ (24 files)→ /img/icons/wp-content/themes/mytheme/img/logo-old.webmdelete/wp-content/themes/mytheme/style.css→ ./backupCoding agents add a command, a combined operation or an upload spec as text — you just click the button. The file watcher picks up every change instantly.
{
"commands": [
{ "name": "▶ Start (full)", "command": "./start.sh", "type": "terminal", "group": "App", "stop": "■ Stop" },
{ "name": "■ Stop", "command": "./stop.sh", "type": "terminal", "group": "App", "hidden": true },
{ "name": "Seed DB", "command": "seed.js", "type": "node", "group": "Dev", "cwd": "./server" },
{ "name": "Deploy", "command": "./scripts/deploy.ps1", "type": "pwsh", "group": "Deploy" }
]
}{
"combined": [
{
"name": "Install & Reload",
"stopOnError": true,
"steps": [
{ "type": "command", "name": "Install local" },
{ "type": "upload", "key": "Deploy:Theme → prod" },
{ "type": "vscode-cmd", "commandId": "workbench.action.reloadWindow", "enabled": true }
]
}
]
}{
"servers": [
{ "name": "main", "protocol": "sftp", "host": "example.com", "user": "deploy" }
],
"uploads": [
{
"name": "Theme → prod", "server": "main",
"remoteDir": "/public_html/wp-content/themes/mytheme/",
"items": ["./wp-content/themes/mytheme/"],
"exclude": ["**/node_modules/**", "**/*.log"],
"mode": "mirror", "connections": 4
}
]
}# paste into "Commands Extension: Quick Upload from Spec" /home/me/site/img/logo.webm => main:/public_html/img ; del main:/public_html/img/logo-old.webm main:/public_html/style.css => ./backup
VS Code 1.85+ on Linux, macOS or Windows. Open a workspace, click the Commands icon in the Activity Bar — done.
$ code --install-extension PavelKhabusov.commands-extension