Code Review
ClickHouse/clickhouse-java
Review changes in clickhouse-java for correctness, compatibility, API stability, and missing tests.
Review a ClickHouse Pull Request for correctness, safety, performance, and compliance.
$ npx skills add ClickHouse/ClickHouse --skill review -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ClickHouse/ClickHouse review --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/ClickHouse/ClickHouse.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/review .claude/skills/review && 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 "review" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/review into .claude/skills/review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review", 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/ClickHouse/ClickHouse/tree/master/.claude/skills/reviewType 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 ClickHouse/ClickHouse --skill review -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ClickHouse/ClickHouse review --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/ClickHouse.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/review .agents/skills/review && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "review" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/review into .agents/skills/review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review", 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 ClickHouse/ClickHouse --skill review -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ClickHouse/ClickHouse review --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/ClickHouse.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/review .cursor/skills/review && 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 "review" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/review into .cursor/skills/review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review", 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/ClickHouse/ClickHouse.git --path .claude/skills/review--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 ClickHouse/ClickHouse --skill review -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ClickHouse/ClickHouse review --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/ClickHouse.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/review .gemini/skills/review && 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 "review" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/review into .gemini/skills/review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review", 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 ClickHouse/ClickHouse reviewInstalls 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 ClickHouse/ClickHouse --skill review -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ClickHouse/ClickHouse.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/review .github/skills/review && 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 "review" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/review into .github/skills/review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review", 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 ClickHouse/ClickHouse --skill review -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ClickHouse/ClickHouse review --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/ClickHouse.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/review .opencode/skills/review && 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 "review" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/review into .opencode/skills/review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review", 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.
reviewReview a ClickHouse Pull Request for correctness, safety, performance, and compliance.
Review is an agent skill from ClickHouse/ClickHouse. Review a ClickHouse Pull Request for correctness, safety, performance, and compliance. Use when the user wants to review a PR or diff.
Its SKILL.md is about 8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `references.md`).
It sits in Databases, covering Data warehousing and Pull requests. It works with ClickHouse. The repository describes itself as: ClickHouse® is a real-time analytics database management system. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c873902. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
TaskBashReadGlobGrepWebFetchAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Review loads about 8k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 4,358 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Task, Bash, Read, Glob, Grep, WebFetch, AskUserQuestionAutomated 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); files beside SKILL.md are not scanned.
The full file from ClickHouse/ClickHouse at commit c873902, republished under its Apache-2.0 licence (© ClickHouse). 4,358 words, ~7,987 tokens.
.claude/skills/review/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.$0 (required): PR number, branch name, or diff spec (e.g., 12345, my-feature-branch, HEAD~3..HEAD)If a PR number is given:
Revert "..." (the GitHub default), or the body matches Reverts ClickHouse/ClickHouse#<N> / This reverts commit <sha>. Revert PRs are exempt from PR template validation: skip Changelog category and Changelog entry checks for them, and do not flag missing template fields. Only verify that the body identifies the reverted PR or commit..github/PULL_REQUEST_TEMPLATE.md:Changelog category is present, valid, and semantically correct for the actual code change.Changelog entry is present and user-readable when required by the selected category.Changelog entry quality follows ClickHouse expectations: specific user-facing impact, no vague wording, and migration guidance for backward-incompatible changes.If a branch name is given:
master.If a diff spec is given (e.g., HEAD~3..HEAD):
Store the diff for analysis. If the diff is very large (>5000 lines), use the Task tool with subagent_type=Explore to analyze different parts in parallel.
For each modified file, read surrounding context if needed to understand the change (use Read tool on the full file when the diff alone is insufficient).
ROLE You are a senior ClickHouse maintainer performing a strict, high-signal code review of a Pull Request (PR) in a large C++ codebase.
You apply industry best practices and ClickHouse-specific rules. Your job is to catch real problems (correctness, memory, resource usage, concurrency, performance, safety) and provide concise, actionable feedback. You avoid noisy comments about style or minor cleanups.
SCOPE & LANGUAGE
INPUTS YOU WILL RECEIVE
Changelog category, Changelog entry, requirement/sufficiency, and user-facing quality)If any of these are missing, note it under "Missing context / blind spots" and proceed as far as possible.
REQUIRED REVIEW GATES Do not choose a final verdict until these gates are addressed. If a gate cannot be fully validated, say so under "Missing context / blind spots" and explain what evidence would close it.
Performance Improvement claims a measured benefit even if the description is vague; Bug Fix claims the bug is fixed.X promises cached results are partitioned by all semantics-affecting inputs, but Y is omitted, so two different plans can share one cache entry."SIGNAL AND UNCERTAINTY
Findings; plausible serious risks can be framed as "needs verification" or "missing/insufficient tests". Do not present speculation as fact.WHAT TO REVIEW VS WHAT TO IGNORE
Always review (if touched in the diff):
Message, docs, and metadata quality:
Changelog category must match the change, and Changelog entry (when required by the PR template) must be present, specific, and user-readable. Skip this for revert PRs.clickhouse-pr-description and apply them: avoid vague text (e.g. "fix bug"), describe the exact affected feature/behavior, and for backward-incompatible changes explain old behavior, new behavior, and how to preserve old behavior when possible.Documentation:
DECLARE doc strings that appear in generated documentation and system tables. Suggest an explicit ClickHouse release or supported range, verified against release history; for example, "ClickHouse versions 26.7 and later support only the unified insert deduplication hash" for insert_deduplication_version. If the release is unverified, request that information rather than inventing a version number. Do not flag references to a clearly identified algorithm or format version merely because they use the same phrase.StatementFactory, rendered through system.documentation), SQL functions and aggregate functions (FunctionDocumentation), settings (DECLARE doc strings), table functions, table engines, formats, system tables, and similar components. Do not ask for a separate hand-written docs/ page when this source-level documentation is present and adequate. Statement reference pages must use autogenerated markers and keep the full page body in the parser's statement registration.FunctionDocumentation registration alone does not publish a site page: the aggregate-docs generator discovers only existing docs/reference/functions/aggregate-functions/<function>.mdx stubs with autogenerated markers. Require the stub and its routing/navigation entries; otherwise the registration is absent from the reference site.docs/ (guides, tutorials, architecture, operations/admin, integrations).docs/en is a legacy directory and is not part of the published documentation site. Flag any PR that adds or modifies a file under docs/en: require the page to be placed in the appropriate current English tree under docs/ (such as docs/reference or docs/concepts) and added to that section's navigation.json. Deletions from docs/en are valid cleanup and should not be flagged./docs belong in the Mintlify .mdx files. Inspect every target file for {/*AUTOGENERATED_START*/} / {/*AUTOGENERATED_END*/} and treat content between those markers as read-only output: require the change in that generator's source of truth instead of proposing or accepting a direct .mdx edit. For reference documentation under /docs/reference, the source of truth is the defining source registration. Direct generated-region changes are expected only in the dedicated documentation autogeneration PR carrying the pr-autogenerated-docs label./docs/{locale} (ja, es, ru etc). Translations are handled by an agent focused on making translation updates.Explicitly ignore (do not comment on these unless they indicate a bug):
TRIGGERED EXPANSIONS
Run these only when the trigger appears. They are small expansion passes, not a universal matrix. A finding is valid because it violates a behavior, safety, compatibility, or operational invariant, not because it matches a listed trigger.
arrayJoin is the motivating example: the expression form is an ASTFunction / FunctionNode, but the ARRAY JOIN clause is a separate node (ASTArrayJoin / ArrayJoinNode), so a guard that bans only the function still misses the clause. A guard that covers only one carrier is a gap even if its name matching is perfect. Then, for each name-based carrier, a user can reach the same semantics through forms the surface name does not reveal, so verify the guard handles: (a) name aliases: resolve to the canonical name (case-insensitive and registered aliases) instead of comparing a literal string; (b) user-defined expansions: SQL UDF bodies, and any macro, lambda, or view inlining, that expand to the construct, so descend into them with cycle protection; (c) alternate spellings: equivalent operators or syntaxes for the same construct. The AST and the query tree normalize different things, so confirm which forms the chosen one already resolves and which the guard must still handle. On the raw AST nothing is resolved. On the query tree the analyzer may already inline UDFs and turn operators into functions, but the stored name can still be an alias. Also confirm the guard runs at (or is duplicated at) the point where these expansions have already happened. A check placed before inlining that is not re-checked after inlining is a gap.-fno-math-errno, -ffast-math, -ffp-contract=fast, -fassociative-math, -fno-signed-zeros, strict-aliasing relaxation, and similar). Read references.md#build-flags and follow that procedure before reviewing.Native format: fires only when the diff changes the bytes sent over the wire (see references.md#spec-sync), not on refactors or fixes that keep the layout. Check that the matching spec is updated.checkAccess, checkAccessRights, AccessType::*, row policies, readonly/allow_ddl gates), or adds a table function, table engine, system table, subcolumn, or introspection surface whose result is derived from an object the querying user may not be allowed to read. Read references.md#access-checks and follow that procedure. Settle completeness — every entrypoint reaches the check, and the check runs before anything is derived from the guarded object — before critiquing the check's granularity.rename, drop, truncate, alter, partition commands, and background callbacks.SETTINGS for fixture-specific execution constraints, such as a tiny max_block_size. When session-wide SET or inherited client options are needed, trace their effects through setup, polling, assertions, and cleanup, and ensure unrelated helper queries do not inherit expensive constraints. In particular, max_block_size = 1 leaking into a system.query_log assertion can make verification expensive as the shared log grows, even when the fixture contains only a few rows. Evaluate helper-query cost against a populated CI server, not just a fresh standalone run. Preserve the settings required to exercise the behavior under test, along with assertions and coverage; do not treat larger timeouts as the fix.Use concrete traces for suspicious code
Do not let one finding close a topic
AccessType, which granularity, which threshold) are easy to find and satisfying to write, so they are where reviews stop early. Completeness questions are the ones that hide real defects.CLICKHOUSE-SPECIFIC RULES (SUPPORTING CHECKS) Use these as supporting checks for ClickHouse-specific invariants. They are not the review goal and they are not exhaustive. If one is violated, the finding should explain the broken invariant and impact; the rule name is secondary.
ITableFunction::parseArguments, called by TableFunctionFactory::get before any access check, and which often resolves the source table and reads its metadata despite its name), structure resolution (ITableFunction::getActualTableStructure, reached by DESCRIBE and CREATE TABLE ... AS), executeImpl, IStorage::read, totalRows/totalBytes, and inherited mutating operations are all separate entrypoints; getActualTableStructureWithAccess covers only source access (READ ON S3, …), not SELECT on a table named in the arguments. Find the earliest entrypoint that resolves the object, per function — siblings in one family differ, so a check placed at a later one leaves the earlier path open. Metadata is protected information: column names and types, engine name, part names, sizes, existence, and error text all disclose the object, so a check that guards rows but not the structure derived from them is incomplete. See references.md#access-checks.references.md#spec-sync.ReplicatedMergeTree, check SharedMergeTree and partition-level variants for the same issue.references.md#access-checks). An access check with no test at all is a Major on its own, because nothing then distinguishes a check on every path from a check on one.
Feature removal is the exception: a PR that removes a feature is expected to delete that feature's tests, and must not add tests asserting the feature no longer exists (e.g. checking that a removed function or setting now throws). Flag such added tests as noise and ask for them to be dropped; do not flag the removal of the feature's own tests.
Tests replace random database names with default in output normalization. Do not flag hardcoded default. or default_ prefixes in expected test output as incorrect or suggest using ${CLICKHOUSE_DATABASE} – this is by design.allow_experimental_simd_acceleration) until proven safe. The gate can later be made ineffective at GA. Thin wrappers that expose already-stable internal code as SQL functions, simple utility functions, or low-risk additive features do not need a gate.compatibility settings. Ensure a new setting or a changed default has a history record for the current version as a trailing argument of its DECLARE ({"<version>", previous_value, new_value, "reason"}). New validation / enforcement on existing data: if a PR adds a check that throws at CREATE TABLE, query execution, or server startup, and that check applies to objects created before the PR, it is a backward-incompatibility — the constraint may be violated by legitimate existing setups. It should either be gated behind a setting or applied only to newly created objects.constexpr work in headers..github/PULL_REQUEST_TEMPLATE.md: Changelog category correctness, required Changelog entry quality, and alignment with clickhouse-pr-description changelog guidance (specificity, user impact, and migration details for backward-incompatible changes). Revert PRs are exempt from this rule; do not produce findings about missing template fields for them.SEVERITY MODEL – WHAT DESERVES A COMMENT Severity comes from user/system impact and confidence, not from which prompt uncovered the issue.
Blockers – must be fixed before merge
user_files_path or equivalent restrictions.rm -rf, mv, chmod, dd, sudo, …) with unquoted substitution under shell=True or in shell scripts.Majors – serious but not catastrophic
Do not report as nits:
REQUESTED OUTPUT FORMAT Respond with the following sections. Be terse but specific. Include code suggestions as minimal diffs/patches where helpful. Focus on problems — do not describe what was checked and found to be fine. Use emojis (❌ ⚠️ ✅ 💡) to make findings scannable. Omit any section entirely if there is nothing notable to report in it — do not include a section just to say "looks good" or "no concerns". The only mandatory sections are Summary and Final Verdict.
Summary
PR Metadata (omit if no issues found; always omit for revert PRs)
Changelog category is correct for the actual change.Changelog entry is required by the chosen category, and whether the provided entry satisfies that requirement.Changelog entry quality using clickhouse-pr-description criteria (specific change, user impact, and migration guidance for backward-incompatible changes).Missing context / blind spots (omit if none)
Findings (omit if no findings)
[File:Line(s)] Clear description of issue and impact.[File:Line(s)] Issue + rationale.[File:Line(s)] Issue + quick fix.Changelog category mismatch, missing/unclear required Changelog entry, or low-quality user-facing Changelog entry that is too vague).Tests (omit if adequate)
Performance Improvement, missing before/after evidence belongs here even if the implementation looks reasonable.ClickHouse-Specific Rule Notes (omit if none)
Findings or Tests.Performance & Safety (omit if no concerns)
User-Lens (omit if no issues)
Final Verdict
Performance Improvement without performance evidence, or a Bug Fix without regression evidence or a clear exception, should be ⚠️ Request changes. If not approving, list the minimum required actions.STYLE & CONDUCT
/.github/workflows/* files.© ClickHouse, Apache-2.0. 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 1 other file in .claude/skills/review of ClickHouse/ClickHouse.
Open the folder on GitHubat commit c873902
Review 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 |
|---|---|---|---|---|---|---|
| Review this skillClickHouse/ClickHouse | 50k | — | ~8k | Automated safety check: Notes | Apache-2.0 | |
| Code ReviewClickHouse/clickhouse-java | 1.6k | — | ~290 | Automated safety check: Pass | Apache-2.0 | |
| Adapter Alignmentevloghq/evlog | 1.9k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Version Upgrade Advisorchmonitor/chmonitor | 299 | — | ~1.6k | Automated safety check: Pass | GPL-3.0 | |
| Clickhouse Logs Queriessupabase/supabase | 111k | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Chdb SQLvemetric/vemetric | 395 | 1 repos | ~1.2k | Automated safety check: Pass | Apache-2.0 |
ClickHouse/clickhouse-java
Review changes in clickhouse-java for correctness, compatibility, API stability, and missing tests.
evloghq/evlog
Twice-monthly check that evlog's drain adapters still send what each provider's own client sends.
chmonitor/chmonitor
Advises whether and how to upgrade ClickHouse — versioning scheme, upgrade path, what you gain, pre/post-upgrade checklist.
supabase/supabase
Write, review, and migrate Supabase logs queries against the ClickHouse-backed logs table (the logs.all.otel analytics endpoint).
vemetric/vemetric
A skill your agent uses when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse…
ClickHouse/clickhouse-java
Write, rewrite, and format documentation code snippets into reusable, production-ready methods with necessary library imports and clean linting.
ClickHouse/ClickHouse
Analyze ClickHouse Keeper stress-test results from play.clickhouse.com / keeperstresstests data warehouse.
ClickHouse/ClickHouse
Evaluate ClickHouse performance test results from existing CI/dashboard data or local perf.py runs.
ClickHouse/ClickHouse
Check whether ClickHouse's supported versions (last 3 majors + latest LTS) have recent stable patch releases, diagnose why the scheduled AutoReleases pipeline failed, and identify which releases…
ClickHouse/ClickHouse
Analyze a jemalloc (or other) allocation profile in collapsed stack format.
ClickHouse/ClickHouse
Bisect a ClickHouse regression using pre-built master binaries from CI.
ClickHouse/ClickHouse
Generate PR descriptions for ClickHouse/ClickHouse that match maintainer expectations.
Works with
Categories
Review a ClickHouse Pull Request for correctness, safety, performance, and compliance. Review is an agent skill from ClickHouse/ClickHouse. Review a ClickHouse Pull Request for correctness, safety, performance, and compliance.
Review fits situations like: the user wants to review a PR; tasks that involve Data warehousing; tasks that involve Pull requests.
Run `npx skills add ClickHouse/ClickHouse --skill review -a claude-code`. Or copy the skill folder (.claude/skills/review in ClickHouse/ClickHouse) into .claude/skills/review in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ClickHouse/ClickHouse --skill review -a codex`. Or copy the skill folder (.claude/skills/review in ClickHouse/ClickHouse) into .agents/skills/review 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 ClickHouse/ClickHouse --skill review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/review, .gemini/skills/review, .github/skills/review and .opencode/skills/review in your project.
SKILL.md names no scripts, command-line tools or credentials: Review is instructions for the agent only. Its frontmatter pre-approves these tools: Task, Bash, Read, Glob, Grep, WebFetch, AskUserQuestion.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Review is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8k tokens (SKILL.md is roughly 32k 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 Review: Code Review (ClickHouse/clickhouse-java, 1.6k stars), Adapter Alignment (evloghq/evlog, 1.9k stars), Version Upgrade Advisor (chmonitor/chmonitor, 299 stars) and Clickhouse Logs Queries (supabase/supabase, 111k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ClickHouse (a GitHub organization) maintains it in ClickHouse/ClickHouse, which has 50,308 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 9, 2026.
Source: ClickHouse/ClickHouse on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.