How it works
Diffs are slugs, the web UI is a GitHub-style review, and skills are how agents review.
Diffs are slugs
A diff is base..head, where each side is a git ref, WT (working tree), or
STAGED:
staff main..WT # current main → uncommitted working tree
staff abc1234..HEAD # a specific commit → HEAD
staff main..STAGED # main → what you’ve git-added
staff # just open the UI on the active diffThe slug is also how the skills reference a diff: /staff-review main..WT
targets (and if needed creates) that exact diff and makes it active.
The web UI
A GitHub-style review of the active diff:
- Click a line number to anchor a comment; drag or shift-click to select a range.
- Hover a line and click the + to comment; reply to build a thread.
- Resolve a thread as Fixed or Skipped, or flag it with Document so
/staff-resolvecaptures it as a reusable lesson. - The diff and the comment sidebar scroll independently, with light/dark themes,
split/unified view, syntax highlighting, the
/staff-loopround cap, and the/staff-reviewagent count — all in the gear menu.
Comments are stored under .staffreview/diffs/<slug>.json; the running UI picks
up changes over a WebSocket and re-renders live as the agent posts.
The skills
staff install lets you choose top-level skill groups to write to
.agents/skills/ (symlinked into .claude/skills/ so Claude Code picks them up
as slash commands). All groups start selected, and pressing a toggles all
on/off. If a selected group requires another top-level group, that required group
is checked and locked until you unselect the parent. For example, /staff-loop
requires both /staff-review and /staff-resolve. In turn, /staff-resolve
requires /staff-comment and /staff-document. Internal workers such as
/staff-review-find, /staff-review-verify, and /staff-docs-scout are shown
as locked rows; they check when a selected parent needs them and uncheck when no
selected parent does.
With every group selected, that is eight top-level skills plus three building
blocks.
They’re just Markdown — open .agents/skills/staff-review/SKILL.md and tune it
to your team’s standards. See the Skills reference for what each
one does.
The docs
.staffreview/docs/ is your team’s captured review wisdom. /staff-review
reads it on every pass and re-flags any recurrence of a documented mistake. The
docs is meant to be committed; the session data
(.staffreview/diffs/, attachments/, active.json, section-cache.json) is
gitignored automatically. See The docs.
The loop
/staff-loop chains review and resolution in subagents until a review surfaces
nothing new, capped by the loopMaxRounds setting (default 5, adjustable in
the gear menu). It’s the “set it going and come back to a higher-quality result”
button.