Triage labels
The engineering triage skill moves a Linear issue to one outcome. It uses the Calab workspace States label group, not GitHub issue labels. Canonical role mapping, intake mechanics, and the workspace Type labels live in docs/triage-labels.md. Read that file; do not invent parallel label names.
When to use it
Use it when an issue needs a decision about what happens next, not when you are already implementing the change.
flowchart TD
arrive["Issue arrives, or a maintainer re-opens the question"]
dup{"Is it a duplicate?"}
marked["Mark duplicate of the canonical issue. Not a States label"]
vague{"Can someone act on it?"}
info["needs-info: name what is missing, then snooze"]
fuzzy{"Is the language settled?"}
grill["needs-grill: /grill-with-docs, then a ready state"]
who{"Who should do the work?"}
agent["ready-for-agent: Todo on intl-mocks<br/>assign the coding agent, or leave it unassigned"]
human["ready-for-human: same queue, human assignee"]
no["wontfix: Decline or Closed, with a comment"]
arrive --> dup
dup -->|yes| marked
dup -->|no| vague
vague -->|no| info
vague -->|yes| fuzzy
fuzzy -->|no| grill
fuzzy -->|yes| who
who -->|agent| agent
who -->|human| human
who -->|will not do| no
A real case: the review notes on MOC-25 were specific page-by-page findings, so they were filed as MOC-29 instead of snoozed for a clearer report. That is the ready-for-agent outcome: one issue an agent can execute. needs-info would have been the outcome if the note had only said the Azure page was confusing, with no sentence to change. needs-grill would have been the outcome if the estate words themselves (personality, fixture, separate deploy) were still unset and a /grill-with-docs session had to settle them before anyone edited a page.
Default role strings (each label equals its role name):
needs-triageneeds-infoneeds-grillready-for-agentready-for-humanwontfix