ln-513-agent-reviewer
Original:🇺🇸 English
Translated
Worker that runs parallel external agent reviews (Codex + Gemini) on code changes. Background tasks, process-as-arrive, critical verification with debate. Returns filtered suggestions with confidence scoring.
2installs
Added on
NPX Install
npx skill4agent add levnikolaevich/claude-code-skills ln-513-agent-reviewerTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Paths: File paths (,shared/,references/) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.../ln-*
Agent Reviewer (Code)
Runs parallel external agent reviews on code implementation, critically verifies suggestions, returns filtered improvements.
Purpose & Scope
- Worker in ln-510 quality coordinator pipeline (invoked by ln-510 Phase 4)
- Run codex-review + gemini-review as background tasks in parallel
- Process results as they arrive (first-finished agent processed immediately)
- Critically verify each suggestion; debate with agent if Claude disagrees
- Return filtered, deduplicated, verified suggestions with confidence scoring
- Health check + prompt execution in single invocation
When to Use
- Invoked by ln-510-quality-coordinator Phase 4 (Agent Review)
- All implementation tasks in Story status = Done
- Code quality (ln-511) and tech debt cleanup (ln-512) already completed
Inputs (from parent skill)
- : Linear Story identifier (e.g., "PROJ-123")
storyId
Workflow
MANDATORY READ: Load for Reference Passing Pattern, Review Persistence Pattern, Agent Timeout Policy, and Debate Protocol (Challenge Round 1 + Follow-Up Round).
shared/references/agent_delegation_pattern.md-
Health check:
python shared/agents/agent_runner.py --health-check- Filter output by containing "513"
skill_groups - If 0 agents available -> return
{verdict: "SKIPPED", reason: "no agents available"} - Display: (or similar)
"Agent Health: codex-review OK, gemini-review UNAVAILABLE"
- Filter output by
-
Get references: Call Linear MCP-> extract URL + identifier. Call
get_issue(storyId)-> extract Done implementation Task URLs/identifiers (exclude label "tests").list_issues(filter: {parent: {id: storyId}, status: "Done"})- If project stores tasks locally (e.g., ) -> use local file paths instead of Linear URLs.
docs/tasks/
- If project stores tasks locally (e.g.,
-
Ensure .agent-review/:
- If exists -> reuse as-is, do NOT recreate
.agent-review/.gitignore - If does NOT exist -> create it +
.agent-review/(content:.agent-review/.gitignore+*)!.gitignore - Create subdirs only if they don't exist
.agent-review/{agent}/ - Do NOT add to project root
.agent-review/.gitignore
- If
-
Build prompt: Read template.
shared/agents/prompt_templates/code_review.md- Replace with
{story_ref}or- Linear: {url}- File: {path} - Replace with bullet list:
{task_refs}per task- {identifier}: {url_or_path} - Save to (one copy per agent — identical content)
.agent-review/{agent}/{identifier}_codereview_prompt.md
- Replace
-
Run agents (background, process-as-arrive):a) Launch BOTH agents as background Bash tasks (run_in_background=true):
python shared/agents/agent_runner.py --agent codex-review --prompt-file .agent-review/codex/{identifier}_codereview_prompt.md --output-file .agent-review/codex/{identifier}_codereview_result.md --cwd {cwd}python shared/agents/agent_runner.py --agent gemini-review --prompt-file .agent-review/gemini/{identifier}_codereview_prompt.md --output-file .agent-review/gemini/{identifier}_codereview_result.md --cwd {cwd}
b) When first agent completes (background task notification):- Read its result file from
.agent-review/{agent}/{identifier}_codereview_result.md - Parse JSON between /
<!-- AGENT_REVIEW_RESULT -->markers<!-- END_AGENT_REVIEW_RESULT --> - Parse from runner JSON output; write
session_id:.agent-review/{agent}/{identifier}_session.json{"agent": "...", "session_id": "...", "review_type": "codereview", "created_at": "..."} - Proceed to Step 6 (Critical Verification) for this agent's suggestions
c) When second agent completes:- Read its result file, parse suggestions
- Run Step 6 for second batch
- Merge verified suggestions from both agents
d) If an agent fails: log failure, continue with available results -
Critical Verification + Debate (per Debate Protocol in):
shared/references/agent_delegation_pattern.mdFor EACH suggestion from agent results:a) Claude Evaluation: Independently assess — is the issue real? Actionable? Conflicts with project patterns?b) AGREE → accept as-is. DISAGREE/UNCERTAIN → initiate challenge.c) Challenge + Follow-Up (with session resume): Follow Debate Protocol (Challenge Round 1 → Follow-Up Round if not resolved). Resume agent's review session for full context continuity:- Read from
session_id.agent-review/{agent}/{identifier}_session.json - Run with — agent continues in same session, preserving file analysis and reasoning
--resume-session {session_id} - If in result → log warning, result still valid (stateless fallback)
session_resumed: false - = "Code Implementation"
{review_type} - Challenge files: /
.agent-review/{agent}/{identifier}_codereview_challenge_{N}_prompt.md_result.md - Follow-up files: /
.agent-review/{agent}/{identifier}_codereview_followup_{N}_prompt.md_result.md
d) Persist: all challenge and follow-up prompts/results in.agent-review/{agent}/ - Read
-
Aggregate + Return: Collect ACCEPTED suggestions only (after verification + debate). Deduplicate by— keep higher confidence. Filter:
(area, issue)ANDconfidence >= 90. Return JSON with suggestions + agent_stats + debate_log to parent skill. NO cleanup/deletion.impact_percent > 2
Output Format
yaml
verdict: CODE_ACCEPTABLE | SUGGESTIONS | SKIPPED
suggestions:
- area: "security | performance | architecture | correctness | best_practices"
issue: "What is wrong"
suggestion: "Specific fix"
confidence: 95
impact_percent: 15
source: "codex-review"
resolution: "accepted | accepted_after_debate | accepted_after_followup | rejected"
agent_stats:
- name: "codex-review"
duration_s: 12.4
suggestion_count: 3
accepted_count: 2
challenged_count: 1
followup_count: 1
status: "success | failed | timeout"
debate_log:
- suggestion_summary: "N+1 query in UserRepository.GetAll()"
agent: "gemini-review"
rounds:
- round: 1
claude_position: "Query uses Include() which resolves N+1"
agent_decision: "WITHDRAW"
resolution: "rejected"
final_resolution: "rejected"Fallback Rules
| Condition | Action |
|---|---|
| Both agents succeed | Aggregate verified suggestions from both |
| One agent fails | Use successful agent's verified suggestions, log failure |
| Both agents fail | Return |
| Parent skill (ln-510) | Falls back to Self-Review (native Claude) |
Verdict Escalation
- Findings with or
area=security-> parent skill can escalate PASS -> CONCERNSarea=correctness - This skill returns raw verified suggestions; escalation decision is made by ln-510
Critical Rules
- Read-only review — agents must NOT modify project files (enforced by prompt CRITICAL CONSTRAINTS)
- Same prompt to all agents (identical input for fair comparison)
- JSON output schema required from agents (via /
--json)--output-format json - Log all attempts for user visibility (agent name, duration, suggestion count)
- Persist prompts, results, and challenge artifacts in — do NOT delete
.agent-review/{agent}/ - Ensure exists before creating files (only create if
.agent-review/.gitignoreis new).agent-review/ - MANDATORY INVOCATION: Parent skills MUST invoke this skill. Returns SKIPPED gracefully if agents unavailable. Parent must NOT pre-check and skip.
- NO TIMEOUT KILL — WAIT FOR RESPONSE: Do NOT kill agent background tasks. WAIT until agent completes and delivers its response — do NOT proceed without it, do NOT use TaskStop. Agents are instructed to respond within 10 minutes via prompt constraint, but the hard behavior is: wait for completion or crash. Only a hard crash (non-zero exit code, connection error) is treated as failure. TaskStop is FORBIDDEN for agent tasks.
- CRITICAL VERIFICATION: Do NOT trust agent suggestions blindly. Claude MUST independently verify each suggestion and debate if disagreeing. Accept only after verification.
Definition of Done
- Health check executed; available agents identified (or SKIPPED returned if none)
- Story + Done implementation Tasks fetched from Linear (or local files)
- directory ensured (reused if exists, created with
.agent-review/if new) with per-agent subdirs.gitignore - Prompt built from template with story/task references, saved per agent
- All available agents launched as background tasks; raw results saved to
.agent-review/{agent}/ - Each suggestion critically verified by Claude; challenges executed for disagreements
- Follow-up rounds executed for suggestions rejected after Round 1 (DEFEND+weak / MODIFY+disagree)
- Challenge and follow-up prompts/results persisted alongside review artifacts
- Suggestions aggregated, deduplicated by (area, issue), filtered (confidence >= 90, impact > 2%)
- Session files persisted in for debate resume
.agent-review/{agent}/{identifier}_session.json - JSON result returned to parent skill with verdict, suggestions list, agent_stats, and debate_log
Reference Files
- Agent delegation pattern:
shared/references/agent_delegation_pattern.md - Prompt template (review):
shared/agents/prompt_templates/code_review.md - Prompt template (challenge):
shared/agents/prompt_templates/challenge_review.md - Agent registry:
shared/agents/agent_registry.json - Agent runner:
shared/agents/agent_runner.py - Challenge schema:
shared/agents/schemas/challenge_review_schema.json
Version: 2.0.0
Last Updated: 2026-02-11