ci-triage
ci-triage
Shared logic for classifying a failed CI workflow run and recording the outcome. Used by humans (or Claude in an interactive session) when triaging a red main workflow or a red check on an open PR — the latter via the global pr-lifecycle skill, whose CI-triage section delegates the taxonomy here.
This skill owns the taxonomy, the de-dup rules for the main-red issue, and the issue template. Repo-specific reproduction steps and failure patterns live in the consumer repo's CLAUDE.md / <repo>-dev-process (read by pr-lifecycle), and e2e classification is delegated to web-testing.
Taxonomy
Every failure lands in exactly one bucket. Be explicit — "unclear" is not a bucket, needs-human is.
| Bucket | Signal | Default action |
|---|---|---|
regression |
Reproduces deterministically on main at HEAD |
File/update main-red, @-mention suspect author |
flake |
Same workflow passed on the previous main commit without code change | Comment on the existing main-red issue if one is open; otherwise skip |
infra |
Postgres service didn't come up, rustup 403, pnpm registry down | File/update main-red labelled infra; do not @-mention authors |
needs-human |
Logs truncated, auth failed, classification genuinely ambiguous | Open a main-red issue with raw log excerpt, label needs-human |
Do not invent a fifth bucket. If the signal you see fits nothing above, it's needs-human.