Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Evolution ExecutorNew to Visual Studio Code? Get it now.
Evolution Executor

Evolution Executor

james-evolution

|
4 installs
| (0) | Free
Run common terminal commands from a VSCode sidebar. Ships with pre-categorized defaults and supports custom user commands.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Evolution Executor

A VSCode sidebar extension for running terminal commands from a convenient button palette. Ships with a curated library of common web development commands, and lets you build your own personalized command palette — organized with tags, searchable, and scoped to individual projects or your entire environment.

Developed by james-evolution on GitHub.


Features

  • Command button palette — click any button to run its associated command in the integrated terminal, with an optional confirmation modal
  • Built-in command library — pre-loaded with common React, Next.js, Node.js, npm, Git, and Python commands
  • Command descriptions — hover over any command button to see a plain-English description of what it does; custom commands support an optional description field in their creation form
  • Custom commands — create your own buttons mapped to any terminal command you choose
  • Edit commands — right-click any custom command to edit its name, terminal string, description, tags, or scope
  • Delete with confirmation — remove custom commands via the right-click context menu, with a confirmation prompt before deletion
  • Scope badges — each custom command displays a 📁 Workspace or 🌐 Global pill badge so you can tell at a glance where it is saved
  • Tag system — organize commands with color-coded tags; built-in tags have fixed brand colors, custom tags get auto-assigned colors that you can override
  • Manage Tags — change the background color of any custom tag; badge text color adjusts automatically for legibility
  • Real-time search — filter commands by name or tag across both tabs
  • Scope filter tabs — narrow My Commands to All, Local, or Global with a single click
  • Global vs. local scope — choose whether a custom command is available everywhere or only in a specific workspace
  • Export and Import — back up any subset of your commands to a JSON file and restore them to any scope, on any machine; re-importing the same file will never create duplicates
  • Quick Import / Export — Users can specify default JSON files that will be used for one-click importing / exporting of custom commands lists.
  • Settings — toggle the run confirmation modal on or off, and access Manage Tags, via the gear icon in the header
  • Theme-aware UI — the sidebar adapts automatically to any VSCode light, dark, or high-contrast theme, the theme can also be changed to a small list of presets

Getting Started

  1. Open the Evolution Executor panel from the activity bar (sidebar icon)
  2. Browse the Default Commands tab to find and run common commands instantly
  3. Switch to My Commands to create your own

The Two Tabs

Default Commands

Contains the full built-in command library, organized across six categories:

Category Tag Commands included
React / Vite react Scaffold app, dev server, build, preview, install deps
Next.js next Scaffold app, dev server, build, production server, lint
Node.js Backend node Init project, install Express / CORS / dotenv / Nodemon, run server
General npm npm Install, update, outdated, cache clean, clean reinstall (Mac/Linux + Windows)
Git git Init, clone, status, add, commit, push/pull/fetch, branches, merge, log, diff, stash, reset, revert, remotes, tags
Python python Create/activate/deactivate venv, pip management, requirements.txt workflows, pytest, Black, Flake8
vsce vsce Install CLI, login, preview files, package, publish (plain, patch, minor, major)

Default commands are read-only — they cannot be deleted or modified. Hovering over any default command shows a description of what it does.

My Commands

Your personal command palette. Supports creating, editing, searching, deleting, exporting, and importing custom commands. Scope filter tabs and a search bar sit above the list — see Searching and Filtering for details.


Running Commands

Click any command button to run it. By default, a confirmation modal appears before the command is sent to the terminal. The modal displays the command's name and the exact terminal string that will be executed, so you always know what you're about to run.

To disable the confirmation step, open Settings and uncheck Confirm before running commands.

A terminal named EvolutionExecutor is created automatically on first use and reused across subsequent clicks. If you close it manually, a new one is created the next time you run a command. The command is sent exactly as written — no modification, no shell wrapping.


Settings

Click the ⚙ icon in the top-right corner of the sidebar to open the settings panel.

Setting Default Description
Confirm before running commands On Shows a modal with the command name and terminal string before executing. Disable for instant one-click execution.
Theme VSCode (Auto) Controls the color scheme of the sidebar. See Themes below.

Settings are stored globally and persist across all workspaces and VSCode restarts.

When the My Commands tab is active, the settings panel also shows a Manage Tags button for quick access to the tag color editor. See Manage Tags.


Creating Custom Commands

Click + Add Command on the My Commands tab to open the creation form.

Fields

Name (required) The label shown on the command button. Keep it short and descriptive. Example: Start dev server

Command (required) The exact terminal command to execute when the button is clicked. Example: npm run dev -- --port 4000

Description (optional) A plain-English explanation of what the command does. Shown as a tooltip when hovering over the button. Useful for commands whose purpose isn't immediately obvious from the name alone. Example: Starts the dev server on port 4000 with hot reload

Tags (optional) A comma-separated list of tags to categorize the command. Tags are displayed as color-coded badges on the button and can be used to filter commands via the search bar. Example: react, vite, dev

Tags are normalized to lowercase automatically. You can reuse built-in tags (like react or node) to match their fixed brand colors, or invent your own. See Tag Color System for details on how tag colors work and how to customize them.

Scope (required) Determines where the command appears. See Command Scope below.


Command Scope

When creating a custom command, you choose between two scopes:

Global

The command is saved to your VSCode user profile and appears in the My Commands tab across all workspaces and projects. Use this for commands you reach for regardless of what you're working on.

Examples of good global commands:

  • git log --oneline -20
  • npm cache clean --force
  • code . (open current folder in new window)

Local

The command is saved to the current workspace and appears in My Commands only when that workspace is open. Use this for project-specific commands that would only make sense in a particular codebase.

Examples of good local commands:

  • docker-compose up -d (project has its own compose file)
  • npm run test:e2e (end-to-end tests specific to this project)
  • A custom deploy script path unique to this repo

Note: The Local scope option is disabled when no workspace folder is open in VSCode. In that case, all new commands will be saved as Global.


How Commands Are Stored

Custom commands are stored using VSCode's built-in state APIs — no files are written to your workspace or home directory, and nothing is committed to git.

Scope Storage API Where the data lives
Global globalState VSCode's user profile directory on your machine
Local workspaceState VSCode's internal workspace storage, keyed to the workspace URI

Both storage locations are:

  • Per-user — not shared with other OS users or other VSCode installations
  • Persistent — survive window reloads, VSCode restarts, and extension updates
  • Safe — never written to your project folder, never at risk of being committed to version control

Settings Sync

VSCode has a built-in feature called Settings Sync that lets you back up your editor configuration to a Microsoft or GitHub account and automatically restore it when you sign in on another machine. This covers things like your theme, keybindings, and extensions — and Evolution Executor participates in it.

The following data is included in Settings Sync:

  • Global commands — your custom commands saved with global scope
  • Settings — the run confirmation toggle
  • Tag colors — any custom colors you've applied to tags

This means if you sign in to VSCode on a new computer with the same account, your global commands and preferences will appear automatically without any manual export or import step.

Local commands are not synced. They are intentionally kept on the machine and workspace they were created in, since they typically reference project-specific paths, scripts, or tools that only exist in that environment.

If you haven't set up Settings Sync, your data still saves locally as normal — sync is simply an optional feature built into VSCode. You can enable it from the VSCode accounts menu in the bottom-left corner of the editor.


Data Persistence and Loss

Uninstalling and reinstalling the extension

Uninstalling Evolution Executor through the VSCode Extensions panel does not delete your commands or settings. The data is stored in VSCode's internal profile directory on your machine, which is separate from the extension installation itself. When you reinstall the extension, everything comes back exactly as you left it.

When data is lost

Situation Data lost?
Uninstall → reinstall (standard) No
VSCode window reload or restart No
Extension update No
Uninstalling with an explicit "Clear Extension Data" option Yes
Deleting or resetting your VSCode user profile Yes
Moving to a different machine without Settings Sync enabled Yes — global data stays on the original machine
Signing in to a different account on Settings Sync Yes — synced data follows the account

Editing and Deleting Custom Commands

Right-click any custom command in the My Commands tab to open a context menu with two options:

  • Edit — opens the edit form pre-filled with that command's current values
  • Delete — prompts a confirmation modal before permanently removing the command

Editing

You can change any field:

  • Name — the label shown on the button
  • Command — the terminal string that runs when clicked
  • Description — the tooltip shown on hover (leave blank to fall back to the raw command)
  • Tags — the comma-separated tag list
  • Scope — switching between global and local moves the command to the appropriate storage automatically

Click Save Changes to apply, or Cancel to discard.

Deleting

Selecting Delete from the context menu opens a confirmation modal showing the command name. You must confirm before the command is permanently removed.

Default commands cannot be edited or deleted.


Exporting and Importing Commands

Evolution Executor can export your custom commands to a JSON file and import them back — useful for backing up your work, sharing a command set with a colleague, or migrating commands to a new machine.

Accessing Export / Import

In the My Commands list view, click the Export/Import button (beside + Add Command) to open a two-option prompt. Select Export or Import to begin the respective flow.


Exporting

The export flow walks you through three choices:

  1. Scope — choose whether to export your Local or Global commands
  2. Quantity — choose All (exports every command in that scope) or Select (shows a checklist so you can pick individual commands)
  3. Save location — a standard save dialog lets you choose where to write the file

The output is a human-readable JSON array. Each entry contains the command's name, terminal string, tags, scope label, and creation timestamp:

[
  {
    "name": "Start dev server",
    "command": "npm run dev",
    "description": "Starts the Vite development server with hot module replacement",
    "tags": ["react", "node"],
    "scope": "global",
    "createdAt": 1708000000000
  },
  {
    "name": "Run E2E tests",
    "command": "npx playwright test",
    "tags": ["testing"],
    "scope": "local",
    "createdAt": 1708100000000
  }
]

Note: Internal identifiers (id, isDefault) are stripped from the export — they are regenerated fresh on import and would not be meaningful on another machine.


Importing

  1. Click Export/Import → Import
  2. Choose a target scope — Local (saves to the current workspace) or Global (saves to your user profile, available everywhere)
  3. Select a previously exported .json file via the open dialog

Each command in the file is validated before import. Entries missing a name or command field are skipped silently. All imported commands receive fresh IDs on import.

Duplicate prevention — if an entry's name and command both match a command that already exists in the target scope, that entry is skipped. This means importing the same file multiple times is always safe and will never create duplicates.

The scope field recorded in the file is informational only — it is always overridden by the scope you select at import time. This means you can freely import a set of global commands as local ones (or vice versa) without editing the file.

The description field is optional in the JSON. If present, it is preserved on import and shown as the hover tooltip on the command button.

If the selected file is not a valid JSON array, an error message is shown in the sidebar and no commands are modified.


Searching and Filtering

Text search

Both tabs have a filter bar at the top. Type any text to narrow the visible command list in real time.

A command is shown if:

  • Its name contains the search text (case-insensitive), or
  • Any of its tags contain the search text

For example, searching react will show all commands tagged with react. Searching dev will show commands with "dev" in their name (like "Start React Dev Server") or in their tags.

The filter is cleared automatically when switching between tabs.

Scope filter tabs (My Commands)

At the top of the My Commands list, three scope tabs let you narrow the view without typing anything:

Tab Shows
All Every custom command (global + local combined)
Local Only commands saved to the current workspace
Global Only commands available across all workspaces

The text search bar works within whichever tab is active — so selecting Global and then searching deploy shows only global commands whose name or tags match "deploy". Switching tabs resets the scope filter to All.


Tag Color System

Tags are displayed as colored badges on each command button.

Built-in tag colors

The four built-in tag colors are fixed and cannot be changed:

Tag Color
react Cyan #149eca
next Charcoal #4a4a4a
node Green #417e38
npm Red #cc3534

Custom tag colors

Any tag not in the table above is initially assigned a color deterministically — the same tag string always produces the same color, across sessions and across users. Colors are chosen from a curated palette designed to be readable on both light and dark VSCode themes.

You can override any custom tag's color using Manage Tags.


Manage Tags

Click the ⚙ gear icon while on the My Commands tab, then click Manage Tags to open the tag color editor.

The panel lists every custom tag that appears on at least one of your commands (built-in tags like react and node are excluded — their colors are fixed). For each tag you'll see:

  • A live badge preview showing the tag's current color
  • A color picker (🎨) — click it to open your system's color picker and choose any background color
  • A Reset button — appears only when you've applied a custom color; clicking it reverts the tag back to its auto-assigned color

Badge text color (white or black) is adjusted automatically based on the chosen background color to ensure legibility.

Custom tag colors are stored globally and apply across all workspaces.


Themes

The sidebar UI uses VSCode's built-in CSS theme variables, so it automatically adapts to whichever VSCode theme you have installed. On top of that, Evolution Executor ships with four built-in palette options, selectable from the Settings panel.

Theme Description
VSCode (Auto) Default. Inherits your active VSCode theme — buttons, inputs, and backgrounds all match the rest of the editor automatically.
Evolution (Dark) A custom dark palette derived from the Evolution brand: deep navy backgrounds, green accents, and purple highlights.
Evolution (Vampire) A high-contrast dark palette with near-black backgrounds and deep blood-red accents.
Evolution (Luna) A moonlit night sky palette with deep blue-slate backgrounds, cool silver text, steel-blue accents, and a soft icy-blue glow on hovered elements.

The selected theme is stored globally and persists across workspaces and VSCode restarts. If you use VSCode Settings Sync, your theme preference syncs across machines along with your other settings.


Attribution

Sidebar coding icon created by Ralf Schmitzer - Flaticon

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft