Tour: ask the backlog with the issue dependency graph
Issues depend on other issues - that structure is real, but it usually lives in someone’s head. madtea lets you write it down and then sorts the backlog by what unblocks the most.
Full reference: issues.md.
Wire the dependency graph
madtea issue deps add "103 -> 102 -> 101" --epic 100 # a chain + its tracking epic, one validated call
madtea issue deps add checks every edge before writing anything: does each issue exist, does any edge self-reference, does any edge create a cycle? A bad edge at position 50 means nothing is applied - the graph is never left half-wired.
Rank the backlog
madtea issue rank acme # every repo in the org: keystones / free leaves / blocked
madtea issue rank acme/api # a single repo
madtea issue rank sorts every open issue into three buckets, each tagged [blocked-by:N unblocks:M]:
- Keystones - ready now, unblocks the most downstream work. Do these first.
- Free leaves - ready now, no downstream dependencies. Safe to parallelize.
- Blocked - sorted nearest-ready first, so you can see what clears next.
One query, one repo or the whole org. No manual dependency picture to rebuild.
Track epics
madtea issue epic status 100 # roll up children: done / open / blocked
madtea issue epic tick 100 # sync the epic's checklist to child state
status rolls up the epic’s child issues into a state summary. tick fixes only the checkboxes in the epic body that drifted from child state - your hand edits are left alone.
madtea finish closes a branch-named issue only when nothing still blocks it. A tracking epic gets a reference instead of a close. If the dependency check itself errors, finish refuses to close - never the other way around.
File a whole roadmap at once
madtea issue import roadmap.json # milestones + dependency-ordered issues from one JSON spec
madtea issue import validates the whole spec first, then files milestones and issues with dependencies already wired. If it crashes mid-run, re-running resumes from where it stopped without duplicating anything already filed.
Typical session
# 1. File the roadmap
madtea issue import roadmap.json
# 2. See what to work on now
madtea issue rank acme
# 3. Take a keystone, wire its branch
madtea issue develop 101 # cuts issue-101-<slug> branch
# 4. Implement, finish
madtea finish "feat: thing" --closes 101
# 5. Check how the epic moved
madtea issue epic status 100
madtea issue epic tick 100
Part of the guides - madtea documentation.
Canonical source: docs/guides/tour-issue-rank.md in the madtea repo.