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 writes nine skills to .agents/skills/ (symlinked into
.claude/skills/ so Claude Code picks them up as slash commands) — six you run
directly (/staff-review, /staff-resolve, /staff-comment, /staff-document,
/staff-docs, /staff-loop) plus three building blocks the orchestrators fan
out to (/staff-review-find, /staff-review-verify, /staff-docs-scout).
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) 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.