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
- Distinctive: line 22
Read its definition, documentation, and any comments describing when/how it should be used
- Distinctive: line 24
Verify each usage matches the documented intent
- Distinctive: line 30
Check for logic errors, edge cases, off-by-one errors, resource leaks
- Distinctive: line 31
Verify error handling is appropriate for each failure mode
- Distinctive: line 32
Check that invariants are maintained across the changes
- Distinctive: line 44
Check for input validation gaps at trust boundaries (user input, network data, file I/O, IPC)
- Distinctive: line 45
Verify authentication/authorization checks are not bypassed or weakened
- Distinctive: line 46
Look for injection risks: SQL, command, path traversal, template injection, deserialization
- Distinctive: line 47
Check cryptographic usage: hardcoded secrets, weak algorithms, nonce reuse, timing side-channels
- Distinctive: line 48
Verify resource limits: unbounded allocations, missing timeouts, denial-of-service vectors
- Distinctive: line 49
Check concurrency: TOCTOU races, lock ordering, shared mutable state without synchronization
- Distinctive: line 53
After collecting all issues from the 4 agents, validate every issue scored >= 50.
- Distinctive: line 66
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 …
- Very specific: line 69
When there are validated issues with score >= 50, include them in the comments array.
- Very specific: line 70
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 …
- Very specific: line 102
Use a heredoc with 'EOF' (quoted) to prevent shell interpolation of $, backticks, etc.
- Very specific: line 106
Do NOT use --raw-field for the comments array — it doesn't handle nested JSON.
- Distinctive: line 108
Comment tone: Write like a senior engineer — concise, direct, no ceremony.
- Very specific: line 109
NO scores, severity labels, or [Score X] prefixes
- Very specific: line 112
When the fix is obvious, use a GitHub suggestion block in the comment body.
- Distinctive: line 139
Do NOT run builds/tests - CI handles that
- Very specific: line 140
Use gh for all GitHub interaction
≈ “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.
Files
Provide a code review for the given pull request.
Follow these steps:
- Eligibility Check (Sonnet): Check if the PR (a) is closed, (b) is automated/trivial. If so, stop.
- 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
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
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.
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
commentsarray. - When there are none, post the review with an empty
commentsarray 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
linefield 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-fieldfor the comments array — it doesn't handle nested JSON. Always use--inputwith 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) andstart_line(start) on the comment object, then put a```suggestionfenced 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```suggestionblock for the fix)
- When there are validated issues with score >= 50, include them in the
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
ghfor all GitHub interaction
Trending
More talk lately.about the whole repository
Who's talking about a16z/jolt
- coset-io/zkp-academy“[2024.4.23-2024.5.21] Lasso & Jolt 学习小组”GitHub · Apr 27, 2024 · 2 reactions
- LayerZero-Labs/akita“perf(verifier): batch verifier dot products through jolt-field row kernels”GitHub · Oct 6, 2026
- sudosubin/agents.nix“agent-skills.github.a16z.jolt: 1.1.1-unstable-2026-09-02 → 1.1.1-unstable-2026-09-25”GitHub · Oct 3, 2026
- LayerZero-Labs/jolt“chore(akita): bump dependency to e2c49ed”GitHub · Oct 2, 2026
- jruizaranguren/best-of-digital-identity“Add privacy-preserving identity category”GitHub · Sep 30, 2026
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
- Apr 27, 2024[2024.4.23-2024.5.21] Lasso & Jolt 学习小组 — coset-io/zkp-academy2 reactions · 1 comment
- Oct 6, 2026perf(verifier): batch verifier dot products through jolt-field row kernels — LayerZero-Labs/akita0 reactions · 15 comments
- Oct 3, 2026agent-skills.github.a16z.jolt: 1.1.1-unstable-2026-09-02 → 1.1.1-unstable-2026-09-25 — sudosubin/agents.nix0 reactions
- Oct 2, 2026chore(akita): bump dependency to e2c49ed — LayerZero-Labs/jolt0 reactions · 3 comments
- Sep 30, 2026Add privacy-preserving identity category — jruizaranguren/best-of-digital-identity0 reactions
28 more on GitHub
- Sep 30, 2026build: jolt as public git deps at a16z/jolt feat/inline-extension-external — 0xAndoroid/jeth0 reactions
- Sep 24, 2026agent-skills.github.a16z.jolt: init at 1.1.1-unstable-2026-09-02 — sudosubin/agents.nix0 reactions
- Aug 10, 2026Feat/jolt prover akita — LayerZero-Labs/jolt0 reactions · 1 comment
- Jul 31, 2026feat: port the demo to the modular prover on Akita (non-zk) — 0xAndoroid/jolt-wasm-prover0 reactions · 1 comment
- Jul 23, 2026Feat/jolt legacy prover akita integration — LayerZero-Labs/jolt0 reactions
- Jul 22, 2026[arXiv] zkML ONNX inference-proof harness — Jolt Atlas: Verifiable Inference via Lookup Arguments in Zero Knowledge — mnemonik-dev/nightly-research0 reactions
- May 21, 2026docs: document precommitted polynomial reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026feat: integrate bytecode and program image reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026feat: add committed bytecode foundation — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026refactor: add precommitted polynomial reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026refactor: split stage 6 sumchecks — LayerZero-Labs/jolt0 reactions · 2 comments
- Apr 15, 2026build(deps): bump jolt-sdk from `b10e80a` to `3d5e431` — gg-archive/ruma-zk0 reactions
- Feb 3, 2026Implement Jolt Keccak-256 benchmark — ethereum/csp-benchmarkssays it tested it0 reactions
- Feb 3, 2026Implement Jolt ECDSA benchmark — ethereum/csp-benchmarkssays it tested it0 reactions
- Nov 11, 2025fix: correct calculation of max_log_n in VerifierSetup — markosg04/dory0 reactions
- Aug 15, 2025Update Jolt to v0.3.0-alpha — eth-act/ere0 reactions
- Aug 4, 2025Wire up PCS to jolt-prover — ICME-Lab/jolt-atlas0 reactions · 1 comment
- Aug 2, 2025Implement output proof — ICME-Lab/zkml-jolt0 reactions
- Mar 22, 2025no rust-toolchain-aarch64-unknown-linux-gnu.tar.gz release version — a16z/rust0 reactions · 1 comment
- Mar 21, 2025Implement `CanonicalSerialize` and `CanonicalDeserialize` for signed integers — a16z/arkworks-algebra0 reactions
- Mar 5, 2025Trait solver taking >10s to finish in auto complete — rust-lang/rust-analyzer0 reactions · 2 comments
- Feb 28, 2025Add Jolt zkVM Support to ProofLab — ProofLabDev/prooflab-rs0 reactions
- Feb 25, 2025chore: fix typos — a16z/helios0 reactions
- Jan 15, 2025Benchmark ICICLE and `arkmsm` — piotr-roslaniec/wasm-multiexp-benchsays it tested it0 reactions
- Nov 22, 2024chore: Update toolchain to nightly-2024-09-30 — a16z/rust0 reactions
- Jun 26, 2024Optimize polynomial batching computation — microsoft/Nova0 reactions · 1 comment
- May 27, 2024Summary from our mail threads — mab-xyz/verifiable-client-diversity0 reactions
- May 15, 2024List of Existing ZkVMs — vacp2p/zk-explorations0 reactions
In this repository9 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- analyze-specSkill
- comment-policySkill
- implement-specSkill
- new-invariantSkill
- new-objectiveSkill
- new-specSkill
- test-policySkill
- update-docsSkill
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.

