BLOG/DEVELOPER DAILY
THEME
DEVELOPER DAILY

Stop memorizing commands: the task menu

Every repo accumulates a pile of scripts nobody can remember the names of. `orchstep menu` turns your tasks into a fuzzy picker with single-key hotkeys — and stays out of the way in CI.

Jun 19, 2026 OrchStep Team 5 minROLE: AnySCALE: Any
RUNNABLE DEMO
Full source for this post: blog/task-menu
VIEW SOURCE

You've been on the project six months and you still cat Makefile to remember whether it's make test, make tests, or make check. The new hire opened the repo this morning and has no idea any of it exists. The tasks are right there — they're just undiscoverable. The interface to your own automation is "go read the source and guess."

Discoverability is a feature, and most task runners don't ship it. OrchStep does: orchstep menu reads your tasks and their descriptions and hands you a fuzzy picker. No new config, no extra file — the menu is your workflow.

Write descriptions, get a menu

The only thing the menu needs is a desc: on each task. That one field is the label in the picker — so it doubles as documentation:

orchstep.yml
name: dev
tasks:
  test:
    desc: "Run the test suite"
    steps:
      - { name: run, func: shell, do: echo "go test ./..." }

  lint:
    desc: "Lint and vet the codebase"
    steps:
      - { name: run, func: shell, do: echo "golangci-lint run" }

  build:
    desc: "Compile the binary"
    steps:
      - { name: run, func: shell, do: echo "go build ./..." }

  serve:
    desc: "Start the dev server on :8080"
    steps:
      - { name: run, func: shell, do: echo "starting dev server on :8080" }

Now nobody has to know the task names:

orchstep menu

You get a fuzzy-searchable list — type se and serve floats up — with single-key hotkeys to fire a task without even hitting Enter. The descriptions you wrote are the menu text, so the picker explains itself. When you do know what you want, the direct form still works:

orchstep run test

The part that matters in CI

A common reason task runners avoid interactive menus: they hang a pipeline. An interactive prompt with no terminal attached waits forever, and your CI job times out at the 60-minute mark having done nothing.

orchstep menu refuses to do that. When stdin isn't a terminal — exactly the CI case — it doesn't block waiting for a keypress. So you can keep one entry point in your docs and your muscle memory without booby-trapping automation. Humans get the picker; pipelines call orchstep run <task> directly and are never ambushed by a menu.

Onboarding, for free

The quiet win is the new hire. "How do I run things here?" stops being a Slack question and becomes one command:

orchstep menu

Every task, every description, in a searchable list. The menu is the README for your automation — and unlike a README, it can't drift out of date, because it's generated from the tasks that actually exist.

What you actually gained

ConcernBare scripts / Makefileorchstep menu
Remembering task namescat the file, guessfuzzy-search the picker
Knowing what a task doesread the sourcethe desc: is the label
Firing a tasktype it exactlysingle-key hotkey
Safe in CIinteractive prompts hangnon-interactive, never blocks
Onboarding"ask someone"one command

Where OrchStep is not the answer

If your repo has exactly two scripts and the whole team has them memorized, a menu is overkill — orchstep run test is already fine. The menu pays off the moment the task list outgrows what one person can hold in their head, or the moment someone new has to find their way around.

Where to go next

Still cat-ing the Makefile to remember a command? Give your tasks descriptions and run orchstep menu. Install the binary and start with the demo above.

#CLI#PRODUCTIVITY#DISCOVERABILITY#TASK-RUNNER
Try it in two minutes — one binary, no signup.
curl -fsSL https://orchstep.dev/install.sh | sh

RELATED — DEVELOPER DAILY