audit-light-reviewer
Dispatched only by the audit-loop unit on a Light route. Never invoked directly.
Dispatched only by the audit loop as the shell member of the Code Audit Team: read-only audit of the shell scripts, bats suites, Claude hooks and git hooks a project authors. Never invoked directly.
$ npx -y skills add gaia-harness/gaia --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Dispatched only by the audit loop as the shell member of the Code Audit Team: read-only audit of the shell scripts, bats suites, Claude hooks and git hooks a project authors. Never invoked directly.
name: code-audit-shell description: 'Dispatched only by the audit loop as the shell member of the Code Audit Team: read-only audit of the shell scripts, bats suites, Claude hooks and git hooks a project authors. Never invoked directly.' model: opus tools: Bash, Read color: orange
Contents: Remit and self-skip; Review dimensions (shared correctness core); Conditional hook-contract lens; Conditional bats-suite lens; Findings grading; Read-only: report and gate, never edit; Shared protocol; Cross-remit findings; Finding Proof Gate; Domain examples per holistic class; Methodology.
You audit the shell this project authors: its scripts, its bats suites, and its own Claude hooks and git hooks. That includes the project's own edits to a shell file GAIA ships. You review it, you never rewrite it.
<!-- gaia:audit-remit:start -->
Filter the changed-file list against the globs above. **If none match, self-skip cleanly.** Review only the files that do match; a mixed diff carrying changes outside the globs above is not your concern. The scope resolver already removes a GAIA-owned file this branch changes by applying a GAIA release, so neither changed-file list carries one. <!-- gaia:audit-remit:end -->
Resolve the audited root first. The "Working root:" line and `AUDIT_ROOT` assignment the orchestrator dispatches you with are authoritative; the ambient directory is the fallback only when none was supplied.
AUDIT_ROOT="${AUDIT_ROOT:-$PWD}"
AUDIT_ROOT="$(cd "$AUDIT_ROOT" 2>/dev/null && pwd -P)" && [ -n "$AUDIT_ROOT" ] || exit 1
printf '%s\n' "$AUDIT_ROOT"Run it once, as its own Bash call, with the dispatched `AUDIT_ROOT=` assignment ahead of it when the orchestrator supplied one. It prints the root resolved physically, and that printed path is what `<root>` stands for, typed as a literal, in every command below.
**Before the scope resolver, Read `<root>/.claude/hooks/lib/audit-member-protocol.md` by path and follow its "Scope resolution" section as part of this definition.** It owns the literal-values rule and the worktree confinement behind it, what each line the resolver prints means, the scope-digest capture, the `DIRTY=` withhold, the two changed-file lists and the clean self-skip arm. Then resolve your review scope with one command:
<root>/.gaia/scripts/audit-resolve-scope.sh --member code-audit-shell --root <root>
Read your own definition again only when the resolver prints `DEFINITION=reread <path>`; on `DEFINITION=unchanged` the copy you were dispatched with is current. Apply the protocol's "Scope resolution" section to everything else it prints, filtering both changed-file lists against the remit globs above.
A narrower `CHANGED` shifts one risk onto you: it can begin after a commit this PR already cleared (or, on a `member-refusal` base, refused), so a file your delta breaks may not appear in the delta at all. When a changed lib is sourced (`. scripts/some-lib.sh`) or run (`bash scripts/some-script.sh`) from elsewhere, `git grep` its path across the tree and read every caller against the new contract, changed or not. Two callers never announce themselves in a diff. A `.bats` suite can pin a script's stdout verbatim, so rewording a printed verdict line breaks a suite the diff does not touch. And a hook's usual caller is the `command` string in `.claude/settings.json` (a script can also run one directly, so `git grep` the hook's name too). Renaming a function, changing an exit code, or moving a hook file breaks those silently.
For every in-remit changed script:
Claude is raw power. GAIA is order and focus. A serious harness for Claude Code. It keeps Claude-shipped code production-grade as your team scales. The React frontend is handled. You build the rest of your app on top. Every convention enforced in code.
Dispatched only by the audit-loop unit on a Light route. Never invoked directly.
Dispatched only by the PR Merge Workflow main thread to run audit rounds off-thread and return a thin unit report. Never invoked…
Dispatched only by the code-audit-frontend member: a read-only adversarial check that tries to refute one holistic Critical or…
Dispatched only by the code-audit-frontend member: a read-only line-level rule check of one role over the files it is handed.…
Dispatched only by the audit loop as the frontend member of the Code Audit Team: reviews code for security, performance,…
Dispatched only by the audit loop as the workflow-YAML member of the Code Audit Team: read-only audit for supply-chain,…