xyz-mod
Load, verify or troubleshoot the read-only XYZ Claude Code mod that adds /xyz-status — recent hosted runs on development, tick claims and marathon/relay driver state, printed with no model turn. Use w
SKILL.mdskills/2-daily/xyz-mod/SKILL.md
GitHubxyz-mod — /xyz-status without a model turn (GH-964)
A Claude Code mod is a plugin whose TypeScript hooks run inside Claude Code. This one adds a
single slash command, /xyz-status, that runs at once (even mid-turn), costs no model turn, and replies when its readers finish (15 s cap each).
It prints, under one root: line naming the repo it read:
- Hosted runs on development (recent 8) —
gh run list --branch development --limit 8(wave-reconcile and theci.ymlgate alike). A bounded recent view, not a full inventory. - tick claims —
bin/tick claims, withTICK_REPO_ROOTpinned to the root. - Marathon / relay drivers —
relay-automation/marathon-ls.sh(LIVE / STALE / IDLE / GONE).
It runs those existing readers and prints their output; it has no logic of its own. Relay threads
that no driver runs (plain relay-system/** STATUS) are not listed (deferred in GH-964).
The command is /xyz-status, not /xyz, because /xyz is the xyz coordination skill.
Load it
Mods need Claude Code 2.1.287 or newer (claude --version). Load the mod for a session from a
maintained XYZ-forge clone:
claude --plugin-dir "<clone>/skills/2-daily/xyz-mod/mod"
Then /plugin lists it as an active mod, and /xyz-status appears in the command menu. Start the
session inside the clone (any subfolder works): the mod reads the repo that the session's folder
belongs to, and says so if that folder is not a git repo.
Drawing (panes, bands) shows only in the terminal and Desktop; this mod draws nothing, so its text reply works in the VS Code extension too.
Boundary
The mod registers only session.start (to declare the command) and command.run for
xyz-status, and calls only $.command.register and $.process.run. It registers no tool.call,
prompt.* or session.append hook. Mods are not sandboxed, so any later change that adds one of
those hooks needs its own issue and review.
Each section stands alone: a reader that fails, times out or prints nothing shows
ERROR (<exit or reason>): <first stderr line> in its own section, and the other sections still
answer. A failed reader is never shown as "nothing in flight".
Manual diagnostic
This is a written checklist, not a test suite (XYZ-forge adds no new suites: AGENTS.md, GH-831).
Record each run under TESTS-RESULTS/<date>+GH-964/ with a provenance.jsonl. Healthy means
exit 0 and non-empty output; anything else is FAIL.
| Check | How | Pass when |
|---|---|---|
| D1 | claude --version |
2.1.287 or newer |
| D2 | claude plugin validate <clone>/skills/2-daily/xyz-mod/mod |
hooks are only session.start, command.run{command=xyz-status}; calls only $.command.register, $.process.run |
| D3 | from the clone root, run each reader by hand: gh run list --branch development --limit 8; TICK_REPO_ROOT="$PWD" bin/tick claims; bash relay-automation/marathon-ls.sh |
each healthy |
| D4 | /plugin in a session started with --plugin-dir |
the mod is listed active |
| D5 | /xyz-status in the terminal and in the VS Code extension |
root line + three healthy sections; no assistant reply follows |
| D6 | /xyz-status in a session started in <clone>/src |
root line names the clone root; sections healthy |
| R1 (red control) | temporarily change one reader's path in hooks/register.ts to a missing file (do not commit), run /xyz-status, then restore and run again |
mutant: that section FAIL, the other two healthy; restored: all healthy |
Record the go / no-go (keep, extend, drop) in the GH-964 plan's Status table and on the issue.