More screenshots

    Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseDotsDots+22 more

    Review This PR

    1

    Your AI agent reads the author's summary and the project rules before it reviews a pull request.

    $7

    Secure checkout via Stripe

    Money-back guarantee

    Converts to your local currency at checkout

    Security scanned
    Review This PR

    Review This PR

    Example session with this skill installed

    Use the review-this-pr skill to review this branch.

    • Read your context and instructions
    • Compiled the review this pr

    This is a sample repository. It has a rules file (CLAUDE.md), a branch that adds reset(key) to an alert throttle, and the author's summary for that branch. The review below is the real, unedited output.


    I reviewed feat/throttle-reset against main and found one blocking bug: reset("disk") clears the throttle for every alert, not just "disk". You asked for scrutiny of reset(), and that's where it is. Nothing in your notes covers it.

    What I checked: I read your context notes (.claude/review-context/feat-throttle-reset.md) and the rules in CLAUDE.md, and looked at all three changed files. I ran python3 -m unittest -q and all 4 tests pass, as your notes say. There's no PR description to compare against because the repo has no git remote.

    Blocking

    1. reset(key) ignores key and clears every key (src/alert_throttle.py:20)

    def reset(key):
        """Let the next alert for `key` through, e.g. after an operator acks it."""
        _last_sent.clear()
    

    The docstring says it resets one key, but _last_sent.clear() empties the whole table. I ran this to confirm:

    should_send("disk", now=0); should_send("cpu", now=0)
    reset("disk")
    should_send("cpu", now=10)   # → True; should be False
    

    In production, acking one alert would release every throttled alert at once. That's the alert storm your notes say the 300 s window exists to prevent. The fix is _last_sent.pop(key, None).

    2. The new test can't catch this (tests/test_alerts.py:20-23)

    test_reset_lets_next_alert_through only uses "disk", so a reset that clears everything still passes. CLAUDE.md rule 2 asks for a test of each behaviour change, and the behaviour here is "reset only this key". Please add a test that sends "disk" and "cpu", resets "disk", and asserts that should_send("cpu", now=10) is False. That test fails on the current code.

    Nit (not blocking)

    • tests/test_alerts.py:18 still hard-codes now=301. The code now reads the window from settings, but this test still assumes it's 300. If someone changes ALERT_THROTTLE_WINDOW, the test breaks. settings.ALERT_THROTTLE_WINDOW + 1 would keep it in step. This line was already on main, so it's your call.

    No issues

    • Moving the 300 s window into settings.py follows rule 1, and the setting is defined there.
    • An in-memory dict is a reasonable choice given one process on one VM, so I didn't suggest Redis. Wiring reset() to the ack button is out of scope as your notes say, so I didn't review it.

    Verdict: request changes. The fix is a one-line code change plus one test.

    uses , so a reset that clears everything still passes. CLAUDE.md

    Connects securely to your tools. The creator never sees your data.

    About this skill

    The problem

    An AI agent reviews a pull request. It does not know why the author made each choice. So it asks questions that the author already answered, and it flags things that are not problems. The author loses time on replies.

    What this skill does

    Before the agent reads the code changes, it reads:

    • The author's summary for the branch. It says what changed, what the author already tested, which options they did not use and why, and where to look closely.
    • The project rules, for example CLAUDE.md or CONTRIBUTING.md.

    If there is no summary, the agent says so in the review and asks the author for one. It does not guess.

    Every comment needs proof

    Before the agent writes a comment, it must:

    1. Give the file and line.
    2. Show what goes wrong, for example an input and the wrong result.
    3. Check that the code or a test does not already handle it.
    4. Check that the author's summary does not already answer it.

    The agent runs the project's tests when it can. It marks each comment as Blocking, Worth reconsidering, or Nit.

    When the author disagrees

    If the author shows proof that a comment is wrong, the agent checks the proof and takes the comment back. It does not take a comment back only because the author disagrees.

    What you need

    • A local copy of the repository, with the branch checked out.
    • The GitHub command-line tool (gh) is optional. The agent uses it to read the pull request description.
    • No scripts and no packages. This skill is one instruction file.

    Use it with PR Review Defense

    This skill helps the reviewer. PR Review Defense is a separate skill for the author.

    1. The author uses PR Review Defense to write a summary of the branch.
    2. You use this skill. Your agent reads that summary first.
    3. Each of your comments gives a file and line, and shows what goes wrong.
    4. The author's agent answers each comment with proof.

    Each skill works alone. They work best together.

    How to use

    Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs this skill for you. If a payment is needed, your agent shows it to you first.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill passes our trust checks below.

    Security scanned

    Passed our 8-point scan before listing

    Fresh listing

    Recently published to Agensi

    Money-back guarantee

    Doesn't do what its page promises? You get your money back.

    Trust & safety

    Security scanned

    Verified clean today

    • Passed all security checks, Safe to install

    Requires

    GitHub
    git
    gh (GitHub CLI), optional

    Listedtoday

    What's inside

    Frequently Asked Questions