Work · The story

Select Script

A fast dropdown selector for npm scripts inside VS Code.

A VS Code extension that turns the package.json scripts list into a quick, keyboard-first dropdown — so you stop memorizing and retyping script names.

select-script
2024

TL;DR

A one-command VS Code extension that turns npm scripts into a keyboard-first dropdown — so you stop memorizing and retyping them.

At a glance

  • Single-command, keyboard-first script runner
  • Zero runtime dependencies, minimal extension footprint
  • Built dogfood-first — I use it daily
Status
shipped
Period
2024 — present
Role
Solo builder
Stack
TypeScript · VS Code Extension API

01

Problem

Running npm scripts from memory or by scrolling a panel breaks flow — I wanted a command-palette feel.

Every React/Next.js project ends up with a dozen scripts — dev, build, lint, test, typecheck, plus project-specific ones like db:seed. The default ways to run them are typing npm run <name> from memory or scrolling the scripts panel. Both break flow. I wanted something closer to a command palette: type a few letters, hit enter, done.

02

Approach

One VS Code command, a quick-pick dropdown fed from `package.json`, and zero config — a tool that disappears into your workflow.

Built a VS Code extension that registers a single command and opens a quick-pick dropdown populated directly from the workspace's package.json. The list is filtered as you type, shows the script name and its full command, and runs it in the integrated terminal on selection.

Kept the surface area deliberately tiny — one command, no settings page, no telemetry, no dependencies beyond the extension host. The goal was a tool that disappears into your workflow rather than one you have to manage.

03

Outcome

A small tool that does one thing well — and the muscle-memory moment of `Cmd+Shift+P`, `ss`, enter is the real reward.

A focused extension that does one thing well. It's the kind of tool I built for myself first and polished because the friction it removes is one I hit dozens of times a day. The real payoff is that muscle-memory moment: Cmd+Shift+P, ss, enter, and the right script is running.

04

What I took away

  • Constraint is a feature: one command and zero config made the extension feel instant rather than heavy.
  • Developer tools earn trust by being boring and predictable — the best DX is the one you stop noticing.
  • Reading the VS Code quick-pick API closely paid off; the built-in filtering already does most of the work.

Want to talk about building something like this? Let's talk or email pedrocarlos.ti@gmail.com.