---
description: "Show every multi-agent task's ID, phase, branch, and status. Use when asked what is running, or for an overview of every task."
description-tr: "Tüm multi-agent görevlerinin ID, faz, branch ve durumunu gösterir."
parameters: []
gui: button
destructive: false
confirm: none
context: fork
agent: Explore
---

# multi-agent status  -  Task Status Dashboard

Show every active and completed task as a table.

## Steps

1. **Ask the producer, do not go looking.** One command answers the whole
   question:

   ```bash
   node "$HOME/.claude/scripts/runs-index.mjs"          # grouped table
   node "$HOME/.claude/scripts/runs-index.mjs" --json   # the same records
   ```

   `runs-index.mjs` resolves through `lib/run-paths.sh` / `scripts/_run-paths.mjs`,
   so it sees both directory layouts (`<project>/<id>/` and the flat `<id>/`),
   the salvaged `artifacts/` copy Phase 4 leaves behind, and every spelling of a
   task id - and it counts a run that exists in both layouts once. Do NOT
   re-scan the tree by hand: fixed `.worktrees/` paths and a single `find`
   depth miss runs and double-count others, and `agent-state.json` never lives
   inside a worktree (`phases/phase-0-init.md`).

   The JSON and the table are rendered from the same records, so a dashboard and
   this command cannot disagree.

2. **Fields per run** (already in the output): `taskId`, `project`, `branch`,
   `currentPhase`, `status`, `startedAt`, `worktreePath`, `prUrl`, `autopilot`,
   `phases[]`, `tokens`, `estUsd`, `group`, plus `duplicateOf` when the run also
   exists in the other layout and `salvaged` when its state is the Phase 4 copy.

3. **Groups are computed, not judged.** `runs-index.mjs` assigns `group` by the
   table below; report what it returns rather than re-deriving it. `in_progress`
   alone cannot tell a run that is waiting for you from one that died.

   | Group | Test | Action offered |
   |---|---|---|
   | `waiting` - Waiting on you | `status == "awaiting_input"`, or `waitingFor` set, or a `pr.url`, or phase >= 4 | `resume #N` - the work landed, it needs your answer |
   | `stopped` - Stopped mid-development | anything else past phase 0 | `resume #N` or `kill #N` |
   | `question` - Left at a question | phase 0, nothing pending | `garbage-collect --abandoned` - nothing was built |
   | `unknown` - Status not recorded | no `status` field | say so; offer nothing |

   A run with no `status` is **not** placed in an actionable group. Unknown is
   not a finding, and calling it dead is the same false claim in the other
   direction.

4. **Render as a table**, grouped per step 3, with the group as a section heading:
   ```
   🤖 Multi-Agent Tasks

   | ID | Jira/Task | Branch | Phase | Status | Duration |
   |----|-----------|--------|-------|--------|----------|
   | #1 | {JIRA-KEY}-12345 | feature/{JIRA-KEY}-12345-... | 5/5 DONE | ✅ Complete | 12m |
   | #3 | {JIRA-KEY}-12345 | feature/{JIRA-KEY}-12345-... | 5/5 DONE | ✅ Complete | 8m |

   💡 log #1 | resume #N | kill #N
   ```

6. **What is waiting to be learned** (one line, only when non-zero):

   ```bash
   node "$HOME/.claude/scripts/learn-from-transcripts.mjs" --json 2>/dev/null
   node "$HOME/.claude/scripts/observations.mjs" scan --status open --json 2>/dev/null
   ```

   Report `N lesson(s) minable from transcripts  -  /multi-agent:refactor to review` and `N open pipeline observation(s)` when either count is above zero, and print nothing when both are zero. Neither runs a model and neither writes anything: the miner is dry-run by default. Zero candidates alongside a non-zero `toolResultsExamined` means there is nothing to find; zero of both means the read is broken, and that is worth saying rather than reporting a clean queue.

7. **What the spend is doing** (one line, and only when there is something to
   say). `cost-budget-check.mjs` watches ONE run against ONE ceiling, which is
   blind to the two ways a budget actually empties: a drift no single run trips,
   and one pathological session that burns a week in an hour while every run
   stays under its cap.

   ```bash
   node "$HOME/.claude/scripts/cost-analyze.mjs" burn --json 2>/dev/null
   node "$HOME/.claude/scripts/cost-analyze.mjs" anomaly --days 30 --json 2>/dev/null
   ```

   Report a line only when either exits 10 - an accelerating day, or a day out
   of family - and say nothing otherwise. The figures are estimates priced from
   `cost-table.json` at LIST price, so on a subscription they are the right
   number for comparing days to each other and the wrong number to call a bill;
   say which when quoting one. `UNMEASURED` means the transcripts could not be
   read, and it is reported as that rather than as zero.

5. **Quick command hints**  -  based on state:
   - Paused task → suggest `resume #N`
   - Done task → suggest `log #N`
