Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseDotsDots+22 more

    Code Review by Severity

    1

    Reviews your diff for bugs, security issues and debt, and returns a findings table ranked by severity.

    $5

    Secure checkout via Stripe

    Money-back guarantee

    Converts to your local currency at checkout

    Security scanned
    Code Review by Severity

    Code Review by Severity

    Example session with this skill installed

    /review

    • Read your context and instructions
    • Compiled the code review by

    I reviewed the two staged files (src/auth/service.ts and src/middleware/auth.ts). There are three serious problems, one of them an authentication bypass.

    Sev.File:lineProblemSuggestion
    🔴 highsrc/middleware/auth.ts:8-9Auth bypass. verifyToken now returns null for an invalid or expired token. The middleware still sets req.user = null and calls next(). A request with Authorization: Bearer garbage therefore passes requireAuth. Any handler that only checks the middleware, or reads req.user?.sub loosely, is exposed.After verifying, add if (!payload) return res.status(401).json({ error: "invalid token" }); before next().
    🔴 highsrc/auth/service.ts:21SQL injection. findUserByEmail interpolates email straight into the query. An input like ' OR '1'='1 returns arbitrary users, and '; DROP TABLE users;-- can run further statements, depending on the driver.Use a parameterized query, e.g. db.query("SELECT * FROM users WHERE email = $1", [email]), with the placeholder syntax your driver uses. Replace db: any with a real type, and select only the columns you need instead of *.
    🔴 highsrc/auth/service.ts:4Secret in logs. console.log("auth init", config.JWT_SECRET) writes the JWT signing secret to stdout on every start. Anyone with log access can forge valid tokens.Delete the line. If you need a startup message, log without the secret.
    🟡 mediumsrc/auth/service.ts:13-17catch {} swallows every error and returns null. A bad token, an expired token and a misconfigured secret all look the same, which makes failures hard to diagnose. jwt.verify can also return a string payload, so callers can't rely on .sub.Return a typed result, such as { sub: string } | null, or narrow the payload type. Log or distinguish TokenExpiredError from other errors.
    🟡 mediumsrc/middleware/auth.ts:6replace("Bearer ", "") doesn't check the scheme. A header of Basic xyz becomes Basic xyz and is passed to verify. That is harmless once the bypass is fixed, but sloppy.Match with /^Bearer (.+)$/ and return 401 if it doesn't match.
    ⚪ minorsrc/middleware/auth.ts:4Dropping async is correct now that verifyToken is synchronous.None. This is fine as is.
    ⚪ minorsrc/auth/service.tsThere are no tests for verifyToken or findUserByEmail. A test for "invalid token returns 401" would have caught the bypass.Add tests for valid, expired, malformed and missing tokens.

    I recommend not merging until the three 🔴 items are fixed. I haven't changed anything. Tell me if you want me to apply the fixes.

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

    About this skill

    Type "review" and Claude reads the diff plus the context of every touched file, then checks in a fixed order:

    1. Correctness: edge cases, null/undefined, missing await, race conditions, off-by-one, swallowed errors.
    2. Security: injection (SQL, shell, XSS), secrets in code, input validation, missing authorization, sensitive data in logs.
    3. Data and API: irreversible migrations, breaking REST/GraphQL changes, N+1 queries.
    4. Performance: unnecessary React renders, wrong effect dependencies, queries in loops.
    5. Maintainability: duplication, confusing names, dead code, missing tests.

    Output: a table with severity (high / medium / minor), file:line, problem and suggestion. It only reports what it can justify with a concrete scenario, says so when it finds nothing serious, and never edits code unless you ask.

    Unofficial. Not affiliated with Anthropic.

    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 9 days ago

    • Passed all security checks, Safe to install

    Listed9 days ago

    What's inside

    Frequently Asked Questions