From amux
Creates an agent team of parallel dual-engine code reviewers on your git diff, aggregates findings by severity, and fixes critical/high issues. Each reviewer cross-validates with Codex via MCP. Run after implementing a feature or before committing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/amux:code-review-pipelineThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<objective>
<quick_start>
/code-review-pipeline after making code changescodex MCP tool<when_to_use> Use when:
Don't use when:
| File pattern | Reviewers worth considering |
|---|---|
.svelte, .tsx, .jsx, .vue, .html, .css | code, test |
.ts, .js, .py, .rs, .go | code, test, docs |
| Changed public API, config, env vars, CLI flags | docs |
The code reviewer is the generalist — it covers correctness (bugs, logic, security, error handling), structure (coupling, cohesion, API surface), and framework best-practices in one pass. Dispatch it for any non-trivial code change.
Category → teammate role:
| Category | Teammate role |
|---|---|
| code | core:review-implementation |
| test | core:review-tests |
| docs | core:review-docs |
Spawn the reviewers you selected in DIFF.
Announce: "Dispatching reviewers: {list}. Each reviewer will cross-validate with Codex via codex MCP tool."
Spawn all applicable reviewers as teammates in a single request. Use Opus for each teammate.
For EACH teammate, provide:
git rev-parse --show-toplevel)Instructions for each teammate. Build the prompt from the diff context plus the two shared blocks below (<collab_standard> and <tools_menu>) — the agent definitions reference these rather than restating them, so they must be injected here:
You are a {reviewer-role} teammate. Review the following code changes. Return your findings as JSON per your agent definition's output schema.
## Repository root
{repo_root}
## Changed files
{file_list}
## Diff
{diff_content}
{collab_standard}
{tools_menu}
<collab_standard>
After your Claude review, get a second opinion from Codex and merge.
codex MCP tool with model: gpt-5-codex, sandbox: read-only, cwd: {repo_root}. Prompt: include the diff + file list, ask for findings as JSON (fields severity, confidence, file, line, issue, recommendation, category) using @ repo-relative file refs (e.g. @src/auth.ts) resolved via cwd."Codex CLI Not Found"). If unavailable, return Claude-only findings with crossValidated: false and "engines": ["claude"].file + line (±3) + semantic similarity:
crossValidated: true, confidence = max(claude, codex) + 10 (cap 100)severityDispute: truecrossValidated: false
</collab_standard><tools_menu>
resolve-library-id, query-docs) — current library/framework API docs and deprecationslistResources, ask) — source-level patterns in indexed codebases; ask about conventions/structure, not API signaturesFor each critical/high finding:
Report as suggestions in a summary table:
## Review Summary
**Reviewers dispatched:** code, test (Opus, dual-engine)
**Files reviewed:** 5
**Findings:** 2 critical, 1 high, 3 medium, 1 low
**Cross-validated:** 2 findings confirmed by both Claude and Codex
### Cross-Validated (both engines agree — moderate-confidence, not ground truth)
- [critical] src/auth.ts:42 — SQL injection via string interpolation (AGREE)
- [high] src/api.ts:15 — Uncaught promise rejection (AGREE)
### Disagreements (one engine challenged the other — highest-value to inspect)
- src/cache.ts:30 — Claude: high (race on concurrent writes); Codex: low — verify before dismissing
- src/parse.ts:8 — Codex-only: off-by-one on empty input (Claude missed it)
### Fixed (Critical/High)
- [critical] src/auth.ts:42 — SQL injection via string interpolation -> switched to parameterized query
- [high] src/api.ts:15 — Uncaught promise rejection -> added try/catch
### Suggestions (Medium/Low)
| Severity | Agent | File | Line | Issue | Recommendation | Engines |
|---|---|---|---|---|---|---|
| medium | code | src/utils.ts | 23 | Potential null dereference | Add null check | claude |
| medium | code | src/utils.ts | 25 | Missing boundary check | Validate input range | codex |
| low | code | src/config.ts | 8 | Magic number | Extract to named constant | claude, codex |
### Stale Documentation
- [high] README.md:42 — `AUTH_SECRET` env var renamed to `JWT_SECRET`
- [medium] docs/api.md:15 — Missing `/auth/refresh` endpoint from API reference
### Missing Tests
- Test error path when fetchUser throws in src/auth.ts:42
- Test empty array input in src/utils.ts:23
If no findings above confidence threshold: report "Review complete — no issues found."
Write the same summary (fixed, suggestions, disagreements, stale docs, missing tests) to reviews/{branch}.md, where {branch} is git rev-parse --abbrev-ref HEAD. Re-reviewing the same branch overwrites it. This keeps deferred medium/low findings from evaporating when the chat scrolls, and gives the standalone review-code agent a record to read alongside plans/{slug}/.
<error_handling>
| Error | Action |
|---|---|
| Teammate returns malformed JSON | Log warning, continue with other teammates |
| Teammate times out | Log warning, continue with other teammates |
| No git diff available | Report "No changes to review" and stop |
| All teammates fail | Report error, suggest running individual reviewer manually |
codex unavailable, empty, or error text | Teammate returns Claude-only findings ("engines": ["claude"]), pipeline continues |
| </error_handling> |
npx claudepluginhub guyathomas/workflows --plugin amuxCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.