triage · git:20260929.d422e16 · 2026-09-29 · sha256 b74df55b0b5324f1

triage git:20260929.d422e16A

Immutable. This exact content never changes and is served at /api/v1/blob/b74df55b0b5324f1.

---
name: triage
description: "Use when a Kraft work item has stopped, failed or is stuck needing a person, and someone asks why or how to get it going again."
---

Kraft's tools come from the `kraft` MCP server. If `kraft` is not on PATH, this
plugin has been installed without the program it drives: say so and point at
https://itsomidkarami.github.io/kraft/get-started/install rather than reporting a
connection error.

# A stopped work item

Find out why it stopped before deciding anything. Retrying without the cause
reruns the same failure, and a fix loop that already spent its attempts will
spend them again.

## 1. Read the stop

```bash
kraft view show ID --json          # status, current node, pending gate
kraft view events ID --type work_item_needs_human   # the stop's `reason`
kraft view logs ID -n 60           # the last session's tail
```

The stop event's `reason` is the cause. A `budget` tag on it means a spend cap
stopped it, and a reason naming a time cap means that cap ran out: neither is a
defect. A `capped` tag means a fix loop spent its attempts
(`{cycles, attempts}`). `needs_context:` means an agent asked a
question and nobody answered. A status that is only a pending gate is not a
stop: hand it to `kraft:gates`.

## 2. Say what you found

One sentence naming the node, the cause, and which of these it is:

| Cause | Route |
|---|---|
| Task failed, or a fix loop spent its attempts | `retry`, with a steer naming what to change |
| An agent asked a question | `retry` with the answer as the steer |
| Budget, time cap, rate limit | a person raises the cap or waits; retrying only spends again |
| Config or install problem (missing skill, unresolved chain) | `kraft:check`, or `kraft:doctor` if the server itself is unwell |
| The work is heading the wrong way | `kraft:steer` |

## 3. Retry only when the person says to

`retry_work_item(steer="...")` (CLI `kraft item retry [ID] --steer "..."`) is the
only door back onto a stopped item; `resume` takes only a paused one. It reruns
the node it stopped on. `path="node.step.task"` reruns from a named point, and
`restart=True` reruns the whole chain, so use those only when the cause sits
further back than the stopped node. Write the steer as an instruction: it leads
the retry's prompt and nothing else reaches the agent.

`skip_work_item` advances past a node without running it. That is the person's
decision every time: offer it, do not take it.

Report what you found even when you do not retry.

## If you are a Kraft worker session

You cannot act on the item that is running you. Report the cause and let the
person decide.