surfacer

Generate the interface instead of writing it.

Hand-written CLIs drift. --json lands on some commands, a banner breaks the parse, a subcommand never reaches --help. Every gap costs an agent a retry.

surfacer maps a surface once, then generates every interface from that one descriptor. When the surface moves, you re-run recon.

One IR, many interfaces

11 ops
news-ycombinator-com - Hacker News

USAGE
  news-ycombinator-com <command> [key=value ...]

COMMANDS
  ask          ask
  formatdoc    formatdoc
  front        front
  index-html   index html
  jobs         jobs
  newcomments  newcomments
  newest       newest
  news         news
  show         show
  threads      threads
               id=Hunter17
  user         user
               id=Hunter17

FLAGS
  --json    Print the raw response body
  --help    Show this help

Read live from examples/.

Install

curl -fsSL https://surfacer.dev/install.sh | sh

No release yet. Build from source: cargo install --git https://github.com/crafter-station/surfacer surfacer