the workflow
Ready work, one line at a time
hew sorts what's blocked, claimed, and epic-shaped out of the way. An agent loop can take the first line and just go.
$ hew ready #142 P2 bug crash when the branch is unborn #139 P1 bug checksum mismatch after interrupted download #137 P3 task tighten test gates: per-package coverage floor … 8 more — hew ready $ hew start 142 started #142 — claim is yours. branch feat/fix-unborn-branch, push, then hew pr
features
Built for agents. Opinionated for humans.
Every behavior — read and write — exists so an agent session can run the loop without a human in it.
Ready work, found for you
hew ready lists only what's truly ready — unblocked, unclaimed, not an epic. Claim one and it's yours; try one that's already taken and hew points you at the next.
Prime the session
hew prime hands your agent the conventions, the ready queue, and the commands — the whole tracker state in ~1200 tokens. No URL spelunking, no raw GraphQL.
Conventions that stick
Exactly one priority, one type, template bodies, native dependencies. The write path enforces them; the read path normalizes issues filed elsewhere instead of hiding them.
Native edges, not prose
Blockers and sub-issues are real graph edges; epics are sub-issue trees. Cycle checks run client-side before every mutation — GitHub won't catch them all.
Machine-readable by default
One compact line per issue, NDJSON when you ask, no ANSI off a TTY, stable sort. Output that survives truncation and a --json that stays flat.
Batch by plan
hew apply turns a JSONL plan into issues with local IDs — dangling references and cycles rejected before anything is written.
the loop
Three moves, all of them hew
The whole day fits in a pocket — no triage meetings, no spreadsheets.
hew ready
See what's actually ready — sorted, filtered, one line per issue.
hew start <n>
Claim it. If someone beat you to it, hew hands you the next ready item.
branch → push → hew pr
The PR composes itself from the issue — exactly one Fixes #n. Closing it closes the issue.
hew close is for wontfix and duplicates only — work always closes through the PR.
install
Grab an axe
One line, no sudo. Auth comes from the gh CLI you already have.
$ curl -fsSL https://lumberbarons.github.io/hew/install.sh | bash
git — the target repo is read from the checkout
gh CLI — run gh auth login once
curl + tar — for the script
~/.local/bin is off your PATH