Public: anyone can read this; the crew can change it.
The Claude Code and OpenCode plugins say what the crew is doing on an app and show a run's last lines, through MCP `runs` and `run_log` #7395
Check · Review · Land · Live done — Landed and live in production.
The Claude Code and OpenCode plugins now have two new commands, `/forge runs <app>` and `/forge log <app> <run>`, so you can see what the crew is doing on an app without opening the forge. Both call tools the MCP already has (`runs` and `run_log`); no forge code changed.
shipped production is serving it deploy 18f765b
The Claude Code and OpenCode plugins now have two new commands, /forge runs <app> and /forge log <app> <run>, so you can see what the crew is doing on an app without opening the forge. Both call tools the MCP already has (runs and run_log); no forge code changed.
/forge runs <app>callsrunswithrepo= the app. It gives one line for each running run and for the last three finished ones: kind, issue or pull number, state, and how long it took (startedAttoendedAt, or to now while it's still running)./forge log <app> <run>callsrun_logwithrepo,runandtail= 40, and passes the lines on exactly as returned.
What changed:
plugins/claude-code/commands/forge.mddescribes both commands, and itsdescriptionandargument-hintlist them.- In
plugins/opencode/forge.ts, theCOMMANDtext, header comment and command description say the same. - Both plugin READMEs list the two commands and the MCP tools behind them.
Tests (test/plugins.test.ts):
tailis added toNOT_TOOLS, because it's an argument, not a tool.- The expected list of command words now includes
logandruns. - A new block fails if either plugin stops naming
runsorrun_log, or stops asking fortail40 and verbatim lines.
bun test test/plugins.test.ts test/mcp-size.test.ts passes (15 tests) and bun x tsc --noEmit is clean. The MCP size limits are untouched because no tool was added.
Chosen not to do: the plugins work out the durations from the run's start and end times rather than the forge sending a ready-made duration. I didn't widen runs' answer for that.
To try it: claude --plugin-dir plugins/claude-code with FORGE_URL and FORGE_TOKEN set, then /forge runs trevato/forge, and /forge log trevato/forge <id> with an id from that list.
🤖 Generated with Claude Code
Approved. Both plugins now name runs and run_log with the argument names the tools take (repo, run, tail 1–2000; 40 is in range). The test ties each plugin to the forge tool list and to the shared verb set. The change is text and docs only: no new input, write or dependency, so the security and terminal-parity items do not apply. Two things I would do next: (1) runs defaults to 20 rows, so a busy app with many running runs could hide the last three finished ones. Have the command pass limit 50, or say so in the README. (2) The a command that drops run_log is caught test only exercises a literal string; make it feed a real command text with the line removed.
The Claude Code and OpenCode plugins now have two new commands,
/forge runs <app>and/forge log <app> <run>, so you can see what the crew is doing on an app without opening the forge. Both call tools the MCP already has (runsandrun_log); no forge code changed./forge runs <app>callsrunswithrepo= the app. It gives one line for each running run and for the last three finished ones: kind, issue or pull number, state, and how long it took (startedAttoendedAt, or to now while it's still running)./forge log <app> <run>callsrun_logwithrepo,runandtail= 40, and passes the lines on exactly as returned.What changed:
plugins/claude-code/commands/forge.mddescribes both commands, and itsdescriptionandargument-hintlist them.plugins/opencode/forge.ts, theCOMMANDtext, header comment and command description say the same.Tests (
test/plugins.test.ts):tailis added toNOT_TOOLS, because it's an argument, not a tool.logandruns.runsorrun_log, or stops asking fortail40 and verbatim lines.bun test test/plugins.test.ts test/mcp-size.test.tspasses (15 tests) andbun x tsc --noEmitis clean. The MCP size limits are untouched because no tool was added.Chosen not to do: the plugins work out the durations from the run's start and end times rather than the forge sending a ready-made duration. I didn't widen
runs' answer for that.To try it:
claude --plugin-dir plugins/claude-codewithFORGE_URLandFORGE_TOKENset, then/forge runs trevato/forge, and/forge log trevato/forge <id>with an id from that list.🤖 Generated with Claude Code
Closes #7371