agentleFS
a16za16z/jolt/.claude/skills/ci-code-review/SKILL.md

ci-code-review

Skill1.1k starsChanged 13 days agoApache-2.0View on GitHub

Deep code review of a pull request using parallel analysis agents (semantic consistency, bugs, tech debt, security). USE FOR: - Reviewing PRs for bugs, security issues, and code quality - Analyzing new abstractions for consistency and correctness - Identifying tech debt and architectural concerns - Posting review comments to specific lines on GitHub TRIGGERS: - "review PR", "code review", "review changes" - "diff review", "PR feedback", "check PR" - "analyze diff", "critique code", "review code" - "pull request review", "GitHub PR review"

We split this skill into the rules it gives an agent

22 rules. About 0 are common, 15 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈15

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read its definition, documentation, and any comments describing when/how it should be used

    line 22
  2. Distinctive:

    Verify each usage matches the documented intent

    line 24
  3. Distinctive:

    Check for logic errors, edge cases, off-by-one errors, resource leaks

    line 30
  4. Distinctive:

    Verify error handling is appropriate for each failure mode

    line 31
  5. Distinctive:

    Check that invariants are maintained across the changes

    line 32
  6. Distinctive:

    Check for input validation gaps at trust boundaries (user input, network data, file I/O, IPC)

    line 44
  7. Distinctive:

    Verify authentication/authorization checks are not bypassed or weakened

    line 45
  8. Distinctive:

    Look for injection risks: SQL, command, path traversal, template injection, deserialization

    line 46
  9. Distinctive:

    Check cryptographic usage: hardcoded secrets, weak algorithms, nonce reuse, timing side-channels

    line 47
  10. Distinctive:

    Verify resource limits: unbounded allocations, missing timeouts, denial-of-service vectors

    line 48
  11. Distinctive:

    Check concurrency: TOCTOU races, lock ordering, shared mutable state without synchronization

    line 49
  12. Distinctive:

    After collecting all issues from the 4 agents, validate every issue scored >= 50.

    line 53
  13. Distinctive:

    Post comments to PR: Always post a single review to the PR so the author has confirmation that the review ran, regardless of whether issues …

    line 66
  14. Very specific:

    When there are validated issues with score >= 50, include them in the comments array.

    line 69
  15. Very specific:

    When there are none, post the review with an empty comments array and a body that briefly states no issues were found (1-2 sentences, same …

    line 70
  16. Very specific:

    Use a heredoc with 'EOF' (quoted) to prevent shell interpolation of $, backticks, etc.

    line 102
  17. Very specific:

    Do NOT use --raw-field for the comments array — it doesn't handle nested JSON.

    line 106
  18. Distinctive:

    Comment tone: Write like a senior engineer — concise, direct, no ceremony.

    line 108
  19. Very specific:

    NO scores, severity labels, or [Score X] prefixes

    line 109
  20. Very specific:

    When the fix is obvious, use a GitHub suggestion block in the comment body.

    line 112
  21. Distinctive:

    Do NOT run builds/tests - CI handles that

    line 139
  22. Very specific:

    Use gh for all GitHub interaction

    line 140

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Provide a code review for the given pull request.

Follow these steps:

  1. Eligibility Check (Sonnet): Check if the PR (a) is closed, (b) is automated/trivial. If so, stop.
  2. PR Analysis (Fable): View the PR and return:
    • Summary of the change and its purpose
    • List of new functions, types, enums, or abstractions introduced
    • For each new abstraction: its name, stated purpose (from comments/docs), and intended usage contract
  3. Parallel Deep Review (4 Fable agents):

    Pass the PR summary and new abstractions list to each agent.

    a. Semantic Consistency Agent: For each new function/type/enum introduced:

    • Read its definition, documentation, and any comments describing when/how it should be used
    • Find ALL usages of that abstraction within the PR
    • Verify each usage matches the documented intent
    • Flag misuse: e.g., error-handling functions called for wrong error types, validation functions bypassed, enums used inconsistently
    • Pay special attention to: panic/error functions (when should they trigger?), unsafe blocks, security-sensitive operations

    b. Deep Bug Analysis Agent: Read the full context of modified files (not just diff lines).

    • Understand the data flow and control flow around changes
    • Check for logic errors, edge cases, off-by-one errors, resource leaks
    • Verify error handling is appropriate for each failure mode
    • Check that invariants are maintained across the changes

    c. Tech Debt Removal Agent:

    • Understand new abstractions that are introduced, new functions/types/enums
    • Identify possible future usecases for these things and understand whether abstractions meet future requirements
    • See which paradigms of Rust (or other language) development are used and whether they apply here
    • Identify possible improvements that would benefit long term maintainability of the code
    • Be an enjoyer of abstractions: generics, traits, dyn, enums, etc.

    d. Security Reviewer Agent:

    • Identify whether changes to the protocol do not break soundness
    • Identify possible attack vectors that are introduced with these changes
    • Check for input validation gaps at trust boundaries (user input, network data, file I/O, IPC)
    • Verify authentication/authorization checks are not bypassed or weakened
    • Look for injection risks: SQL, command, path traversal, template injection, deserialization
    • Check cryptographic usage: hardcoded secrets, weak algorithms, nonce reuse, timing side-channels
    • Verify resource limits: unbounded allocations, missing timeouts, denial-of-service vectors
    • Check concurrency: TOCTOU races, lock ordering, shared mutable state without synchronization
  4. Validate Issues (MANDATORY — do not skip):

    After collecting all issues from the 4 agents, validate every issue scored >= 50.

    For each issue from the agents:

    • For complex logic/semantic issues, reason through whether the bug is real and exploitable.
    • For mechanically checkable issues, inspect existing tests and CI results; do not run builds or tests unless the user explicitly requests them.

    Score each issue 0-100 AFTER validation:

    • 0: False positive, doesn't stand up to scrutiny, or pre-existing issue
    • 25: Might be real, but couldn't verify. Stylistic issues without explicit guidance.
    • 50: Verified real issue, but minor/nitpick. Not important relative to PR scope.
    • 75: Verified real issue that will impact functionality. Insufficient existing approach.
    • 100: Confirmed real issue that will happen frequently. Direct evidence confirms it.
  5. Post comments to PR: Always post a single review to the PR so the author has confirmation that the review ran, regardless of whether issues were found.

    • When there are validated issues with score >= 50, include them in the comments array.
    • When there are none, post the review with an empty comments array and a body that briefly states no issues were found (1-2 sentences, same tone as the comment guidelines below — concise, senior-engineer voice, no scores/severity labels/ceremony).

    Runs in CI — do not pause, do not ask for user confirmation, do not list issues for approval.

    Build a JSON file and use the GitHub review API:

    # Write review JSON to a unique temp file (use $$ for PID to avoid collisions).
    # With issues: populate the comments array. Without issues: leave it empty ([]) and
    # write a short "nothing actionable" body.
    cat > "/tmp/pr-review-${PR_NUMBER}-$$.json" << 'EOF'
    {
      "commit_id": "<HEAD_SHA>",
      "event": "COMMENT",
      "body": "Short review summary (1-2 sentences). When no issues were found, state that plainly.",
      "comments": [
        {
          "path": "relative/path/to/file.rs",
          "line": 42,
          "body": "Comment text — see tone guidelines below"
        }
      ]
    }
    EOF
    
    # Post the review (all comments appear as a single review). Always run this call,
    # even when "comments" is [].
    gh api repos/{owner}/{repo}/pulls/{number}/reviews --method POST --input "/tmp/pr-review-${PR_NUMBER}-$$.json"

    Key points:

    • Use a heredoc with 'EOF' (quoted) to prevent shell interpolation of $, backticks, etc.
    • The line field refers to the NEW file line number (right side of diff) for added/modified lines.
    • Get the head SHA via gh api repos/{owner}/{repo}/pulls/{number} --jq '.head.sha'.
    • Get changed files via gh api repos/{owner}/{repo}/pulls/{number}/files.
    • Do NOT use --raw-field for the comments array — it doesn't handle nested JSON. Always use --input with a file.

    Comment tone: Write like a senior engineer — concise, direct, no ceremony.

    • NO scores, severity labels, or **[Score X]** prefixes
    • NO "Title + Explanation" structure — just say the thing
    • Lead with what's wrong or what to consider, then why in 1-2 sentences max
    • When the fix is obvious, use a GitHub suggestion block in the comment body. Pick the lines to replace via line (end) and start_line (start) on the comment object, then put a ```suggestion fenced block in the body — its content replaces those lines:
      Poisoned mutex will panic all future callers.
      
      ```suggestion
      _guard: mutex.lock().unwrap_or_else(|e| e.into_inner()),
      For single-line suggestions, omit `start_line` (defaults to `line`).
    • Examples of good comments:
      • "If only one of the three openings is missing, the dummy all-zero r_address hits this assert before take_missing_opening_error() runs. Consider a fallible check here."
      • "This leaves the original opening accessible after recording MalformedProof. Removing it too would prevent the verifier from using a stale claim within the stage."
      • "Poisoned mutex will panic all future callers." (with a ```suggestion block for the fix)

False Positives (skip these)

  • Pre-existing issues not introduced by this PR
  • Issues on lines not modified in the PR
  • Things linters/compilers catch (imports, types, formatting)
  • Pedantic nitpicks a senior engineer wouldn't flag
  • Intentional functionality changes related to PR purpose
  • General quality concerns (test coverage, docs) unless explicitly required

Notes

  • Do NOT run builds/tests - CI handles that
  • Use gh for all GitHub interaction

Download now (ZIP)

Trending

More talk lately.about the whole repository

Dec 2025: 0 mentionsJan 2026: 0 mentionsFeb 2026: 2 mentionsMar 2026: 0 mentionsApr 2026: 1 mentionMay 2026: 5 mentionsJun 2026: 0 mentionsJul 2026: 3 mentionsAug 2026: 1 mentionSep 2026: 3 mentionsOct 2026: 3 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the a16z/jolt repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about a16z/jolt

The biggest 5 of 33 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 33

Talked about on GitHub (33 times).

On GitHub · 33

28 more on GitHub

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.