Code Review
ClickHouse/clickhouse-java
Review changes in clickhouse-java for correctness, compatibility, API stability, and missing tests.
Generate PR descriptions for ClickHouse/ClickHouse that match maintainer expectations.
$ npx skills add ClickHouse/ClickHouse --skill clickhouse-pr-description -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ClickHouse/ClickHouse clickhouse-pr-description --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/clickhouse-pr-description .claude/skills/clickhouse-pr-description && 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 "clickhouse-pr-description" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/clickhouse-pr-description into .claude/skills/clickhouse-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-pr-description", 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/clickhouse-pr-descriptionType 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 clickhouse-pr-description -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ClickHouse/ClickHouse clickhouse-pr-description --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/clickhouse-pr-description .agents/skills/clickhouse-pr-description && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "clickhouse-pr-description" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/clickhouse-pr-description into .agents/skills/clickhouse-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-pr-description", 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 clickhouse-pr-description -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ClickHouse/ClickHouse clickhouse-pr-description --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/clickhouse-pr-description .cursor/skills/clickhouse-pr-description && 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 "clickhouse-pr-description" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/clickhouse-pr-description into .cursor/skills/clickhouse-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-pr-description", 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/clickhouse-pr-description--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 clickhouse-pr-description -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ClickHouse/ClickHouse clickhouse-pr-description --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/clickhouse-pr-description .gemini/skills/clickhouse-pr-description && 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 "clickhouse-pr-description" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/clickhouse-pr-description into .gemini/skills/clickhouse-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-pr-description", 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 clickhouse-pr-descriptionInstalls 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 clickhouse-pr-description -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/clickhouse-pr-description .github/skills/clickhouse-pr-description && 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 "clickhouse-pr-description" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/clickhouse-pr-description into .github/skills/clickhouse-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-pr-description", 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 clickhouse-pr-description -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 clickhouse-pr-description --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/clickhouse-pr-description .opencode/skills/clickhouse-pr-description && 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 "clickhouse-pr-description" agent skill from https://github.com/ClickHouse/ClickHouse/tree/master/.claude/skills/clickhouse-pr-description into .opencode/skills/clickhouse-pr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-pr-description", 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.
clickhouse-pr-descriptionGenerate PR descriptions for ClickHouse/ClickHouse that match maintainer expectations.
Clickhouse PR Description is an agent skill from ClickHouse/ClickHouse. Generate PR descriptions for ClickHouse/ClickHouse that match maintainer expectations. Use when creating or updating PR descriptions.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
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.
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:
TaskBash(gh:*)Bash(git:*)ReadGlobGrepAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
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.
Clickhouse PR Description loads about 1.9k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 899 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); files beside SKILL.md are not scanned.
The full file from ClickHouse/ClickHouse at commit c873902, republished under its Apache-2.0 licence (© ClickHouse). 899 words, ~1,942 tokens.
.claude/skills/clickhouse-pr-description/SKILL.md (or your agent's skills folder).Generate a good PR description and apply it, with optional confirmation based on user preference.
Plain description of what changed. No prefix conventions like fix(): or feat():.
Exception — .claude/ changes: when the PR only touches files under .claude/ (settings, tools, skills, instructions, etc.), prefix the title with claude: . Example: claude: add fetch_ci_report.js to allowed commands.
Change default stderr_reaction to log_last for executable UDFsFix exception when inserting NULL into non-nullable column via CASTclaude: allow fetch_ci_report.js and grep in Claude Code settingsfix(udf): Change default stderr_reaction — conventional commits, ClickHouse doesn't use themFuzzer fixes — too vague, tells the reviewer nothingImprove error handling and enrich exit code exceptions with stderr context — too vague, doesn't say what was actually changedRead .github/PULL_REQUEST_TEMPLATE.md for the exact template structure.
A good PR description has two parts:
1. Free-form context (above the template, optional but encouraged for non-trivial changes)
Explain to a future reader: what was the problem, why did it need fixing, what approach was taken, what were the results or trade-offs. This is the right place for:
Use plain paragraphs. Headers like ## Motivation, ## Changes, ## Results are fine and helpful — they make the PR easier to navigate for reviewers. Bullet lists are fine. Be as detailed as needed.
2. Template section (mandatory)
Fill in the changelog category (delete the rest of the list) and write the changelog entry when the selected category requires one.
From #96110:
### Changelog category (leave one):
- Backward Incompatible Change
### Changelog entry:
The semantics of the `do_not_merge_across_partitions_select_final` setting were
made more obvious. Previously, the feature could be automatically enabled when
the setting was not explicitly set in the configs. It caused confusion repeatedly
and, unfortunately, led to some issues in production. Now, the rules are simpler:
`do_not_merge_across_partitions_select_final=1` enables the functionality
unconditionally. If `do_not_merge_across_partitions_select_final=0`, then automatic
is used only if the new setting
`enable_automatic_decision_for_merging_across_partitions_for_final=1` and not used
otherwise. To preserve the old behaviour as much as possible, the defaults were set
to `do_not_merge_across_partitions_select_final=0` and
`enable_automatic_decision_for_merging_across_partitions_for_final=1`.
---
The backward-incompatible part is that if someone has
`do_not_merge_across_partitions_select_final=0` explicitly set in the configs,
it no longer protects against the use of automatics. I'm open to discussion on
whether we should conservatively default to disabled automatics.Note: extra context after --- is fine — reviewers see it, but only the changelog entry above the blank line goes into the CHANGELOG.
The entry is what ends up in the published CHANGELOG. Write it for a user who is upgrading and scanning for what affects them. The PR link and author attribution are appended automatically by tooling — do not include them.
Format: the changelog script (ci/tools/changelog.py) collects all lines after the ### Changelog entry: header up to the first blank line, then joins them with spaces into a single string. This means:
Tense: mixed is fine and natural. "Added X", "Fix a case where...", "The X setting is now Y" are all real examples from the CHANGELOG. Don't force everything into present tense.
Length: match the impact. A small new function can be one sentence. A changed default or backward-incompatible behavior warrants as many sentences as needed, including what users must do to adapt.
Specificity: always name the exact thing that changed. Never write "Fix a bug" or "Improve performance" without saying what specifically.
For backward-incompatible changes: always explain the old behavior, the new behavior, and how to restore the old one if possible.
Real examples from the ClickHouse CHANGELOG:
One sentence, sufficient for a focused addition:
Add
xxh3_128hashing function.
One sentence with enough context:
DATEcolumns from PostgreSQL are now inferred asDate32in ClickHouse (in previous versions they were inferred asDate, which led to overflow of values outside a narrow range). Allow insertingDate32values back to PostgreSQL.
Full migration instructions for a default change:
Deduplication is turned ON for all inserts by default. It was OFF before for async inserts and for MV's, but it was ON for sync inserts. The goal is to have the same defaults for both ways of inserts. If you have deduplication explicitly disabled on your cluster, you have to explicitly set
deduplicate_insert='backward_compatible_choice'to keep the old behavior.
Describes new capability with enough detail to understand when to use it:
Added
OPTIMIZE <table> DRY RUN PARTS <part names>query to simulate merges without committing the result part. It may be useful for testing purposes: verifying merge correctness in the new version, deterministically reproducing merge-related bugs, and reliably benchmarking merge performance.
Reference the issue if one exists: Closes #XXXXX or Fixes #XXXXX at the end.
These patterns make PRs harder to read or signal low effort:
fix(scope): / feat(): / chore(): — ClickHouse doesn't use conventional commitsThis PR ... to start any section — just describe the changeFuzzer fixes, Fix bug, Improvements — always say what specificallyIt's fine to mention AI assistance openly. Co-Authored-By: in commits or acknowledgements in the PR description are acceptable — ClickHouse is open about AI-assisted development.
Before creating or updating the PR, check user memory for a confirmation preference. If no preference is stored and the session is interactive, ask once: "Should I always show you the description for approval before applying it, or just go ahead every time?" Save the answer to memory and apply it from then on. If the session is non-interactive, proceed directly without asking.
If the current repository is a fork (i.e. git remote get-url origin does not contain ClickHouse/ClickHouse), always target the upstream repository. Pass --repo ClickHouse/ClickHouse to gh pr create and set --head <fork-owner>:<branch> so the PR is opened against the canonical repo, not the fork.
© 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
Just SKILL.md in .claude/skills/clickhouse-pr-description of ClickHouse/ClickHouse.
Open the folder on GitHubat commit c873902
Clickhouse PR Description 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 |
|---|---|---|---|---|---|---|
| Clickhouse PR Description this skillClickHouse/ClickHouse | 50k | — | ~1.9k | Automated safety check: Pass | 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
Run a local pre-push AI code review of the current branch with the OpenAI codex CLI, the same way ClickHouse CI does, and optionally iterate fix and re-review until clean.
Works with
Categories
Generate PR descriptions for ClickHouse/ClickHouse that match maintainer expectations. Clickhouse PR Description is an agent skill from ClickHouse/ClickHouse. Generate PR descriptions for ClickHouse/ClickHouse that match maintainer expectations.
Clickhouse PR Description fits situations like: updating PR descriptions; tasks that involve Data warehousing; tasks that involve Pull requests.
Run `npx skills add ClickHouse/ClickHouse --skill clickhouse-pr-description -a claude-code`. Or copy the skill folder (.claude/skills/clickhouse-pr-description in ClickHouse/ClickHouse) into .claude/skills/clickhouse-pr-description in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ClickHouse/ClickHouse --skill clickhouse-pr-description -a codex`. Or copy the skill folder (.claude/skills/clickhouse-pr-description in ClickHouse/ClickHouse) into .agents/skills/clickhouse-pr-description 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 clickhouse-pr-description -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/clickhouse-pr-description, .gemini/skills/clickhouse-pr-description, .github/skills/clickhouse-pr-description and .opencode/skills/clickhouse-pr-description in your project.
Going by SKILL.md and its folder, Clickhouse PR Description needs the command-line tools its instructions call (git and gh). Its frontmatter pre-approves these tools: Task, Bash(gh:*), Bash(git:*), Read, Glob, Grep, AskUserQuestion.
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. 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. Review the folder before installing.
Clickhouse PR Description 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 1.9k tokens (SKILL.md is roughly 7.8k 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 Clickhouse PR Description: 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.