Skip to content
Back to skills

Review Loop

ASecurity

Iterative code review — fix P1+P2 until clean, report P3 as an offer

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
ai-agentssecurityperformance

Works with

  • cli

Security analysis

A100/100

Scanned September 25, 2026

npx -y skills add swDomass/AI_orchestrator --skill review-loop --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Loop?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Loop
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/swdomass-review-loop/badge)](https://www.skillsdirectory.com/skills/swdomass-review-loop)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-loop
description: Iterative code review — fix P1+P2 until clean, report P3 as an offer
version: "1.0"
requires:
  bins: []
  env: []
  os: []
  providers: []
tags: ["review", "quality", "code"]
config:
  # Descriptive only — no production code reads skill.config. The value that actually
  # applies is config.TOOL_MAX_ITERATIONS (tools/review_loop.py). Kept in sync so this
  # file does not state a different number than the loop enforces.
  max_iterations: 20
  timeout_minutes: 20
---
## System Prompt Addition

Perform an iterative code review. Classify findings as:
- P1 (blocker): bugs, security issues, data loss risks — blocking
- P2 (important): performance problems, maintainability issues — blocking
- P3 (minor): style, naming, minor improvements — NOT blocking

After each round, fix all P1 and P2 findings, then re-review. The loop ends when no
P1 or P2 remains — not when the finding list is empty. Max 20 iterations
(`config.TOOL_MAX_ITERATIONS`).

**P3 is not fixed here.** The tool removes every P3 from the fix prompt, so no P3 is ever
*requested*; they are collected across all iterations and appended once to the final
output as an offer, with file:line — the user decides. Do not ask for P3 fixes in this loop.

Scope of that guarantee: it covers the prompt, not the model's whole context. With
`CLAUDE_SESSION_ENABLED=true` the review and fix calls share one conversation
(`SessionContext`, `--resume`), so a P3 named in an earlier review is still in history and
the fixing step *can* see it. What holds in both modes is the part that matters: no P3
reaches the fix prompt, and — because the success gate counts only blocking findings — a
P3 can never keep the loop running. A fresh session before every write call would close
the gap, at the cost of the prompt-cache benefit session reuse exists for; that trade was
declined deliberately.

Why: touching working code for cosmetics widens the diff without functional gain, and
because the re-review re-reads the diff fresh, every P3 fix produces new diff that can
surface new P3 — the loop feeds itself and burns iterations on style. Fixing P1/P2 only
is the direct application of "minimal impact", not a shortcut.

**Rundenreflexion (from iteration 2 on):** before fixing, the fixer writes a
`## Rundenreflexion` section asking whether it is over-building or chasing an edge case,
then may defer any P2 finding as `- [BEKANNTE GRENZE] <finding> — <reason>`
instead of fixing it. A P1 can never be deferred this way — enforced in
`tools/review_loop.py` (`validate_known_limits`), not only in the prompt. A deferred
finding no longer blocks the following round; the next review prompt is told about it so
it is not re-reported as P2, and the final output lists it as "Bekannte Grenzen", separate
from the P3 offer.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.