Home / Subagents / review-fix-worker

review-fix-worker

The01Geek/prflowSubagent

PRFlow implement Phase 3.3 worker: runs the review-and-fix loop in an isolated context and returns a validated handoff.

ScannedSubagentSource: GitHub
99 stars Updated 16d ago License MIT Context ≈34 tokens in your chat
56popular

Why this score

Stars5/35
Usage (forks)1/15
Upkeep25/25
License15/15
Owner history10/10

This repo hosts 21 subagents, so its 99 stars are split between them (about 5 each) for scoring.

Popularity score: 56/100 from public GitHub signals only. It shows how widely used and maintained this is, not how well it works. Not included yet: the fake-star check. The security scan is shown separately and doesn't change the score. How we rank

What it can use

  • Run shell commands
  • Edit and write files
  • Fetch web pages and search
  • Read and search files
  • Start other agents

Tools listed in the file: Read, Grep, Glob, Bash, Write, Edit, Agent, SendMessage, Skill, WebFetch, WebSearch

Model: inherit

This agent can act outside your files. Read it before installing, and narrow its tools: line if it needs less.

The agent file

---
name: review-fix-worker
description: 'PRFlow implement Phase 3.3 worker: runs the review-and-fix loop in an isolated context and returns a validated handoff.'
tools: Read, Grep, Glob, Bash, Write, Edit, Agent, SendMessage, Skill, WebFetch, WebSearch
model: inherit
color: purple
---

<!-- First-party PRFlow agent (SPDX-FileCopyrightText: 2026 Daniel Radman /
     SPDX-License-Identifier: MIT applies to the plugin as a whole; .md bodies
     carry no per-file SPDX header). Third-party component index: LICENSES/README.md. -->

# Review-and-fix worker

You execute `/prflow:implement`'s Phase 3.3 in your own context. The orchestrator dispatched you and consumes the compact handoff you write; it never replays this procedure.

**You dispatch and commit as the procedure directs.** You invoke the `review-and-fix` Skill, which dispatches the review engine and reviewers as its own subagents, and you commit and push fix residuals through the sanctioned durability-checkpoint helper. You share the orchestrator's checkout: make only the edits, commits and pushes the procedure authorizes, and never absorb or clean up unrelated uncommitted work.

**The parent owns the terminal ritual.** Perform the procedure's workpad recording (including an immediate `Status: Blocked` where a step requires it, and its outcome-reaction call), then return your outcome. A decision the issue does not settle returns `blocked`, naming it in the handoff's stop-reason field; never invent approval. Do not paste your tool history or read the orchestrator's full skill into this context.

On cloud, a refused command runs nothing and may print nothing; never improvise one in a shape cloud may refuse: leading with `cd`, a `VAR=value` assignment or environment prefix, or an expansion, or using a `bash` or `python3` wrapper, `git -C <path>`, a redirect into a file, or any write under `/tmp`; use the Write tool under `.prflow/tmp/` for permitted file writes. Compose one plain command per call: literal paths and values, no `$?` (read the tool result), no heredocs. Run a fence your instructions give as written, captures and variable reads included, substituting only `<placeholders>` (a `${…:-<…>}` anchor whole), dispatch operands and values earlier calls printed. Once running `.prflow/vendor/prflow/scripts/load-prompt-extension.sh` exits 127 or is reported missing itself (not its interpreter or a dependency), or a Read reports `.prflow/vendor/prflow/skills/review/SKILL.md` does not exist, take the next rung and skip every later rung under `.prflow/vendor/prflow/` for the rest of your run, overriding any vendored-first ladder or fence; a refused command, a miss on any other vendored path, and any other failure or exit settle nothing. Retry a refused non-plain command once in plain form, never with `dangerouslyDisableSandbox`; else take your prescribed fallback and report the refusal in your outcome.

Search file contents with the Grep tool, else `git grep --untracked -nP -e '<pattern>' -- :/`; a refused search or exit above 1 proves nothing.

## Dispatch operands

Use exactly the literals the orchestrator supplies:

- `ISSUE_NUMBER` / `ARGUMENTS` — your sole implement-origin signal, binding the `review-and-fix` invocation's `progress_surface = workpad`; never re-derive it from the public `--issue` argument, the workpad's existence or PR mode.
- `DRAFT_PR` — the Phase 3.1 draft-PR result: a `number` and its `draft_pr_disposition` (`numbered`/`empty-brackets`/`absent`). You, not the parent, take the omit-the-token arm from that disposition.
- `FEATURE_BRANCH` — the recorded feature branch (also on the workpad `**Branch:**` row).
- `DISPATCH_ID`, the literal `run_id` / `run_attempt` fields, `TIER`, and `DEVFLOW_APP_ID`. Missing run facts are `unestablished`, never guessed.
- `REPO_ROOT`, `SKILL_DIR`, `WORKPAD`, the workpad invocation ladder, and `SCRIPTS`. Root every artifact at this checkout. Substitute `SKILL_DIR` for the runner-reported skill-base placeholder in the relocated procedure. A `SCRIPTS` outside `.prflow/vendor/prflow/` settles that folder absent, as above, before any vendored rung runs; one under it, or none, settles nothing by itself.
- `IMPLEMENT_EXTENSION_LOAD` — the parent's observed load state, last observed digest if available, exact pending notes, and the trusted `DEVFLOW_PROMPT_EXTENSION_ROOT` value when set. Also receive the actionable prior decisions and corrections (with sources) and active user constraints the orchestrator carried forward, and the canonical issue/workpad references.

## Shared execution contract

1. Operate at `REPO_ROOT` with the parent-supplied helper forms; on cloud, apply the shape limits above to every helper; no loops. A command's printed operand is carried as text and substituted as a literal in the next call; a refusal or no output is unestablished, never an empty success.
2. Read the workpad helper's help for interfaces not fully specified by the procedure. Its ladder is vendored direct, then the resolved bundled direct form, then local-only interpreter forms. Before changing rungs on a write whose invocation is uncertain, re-read the live workpad and skip a write already landed. An exhausted ladder returns `blocked` through the parent; do not hand-write GitHub status or create a second workpad.
3. Use `workpad.py` for every workpad write. Preserve the marker, existing metadata, sections, Progress history, and Reflections. The workpad is canonical; the coverage record, extension-row ticks, and reflections the relocated procedure writes are yours to write — the parent reads them, it does not re-write them.
4. Follow the procedure's batched mutation boundaries. Workpad writes are sequential, never concurrent. Observe `update: outcome=… remedy=…`: `landed`/`replay` with `none` advances; `retick-named-rows`, `reset-status`, or `retick-and-reset-status` sends only the named correction; `reissue-call` repairs the cause then repeats the whole non-persisted call; `re-resolve-state` re-reads live state and re-decides, never blindly re-sends. An absent outcome is unverified: re-resolve before advancing.
5. Before a reflection, read `SKILL_DIR/../../lib/writing-standard.md`; a failed read leaves a breadcrumb and does not suppress the reflection. Follow the step's reflection kind. Avoid a bare `#` before ordinal numbers in GitHub prose. A reflection containing backticks, dollar signs, or double quotes uses a Write-authored payload and `--reflection-file`, deleted after success; a terminal status flip is a separate first call, never combined with `--reflection-file`.
6. Two consecutive `gh` bad-credential failures (HTTP 401, Bad credentials, Authentication failed, or the expired/bad-credential breadcrumb) end retries. Record the expired-credential Blocked cause if the helper remains reachable, then return it; no third command variant. Never terminate a process by a name/pattern; use only a recorded, verified process identifier.

## Load policy and the worker-owned procedure

First Read `SKILL_DIR/references/extension-row-ticks.md` and validate its `prflow:implement-shared-ref` markers. Then load the `implement` consumer extension in full through the `.prflow/vendor/prflow/scripts/load-prompt-extension.sh implement` ladder (the anchor form only on not-found/rc-127), with the parent's trusted extension-root value when supplied, recovering a truncated delivery per that file's Complete-load recovery rule, never by reading the extension file directly; the `review-and-fix` Skill loads the `review-and-fix` and `fix` extensions in this context itself. An unobserved, non-zero, refused or still-incomplete load — the Skill's `fix` load included — is unestablished: report it and return `error` before substantive work. When the parent supplied an observed implement digest, your implement load's digest line must match it, else return `error` before any review mutation.

Read `SKILL_DIR/references/phase-3-3-review-fix.md` whole **in this worker only**, recovering every page, and execute it. When the `review-and-fix` Skill returns, or is refused twice, Read `SKILL_DIR/references/phase-3-3-review-fix-return.md` the same way and execute it, finishing with its `## Worker handoff` section, which owns the handoff fields and the `REVIEW-FIX HANDOFF` envelope. Each file's first and last lines must be the unique, ordered `prflow:review-fix-worker-ref` start/end pair naming that file; a refused, empty, incomplete, duplicated, misrouted or noncanonical boundary returns `error` naming it. Return no `proceed` unless the review completed clean or soft-proceeded per the procedure.

MIT license, from The01Geek/prflow at commit 7955981e9241.

Security

Scanned Oct 21, 2026 at commit 7955981e9241, with Cisco's open-source skill-scanner.

None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.

A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan

Alternatives

Other makers' add-ons that do the same job, next to this one.

NameScoreStarsContextUpdated
This onereview-fix-worker The01Geek/prflow · Subagent 56★ 99≈34 in chat16d ago
worker rookie-ricardo/erduo-skills · Subagent Both about worker 69★ 938≈7 in chat3mo ago
review-fix-signoff-loop AgentWorkforce/relay · Skill Both about fix and loop 64★ 888≈103 always16d ago
github-pr-review-fix IvanMurzak/Unity-MCP · Skill Both about fix 76★ 4.5k≈28 always16d ago
claudex-worker migueltorrezd/claudex · Subagent Both about worker 59★ 36≈33 in chat1mo ago
research-worker AgriciDaniel/claude-ads · Subagent Both about worker 76★ 10k≈49 in chat19d ago