Use to obtain and record the independent review round AGENTS.md's Mandatory Workflow requires, performed by a read-only reviewer that did not write the change.
Install
npx skillscat add workin-hr/hr-platform/independent-review Install via the SkillsCat registry.
Independent Review
Canonical Instructions
Read and follow repository-root AGENTS.md; this skill narrows that contract and never overrides it.
This skill performs the gate D-226 defines. It does not weaken it and does not grant permission to skip it: if any precondition below is unmet, the skill stops, and the merge waits.
Description And Trigger
Use for every pull request that needs its independent review round, unless a round from chatgpt-codex-connector[bot] already covers the exact head — those still count (D-226).
Do not use it to review your own work. The reviewer this skill dispatches must have had no hand in the change; if no such reviewer can be obtained, the gate is unavailable and the merge waits. D-222 governs merging past the gate for active harm and is unaffected by this skill.
Inputs
- The pull request number.
- Its exact head SHA, frozen: nothing may be pushed between the review and the merge.
- The diff under review, as GitHub reports it against the pull request's current base.
Preconditions
- The head is frozen and matches what will merge.
validate(andtestwhere the path filter runs it) is green on that exact head.- Zero unresolved review threads from earlier rounds, or each carries a recorded disposition.
- The independent reviewer has no authorship, implementation, generation, or repository-write involvement in this change, on any branch. An agent that wrote the diff cannot review it by later running read-only; that is the same actor twice.
- The reviewer is read-only: no write tools, no ability to push, comment, or merge.
Ordered Workflow
- Freeze the head. Re-read it from GitHub rather than trusting a local value.
- Dispatch a read-only reviewer with no prior involvement in the change. Give it the pull request number and the frozen head SHA, not a diff you selected -- it fetches the diff itself and echoes the SHA and file count it actually read, so a partial or wrong-commit diff cannot pass unnoticed. Do not tell it what you believe is correct.
- Post every finding it returns verbatim to the pull request, including findings you dispute — state the dispute as a reply, never by omission.
- Reproduce each finding independently before acting on it. Fix what reproduces; answer what does not, with the evidence that disproves it.
- Add a discriminating regression test for each behavioural fix, and prove it discriminates by reverting the fix and observing the test fail.
- Re-run the focused suites, and the full suite where the blast radius warrants it.
- Post the evidence block from Required Outputs as a single comment.
- Hand the pull request to the owner for merge. Never merge it yourself.
Required Outputs
One comment on the pull request containing:
- the exact head SHA;
- the independent reviewer's identity and confirmation it holds no write access to the branch and did not author the change;
- the reviewer's complete unedited output, as a fenced block, separate from your dispositions -- "posted verbatim" is otherwise unverifiable and an omission is undetectable;
- every finding and its disposition — fixed with a commit SHA, or answered with evidence;
- what remains unverified relative to a real round, stated plainly;
- a link to D-226.
The comment must open with this block, exactly. It is not decoration: the gate
and the disposition check match these literals, and a comment without them
records no round at all -- independent-review stays red on a head that was
reviewed, and the operator is left reverse-engineering the marker from the
workflow.
independent-review-round: agent
head: <the full 40-character head SHA>Both lines start at column 1. An indented or fenced copy does not count, so
that a comment quoting this protocol -- a review of the gate itself -- cannot
claim a round on the pull request it is quoting.
The round must be recorded by someone with write access to the repository --admin or write from the collaborators permission API, which is what the gate
reads (D-228) -- because the reviewer is read-only and cannot post. It is
deliberately NOT author_association: that value is derived from organisation
membership visibility as well as access, so a repository admin whose membership
is private reads as CONTRIBUTOR to the workflow's own token and the round is
not counted. Do not edit the comment afterwards: an edited comment is not
counted, since the body it would be counted on is not the body that was posted.
If the head moves, post a new round.
Each finding goes in its own review thread whose first comment carries:
finding-of: independent-review-agentA round that found nothing declares it, on its own line, in the round comment:
findings: noneSilence is not a disposition: a claimed round carrying neither a marked finding
nor this declaration fails scripts/check-review-dispositions.sh rather than
passing quietly.
Evidence
- Commit SHAs for each fix, and the revert-proof that each new test discriminates.
- Focused suite results on the final head.
- The pull request's gate states at the moment of handoff:
validate,testwhere applicable,independent-review, and the unresolved-thread count read from the API rather than assumed.
Validation Checklist
- The head that was reviewed is the head that will merge.
- The independent reviewer wrote none of the change under review.
- Every finding is on the pull request verbatim, disputes included.
- Every behavioural fix has a test proven to fail without it.
- The evidence comment names what is unverified, not only what passed.
- The unresolved count was re-read after resolving, not inferred from the mutation result.
- The round comment opens with
independent-review-round: agentandhead: <40-hex>, both at column 1. - Every finding thread's first comment carries
finding-of: independent-review-agent. - A clean round declares
findings: noneon its own line in the round comment. - The round comment has not been edited since it was posted.
- The merge is left to the owner.
Failure Conditions
Stop and report rather than continuing when:
- the head moves after the review — the round is now about a different commit;
- the only available reviewer had a hand in writing the change;
- a finding reproduces and cannot be fixed within the pull request's scope;
validateortestis not green on the exact head;- the reviewer's independence cannot be established from evidence.
Escalation Conditions
Escalate to the repository owner, and do not decide alone, when:
- a finding implies a schema, contract, or governance change beyond the pull request;
- the substitute review disagrees with an earlier round from the named reviewer;
- following this procedure would require merging your own work.
Forbidden Behavior
- Reviewing a change you authored, or dispatching a reviewer that authored it.
- Summarising findings instead of posting them verbatim.
- Resolving a thread without a recorded disposition.
- Merging the pull request.
- Presenting this round as equivalent to one from a fully independent external service. D-226 records why it is weaker; the evidence comment must not imply otherwise.