VS Code extension · MIT

Every project command,
one click away

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.

$ code --install-extension PavelKhabusov.commands-extension
my-app — Visual Studio Code
COMMANDS
Search commands…
Favorites
Start dev server
Build
Buildnpm
Run testsnpm
Deploy prod
Combined
Build & Deploy3 steps
  1. command · Build
  2. upload · Theme → prod
  3. notification · Deployed
idle
Server uploads
Theme → prod⚠ 3 modified
commands-list.json
{
  "commands": [
    { "name": "Build", "command": "npm run build",
      "type": "terminal", "group": "Build" },
    { "name": "Start dev server", "stop": "Stop" }
  ],
  "combined": [ … ]
}
TERMINALOUTPUTStart dev server
Build & Deploy finished · 3/3 steps
3 sourcescommands-list.json, package.json scripts and *.ps1 — auto-refreshed
8 step typescommand, upload, auto-upload, vscode-cmd, wait, open, sound, notification
FTP · SFTPand FTPS — parallel transfers, mirror mode, skip unchanged
12 templatesReact, Next.js, Docker, Expo, Python, Git and more, one click to add
How it works

Write it down once.
Click it forever.

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.

01

Describe

One entry per command in commands-list.json — or none: npm scripts and .ps1 are picked up.

{ "name": "Deploy",
  "command": "./deploy.sh",
  "group": "Ship" }
02

Click

It's a button in the sidebar. Re-runs reuse their terminal.

Deploy
Build
03

Ship

Chain steps, upload to FTP/SFTP, get notified.

Theme → production100%
Deployed · 3 files
Features

Small buttons, serious plumbing

Everything you used to keep in a README of “how to run this” — and the deploy script you never wanted to write.

Server Uploads

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.

Theme → prodsftp⚠ 12 modified
wp-content/themes/mytheme/style.css4 conn · 2.1 MB/s

Combined operations

Ordered, cancellable sequences with per-step checkboxes and stopOnError.

command · npm run install-local
vscode-cmd · reloadWindow
sound · complete

Start / stop pairs

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.

Start (full)

Run confirmation

Mark critical commands as protected. They get a lock icon and a modal before anything runs.

Groups, search, favorites

Collapsible groups that remember their state, instant search across names, commands and groups, and a pinned Favorites group.

FavoritesBuild · 4Dev · 3Deploy · 2npm scripts · 7

SQL Console

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.

SELECT id, title FROM posts LIMIT 3;
idtitlestatus
412Pricingpublish
418Contactspublish
431Spring saledraft

Claude Hooks Manager

See, toggle and edit Claude Code hooks across project, local and user-global settings.json. Presets, copy and paste between projects.

Stop · sound completeproject
Notification · notify-sendlocal
PreToolUse · lintuser

Auto-detection and ready-made templates

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.

commands-list.jsonpackage.json scripts*.ps1ReactNode.js BackendNext.jsDockerExpoPythonGitTurborepoDeployTestingLintingGit Hooks
Quick Upload from Spec

One line to put a file on the server

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.
  • Pairs separated by ; or newlines, a live preview grouped by server, # comments ignored.
Quick Upload from Spec · preview
staging1 connection · 3 actions
img/logo.webm→ /wp-content/themes/mytheme/img
icons/ (24 files)→ /img/icons
/wp-content/themes/mytheme/img/logo-old.webmdelete
production1 connection · 1 action
/wp-content/themes/mytheme/style.css→ ./backup
For agents

Plain JSON that an agent can write

Coding 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
Install

Give your project a control panel

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
More by me