Agent skill

Patch Release Check

by ClickHouse in 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…

Apache-2.0Auto-check: notesDatabases

Install Patch Release Check

skills CLI
$ npx skills add ClickHouse/ClickHouse --skill patch-release-check -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ClickHouse/ClickHouse patch-release-check --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ClickHouse/ClickHouse.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/patch-release-check .claude/skills/patch-release-check && rm -rf skills-src

Use ~/.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/

Facts

Skill name
patch-release-check
GitHub stars
50k
Token cost
~4k tokens
SKILL.md length
1,694 words
Files
2 (incl. scripts)
Skills in repo
24
Repo updated
First seen
Licence
Apache-2.0

At a glance

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…

  • Works in 6 steps: Run the health check → Determine the targeted versions → Decide which releases are missing → …
  • Asked are the patch releases up to date
  • SKILL.md covers Arguments, Hard rules, Steps and Known issue / hardening, plus 1 more section
  • Runs Shell scripts from its folder; calls git, gh and bash; needs GH_TOKEN

What it does

Patch Release Check is an agent skill from 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 must be created manually. Use when asked "are the patch releases up to date", "why did autorelease fail", "which releases are missing", "did a release get skipped", during the bi-weekly release-health check, or when investigating createrelease.yml / autoreleases.yml failures. Reproduces the full investigation: supported…

Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/release_health.sh`).

It sits in Databases, covering Data warehousing. It works with ClickHouse and Slack. The repository describes itself as: ClickHouse® is a real-time analytics database management system. The licence is Apache-2.0.

When your agent uses it

  • Asked are the patch releases up to date
  • Why did autorelease fail
  • Which releases are missing
  • Did a release get skipped

Example prompts

  • “are the patch releases up to date”
  • “why did autorelease fail”
  • “which releases are missing”
  • “/patch-release-check”

Requirements

  • A Bash shell
  • Docker
  • Pre-approved tools (allowed-tools): Bash, Read, Grep, Glob, Agent, WebFetch, AskUserQuestion

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Run the health check
  2. Determine the targeted versions
  3. Decide which releases are missing
  4. Diagnose the failures
  5. (gated) Remediate a guard blocker
  6. (gated) Make the missing release(s) manually

What it can do on your machine

Read from SKILL.md and the folder at commit cd023af. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Grep
    • Glob
    • Agent
    • WebFetch
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • gh
    • bash
    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GH_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Patch Release Check loads about 4k tokens when it runs. Until then it costs about 220 tokens; SKILL.md has 1,694 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~220
When it runs · the whole SKILL.md, loaded when a task matches
~4k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Grep, Glob, Agent, WebFetch, AskUserQuestion

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.

SKILL.md

The full file from ClickHouse/ClickHouse at commit cd023af, republished under its Apache-2.0 licence (© ClickHouse). 1,694 words, ~4,000 tokens.

Download SKILL.mdSave it as .claude/skills/patch-release-check/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
patch-release-check
description
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 must be created manually. Use when asked "are the patch releases up to date", "why did autorelease fail", "which releases are missing", "did a release get skipped", during the bi-weekly release-health check, or when investigating create_release.yml / auto_releases.yml failures. Reproduces the full investigation: supported versions from SECURITY.md, per-version staleness, classification of the last N days of AutoReleases/CreateRelease failures (version-bump-PR guard vs missing release-maker runner vs other), the Slack cross-check that reveals the blocking PR, and gated remediation (close a stale robot bump PR, dispatch CreateRelease for a missing version).
allowed-tools
Bash, Read, Grep, Glob, Agent, WebFetch, AskUserQuestion
argument-hint
[lookback-days, default 14]
disable-model-invocation
false

patch-release-check

ClickHouse publishes stable patch releases for its supported versions (the last three major releases plus the latest LTS) on a roughly bi-weekly cadence. They are created automatically by the scheduled AutoReleases workflow, but the pipeline can wedge silently and stop releasing. This skill is the every-two-weeks health check: it tells you which targeted versions are missing a recent patch, why the automation failed (classified), and walks gated remediation. There are two distinct failure modes, and they need different fixes:

  • Guard failure — AutoReleaseInfo aborts before releasing anything because an open "version bump" PR trips a guard in ci/jobs/auto_release_job.py. Repo/PR side.
  • Runner failure — runs can't start at all because no [self-hosted, release-maker] runner is available. Infra side, not a repo change.

Arguments

  • $0 (optional): lookback window in days for the workflow failure scan. Default 14.

Hard rules

  • Investigation is read-only. Steps 1–4 never change anything.
  • Reach the CLI as env -u GH_CONFIG_DIR gh (this is what the script's GH() wrapper does). Dropping GH_CONFIG_DIR avoids a poisoned config dir — one whose token passes gh auth status but 403s on the API — by falling back to the default config / GH_TOKEN. Do not use command gh: command only bypasses an interactive alias (irrelevant in a non-interactive script) and does not strip GH_CONFIG_DIR, so it inherits the poisoned config; and env -u GH_CONFIG_DIR command gh is wrong too — it tries to exec a nonexistent command binary on Linux.
  • Working files go in tmp/, never /tmp. (The script also points XDG_CACHE_HOME at a repo-local tmp/gh-cache when the default ~/.cache is not writable — some sandboxes mount a read-only HOME, which would otherwise make gh run view --log-failed fail before reaching GitHub.)
  • Never close a PR or dispatch a release without explicit per-action confirmation (use AskUserQuestion). Steps 5–6 are gated.
  • Only ever close a robot-clickhouse PR whose head branch is auto/v* AND whose release tag is already superseded. Never a human PR. Fail-close: if you are not certain a guard match is the orphaned robot bump PR, stop and report — do not close.

Steps

1. Run the health check
bash
bash .claude/skills/patch-release-check/scripts/release_health.sh 14

It prints four blocks (each ending in a one-line verdict):

  1. Targeted versions — the ✔️ rows of SECURITY.md (supported), what was excluded by config (excluded), and what is actually analyzed.
  2. Per-version staleness — latest patch tag (resolved from the complete git/matching-refs tag list, so a quiet/older LTS is never missed), age in days (from the annotated tag's tagger.date, matching auto_release_job.py), release-worthy / first-parent-total commits (rel/tot, reconstructed from the first-parent chain like AutoReleaseInfo), and a ⚠️ MISSING flag when a version is older than STALE_DAYS (default 18) and has release-worthy commits. A supported version with no release tag is a hard failure: the block prints NO TAG and the final verdict is FAILED (exit 3), never green. (A valid git tag with no published GitHub Release is still healthy — the date comes from the tag object.)
  3. Failure scan — AutoReleases and CreateRelease runs in the window, each AutoReleases failure classified GUARD / RUNNER / OTHER, plus a tally.
  4. Guard re-check — the live result of the exact guard query, i.e. the PR(s) currently wedging the pipeline.

Knobs (env vars): EXCLUDE_VERSIONS (space-separated versions to drop from the analysis; defaults to a hardcoded skip — see Notes), STALE_DAYS (missing threshold).

2. Determine the targeted versions

These are the ✔️ rows in SECURITY.md, generated by utils/security-generator/generate_security.py (the 3 most recent regular versions + up to 2 LTS, months 3 and 8). Read them live — never hardcode; the set rolls forward every release. The script already does this in block 1.

3. Decide which releases are missing

A targeted version is missing (act now) when its latest patch is older than the cadence (~2–2.5 weeks) and its branch has release-worthy commits. That is not raw ahead_by: AutoReleaseInfo drops the post-release version-bump commit (Update autogenerated version ...) before deciding whether a branch has a patch candidate, so the script counts only commits whose message is not a version bump. The rel/tot column shows release-worthy / total — a branch at 0/1 is stale but has only the bump commit and nothing to release (verdict says so), and must not be flagged MISSING. Distinguish "missing" from due — a version that just hit its cadence boundary; once the pipeline is unblocked, automation will release it, so it is not "missing" yet.

4. Diagnose the failures

GUARD — AutoReleaseInfo died in the version-bump-PR guard _assert_no_open_version_bump_prs (raise RuntimeError). This is the guard "check all previous version bump PRs were merged": it runs gh pr list --state open --search "Update version_date.tsv in:title" and aborts if the result is non-empty. The guard runs before any per-branch dispatch, so a guard failure skips every branch — nothing releases.

The script classifies GUARD only when the failed-step log shows both a guard traceback frame and the raise RuntimeError source line — not a line number (which drifts) and not bare RuntimeError. Both frames count: in _assert_no_open_version_bump_prs (ci/jobs/auto_release_job.py) and the legacy in _prepare (tests/ci/auto_release.py), which the 14-day lookback still reaches for two weeks after the praktika migration. Other failures — e.g. a branch reported ERROR for having no release tag — classify as OTHER, so the operator is not sent to hunt version-bump PRs when the guard is clear.

The GitHub Actions log does not name the offending PR — the list is sent to a Slack alert, not stdout. Find it two ways:

  • Block 4 of the script re-runs the exact query and prints the live match set.
  • Slack: the CIBuddy bot posts Found not merged version bump PRs to #core-ci-info (channel C07FHK0FV5H); the message body is the literal PR JSON and it links the failing run. Search: "Found not merged version bump PRs".

The guard's search is loose full-text, so it also catches unrelated PRs that merely mention version_date.tsv (false positives). The real blocker is the one that recurs in the alert every day — typically an orphaned robot-clickhouse auto/v* bump PR whose release is already superseded.

RUNNER — a completed, cancelled run whose first job never got a runner (no runner_name, zero steps); it sat queued ~24h and was cancelled the instant the next day's cron fired. Means no [self-hosted, release-maker] runner picked it up. This is infra, not a repo change — escalate in #core-ci-info and check the org/repo Actions runner settings. Note: clearing a GUARD blocker does nothing if RUNNER is also failing, and vice versa — both must be healthy for a release to happen. A run that is still queued/in_progress (empty conclusion) is not RUNNER — the script prints its live status instead, since a queued daily run has no runner/steps yet but is not an outage.

OTHER — the run failed for some reason other than the guard or a missing runner. Any unexpected conclusion (startup_failure, timed_out, action_required, …) also counts here, so the tally never reads all-zeros while a run actually failed; startup_failure/timed_out usually point at the release-maker runner or a timeout. Read the failed step directly:

bash
env -u GH_CONFIG_DIR gh run view <run-id> --repo ClickHouse/ClickHouse --log-failed

UNKNOWN — the script could not fetch the required GitHub data to classify the run: either a complete failed-step log (transient API/rate-limit truncation) or, for a cancelled run, its job metadata. It refuses to guess. This is fail-closed: do not assume it was healthy or not a guard failure — re-run the check, or read the run manually with the command above.

Show full SKILL.md (506 more words)Show less
5. (gated) Remediate a guard blocker

Only if block 4 shows an orphaned, superseded robot-clickhouse auto/v* bump PR. Confirm the supersession first (a newer tag exists on that branch):

bash
env -u GH_CONFIG_DIR gh pr view <n> --repo ClickHouse/ClickHouse --json headRefName,author,title,state
env -u GH_CONFIG_DIR gh api 'repos/ClickHouse/ClickHouse/git/matching-refs/tags/v<major>.' --jq '.[].ref'

Ask the user for confirmation, then:

bash
env -u GH_CONFIG_DIR gh pr close <n> --repo ClickHouse/ClickHouse

⚠️ Re-run block 4 afterward. Closing one match does not clear the guard if other PRs still match (this happened: closing the robot PR left a human Docker PR matching). If the remaining match is a human PR, do not close it — recommend merging it, or scoping the guard query (see Known issue).

6. (gated) Make the missing release(s) manually

For each version flagged MISSING in step 3, dispatch CreateRelease with Use workflow from branch: master, type: patch.

⚠️ Use a CI-green commit SHA, not the bare branch name. AutoReleaseInfo does not release branch head — it derives candidates as git rev-list --first-parent <latest-tag>..origin/<branch>, drops the oldest (version-bump) commit, and among the newest MAX_NUMBER_OF_COMMITS_TO_CONSIDER_FOR_RELEASE = 8 picks the most recent whose CI completed with no failed statuses, then passes that SHA to create_release.yml. Reproduce that exactly — and use first-parent git rev-list, not the GitHub commits?sha= API: that API returns every reachable commit (side commits off the first-parent chain), so it can pick a SHA AutoReleaseInfo would never consider and release from a tree missing other already-merged backports. Run this from a checkout whose origin is ClickHouse/ClickHouse:

bash
BR=<release-branch>   # e.g. 25.8
git fetch -q origin "$BR" --tags                         # need branch + tags locally
TAG=$(git tag --list "v$BR.*" --sort=-v:refname | head -1)
# Candidate SHAs: first-parent since the tag, drop the oldest (version-bump) commit,
# newest 8 — exactly AutoReleaseInfo's set.
CANDS=$(git rev-list --first-parent "$TAG..FETCH_HEAD" | sed '$d' | head -8)
# Pick the newest CI-green SHA, mirroring ci_utils.GH exactly:
#   check_wf_completed   — /check-runs must be NON-EMPTY and every run "completed"
#   get_failed_statuses  — paginate /statuses, keep the newest state PER CONTEXT,
#                          require none non-success
# (Re-reading the combined /status rollup is insufficient — it is blind to check-runs
# and to status history, so it both over- and under-reports.) Chosen SHA -> stdout.
CANDIDATE=$(SHAS="$CANDS" python3 - <<'PY'
import os, sys, json, subprocess
REPO = "ClickHouse/ClickHouse"
def gh(args):
    env = dict(os.environ); env.pop("GH_CONFIG_DIR", None)   # avoid a poisoned config dir
    r = subprocess.run(["gh", "api"] + args, capture_output=True, text=True, env=env)
    if r.returncode != 0:
        raise SystemExit(f"gh api failed ({' '.join(args)}): {r.stderr.strip()}")
    return r.stdout
def wf_completed(sha):                       # ci_utils.GH.check_wf_completed
    runs = (json.loads(gh([f"repos/{REPO}/commits/{sha}/check-runs?per_page=100"]))
            .get("check_runs") or [])
    return bool(runs) and all(c["status"] == "completed" for c in runs)
def failed_statuses(sha):                    # ci_utils.GH.get_failed_statuses
    out = gh(["--paginate", "--jq", ".[]",
              f"repos/{REPO}/commits/{sha}/statuses?per_page=100"])
    latest = {}
    for line in out.splitlines():
        if not line.strip():
            continue
        st = json.loads(line); c = st["context"]
        if c not in latest or latest[c]["updated_at"] < st["updated_at"]:
            latest[c] = st
    return sorted(c for c, d in latest.items() if d["state"] != "success")
for sha in os.environ["SHAS"].split():
    done = wf_completed(sha)
    fails = failed_statuses(sha) if done else None
    print(f"  {sha[:12]} completed={done} "
          f"failed_statuses={fails if fails is not None else 'n/a (CI not completed)'}",
          file=sys.stderr)
    if done and not fails:
        print(sha); break
PY
)
echo "release candidate: ${CANDIDATE:?no CI-green commit in the first 8 first-parent commits — investigate; do not release branch head}"

After explicit confirmation, dispatch with that SHA (the official runbook also accepts a commit SHA in the Git reference field, e.g. when a prior run failed with a missing artifacts error):

bash
env -u GH_CONFIG_DIR gh workflow run create_release.yml --repo ClickHouse/ClickHouse \
  --ref master -f ref="$CANDIDATE" -f type=patch

Then watch the run to completion (do not cancel it) and review + merge the generated auto/v<tag> changelog PR. Track status in #core-ci-info.

Known issue / hardening

The guard query in ci/jobs/auto_release_job.py (_assert_no_open_version_bump_prs) now scopes the search with in:title (gh pr list --search "Update version_date.tsv in:title"), so only PRs whose title matches — the genuine robot bump PRs Update version_date.tsv and changelog after <tag> — trip it. The legacy query (gh pr list --search "Update version_date.tsv") was a loose full-text search that also matched any PR merely mentioning the phrase in its body, so a single unrelated PR could halt all releases (the praktika-migration PR itself hit this). If you still see a false positive, tighten further with author:robot-clickhouse or by matching the auto/v* head branch.

Notes

  • Cadence is ~2 weeks; there is no explicit day-threshold in auto_release_job.py — it releases a branch whenever a green commit exists among its last MAX_COMMITS_TO_CONSIDER = 8 commits.
  • The AutoReleaseInfo job dispatches each ready branch's release independently and continues past a failed one (fail-fast: false semantics), so one bad release branch does not stop the others — but the guard failing (open version-bump PR) aborts the whole run before any dispatch.
  • AutoReleases runs daily on cron 45 11 * * *; it dispatches CreateRelease (gh workflow run create_release.yml ... -f type=patch) once per ready branch and waits for each run to finish before starting the next.
  • EXCLUDE_VERSIONS currently defaults to a hardcoded skip (25.8) so it is left out of the analysis. This is intentional but goes stale — revisit it each cycle, or run EXCLUDE_VERSIONS="" bash .../release_health.sh to analyze every supported version.

© 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

Files

SKILL.md and 1 other file (scripts) in .claude/skills/patch-release-check of ClickHouse/ClickHouse.

  • SKILL.md
  • scripts/release_health.sh

Open the folder on GitHubat commit cd023af

Compare with similar skills

Patch Release Check 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.

Patch Release Check compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Patch Release Check this skillClickHouse/ClickHouse50k—~4kAutomated safety check: NotesApache-2.0
Clickhouse Architecture Advisorvemetric/vemetric3942 repos~791Automated safety check: PassApache-2.0
Clickhouse Ioaffaan-m/ECC275k3 repos~2.3kAutomated safety check: PassMIT
Clickhouse Ioaffaan-m/ECC275k2 repos~2.3kAutomated safety check: PassMIT
Clickhouse Ioaffaan-m/ECC275k1 repos~2.7kAutomated safety check: PassMIT
Gram Telemetry Query Dimensionsspeakeasy-api/gram272—~2.4kAutomated safety check: PassAGPL-3.0

Similar skills

  • MUST USE when designing ClickHouse architectures, selecting between ingestion or modeling patterns, or translating best practices into workload-specific system designs.

    394 GitHub starsUsed in 2 repos~791 tokens
    DatabasesAuto-check passed
  • Clickhouse Io

    affaan-m/ECC

    ClickHouse数据库模式、查询优化、分析以及高性能分析工作负载的数据工程最佳实践. An agent skill from affaan-m/ECC.

    275k GitHub starsUsed in 3 repos~2.3k tokens
    DatabasesAuto-check passed
  • Clickhouse Io

    affaan-m/ECC

    고성능 분석 워크로드를 위한 ClickHouse 데이터베이스 패턴, 쿼리 최적화, 분석 및 데이터 엔지니어링 모범 사례.

    275k GitHub starsUsed in 2 repos~2.3k tokens
    DatabasesAuto-check passed
  • Clickhouse Io

    affaan-m/ECC

    ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.

    275k GitHub starsUsed in 1 repo~2.7k tokens
    DatabasesAuto-check passed
  • How to add a new attribute value (dimension) that the generic org-scoped telemetry.query analytics endpoint can group by and filter on.

    272 GitHub stars~2.4k tokensUpdated today
    DatabasesAuto-check passed
  • Clickhouse Io

    xu-xiang/everything-claude-code-zh

    ClickHouse 数据库模式、查询优化、分析以及高性能分析工作负载的数据工程最佳实践. An agent skill from xu-xiang/everything-claude-code-zh.

    2k GitHub stars~2.1k tokensUpdated 7 mo ago
    DatabasesAuto-check passed

More from ClickHouse/ClickHouse

All 24 skills in this repo
  • Keeper Stress Analysis

    ClickHouse/ClickHouse

    Analyze ClickHouse Keeper stress-test results from play.clickhouse.com / keeperstresstests data warehouse.

    50k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Perf Comparison

    ClickHouse/ClickHouse

    Evaluate ClickHouse performance test results from existing CI/dashboard data or local perf.py runs.

    50k GitHub stars~3.9k tokensUpdated today
    Auto-check: notes
  • Alloc Profile

    ClickHouse/ClickHouse

    Analyze a jemalloc (or other) allocation profile in collapsed stack format.

    50k GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Bisect

    ClickHouse/ClickHouse

    Bisect a ClickHouse regression using pre-built master binaries from CI.

    50k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Clickhouse PR Description

    ClickHouse/ClickHouse

    Generate PR descriptions for ClickHouse/ClickHouse that match maintainer expectations.

    50k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Codex Review

    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.

    50k GitHub stars~1.8k tokensUpdated today
    Auto-check: notes

Works with

Categories

Questions about Patch Release Check

What does Patch Release Check do?

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…. Patch Release Check is an agent skill from 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 must be created manually.

When should I use Patch Release Check?

Patch Release Check fits situations like: asked are the patch releases up to date; why did autorelease fail; which releases are missing; did a release get skipped.

How do I install Patch Release Check in Claude Code?

Run `npx skills add ClickHouse/ClickHouse --skill patch-release-check -a claude-code`. Or copy the skill folder (.claude/skills/patch-release-check in ClickHouse/ClickHouse) into .claude/skills/patch-release-check in your project. Claude Code loads it when a task matches its description.

How do I install Patch Release Check in Codex?

Run `npx skills add ClickHouse/ClickHouse --skill patch-release-check -a codex`. Or copy the skill folder (.claude/skills/patch-release-check in ClickHouse/ClickHouse) into .agents/skills/patch-release-check in your project. Codex loads it when a task matches its description.

Can I use Patch Release Check in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ClickHouse/ClickHouse --skill patch-release-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/patch-release-check, .gemini/skills/patch-release-check, .github/skills/patch-release-check and .opencode/skills/patch-release-check in your project.

What does Patch Release Check need to run?

Going by SKILL.md and its folder, Patch Release Check needs a shell for the scripts in its folder, the command-line tools its instructions call (git, gh, bash and python3) and credentials named GH_TOKEN. Our summary lists: A Bash shell; Docker. Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob, Agent, WebFetch, AskUserQuestion.

Does Patch Release Check access the network?

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.

Is Patch Release Check safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Patch Release Check use?

Patch Release Check 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.

How many tokens does Patch Release Check use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Patch Release Check?

Skills that share tags, products or a category with Patch Release Check: Clickhouse Architecture Advisor (vemetric/vemetric, 394 stars), Clickhouse Io (affaan-m/ECC, 275k stars), Clickhouse Io (affaan-m/ECC, 275k stars) and Clickhouse Io (affaan-m/ECC, 275k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Patch Release Check?

ClickHouse (a GitHub organization) maintains it in ClickHouse/ClickHouse, which has 50,288 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 8, 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.