review-pr
Skill351 starsChanged 3 months agoApache-2.0View on GitHub
Review a libuipc pull request end-to-end: checkout the PR, summarize changes, list files for the human reviewer, and perform a domain-aware AI review covering physics correctness, backend architecture, C++ style, GPU code, and Python bindings. Optionally post review comments via `gh`. Use when the user provides a PR number, asks to review a PR, or wants to inspect a libuipc GitHub PR.
185 other projects use a version of this.
Adopted by
Most recently taken up by
- data-privacy-stack/presidiotheir own version, first seen Nov 9, 2026
- pgmpy/pgmpytheir own version, first seen Nov 9, 2026
- enes-alatas/spooltheir own version, first seen Nov 8, 2026
- microsoft/presidiotheir own version, first seen Nov 8, 2026
- domengabrovsek/agent-configtheir own version, first seen Nov 8, 2026
- domengabrovsek/claudetheir own version, first seen Nov 8, 2026
Used with
Projects with it also use diagnose-ci-failures, docs-loop and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
zerx-labSkilldiagnose-ci-failures
Diagnose CI failures for a PR using the GitHub CLI, extract error logs, and generate a plan to fix them. Use when the user asks to check CI status, pull CI issues, triage test failures, or investigate PR build failures.
Also in 3 projects that use this
GeiserXSkilldocs-loop
Use when the user asks to audit docs, check documentation for stale claims, or verify docs against the code.
Also in 3 projects that use this
GeiserXSkillfull-loop
Drive a repository to done with sergio-loop, then keep improving it with refine-loop at a descending theta. Use only when the user explicitly invokes full-loop.
Also in 3 projects that use this
n24q02mSkillreview-delta
Review only changes since last commit using impact analysis. Token-efficient delta review with automatic blast-radius detection.
Also in 3 projects that use this
n24q02mSkillbuild-graph
Build or update the code review knowledge graph. Run this first to initialize, or let hooks keep it updated automatically.
Also in 3 projects that use this
- +7 more from GeiserX
Other versions185 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 185
- denoland/deno★ 109ksame name
- ToolJet/ToolJet★ 41ksame name
- remix-run/remix★ 33ksame name
- tirth8205/code-review-graph★ 33ksame name
- alpinejs/alpine★ 32ksame name
- nrwl/nx★ 29ksame name
- PrefectHQ/fastmcp★ 28ksame name
- jlowin/fastmcp★ 28ksame name
- livewire/livewire★ 24ksame name
- microsoft/fluentui★ 20ksame name
175 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- .cursor/rules/cpp-format.mdcCursor rule
- .cursor/rules/self-improvement.mdcCursor rule
- cmake-workflowSkill
- commit-conventionSkill
- commitSkill
- cursor-rulesSkill
- documentSkill
- fix-issueSkill
- fix-prSkill
- formatSkill
- github-prSkill
- gpu-optimizationSkill
- project-structureSkill
- push-tagSkill
- repository-setupSkill
- run-testsSkill
- simulation-devSkill
- xmake-workflowSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 178 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Follow the owner working agreements.
- Very specific: line 88
Run gh pr diff <PR_NUMBER> --repo spiriMirror/libuipc and check every area below that is touched.
- Distinctive: line 150
Use this markdown link format for every citation:
- Very specific: line 214
Run gh auth status first if commands fail.
“Common” is measured: kept by at least 6 in 10 of the 178 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
libuipc PR Review
Follow the owner working agreements. Inspect PRs without changing the working branch unless the user requests checkout; a review does not authorize publication.
Architecture primer (read before reviewing)
libuipc is a GPU-accelerated Incremental Potential Contact (IPC) simulation library (C++20 + optional Python/pybind11).
Layer split:
| Layer | Path | Role |
| Core | src/core/, include/uipc/ | Engine lifecycle, Scene/World, geometry attribute ECS |
| Geometry | src/geometry/ | Mesh algorithms; libigl, TBB, Octree, embedded C++ METIS |
| Constitution | src/constitution/ | Material / constraint implementations |
| I/O | src/io/ | Scene + mesh serialisation |
| Sanity check | src/sanity_check/ | Pre-sim scene validation |
| Backends | src/backends/<name>/ | Physics engines as runtime-loaded SHARED libraries in test and packaged builds |
| Pybind | src/pybind/ | Thin pybind11 wrapper; mirrors C++ submodules |
Backend plugin ABI (src/backends/common/module.h):
- Exports:
uipc_query_module,uipc_init_module,uipc_create_engine,uipc_destroy_engine - Core validates backend ABI, libuipc major/minor and backend identity before init/create.
- Engine hierarchy:
core::IEngine→backend::SimEngine→ CUDA/none engines. Systems separately derive fromISimSystem/SimSystemand register with their engine. - RMR (Reporter–Manager–Receiver) data-oriented design; avoid heavy OOP in backend code
CUDA backend subsystems (most review-sensitive):
affine_body/, finite_element/, contact_system/, collision_detection/,
distance_system/, active_set_system/, inter_primitive_effect_system/,
engine/ (Newton + augmented-Lagrangian step in advance_al.cu)
Workflow
1. Checkout and fetch metadata
# Only when checkout is requested:
gh pr checkout <PR_NUMBER> --repo spiriMirror/libuipc
gh pr view <PR_NUMBER> --repo spiriMirror/libuipc --json title,body,author,baseRefName,headRefName,headRefOid,headRepository,url,additions,deletions,changedFiles
gh pr diff <PR_NUMBER> --name-only --repo spiriMirror/libuipc2. Present summary to the human reviewer
## PR #<N>: <title>
Author: <author> Branch: `<head>` → `<base>`
URL: <url>
Stats: +<add> / -<del> across <N> files
### Description
<body>
### Files to review (grouped by subsystem)
#### Backend — CUDA physics
src/backends/cuda/affine_body/...
src/backends/cuda/finite_element/...
...
#### Core / Public API
include/uipc/...
src/core/...
#### Geometry / Constitution
src/geometry/... src/constitution/...
#### Python bindings
src/pybind/... python/src/uipc/...
#### Build / CMake
CMakeLists.txt src/backends/.../CMakeLists.txt
#### Tests
apps/tests/... python/tests/...3. AI review — libuipc-specific checklist
Run gh pr diff <PR_NUMBER> --repo spiriMirror/libuipc and check every
area below that is touched. Metadata fields must match the
GitHub CLI JSON contract.
Fast fail
- All expected internal invariants are checked with
UIPC_ASSERTwhere feasible - All user-facing inputs are validated with
UIPC_ASSERT_THROW
C++20 style
- C-style code is forbidden unless unavoidable (e.g., DLL export signatures)
- Raw pointer parameters are forbidden unless unavoidable; prefer
span<T> const std::string¶meters are forbidden; usestd::string_viewinstead- Multiple inheritance is forbidden; separate concerns into distinct classes
CUDA / GPU code
- GPU buffer arguments use
cuda_tool::BufferView/ sparse-matrix views instead of raw pointers - Business kernels are named
__global__functions with raw<<<>>>launches - CUB scratch is persistent; buffer growth preserves the required initialization/history
- Correctness findings identify algorithmic or synchronization defects, not valid atomic-order rounding alone
- Raw pointer parameters are forbidden in device code unless unavoidable
Constitution / material
- New constitutions implement required
IConstitution-family interface - Material parameters validated / clamped (no negative stiffness, density, etc.)
Public C++ API (include/uipc/)
- No breaking changes to public headers without a version bump or deprecation notice
- New public classes/functions follow existing naming:
CamelCasetypes,snake_casefunctions,m_prefix for members #pragma oncepresent; no<windows.h>-style global macros leaked
C++ style (.clang-format enforced)
- 4-space indent, 80-column limit
- Allman braces (
{on its own line) - Left-aligned pointers (
int* p, notint *p) - No
using namespace std;in headers
CMake / XMake
- Build-affecting changes are mirrored in both build systems, including CUDA component ownership
- New backend follows
uipc_add_backend(name)macro insrc/backends/CMakeLists.txt - New CMake options added to the root
CMakeLists.txtoption block with sensible defaults file(GLOB ...)patterns extended if new source subdirs added
Python bindings (src/pybind/ + python/)
- Check whether new features expose a public API that should be mirrored in the Python bindings
- New C++ types exposed via matching pybind submodule (mirrors C++ namespace)
__init__.pyimport chain not broken (pyuipc→init()→config["module_dir"])- Python-side tests added under
python/tests/for new pybind surface
Tests
- C++ tests use Catch2 macros; added via
uipc_add_testin the appropriateapps/tests/<subsystem>/CMakeLists.txt - Regression tests added for bug fixes
4. Output format
Each finding must have a sequential number (1, 2, 3 … across all severity tiers) and a clickable local file link constructed from the absolute repo path + relative file path. Use this markdown link format for every citation:
[filename.ext:LINE](ABSOLUTE_REPO_PATH/relative/path/to/file.ext)For example, if the repo is at /home/user/libuipc and the file is
src/backends/cuda/affine_body/foo.cu at line 42:
[foo.cu:42](/home/user/libuipc/src/backends/cuda/affine_body/foo.cu)Full output template:
## AI Review — PR #<N>
### Summary of changes
<one paragraph>
### Findings
🔴 Critical (must fix)
**#1** — [filename.ext:LINE](ABSOLUTE_PATH/relative/path/filename.ext)
Description of the issue and why it matters.
**#2** — [filename.ext:LINE](ABSOLUTE_PATH/relative/path/filename.ext)
Description.
🟡 Suggestion
**#3** — [filename.ext:LINE](ABSOLUTE_PATH/relative/path/filename.ext)
Description.
🟢 Nice-to-have
**#4** — [filename.ext:LINE](ABSOLUTE_PATH/relative/path/filename.ext)
Description.
### Checklist coverage
(tick the items above that were verified or N/A)5. Post comments via gh (when asked)
General review comment / request changes / approve:
gh pr review <PR_NUMBER> --repo spiriMirror/libuipc --comment --body "..."
gh pr review <PR_NUMBER> --repo spiriMirror/libuipc --request-changes --body "..."
gh pr review <PR_NUMBER> --repo spiriMirror/libuipc --approve --body "LGTM"Inline comment on a specific line:
gh api repos/<OWNER>/<REPO>/pulls/<PR_NUMBER>/comments \
--method POST \
-f path="<FILE_PATH>" \
-f body="Your comment" \
-F line=<LINE_NUMBER> \
-f side="RIGHT" \
-f commit_id="<HEAD_REF_OID>"Run gh auth status first if commands fail.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

