Ask your terminal in plain words. It answers with a runnable command — pre-typed at your prompt, explained, and never executed for you.
$ howto kill whatever is using port 3000 lsof -ti:3000 | xargs kill -9 Find the process listening on port 3000 and force-kill it. ⚠ SIGKILL gives the process no chance to clean up. [2] kill $(lsof -ti:3000) — let it shut down cleanly $ lsof -ti:3000 | xargs kill -9 ← Enter runs it. Ctrl-C discards.
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.
cargo install --path .):
curl -LsSf https://github.com/C0ldSmi1e/howto/releases/latest/download/howto-installer.sh | sh
export ANTHROPIC_API_KEY=sk-ant-...
# ~/.zshrc (bash: --init bash)
eval "$(howto --init zsh)"
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-y, on purpose.⚠ reason; a local blocklist
catches rm -rf /-class commands regardless of what the
model says.howto 1 is the deliberate act that loads one.