---
name: validate-agent-work
description: Use when finishing any change to this repository, or when the user says "validate", "check my work", "run checks", or "verify changes". Also use automatically after adding a feature, fixing a bug, or editing Go, Python or documentation here.
---

# Validate Agent Work

The rules live in [AGENTS.md](../../../AGENTS.md) and
[CONTRIBUTING.md](../../../CONTRIBUTING.md); this is the order to check them in
before handing work back.

## Steps

1. **See what changed** — the branch against `main`, and whatever is not
   committed yet:

   ```bash
   git diff --name-only main...HEAD
   git status --short
   ```

   Stage nothing: every check below runs over the whole module, and the index
   is the user's to decide.

2. **Run the gate:**

   ```bash
   make check
   ```

   `fmt` runs first and rewrites files, so re-read one before editing it again.

3. **Comment pass** — the `## Comment pass` in
   [`.claude/rules/comments.md`](../../rules/comments.md), over the comments
   this change added or touched.

4. **Read the diff against the mandatory rules in AGENTS.md** — the language,
   commit, type, script and comment rules, and the "Working here" list. The
   linter checks none of them. Two need a search rather than a read: a field,
   method or constant added without a reader in the same change, and a probe
   whose finding has not reached `docs/architecture/herdr-socket-api.md`, which
   is the record — `AGENTS.md` takes it only if it misleads the code in
   silence.

5. **Check nothing was left running:**

   ```bash
   make ps
   ```

6. **Fix and re-run** — fix what a step found, then run that step again to
   confirm it. If a failure is not yours to fix, say so rather than working
   around it.

7. **Report** — always say what happened:

   - Clean: a brief confirmation.
   - Found and fixed, one line each:

     ```
     Validation found and fixed 3 issues:
     - golangci-lint: unused parameter in resolver.qualify
     - Comments: dropped a caller note in app/reads.go
     - Type rule: removed PaneInfo.Cols, which nothing read
     ```

   - Still broken: what is wrong and why you could not fix it.

`make check` is the whole gate on this machine, but CI also builds and tests on
the Go floor `go.mod` names and on macOS — see CONTRIBUTING's "Pull requests".
The user should never be surprised by a failure that could have been caught
here.
