druthers CLI
Terminal client for druthers-gsx polls — create, shape, rank, follow.
Goals
Drive ranked-choice polls (option details, costs, budget, ballots, results) from scripts and agent sessions without scraping the server-rendered HTML. Dogfooded 2026-07-29: populating 18 backlog options with Gherkin acceptance criteria and token costs, twice (format revision), plus adding options.
Effectiveness
Recommended. The second pass — reformatting all 15 details from fenced code blocks to markdown — took two minutes and the tooling disappeared from attention entirely. That is what a good CLI feels like.
What made it effective
- Exit codes over redirect archaeology. The raw-HTTP attempt required interpreting a 303 (success dressed as failure); the CLI returns 0 and a terse
ok. showis verification for free: option IDs, details previews, costs, budget, and voter roster in one screen. The HTML-scraping equivalent produced a false alarm from a greedy regex.- Cookie-jar identity (
~/.config/druthers/cookies.json) — no session bootstrapping in the caller. - Multiline markdown payloads (backticks, quotes, unicode) pass as bare argv without escaping incidents.
- ID prefixes accepted everywhere (
druthers cost <poll> 2cef4b4c 20).
Friction / pain points / surprises
The release existed and we built from source anyway. cli-v0.1.0 had been sitting on GitHub since 07-27 (5 platforms, checksums) but was marked pre-release and unannounced in the README, so discovery failed and a git-worktree + go build dance happened instead. Promoted to latest 07-29. Remaining: README install section.
show truncates details to one line with no --full. Round-trip verification of stored details still required consulting the web page once. A details <poll> <option> read mode (no third arg) would close the loop. Filed on the backlog (40 ktok).
No batch input. Fifteen edits = fifteen processes and HTTP round trips. Fine at this scale; an apply --stdin verb taking NDJSON would suit agent callers. Filed (70 ktok).
--version says dev when built from source — release binaries are stamped; source builds are not, which muddies bug reports.