0xGondarxyz/claude-code-mods/tree/main/agent-watch
agent-watch
A Claude Code mod that shows one line per running subagent above the prompt, including model, task, minutes and latest tool call.
About this mod
While subagents run, the band above the prompt displays one line per agent, e.g. Sonnet · Build snap screenshot mod · 6 min · now: Bash claude plugin test. Each line shows the agent's model or subagent type, minutes updated every 15 s, and the latest tool call (file name, first 40 characters of a Bash command, or pattern). When an agent ends, its line shows done (green) for 30 s, or stopped (yellow) if it failed or was stopped, with a toast Agent finished: <description>. With no agents the mod draws nothing, and other mods' rows stay below. It uses engine data from agent.spawn for start, tool.call with agentId for progress, turn.complete with agentId and a 15 s $.agent.list() fallback for finish, keeping state in agent-watch.agents. Background vs foreground agent end cannot be distinguished, and teammates never pass agent.spawn, so they are not shown. Development commands: claude plugin validate ., claude plugin test ., npx tsc -p ..
Installation
Check the author's README for the marketplace and plugin name first. Commands may change as the repository evolves.
claude plugin marketplace add 0xGondarxyz/claude-code-mods claude plugin install agent-watch
Original text / README
agent-watch
A Claude Code mod. While subagents run, the band above the prompt shows one line per agent:
Sonnet · Build snap screenshot mod · 6 min · now: Bash claude plugin test
- Label: the agent's model (Sonnet, Opus, Haiku, Fable), else its subagent type.
- Minutes update every 15 s.
now:is the agent's latest tool call (file name, first 40 characters of a Bash command, or pattern), cut to the band width.- When an agent ends, its line shows
done(green) for 30 s, orstopped(yellow) if it failed or was stopped, with one toastAgent finished: <description>. - With no agents the mod draws nothing. Other mods' rows stay below ours.
Engine data used
- Start:
agent.spawn.next(e)answers{ model, agentId }; the input holdsdescriptionandsubagentType. - Progress:
tool.callwithagentId(set only inside a subagent loop). Hooks always pass through. - Finish:
turn.completewithagentId(reasonansweris done, anything else stopped), and every 15 s$.agent.list()status (completed,failed,killed) as a fallback. - State:
agent-watch.agentsin$.state, so a hot reload keeps the rows.
Limits
- The engine does not tell a background agent's end apart from a foreground one; both end through
turn.completeor$.agent.list(). - Teammates (
type: teammate) never passagent.spawn, so they are not shown.
Develop
claude plugin validate .
claude plugin test .
npx tsc -p .
