review-ai-issues
Interactively review plausibly AI-generated bug reports (from Detail, Copilot, or humans using AI) filed as GitHub issues. Use when the user says things like "let's review bug reports," "review issues," "review AI issues," or points at a specific machine-generated-looking issue.
What this skill does
# Review AI-Generated Bug Reports Walk through a set of plausibly AI-generated GitHub issues with the user, deciding for each one whether to fix it or close as not-a-bug. These reports are often plausible-sounding but wrong, pedantic, or contain regressions that reintroduce old bugs. **Be skeptical** — do not assume the report is correct just because it's detailed. ## Workflow per issue 1. **Read the issue** with `gh issue view <number>`. 2. **Read the actual code** the report cites. Do not take code snippets in the report at face value — they may be out of date or abridged. 3. **Verify the core claim.** Trace through the scenario described. Can the bug actually happen? Under what conditions? What's the realistic impact? 4. **Check git history if relevant.** If the report blames a commit, use `git show <hash>` to understand the context. Often a "bug" is a known trade-off. 5. **Summarize your assessment to the user** in a few sentences — state whether it's legit, how concerned we should be, and any alternative approaches to the proposed fix. Ask whether to fix or close. 6. **If fixing:** - Prefer fixing at the root cause, not just patching symptoms. If a helper function has HTTP-response semantics baked into it that's causing trouble, consider changing the helper's contract. - **Write a test that reproduces the bug** where reasonable. Verify the test actually fails without the fix by running `git stash push <fix files>` before running the test, then `git stash pop` after. - Commit with a message that references the issue (`Fixes #NNN`) and explains the *why*, not just the *what*. 7. **If closing:** close with `gh issue close <number> --comment "..."` — see template below. ## Patterns to watch for - **"500 replaced with a different error"** — if the proposed fix just swaps an unhandled exception for a handled error page with the same user impact, it's usually not worth the complexity. Ask: does the user actually experience anything different? - **Theoretical race conditions** — TOCTOU bugs that require two users to do conflicting things at the exact same millisecond are usually not worth `select_for_update` complexity. - **"Security" reports where the threat doesn't apply** — e.g., "any user can POST to this endpoint" where the endpoint requires a UUID that can only come from the target's email. - **Intentional fail-hard behavior** — e.g., refusing to delete a team if Stripe cancellation fails. Silently swallowing errors here would be worse (orphaned subscriptions). Don't "fix" these. - **Defense-in-depth gaps** — sometimes worth fixing if cheap (e.g., adding `escape()`), but flag to the user that it's not an active vulnerability. - **Regressions from recent fixes** — after one round of fixes, the next round often contains regressions we caused. Read the referenced commit hashes carefully and check whether our prior change broke something. ## Common causes of false positives - **Contrived preconditions** — the bug is real but requires an absurd sequence of events (e.g., Stripe price deleted mid-checkout). - **Outdated report** — the code has moved on since the issue was filed. - **Misread behavior** — the report claims the function does X but it actually does Y. - **Missing context** — e.g., claiming an endpoint is unauthenticated when it's behind a decorator added later. ## Committing - Work on a fresh branch (`ai-audit-fixes-N` or similar) so multiple fixes stack cleanly. - Commit each fix separately with a clear message. Reference the issue. - Include the standard `Co-Authored-By:` trailer. - Run the project's test command (e.g. `make test`) before committing. Fix any failures. - **Do not push until the user confirms** — they often want to review the stack before it hits the remote. ## Closing issues Always attribute generated comments to Claude to keep the record clear. Template: ``` *Comment generated by Claude, after discussing with the repo owner.* <one-paragraph summary of why we're closing / what was fixed> <if fixed: "Fixed in <commit-sha>."> <if not-a-bug: "Closing as not worth fixing." + brief rationale> ``` ## Opening the PR Once all the issues in a round are done: - `gh pr create` with a summary listing each issue handled and whether it was fixed or closed. - For fixes, note what tests were added to prevent regression. - For closes, briefly note why each wasn't worth fixing. ## Tone - Be honest when something surprises you, including when you caused a regression. - Push back on the report when the evidence doesn't support it. Don't apply fixes just because the report looks authoritative. - When in doubt, discuss with the user — they have context you don't (threat model, business priorities, whether a feature is actually used).
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.