Code Review Checklist
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
Run scalex performance benchmarks, profiling, and timing analysis.
$ npx skills add nguyenyou/scalex --skill benchmark -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nguyenyou/scalex benchmark --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nguyenyou/scalex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/benchmark .claude/skills/benchmark && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "benchmark" agent skill from https://github.com/nguyenyou/scalex/tree/main/.agents/skills/benchmark into .claude/skills/benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmark", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nguyenyou/scalex/tree/main/.agents/skills/benchmarkType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nguyenyou/scalex --skill benchmark -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nguyenyou/scalex benchmark --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nguyenyou/scalex.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/benchmark .agents/skills/benchmark && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "benchmark" agent skill from https://github.com/nguyenyou/scalex/tree/main/.agents/skills/benchmark into .agents/skills/benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmark", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nguyenyou/scalex --skill benchmark -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nguyenyou/scalex benchmark --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nguyenyou/scalex.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/benchmark .cursor/skills/benchmark && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "benchmark" agent skill from https://github.com/nguyenyou/scalex/tree/main/.agents/skills/benchmark into .cursor/skills/benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmark", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nguyenyou/scalex.git --path .agents/skills/benchmark--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nguyenyou/scalex --skill benchmark -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nguyenyou/scalex benchmark --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nguyenyou/scalex.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/benchmark .gemini/skills/benchmark && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "benchmark" agent skill from https://github.com/nguyenyou/scalex/tree/main/.agents/skills/benchmark into .gemini/skills/benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmark", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nguyenyou/scalex benchmarkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nguyenyou/scalex --skill benchmark -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nguyenyou/scalex.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/benchmark .github/skills/benchmark && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "benchmark" agent skill from https://github.com/nguyenyou/scalex/tree/main/.agents/skills/benchmark into .github/skills/benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmark", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nguyenyou/scalex --skill benchmark -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nguyenyou/scalex benchmark --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nguyenyou/scalex.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/benchmark .opencode/skills/benchmark && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "benchmark" agent skill from https://github.com/nguyenyou/scalex/tree/main/.agents/skills/benchmark into .opencode/skills/benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmark", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
benchmarkRun scalex performance benchmarks, profiling, and timing analysis.
Benchmark is an agent skill from nguyenyou/scalex. Run scalex performance benchmarks, profiling, and timing analysis. Use this skill whenever the user asks to benchmark scalex, measure performance, profile index/query times, compare before/after performance of a change, investigate bottlenecks, or mentions "benchmark", "perf", "how fast", "timing", "hyperfine", "profile", "flame graph", "profiling", "--timings", "slow", "bottleneck", "regression", "memory", "heap", "GC", "allocation". Also use proactively after implementing performance improvements to verify…
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/bench-compare.sh` and `scripts/bench.sh`).
It sits in Development, covering Performance optimization. The repository describes itself as: Scala code intelligence for coding agents. Zero Build Server. Zero Compilation. Just answers. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9098af8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
brewxcrunFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Benchmark loads about 3.4k tokens when it runs. Until then it costs about 168 tokens; SKILL.md has 1,043 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from nguyenyou/scalex at commit 9098af8, republished under its MIT licence (© nguyenyou). 1,043 words, ~3,434 tokens.
.claude/skills/benchmark/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Scalex has a multi-layered profiling and benchmarking system. Pick the right layer for the situation:
| Layer | Tool | When to use | Works in native? |
|---|---|---|---|
1. --timings | Built-in flag | Quick phase breakdown, first look at any perf question | Yes |
| 2. hyperfine | bench.sh | Reproducible before/after comparison with statistics | Yes |
| 3. async-profiler | profiling/profile.sh | Deep CPU/alloc/lock flame graphs to find hotspots | JVM only |
| 4. JFR | profiling/scalex.jfc | GC pressure, file I/O patterns, thread utilization | JVM only |
| 5. Microbenchmarks | src/bench.scala | Isolate per-function cost with warmup + statistics | JVM only |
| 6. Memory profiling | bench.sh memory | Heap usage, GC pressure, peak memory across scenarios | JVM only |
"Where is time spent?" → Start with --timings (Layer 1)
"Is this change faster?" → Use hyperfine before/after (Layer 2), optionally with bench-compare.sh
"Why is parsing slow?" → async-profiler CPU flame graph (Layer 3)
"Why are allocations high?" → async-profiler alloc or JFR ObjectAllocationSample (Layer 3/4)
"Is there GC pressure?" → JFR (Layer 4)
"How fast is extractSymbols on one file?" → Microbenchmark (Layer 5)
"How much memory does indexing use?" → Memory profiling (Layer 6)
"Is there a memory leak or GC regression?" → Memory profiling before/after (Layer 6)
--timings flagThe fastest way to see where time goes. Works in both JVM and native image. Prints to stderr.
# Cold index phase breakdown
rm -rf benchmark/scala3/.scalex
./scalex index benchmark/scala3 --timings
# Warm index
./scalex index benchmark/scala3 --timings
# Query with bloom/text-search breakdown
./scalex refs benchmark/scala3 Compiler --timings
# JVM mode
./mill run index benchmark/scala3 --timingsIndex phases: git-ls-files, cache-load, oid-compare, parse, cache-save, and lazy build-* lookup phases
Query phases (refs/imports/coverage): bloom-screen, text-search
Durations are exclusive per thread: nested phases are subtracted from their parent. command and render expose query and output work. request-total measures elapsed application request time, including otherwise uninstrumented work, but not runtime startup before the entry point. Use hyperfine for complete process latency. Concurrent phases can overlap, so summing phases is not a wall-clock measurement. Batch mode reports the shared index load, then a separate request total for each query.
Timings:
git-ls-files 12.3 ms ( 1%)
cache-load 45.2 ms ( 5%)
oid-compare 3.1 ms ( 0%)
parse 782.0 ms (80%)
index-build 89.4 ms ( 9%)
cache-save 42.1 ms ( 4%)
request-total 974.1 msparsedCount == 0)bench.sh)Reproducible, statistical benchmarks using hyperfine against the Scala 3 compiler repo (~17.7K files).
hyperfine installed (brew install hyperfine)./build-native.sh)# Full suite (cold + warm + query + diverse + timings)
.agents/skills/benchmark/scripts/bench.sh
# Individual modes
.agents/skills/benchmark/scripts/bench.sh cold
.agents/skills/benchmark/scripts/bench.sh warm
.agents/skills/benchmark/scripts/bench.sh query
.agents/skills/benchmark/scripts/bench.sh diverse # miss, heavy refs, fuzzy, grep, hierarchy
.agents/skills/benchmark/scripts/bench.sh timings # --timings output for cold/warm/refs
.agents/skills/benchmark/scripts/bench.sh memory # heap usage, GC pressure (JVM only)
# Custom runs/binary
BENCH_RUNS=10 SCALEX_BIN=./target/scalex .agents/skills/benchmark/scripts/bench.sh# 1. Benchmark current state
BENCH_EXPORT=benchmark/results/before.json .agents/skills/benchmark/scripts/bench.sh
# 2. Make changes, rebuild
./build-native.sh
# 3. Benchmark new state
BENCH_EXPORT=benchmark/results/after.json .agents/skills/benchmark/scripts/bench.sh
# 4. Compare (flags >5% regressions)
.agents/skills/benchmark/scripts/bench-compare.sh benchmark/results/before.json benchmark/results/after.jsonbench-compare.sh exits non-zero if any benchmark regressed >5%.
| Metric | Range | Bottleneck |
|---|---|---|
| Cold index | 3-5s | Scalameta parsing (CPU-bound, parallel) |
| Warm index | 0.8-1.0s | OID compare + index load |
| Query (any) | 1.2-1.5s | Index deserialization from disk |
| refs (heavy symbol) | 2-4s | Text search across candidate files |
Reveals call-stack-level CPU hotspots. No code changes needed — JVM agent only.
brew install async-profiler
# Or set AP_HOME to your installation# CPU flame graph of cold index
./profiling/profile.sh benchmark/scala3
# Wall-clock (includes I/O wait — useful for parallelStream bottlenecks)
./profiling/profile.sh benchmark/scala3 wall
# Allocation hotspots (where objects are created)
./profiling/profile.sh benchmark/scala3 alloc
# Lock contention (parallelStream synchronization)
./profiling/profile.sh benchmark/scala3 lockOutput: profiling/profile-<event>.html — open in browser for interactive flame graph.
parallelStream infrastructure → overhead from small task granularity.ConcurrentLinkedQueue.add() → batch results instead of per-item add.Files.readAllLines or Files.readString → potential for memory-mapped I/O.Built into the pinned JDK. Near-zero overhead. Best for GC, file I/O, and thread analysis.
# Record with custom config
SCALEX_JAVA_OPTS="-XX:StartFlightRecording=filename=profiling/scalex.jfr,settings=profiling/scalex.jfc,duration=60s" \
./mill run index benchmark/scala3
# Quick summary
jfr summary profiling/scalex.jfr
# Specific events
jfr print --events jdk.ObjectAllocationSample profiling/scalex.jfr | head -100
jfr print --events jdk.GarbageCollection profiling/scalex.jfr
jfr print --events jdk.FileRead profiling/scalex.jfr | head -50
jfr print --events jdk.ThreadPark profiling/scalex.jfr | head -50
# GUI analysis
open profiling/scalex.jfr # Opens in JDK Mission Controlprofiling/scalex.jfc is tuned for scalex — it enables allocation sampling, GC events, file I/O (>1ms threshold), and thread parking/monitor events.
src/bench.scala)Isolate per-function costs with warmup and statistical measurement.
# Specific benchmark
./mill bench.run extract-single benchmark/scala3
./mill bench.run bloom-build benchmark/scala3
./mill bench.run persistence-load benchmark/scala3
./mill bench.run search benchmark/scala3
./mill bench.run refs benchmark/scala3
# All benchmarks
./mill bench.run all benchmark/scala3
# Custom warmup/iterations
./mill bench.run extract-single benchmark/scala3 --warmup 3 --iterations 10| Benchmark | What it measures |
|---|---|
extract-single | extractSymbols on the largest file |
extract-batch | extractSymbols on 100 files (sequential AND parallel) |
bloom-build | buildBloomFilterFromSource on a large source |
persistence-load | IndexPersistence.load with and without bloom deserialization |
search | WorkspaceIndex.search("Compiler") warm |
refs | findReferences("Phase") warm |
index-cold | Full cold index including map building |
Reports: mean, median, p99, stddev, min, max per benchmark.
bench.sh memory)Measures heap usage, GC pressure, and peak memory across three scenarios: cold index (full parse), warm index (cache load), and refs query. Uses JVM GC logging via -Xlog:gc* — requires Mill (JVM mode), not native binary.
# Full memory profile (cold + warm + refs)
.agents/skills/benchmark/scripts/bench.sh memoryUses the checked-in Mill launcher. Does not require hyperfine or native binary.
Reports per-scenario: phase timings (from --timings), then memory stats:
--- Cold index (full parse, ~17.7k files) ---
git-ls-files 60.7 ms ( 1%)
parse 5576.5 ms (94%)
cache-save 228.7 ms ( 4%)
total 5952.2 ms
Peak pre-GC heap: 790 MB
Heap at exit (used): 676 MB
Heap at exit (committed): 1184 MB
GC pauses: 34
Total GC pause time: 185.3 msEnds with a summary table:
=== Memory Summary ===
Scenario Peak Heap Exit Used Exit Commit GC #
-------- --------- --------- ----------- ----
Cold index 790 MB 676.2 MB 1184.0 MB 34
Warm index 256 MB 271.8 MB 584.0 MB 2
refs Phase 53 MB 29.7 MB 56.0 MB 0-Xmx for constrained environments.parallelStream is creating too many concurrent ASTs. Consider batching files in chunks.| Scenario | Peak Heap | Exit Used | GC Pauses |
|---|---|---|---|
| Cold index | 700-900 MB | 600-700 MB | 30-70 |
| Warm index | 200-300 MB | 250-300 MB | 1-3 |
| refs query | 30-60 MB | 25-35 MB | 0-1 |
For one-off measurements without the script:
# Run any scalex command with GC logging to a temp file
SCALEX_JAVA_OPTS="-Xlog:gc*=info:file=/tmp/scalex-gc.log" \
./mill run overview benchmark/scala3
# Check peak heap
grep -o '[0-9]*M->' /tmp/scalex-gc.log | sed 's/M->//' | sort -n | tail -1
# Check exit heap
grep "garbage-first" /tmp/scalex-gc.log | tail -1async-profiler and JFR don't work with GraalVM native images. Options:
# macOS Instruments (Time Profiler)
xcrun xctrace record --template "Time Profiler" --launch -- ./scalex index scala3
# --timings always works
./scalex index scala3 --timingsWhen evaluating changes:
The bench-compare.sh script automates the regression check against these thresholds.
--timings to identify which phase to optimizeBENCH_EXPORT=before.json bench.sh to capture baseline--timings to verify phase improvementBENCH_EXPORT=after.json bench.sh to capture new numbersbench-compare.sh before.json after.json to check for regressions© nguyenyou, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in .agents/skills/benchmark of nguyenyou/scalex.
Open the folder on GitHubat commit 9098af8
Benchmark next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Benchmark this skillnguyenyou/scalex | 109 | — | ~3.4k | Automated safety check: Pass | MIT | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT | |
| LLM Torch Profiler Analysissgl-project/sglang | 37k | 2 repos | ~6.4k | Automated safety check: Pass | Apache-2.0 | |
| Pycrazyguitar/pysheeet | 8.2k | — | ~886 | Automated safety check: Pass | MIT | |
| Cmux Debugging Guidemanaflow-ai/cmux | 28k | 1 repos | ~1.1k | Automated safety check: Pass | Custom licence | |
| Electron Heap Snapshot Analysiskeybase/client | 9.3k | — | ~875 | Automated safety check: Pass | BSD-3-Clause |
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
sgl-project/sglang
Unified LLM torch-profiler triage skill for sglang, vllm, TensorRT-LLM, and TokenSpeed.
crazyguitar/pysheeet
Comprehensive Python programming reference covering syntax, concurrency, networking, databases, ML/LLM development, and HPC.
manaflow-ai/cmux
Covers debug logging, the Debug menu, profiling rules and runtime pitfalls for working on the cmux macOS terminal app.
keybase/client
Analyzes V8, Chrome and Electron .heapsnapshot files with Node scripts to find memory leaks, detached DOM nodes and the retainer paths that keep objects alive.
ben-manes/caffeine
Runs controlled JMH experiments on the Caffeine cache to find shared contention and hot-path waste, then reviews correctness and returns a reviewable patch.
nguyenyou/scalex
Explore and navigate Git-tracked Scala 2/3 and Java source with Scalex.
nguyenyou/scalex
Re-render Scalex banner and OG image PNGs from their HTML source files using Chrome DevTools MCP.
Categories
Run scalex performance benchmarks, profiling, and timing analysis. Benchmark is an agent skill from nguyenyou/scalex. Run scalex performance benchmarks, profiling, and timing analysis.
Benchmark fits situations like: the user asks to benchmark scalex; measure performance; profile index/query times; compare before/after performance of a change.
Run `npx skills add nguyenyou/scalex --skill benchmark -a claude-code`. Or copy the skill folder (.agents/skills/benchmark in nguyenyou/scalex) into .claude/skills/benchmark in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nguyenyou/scalex --skill benchmark -a codex`. Or copy the skill folder (.agents/skills/benchmark in nguyenyou/scalex) into .agents/skills/benchmark in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nguyenyou/scalex --skill benchmark -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/benchmark, .gemini/skills/benchmark, .github/skills/benchmark and .opencode/skills/benchmark in your project.
Going by SKILL.md and its folder, Benchmark needs a shell for the scripts in its folder and the command-line tools its instructions call (brew and xcrun). Our summary lists: A Bash shell.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Benchmark is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Benchmark: Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), LLM Torch Profiler Analysis (sgl-project/sglang, 37k stars), Py (crazyguitar/pysheeet, 8.2k stars) and Cmux Debugging Guide (manaflow-ai/cmux, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nguyenyou (a GitHub user) maintains it in nguyenyou/scalex, which has 109 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 18, 2026.
Source: nguyenyou/scalex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.