Run npm, Deno, and shell scripts from the Explorer sidebar in VS Code / Cursor.
Taskingen discovers package.json scripts, deno.json / deno.jsonc tasks, and *.sh / *.bash files in your workspace, shows them in a dedicated tree view, and runs them in dedicated terminals — with open, stop, refresh, and recent-history support.
Features
- npm scripts — Scans all
package.jsonfiles (JSONC supported), detects npm / pnpm / yarn from lockfiles, and runspm run <script> - Deno tasks — Scans
deno.json/deno.jsonctasks(string or{ command, description }), and runsdeno task <name> - Shell scripts — Discovers
*.shand*.bashfiles and runs them with bash - Grouped tree — Nest npm/Deno script names by separator (e.g.
test:unit), group scoped packages (@scope/...), and control default expand depth - Run / stop / open — Inline actions on each script; running scripts show a stop control
- Click to activate — Configure whether clicking a script opens the source or runs it (single or double click)
- Task History — Recently run scripts from the current workspace at the top of the tree
- Live refresh — Watches
package.json,deno.json/deno.jsonc, and shell script changes (debounced); also refreshes on workspace folder and relevant setting changes
Install (local)
- Build a VSIX:
npm run package→ createstaskingen-<version>.vsix - Command Palette → Extensions: Install from VSIX… → select that file
Requires VS Code / Cursor ^1.125.0.
Usage
- Open a folder or multi-root workspace.
- In the Explorer sidebar, find the Taskingen view (below the file tree).
- Expand npm Scripts, Deno Tasks, or Shell Scripts, then:
- Use the inline Open / Run / Stop icons, or
- Activate a script name (see Settings for click behavior).
- Task History lists recently run scripts; clear it from the history group’s inline action.
- Use the view’s Refresh button (or Taskingen: Refresh Scripts) after large changes if needed.
You can drag the view to the primary/secondary sidebar or panel. Use Reset Location on the view title menu to return it to Explorer.
Commands
| Command | Description |
|---|---|
Taskingen: Refresh Scripts |
Rescan the workspace |
Taskingen: Open Script Source |
Open package.json / deno.json / deno.jsonc (key highlighted) or the shell file |
Taskingen: Run Script |
Run in a dedicated terminal |
Taskingen: Stop Script |
Soft-stop (Ctrl+C) and clear running state |
Taskingen: Clear Task History |
Clear stored recent runs for this workspace |
Settings
| Setting | Default | Description |
|---|---|---|
taskingen.npmScriptGrouping.separator |
: |
Nest npm script and Deno task names on this separator; empty disables grouping |
taskingen.npmScriptGrouping.maxDepth |
1 |
Max group levels under each project (0 = flat) |
taskingen.npmProjectGrouping.groupByScope |
true |
Group @scope/name npm or Deno packages under @scope |
taskingen.scriptClickAction |
open |
On activate: open source or execute the script |
taskingen.scriptClickMode |
doubleClick |
Activate on single or double click (also respects workbench.list.openMode) |
taskingen.tree.defaultExpandedDepth |
1 |
How many tree levels start expanded |
taskingen.taskHistory.enabled |
true |
Show the Task History group |
taskingen.taskHistory.maxItems |
5 |
How many recent scripts to show |
taskingen.discovery.exclude |
[] |
Exclude folders or paths from npm/Deno/shell discovery; supports entries like legacy, legacy/**, packages/generated/**, and /tools |
Development
npm install
npm run compile # build extension → out/
npm run compile:test # typecheck tests → out-test/
npm run watch # rebuild on change
npm test # unit tests
npm run package # produce .vsix
Test files live under test/ and use test/tsconfig.json (extends tsconfig.test.json) so the editor picks up Node types; the root tsconfig.json only includes src/.
Press F5 in VS Code/Cursor (Extension Development Host) using the launch config in .vscode/.
Notes
- Discovery skips common noise paths such as
node_modules,.git,dist,coverage,vendor,.venv, andout. - Add custom discovery excludes with
taskingen.discovery.exclude. Use/nameto match only the workspace root, orname/name/**to match that folder anywhere in the workspace. - Without terminal shell integration, Taskingen still starts the command; running state clears when you Stop or close the terminal.
- Errors and skip reasons are logged to the Taskingen output channel.