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-triage
  • needs-info
  • needs-grill
  • ready-for-agent
  • ready-for-human
  • wontfix