Screenshots
Features
Auto-Detect Scripts
Reads package.json, Cargo.toml, Makefile, pyproject.toml, pom.xml, build.gradle, go.mod, composer.json, Rakefile and surfaces their scripts automatically.
|
Live File Watching
Watches project files for changes. Suggested actions refresh instantly when you add scripts, rename targets, or create new project configs.
|
Multiple Access Points
Access your actions from the sidebar, command picker, status bar, editor title bar, or explorer context menu. Same picker, wherever you are.
|
Confirmation Before Execution
Every command shows a modal review dialog before running. High-risk commands (rm -rf, DROP TABLE, sudo, format commands) get an extra warning indicator.
|
Terminal Modes
Choose between a shared terminal (default, reuses one instance) or per-action fresh terminals. Long-running dev servers stay isolated.
|
JSON Schema Validation
Config files get autocomplete, inline validation, and hover documentation from the bundled JSON Schema in VS Code, Cursor, and VSCodium.
|
Drag & Drop
Reorder actions and categories directly in the sidebar tree. Drag suggestions into curated groups to build your workflow.
|
Multi-IDE
Works identically in Visual Studio Code, Cursor, and VSCodium. Config file path and schema adapt automatically to each IDE.
|
Quick Start
1. Install the extension from the VS Code Marketplace or Open VSX.
2. Open a workspace that contains any supported project file. Scripts appear automatically in the Suggested Actions panel on the left.
3. Curate your workflow. Click Add next to any suggestion to pin it to your curated list, or run Project Scripts: Run Action... from the command palette to pick and run anything on the fly.
Supported Detectors
The extension automatically identifies scripts from these project files:
| Language / Ecosystem |
File(s) |
Detected |
| Node.js |
package.json |
npm, yarn, pnpm, and bun scripts (auto-detected) |
| PHP |
composer.json |
Composer scripts |
| Make |
Makefile, GNUmakefile |
.PHONY-aware target listing, fallback to all targets |
| Ruby |
Rakefile |
Rake tasks |
| Java / Kotlin |
pom.xml, build.gradle, build.gradle.kts |
Maven phases and profiles, Gradle tasks |
| Rust |
Cargo.toml |
Build, test, run, check, clippy, fmt, bins, examples |
| Go |
go.mod |
Build, test, run, mod tidy, vet, cmd/ sub-packages |
| Python |
pyproject.toml, setup.py, setup.cfg |
Scripts, pytest, tox, nox, pip install |
Configuration
Create .vscode/project-actions.json in your workspace root:
{
"groups": [
{
"id": "dev",
"label": "Development",
"actions": [
{
"id": "start-server",
"label": "Start Dev Server",
"command": "bun run dev",
"terminalMode": "new"
},
{
"id": "run-tests",
"label": "Run Tests",
"command": "bun test"
}
]
},
{
"id": "deploy",
"label": "Deployment",
"actions": [
{
"id": "build-image",
"label": "Build Docker Image",
"command": "docker build -t app .",
"placements": ["sidebar", "statusBar"]
}
]
}
]
}
Config Reference
| Field |
Type |
Required |
Description |
groups |
array |
Yes |
Top-level list of action groups. At least one group required. |
groups[].id |
string |
Yes |
Unique group identifier. Duplicates cause validation errors. |
groups[].label |
string |
Yes |
Display name shown in the sidebar tree. |
groups[].actions |
array |
Yes |
Actions belonging to this group. |
actions[].id |
string |
Yes |
Unique action identifier across all groups. |
actions[].label |
string |
Yes |
Label shown on the button and in pickers. |
actions[].command |
string |
Yes |
Shell command executed by the integrated terminal. |
actions[].placements |
array |
No |
Where to show the action: sidebar, statusBar, editorTitle, explorerContext. Defaults to all. |
actions[].terminalMode |
string |
No |
"shared" reuses the Project Scripts terminal. "new" opens a fresh one each run. |
Where to Find Your Actions
| Location |
How to Access |
| Activity Bar |
Click the terminal icon in the left sidebar. |
| Curated Actions |
Your pinned actions, organized in drag-and-drop groups. |
| Suggested Actions |
Auto-detected scripts, grouped by source file. |
| Editor Title Bar |
Terminal icon in the open editor's tab header. |
| Explorer Context |
Right-click a folder, select Run Action... |
| Status Bar |
Terminal icon in the bottom-right corner. |
| Command Palette |
Ctrl+Shift+P → Project Scripts: Run Action... |
Safety
Every command requires explicit confirmation before execution. A modal dialog shows the full command,
source file, and action label so you can review what will run before it hits the terminal.
Commands matching destructive patterns are flagged as high-risk and display an additional warning
in the confirmation dialog. High-risk patterns include rm -rf, git reset --hard, git clean -f,
DROP TABLE, TRUNCATE, dd, sudo, format commands (format C:, mkfs), PowerShell
Remove-Item -Recurse -Force, and curl/wget piping to shell.
Commands
| Command |
Description |
Project Scripts: Run Action... |
Open the action picker to browse and run any action. |
Project Scripts: Refresh |
Reload the sidebar from the config file. |
Project Scripts: Create Config File |
Generate a starter .vscode/project-actions.json. |
Project Scripts: Run in New Terminal |
Run a selected action in a fresh terminal (context menu). |
Requirements
- VS Code
1.85.0 or later (also compatible with Cursor and VSCodium)
- Workspace Trust enabled (required to execute terminal commands)
Development
This project uses Bun as its runtime and build toolchain.
Prerequisites
- Install Bun (v1.2.0 or later recommended)
- VS Code 1.85+ for testing the extension
Setup
# Install dependencies
bun install
# Compile TypeScript
bun run compile
# Watch mode (recompile on changes)
bun run watch
# Run tests
bun run test
# Lint and format
bun run lint:fix
bun run format
Project Structure
src/ — Extension source code
src/detectors/ — File-type-specific script detectors
src/test/suite/ — Test suite (Mocha)
resources/ — Icons and JSON schema
License
MIT
| |