---
id: 11105
title: 'pull-request skill: add author-side check that reviewers use correct pr-review template'
state: CLOSED
labels:
  - enhancement
  - ai
  - model-experience
assignees:
  - neo-opus-ada
createdAt: '2026-05-10T12:59:26Z'
updatedAt: '2026-05-10T13:35:59Z'
githubUrl: 'https://github.com/neomjs/neo/issues/11105'
author: neo-opus-ada
commentsCount: 0
parentIssue: null
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-10T13:35:59Z'
---
# pull-request skill: add author-side check that reviewers use correct pr-review template

### Context

PR #11104 (github-workflow MCP boot fix) review cycle, 2026-05-10. Empirical anchor:

1. **Reviewer (Gemini) rubber-stamped first** — posted custom "Substrate Review (LGTM / L2-Verified)" 4-section format (Context & Fit / Diff Verification / Posture / Decision). Substantively positive but **NOT** the `pr-review-template.md` cycle-1 structure.
2. **Author (Opus) accepted the rubber-stamp** — A2A'd Gemini about a *mechanical* state-flag issue (LGTM-comment vs `gh pr review --approve`) but never audited the *structural* template-adherence issue.
3. **Operator @tobiu caught it externally** — pushed back on Gemini that the pr-review skill template wasn't followed. Gemini then posted a proper `pr-review-template.md` cycle-1 structured review.

> "i challenged gemini, that we did not use the pr review skill, but rubber stamped it. not the right template. a 1-liner inside our pull request skill, that the author needs to check if reviewers use the correct template could help." — @tobiu

### The Problem

Asymmetric obligations across skill payloads:

| Skill | Tells | About |
|---|---|---|
| `pr-review` | REVIEWERS | Cycle-1 use `pr-review-template.md`; Cycle ≥2 use `pr-review-followup-template.md` |
| `pull-request` | AUTHORS | PR creation discipline (commit format, body shape, cross-family review request) |
| **(missing)** | **AUTHORS** | **Verify at PR-review-receipt time that reviewer used the correct template** |

Without the bridge, the only template-adherence gate is reviewer-self-discipline. When the reviewer skips it (whether through MCP-tool-misroute, custom-format preference, or skill-payload non-adherence), nothing in the substrate catches it — except external operator-pushback. That's friction → gold raw material: substrate should self-correct, not require operator-policing.

Same family as [#11102](https://github.com/neomjs/neo/issues/11102) (epic-resolution Verdict-Authority asymmetry between assignee and consensus-peer). Author/reviewer obligations need to be codified symmetrically across skill payloads.

### The Fix

Add a 1-liner author-side check to `pull-request-workflow.md` at the PR-review-receipt step:

```diff
+## Reviewer template-adherence check
+
+When a review lands on your PR, verify the reviewer used the correct
+template before treating the review as substantively complete:
+- **Cycle 1**: review must follow `pr-review-template.md` structure
+  (Strategic-Fit Decision, Depth Floor, Graph Ingestion Notes, [...])
+- **Cycle ≥2**: review must follow `pr-review-followup-template.md`
+  (compact delta-only shape)
+
+If the review uses a custom or simplified format, A2A the reviewer
+to redo via `/pr-review` per the skill payload. Substantive content
++ wrong shape = template-adherence Required Action; do not merge-eligible
+the PR until shape is correct.
```

Exact placement: in the `pull-request-workflow.md` cycle-2-handoff / review-response section. PR diff + sibling audit during implementation.

### Acceptance Criteria

- [ ] `pull-request-workflow.md` patched with the author-side reviewer-template-adherence check (1-liner expanded to 2-3 lines for cycle-1 vs cycle ≥2 distinction; not actually 1 line of payload, but conceptually 1 substrate primitive)
- [ ] Sibling audit: `pull-request/SKILL.md` frontmatter mentions the check at trigger language
- [ ] Cross-reference audit: `pr-review-guide.md` references the new author-side check (so the symmetry is bidirectionally documented)
- [ ] Empirical validation: next review cycle on any PR — author runs the check and either confirms shape OR A2As reviewer

### Out of Scope

- Mechanical template-adherence linting via CI (nice-to-have but not in this surgical fix's scope; would be a follow-up substrate-CI ticket)
- Modifying `pr-review-template.md` / `pr-review-followup-template.md` themselves — they are correct shape; the gap is bridge enforcement, not template content
- Expanding to other skill-payload bridges (epic-resolution / ticket-intake / etc.) — file separate tickets per skill if friction surfaces

### Avoided Traps / Gold Standards Rejected

#### Decision Matrix

1. **1-liner author-side check in pull-request-workflow.md (Selected):** Bridges the missing author/reviewer obligation symmetry. Lowest-overhead, lowest-blast-radius fix. Caught at PR-review-receipt time = before merge-gate signal. Aligns with @tobiu's proposed shape.
2. **Reviewer-side self-check before submission:** Rejected. Already implicit in `pr-review` skill payload via "Cycle 1 (new review): load pr-review-template.md ..." instruction. The friction is reviewer-side non-adherence; adding a redundant self-check doesn't fix it (the missing check is on the OTHER side of the handoff).
3. **Both author AND reviewer check at handoff:** Rejected. Duplicate effort; single-side check is sufficient. Author-side is the right side because the author has merge-eligibility responsibility.
4. **CI lint for template structural markers:** Rejected as out-of-scope. Substrate-quality CI is over-engineering for this friction observed once in this empirical anchor; revisit if pattern repeats.
5. **Add to `peer-role` skill instead:** Rejected. `peer-role` fires when a peer is reviewing; this check fires when an author RECEIVES a review. Wrong skill.

- **Trap:** Treating substantive content as sufficient gate. **Rejection:** Substantive LGTM with wrong template = unstructured signal that bypasses the graph-ingestion daemon's structural markers. Substantive content + wrong shape = partial-quality graph data per `feedback_pr_review_template_discipline`.
- **Trap:** Letting operator-pushback be the substrate gate. **Rejection:** Substrate should self-correct via codified peer-V-B-A; relying on operator-policing is the friction the MX loop converts to gold.

### Related

- PR #11104 (canonical empirical anchor — the rubber-stamp that surfaced the gap)
- #11102 (sibling: epic-resolution Verdict-Authority asymmetry — same author/reviewer obligation gap, different skill)
- `feedback_pr_review_template_discipline` MEMORY.md entry (graph-ingestion daemon regex-matches template section structure; non-template reviews degrade graph quality)
- `feedback_swarm_pr_review_routing` (single-peer review routing — orthogonal but related to review handoff discipline)
- AGENTS.md §13.2 friction → gold (this ticket is the conversion artifact for the rubber-stamp friction)

Origin Session ID: c2912891-b459-4a03-b2af-154d5e264df1
Retrieval Hint: "pull-request skill author-side reviewer-template-adherence check", "rubber-stamp PR review", "author/reviewer obligation symmetry"

## Timeline

- 2026-05-10T12:59:27Z @neo-opus-ada assigned to @neo-opus-ada
- 2026-05-10T12:59:27Z @neo-opus-ada added the `enhancement` label
- 2026-05-10T12:59:28Z @neo-opus-ada added the `ai` label
- 2026-05-10T12:59:28Z @neo-opus-ada added the `model-experience` label
- 2026-05-10T13:02:51Z @neo-gemini-pro cross-referenced by PR #11106
- 2026-05-10T13:14:56Z @neo-opus-ada cross-referenced by #11107
- 2026-05-10T13:17:06Z @neo-gemini-pro referenced in commit `7e6d893` - "feat(skill): add author-side reviewer template adherence check (#11105) & fix openapi path"
- 2026-05-10T13:27:37Z @neo-gemini-pro referenced in commit `f4a6611` - "docs(skill): polish template adherence wording (#11105)"
- 2026-05-10T13:35:28Z @neo-opus-ada cross-referenced by #11110
- 2026-05-10T13:35:59Z @tobiu referenced in commit `3cff1b2` - "feat(skill): add author-side reviewer template adherence check (#11105) (#11106)

* feat(skill): add author-side reviewer template adherence check (#11105) & fix openapi path

* docs(skill): polish template adherence wording (#11105)

---------

Co-authored-by: neo-gemini-pro <neo-gemini-pro@users.noreply.github.com>"
- 2026-05-10T13:35:59Z @tobiu closed this issue
- 2026-05-10T14:11:46Z @neo-opus-ada cross-referenced by #11116
- 2026-05-10T15:48:07Z @neo-opus-ada cross-referenced by #11124
- 2026-05-10T16:14:54Z @neo-opus-ada cross-referenced by #11128
- 2026-05-10T16:26:25Z @neo-opus-ada cross-referenced by #11133

