@bobfromarcher/triage
v1.0.0
Published
A prioritization engine for plain-text tasks: ICE/RICE scoring, dependency-aware unblocking, and a daily plan that fits your time budget. Tasks are markdown you own. Zero dependencies.
Downloads
16
Maintainers
Readme
triage
A prioritization engine for plain-text tasks. It scores your tasks with ICE or RICE, resolves dependencies to show what is actually unblocked right now, and builds a daily plan that fits the time you have. Your tasks are markdown lines you own and can grep, sync, or keep in git. No dependencies, no AI.
A todo list tells you what exists. triage tells you what to do next, and why.
Install
npm install -g @bobfromarcher/triageHow it works
A task is one markdown line with inline metadata:
- [ ] Ship login page #frontend ice:9/7/5 est:3h needs:t1 id:t2You add tasks, score the ones that matter, and triage does the ranking and planning.
# quote the whole task so your shell keeps the #tags
triage add "Design auth API #backend ice:8/8/6 est:2h id:t1"
triage add "Build login page #frontend ice:9/7/5 est:3h needs:t1"
triage # ranked list of what is actionable now
triage blocked # what is waiting, and on what
triage plan --time 3h # the best set of tasks that fits 3 hours
triage done t1 # finishing t1 unblocks anything that needed itMetadata
| Token | Meaning |
| --- | --- |
| #tag | Project or area, repeatable |
| ice:I/C/E | Impact, Confidence, Ease, each 1 to 10. Score is I * C * E |
| rice:R/I/C/E | Reach, Impact, Confidence, Effort. Score is R * I * C / E |
| est:2h, est:90m | Time estimate |
| due:YYYY-MM-DD | Due date, used as a tiebreaker |
| needs:id1,id2 | Dependencies. The task stays blocked until those ids are done |
| id:tN | A stable id. One is assigned automatically if you omit it |
Pick one scoring method per list. ICE and RICE produce numbers on different scales, so mixing them in the same list makes the ranking hard to read.
Commands
| Command | What it does |
| --- | --- |
| triage | Top unblocked tasks, ranked |
| triage add "<text>" | Add a task |
| triage done <id> | Mark a task done and stamp the date |
| triage ls [--all] [--tag t] | List open tasks, or all |
| triage blocked | Tasks waiting on dependencies |
| triage plan --time <budget> | A plan that fits the time, for example 3h or 90m |
| triage stats | Open and done counts, open work remaining, throughput over the last 7 days |
| triage where | Print the task file path |
Every read command also takes --json.
The plan
triage plan walks your unblocked tasks from highest score down and packs the ones that fit the budget, skipping anything that would run over. It is a fast, deterministic answer to "what is the best use of the next three hours."
Where it lives
Tasks are stored in ~/.triage/tasks.md (override with TRIAGE_FILE). It is a plain markdown file that triage owns, so keep it in a git repo or a synced folder and your task list follows you between machines.
Development
git clone https://github.com/bobfromarcher/triage
cd triage
node test/test.jsParsing, scoring, dependency resolution and the planner are pure functions, tested without touching the filesystem. CI runs on Node 18, 20 and 22 across Linux, macOS and Windows.
License
MIT, bobfromarcher.
