---
name: workflow-gerrit-fix
description: Workflow for automatically fixing errors or addressing comments on a Gerrit CL requested by the user.
---

# Gerrit Fix & Review Workflow

Use this skill when the user asks to "fix the errors on Gerrit issue X" or
"address reviewer comments on CL X" or similar requests targeting a specific
Gerrit Change List (CL).

## Core Principles

1. **Orchestration**: Do not do the work yourself. Break down the task and
   delegate to subagents.
2. **Parallelism**: Always identify at least two parallel tracks (e.g., fixing
   known errors vs. inspecting for other issues, or addressing different
   comments).
3. **Isolation**: Always operate in a dedicated worktree for the CL.
4. **Reproduction**: Always attempt to reproduce the failure locally before
   applying a fix, to ensure the fix is verified.

## Protocol

### 1. Information Gathering

- **CQ Results**: Use `gerrit_cq` (from `v8-utils`) to check Commit Queue
  status.
- **Presubmit Errors**: Use `gerrit_get_presubmit_errors` (from `pndMcp`) to
  fetch detailed presubmit results.
- **Comments**: Use `gerrit_comments` or `gerrit_list_change_comments` to read
  reviewer feedback or robot comments. This is critical when the goal is to
  address reviewer comments.

### 2. Workspace Setup

- **Worktree**: Create a new isolated worktree using
  `agents/scripts/create_worktree.sh <cl_id>` for the CL to avoid polluting the
  main workspace.
- **Checkout**: Patch the CL in the new worktree (e.g., `git cl patch X`).
- **Rebase**: Rebase the branch to `origin/main` to ensure it builds against the
  latest code.

### 3. Reproduction & Triage

- **Reproduction**: Instruct the subagent to reproduce the failure locally
  (e.g., run the failing test or compile target) to confirm the issue and
  provide a baseline for verification.
- **Triage & Delegation**: Break down the identified errors or comments and
  delegate them to subagents.
  - **Track A (Fix/Address)**: Delegate the fixing of reported errors or
    addressing specific reviewer comments to a `self` subagent with full tool
    access.
  - **Track B (Scan/Verify)**: Delegate a scan of other modified files or
    running local tests to ensure no other issues were introduced.

### 4. Verification

- **Local Build/Test**: Instruct the subagent to verify that the fix compiles
  locally and the reproduced failure is now resolved.
- **Upload**: Once verified locally, upload a new patchset using
  `agents/scripts/upload_cl.sh cur check "<what you changed>"` to Gerrit to run
  the remote checks or ask for re-review.

## Example: Fixing Errors

If the user says "fix errors on CL 12345":

1. Call `gerrit_cq` for CL 12345.
2. Identify that `v8_linux64_rel` failed with failing tests.
3. Create worktree `worktrees/cl-12345` and checkout CL.
4. **Spawn Subagent A to reproduce the failing tests locally.**
5. Spawn Subagent A to fix the failing tests.
6. Spawn Subagent B to check other modified files for potential issues.
7. Once Subagent A reports success and verification (tests pass), report to user
   and ask if you should upload.

## Example: Addressing Comments

If the user says "address comments on CL 12345":

1. Call `gerrit_comments` for CL 12345.
2. Identify a comment requesting a refactor in `src/objects/lookup.cc`.
3. Create worktree `worktrees/cl-12345` and checkout CL.
4. Spawn Subagent A to perform the refactor as requested.
5. Spawn Subagent B to verify it compiles and run relevant unit tests.
6. Once Subagent A reports success, report to user and ask if you should upload.
