Skip to content

Triage a whole column

The single-ticket flow in Fix a ticket scales by repetition. Pointing Claude at a whole column lets you blow through 10 to 50 tickets in one session. This page describes the pattern; the toado-triage skill packages it as a one-line invocation.

When to triage a column vs. a single ticket

Use column triage whenUse single-ticket fixes when
You have 10+ tickets piled up in To Do.You have one specific bug you want to focus on.
Tickets are small and similar (visual nits, copy fixes, easy regressions).The bug is complex and needs back-and-forth with the user.
You want a unified branch across several tickets.Each ticket needs its own commit and review.
You are comfortable with Claude making decisions per-ticket without asking.You want to review every decision.

The loop

LIST tickets in the column
For each ticket:
READ context (get_ticket, get_capture_asset, list_comments)
DECIDE: fix, ask, or skip
If fix:
EDIT, VERIFY, COMMIT
COMMENT with what you did
MOVE forward
If ask:
COMMENT with the question
LEAVE in column
If skip:
COMMENT with reasoning (or move to a "blocked" / "won't fix" column)
SUMMARIZE the run

Bundling

A common variation: bundle several small tickets onto one branch so you do one commit and one PR for the whole batch.

list_tickets(project_id, column_id=todo_id, limit=20)
→ pick the 5 visual-only tickets
start_work_on_ticket(
ticket_ids=['t-1','t-2','t-3','t-4','t-5'],
branch_name='t-bundle-visual-cleanup'
)
[edit code locally, all 5 fixes]
git commit -m "Visual cleanup bundle\n\nToado: t-1, t-2, t-3, t-4, t-5"
bulk_move_tickets(
ticket_ids=['t-1','t-2','t-3','t-4','t-5'],
target_column_id=in_review_id
)
For each, add_comment with the per-ticket fix description.

start_work_on_ticket requires an explicit branch_name when you pass more than one ticket id, since slugifying multiple titles into one name does not produce a sensible result.

bulk_move_tickets runs sequentially server-side and returns a per-ticket result array. Partial failures are reported per ticket, not as a transaction rollback.

Per-ticket triage decisions

A useful default decision matrix:

SignalDecision
Capture has a clear visual bug, fix is in 1-2 files, tests pass after change.Fix and move to In Review.
Description is ambiguous (“the button is broken” with no other context).Comment asking for clarification. Leave in To Do.
Capture is missing (banner says “console capture unavailable”).Comment with what is missing. Leave in To Do.
Bug is in third-party code or out of scope.Comment with reasoning. Move to Won’t Fix or Done depending on your convention.
Issue is a duplicate of another ticket.Comment “Duplicate of t-xyz”. Move to Done.
Tests fail after the proposed fix.Comment with the failure log. Leave in In Progress (or revert and leave in To Do).

Verification sweep

A variant of triage: rather than fixing tickets in To Do, walk the In Review column and verify the previous run’s fixes hold up.

list_tickets(project_id, column_id=in_review_id)
For each:
get_ticket → read what the agent claimed to fix
Run the verification (load the page, run the test, check the build)
If verified: move_ticket to Done, add_comment "Verified."
If not: add_comment with what is still wrong, move back to To Do.

This is the canonical use of the toado-verify skill recipe.

Reporting

After the loop, emit a summary so the user knows what happened:

Triage run, project Acme Web, To Do column. Processed 12 tickets. Fixed and moved to In Review: 8. Asked for clarification (left in To Do): 2. Marked as duplicate (moved to Done): 1. Could not reproduce, left in To Do: 1.

Branches: t-abc-fix-..., t-def-..., t-bundle-visual-cleanup. Total commits: 3.

Even when no human reads it immediately, summary text makes the audit trail much easier when someone does come back to the session.