$ howto

Ask your terminal in plain words. It answers with a runnable command — pre-typed at your prompt, explained, and never executed for you.

How it works

howto never runs anything. With the shell wrapper installed, the answer lands pre-typed at your own prompt — Enter runs it, your line editor edits it, Ctrl-C throws it away.

Answers are for this machine: it knows your OS, shell, installed tools, and the project you're standing in — so "kill port 3000" uses lsof on macOS and fuser where that's what exists.

In pipes and scripts, stdout carries only the command; explanations go to stderr. -p gives the bare command, -j JSON, and exit codes mean something: 0 ok, 1 error, 2 no sensible command.

Install

  1. Install the binary (macOS and Linux; or cargo install --path .):
    curl -LsSf https://github.com/C0ldSmi1e/howto/releases/latest/download/howto-installer.sh | sh
  2. Set your API key (platform.claude.com):
    export ANTHROPIC_API_KEY=sk-ant-...
  3. Add the wrapper — the part that puts commands at your prompt:
    # ~/.zshrc   (bash: --init bash)
    eval "$(howto --init zsh)"

Usage

No quotes, no subcommands — everything after howto is your question.

howto compress this folder into a tar.gz
howto 2        # take option [2] from the last answer
howto --last   # show the last answer again — no API call
-p, --print bare command on stdout, nothing else
-j, --json structured JSON, for scripts and agents
--explain part-by-part breakdown
--last re-show the last answer, commands numbered
--init <shell> print the shell wrapper (zsh, bash)
--config config path and resolved settings
-v, --verbose context, model, latency on stderr

Safety