argos-pr-review — Claude Code skill: what it does, how to install
Evaluates Argos visual regression builds during pull request reviews. It checks whether UI changes match code diffs and filters out flaky snapshots.
npx skills add argos-ci/argos-javascript --skill argos-pr-review -a claude-codeWhat argos-pr-review does
The skill connects the argos CLI directly into the PR review workflow. First, the agent infers intended UI updates from the pull request summary, issue notes, and code diff. It then runs argos build get and argos build snapshots to inspect captured screenshots against the base version.
Visual differences are classified into deliberate updates, actual regressions, or environmental flakes. Regressions show up as broken layout, clipped elements, or wrong themes. Flaky snapshots are identified using metrics such as test.metrics.flakiness and recurring diff counts, as well as visual artifacts like spinners.
Reading build snapshots requires an ARGOS_TOKEN. Without a personal access token, the CLI cannot post reviews or snapshot comments, so the agent reports its findings directly in the console.
What it helps with
- verify Argos visual changes against pull request code diffs
- separate real interface regressions from flaky snapshot noise
- post anchored comments on problematic snapshot diffs
- submit build approval or rejection via the Argos CLI
Example prompts for the agent
- Inspect the Argos build for this PR and check if the visual diffs match my code changes
- Review the failing Argos snapshots and comment on broken UI elements
- Check if the detected changes in Argos are actual regressions or flaky tests
How to install argos-pr-review
1Skills CLI (Vercel)
npx skills add argos-ci/argos-javascript --skill argos-pr-review -a claude-code2Manually: put the files in place
~/.claude/skills/argos-pr-review/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/argos-pr-review/
1Skills CLI (Vercel)
npx skills add argos-ci/argos-javascript --skill argos-pr-review -a codex2Manually: put the files in place
.agents/skills/argos-pr-review/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add argos-ci/argos-javascript --skill argos-pr-review -a cursor2Manually: put the files in place
.cursor/skills/argos-pr-review/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install argos-ci/argos-javascript argos-pr-review2Manually: put the files in place
.github/skills/argos-pr-review/SKILL.md1Skills CLI (Vercel)
npx skills add argos-ci/argos-javascript --skill argos-pr-review -a gemini-cli2Platform CLI
gemini skills install https://github.com/argos-ci/argos-javascript --path skills/argos-pr-reviewManually: put the files in place
.devin/skills/argos-pr-review/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add argos-ci/argos-javascript --skill argos-pr-review -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about argos-pr-review
How to install argos-pr-review in Claude Code?
Run npx skills add argos-ci/argos-javascript --skill argos-pr-review -a claude-code. The skill file will be stored at ~/.claude/skills/argos-pr-review/SKILL.md.
What does the argos-pr-review skill do?
It inspects visual regression results from Argos during pull request reviews. The agent checks UI snapshots against code intent to identify true regressions, intentional changes, and flaky captures.
What tokens are required for argos-pr-review?
Reading build data requires a project token via ARGOS_TOKEN or --token. Submitting reviews, ignoring flakes, or leaving snapshot comments requires a personal access token.
Source text
SKILL.md · MIT
---
name: argos-pr-review
description: >
Review Argos visual regression builds as one input to a pull request review.
Use when a PR has an Argos build link, an Argos status check, or a bot comment
pointing to an Argos build, and you need to decide whether the visual diffs
match the developer's intent before approving.
---
# Argos PR Review
**Argos** is a visual testing platform: each CI build captures screenshots and
compares them to a baseline, producing per-snapshot **diffs**. A build with
`changes-detected` is waiting for a human (or you) to decide whether each change
is intentional, a regression, or a flaky capture.
Treat the Argos build as **one input** to the PR review, never the sole source of
truth. Infer the intended UI change from the PR title, description, linked issue,
and code diff _first_, then use Argos to confirm the rendered result matches.
## Tooling & auth
Drive Argos through the `argos` CLI — load the **argos-cli** skill for the token
model and flags. In short: `build get` / `build snapshots` need a project token
(`ARGOS_TOKEN`/`--token`); submitting a review or comment needs a **personal
access token** (`--token` / `argos login`). Always use `--json` when parsing, and
never print token values. If no PAT is available, give the user your conclusion
and evidence instead of posting — the CLI can't submit the review.
## Workflow
1. **Inspect the build** — `argos build get <ref> --json`. Decide from status:
| Status | Meaning / next step |
| ------------------------------------------- | ---------------------------------------------------- |
| `accepted` / `no-changes` | Already approved / no visual diff — no review needed |
| `pending` / `progress` | Not ready — stop and report it can't be reviewed yet |
| `changes-detected` | Needs a decision — fetch snapshots |
| `rejected` / `error` / `aborted`/ `expired` | Don't approve until the cause is understood |
2. **Fetch what changed** — `argos build snapshots <ref> --needs-review --json`.
For each diff inspect `url` (diff mask), `base.url` (before), `head.url`
(after), and `head.metadata`, plus the flakiness signals `test.metrics` and,
on a change, `change.occurrences` / `change.ignored` (used in step 3).
3. **Judge each diff** against the inferred intent:
- **Intentional** — matches the code change and renders cleanly.
- **Regression** — broken layout/overlap, clipping, wrong state/theme/route,
missing content, or a removed snapshot with no matching test removal.
- **Flaky** — weigh two independent signals; when they agree, call it flaky
with confidence:
- _Test history_ — `test.metrics.flakiness` (0 stable → 1 flaky) and
`change.occurrences` (how many times this **exact** diff has recurred over
the metrics period). A high flakiness score or a recurring change is strong
evidence the diff is environmental noise, not this PR's work; `stability`
(builds without a change), `consistency` (do changes repeat identically),
and `uniqueChanges` explain _why_ it scores that way. `change.ignored: true`
is already known-flaky and auto-approved — never read it as a regression.
- _This capture_ — a spinner/skeleton, async content not yet loaded,
mid-animation, drifting dynamic values, `head.metadata.test.retry > 0`, or
identical `score`/`head.url` across browsers (both captured the same
transient state). `retries` (the configured budget) is not itself a signal.
Conversely, a **stable** test (`flakiness`→0, high `stability`, a first-time
change) that changed is more likely intentional or a real regression — don't
dismiss it as flaky on the visuals alone. Tune the window with
`build snapshots --metrics-period <24h|3d|7d|30d|90d>` (default `7d`).
4. **Comment on specific diffs — the highest-value output of an agent review.**
A binary approve/reject is cheap; specific, anchored feedback is what makes an
agent review worth reading. For each problem diff, post a comment that names
what's wrong and how to fix it, anchored to that snapshot:
```bash
argos comment create <ref> --token <pat> --diff <screenshotDiffId> \
--body "Loader still visible — capture runs before data loads. Wait for settled content (or mark the loader aria-busy)."
```
- `<screenshotDiffId>` is the diff `id` from `build snapshots --json`.
- Pin to a region with `--anchor-lines <from,to>` or `--anchor-point <x,y>`
(normalized 0–1); reply in a thread with `--reply-to <commentId>`.
- Use `--draft` to bundle comments into your pending review, then submit them
together in the next step.
5. **Submit the review** (or report if no PAT is available):
- Approve: `argos review create <ref> --token <pat> --event approve`
- Request changes: `argos review create <ref> --token <pat> --event reject --body "<summary>"`
- Neutral note only: `--event comment --body "<summary>"`
- Add `--project owner/project` for build-number refs (not URLs).
- Silence a **confirmed recurring** flake so it stops blocking future builds:
`argos change ignore <change.id> --token <pat> --project owner/project`
(reverse with `change unignore`). Only ignore flakes the metrics confirm —
never to bypass a real diff; prefer a code fix
([references/flaky-fixes.md](references/flaky-fixes.md)) when one exists.
- Lead with the inferred intent, the snapshots reviewed, and the evidence. In
the PR, cite the build URL and affected snapshot names; for flakes, name the
signal and recommend a fix.
## References
- [references/baseline.md](references/baseline.md) — baseline selection and
orphan-build semantics (load when the review depends on which baseline was used).
- [references/flaky-fixes.md](references/flaky-fixes.md) — concrete code fixes for
flaky captures (`aria-busy`, `data-visual-test`, animation stabilization).
© argos-ci · MIT · argos-ci/argos-javascript