Dev Command Manager
Save, organize, and execute custom shell commands visually from VS Code's sidebar — no terminal gymnastics required.
Features
- Sidebar Tree View — Browse groups and commands from the Activity Bar
- Group-based organization — Keep related commands together (e.g., "Build", "Docker", "Git")
- One-click execution — Hit ▶ next to any command to run it
- Dedicated Output Channel — Real-time stdout/stderr streamed to Dev Command Runner
- Persistent storage — Commands survive restarts (stored in VS Code's global state)
- Import / Export — Share your command sets as JSON
- Favorites — Star frequently used commands to pin them at the top
- Command history — Review past runs with exit codes and durations
- Cross-platform — Works on Windows, macOS, and Linux
- Confirmation guard — Optional prompt before every execution
Quick Start
- Install the extension
- Click the Dev Commands icon in the Activity Bar (terminal-window icon)
- Click ➕ Add Group to create your first group
- Click ⊕ Add Command on the group row to add a shell command
- Hit the ▶ play button to run it
DEV COMMANDS [+] [⊕] [↺] [↑] [↓] [⧖]
├── 📂 Build & Deploy (2 commands) [+] [✎] [🗑]
│ ├── ⭐ Deploy Staging [▶] [★] [✎] [🗑]
│ └── 🖥 Build Production [▶] [★] [✎] [🗑]
└── 📂 Docker (1 command) [+] [✎] [🗑]
└── 🖥 Start Containers [▶] [★] [✎] [🗑]
| Icon |
Action |
| ▶ |
Run command |
| ★ |
Toggle favorite |
| ✎ |
Edit |
| 🗑 |
Delete |
Settings
| Setting |
Type |
Default |
Description |
devCommandManager.confirmBeforeRun |
boolean |
true |
Show confirmation dialog before running |
devCommandManager.showCommandInDescription |
boolean |
true |
Display the shell command as tree-item description |
devCommandManager.maxHistoryItems |
number |
50 |
History entries to keep (0 = disabled) |
Import / Export
Export your entire command set to a JSON file:
- Click the Export icon (↑) in the sidebar toolbar
- Choose a save location
Import on another machine:
- Click the Import icon (↓)
- Select the JSON file
- Existing commands are merged (same ID = overwrite)
{
"version": 1,
"exportedAt": "2025-01-01T00:00:00.000Z",
"groups": [
{ "id": "abc123", "label": "Build", "description": "Build scripts", "createdAt": 1700000000000 }
],
"commands": [
{
"id": "def456",
"label": "Build Production",
"command": "npm run build -- --mode production",
"groupId": "abc123",
"description": "Optimized production build",
"workingDirectory": "/path/to/project",
"env": { "NODE_ENV": "production" },
"favorite": false,
"createdAt": 1700000001000
}
]
}
Environment Variables
When editing a command, set per-command environment variables in the JSON data. You can also import a JSON file with env populated.
Local Development
npm install
npm run compile
Press F5 in VS Code to launch an Extension Development Host with the extension loaded.
For live reloading during development:
npm run watch
Then press F5 and reload the host window after changes.
Architecture
src/
├── extension.ts # Activate/deactivate + command registrations
├── models/
│ ├── Command.ts # DevCommand interface
│ └── Group.ts # CommandGroup interface
├── services/
│ ├── CommandStorageService.ts # CRUD + import/export via globalState
│ └── CommandExecutionService.ts# child_process.spawn + output channel + history
└── providers/
└── CommandTreeProvider.ts # TreeDataProvider implementation
License
MIT