triage-tasks — Approval gate for automation-generated tasks
Walks each pending block in inbox/tasks_pending.md interactively. Automations (mail ingestion, opus crons) write candidates there; this skill is how they become live tasks.
Usage
/triage-tasks # interactive triage of all pending items
/triage-tasks count # just print the count
/triage-tasks list # list pending titles without triaging
Per-item actions
[a]approve as suggested (new or follow-up per matcher)[n]force new (skip matcher's follow-up suggestion)[f]force follow-up under a specific parentpath:line[e]edit the title before writing[s]skip (leave this item in the queue)[r]reject (remove from queue, do not write anywhere)[q]quit (remaining items stay in queue)
Execute now
Default: manual, one item at a time, Claude-driven. The tools/tasks_review.py
REPL cannot receive the user's keystrokes inside Claude Code, so Claude itself is
the gate. Never drive the REPL with piped / yes input to bulk auto-approve —
that destroys the per-item human judgment the gate exists for, even when every
item looks legitimate. Authoritative procedure: workflows/tasks_triage.md
("Execution mode (authoritative)").
Per-item loop:
python3 tools/tasks_review.py --listto load the queue.- For each block, in order, present:
[N/total],area,title,source,captured, the fullrawexcerpt, matchersuggested-actionmatch-score.
- Stop and wait for the user's explicit decision on that one item
(
a/n/f path:line/e <new title>/s/r). Do not advance, pre-decide, or batch. - Apply exactly what the user said via the shared writer
(
python3 tools/task_add.py --area <area> --title "…" [--due …] [--section …];--parent path:linefor follow-up), then remove the handled block frominbox/tasks_pending.md. Reject = remove block, write nothing. Skip = leave block in place. - Next block. Repeat to the end, then report what landed where and the remaining queue count.
count / list stay non-interactive:
python3 tools/tasks_review.py --count # if the user said `count`
python3 tools/tasks_review.py --list # if the user said `list`
After completion, show the user the final count line and remind them that approved items were written directly to area files (skipping the gate, since approval is the gate).
See also
- workflows/tasks_triage.md — step-by-step SOP
- workflows/task_tracking.md — system-wide why
- tools/tasks_review.py — implementation