Clickhouse Analyst
FerroxLabs/wayland
ClickHouse columnar OLAP expert covering table engine selection (MergeTree family), materialized views, aggregating merge trees, data sharding and replication, query optimization for analytical…
Explains core ClickHouse concepts with accurate mental models — MergeTree, indexes, replication, sharding, and special engines.
$ npx skills add chmonitor/chmonitor --skill concept-explainer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install chmonitor/chmonitor concept-explainer --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/chmonitor/chmonitor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/concept-explainer .claude/skills/concept-explainer && 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 "concept-explainer" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/concept-explainer into .claude/skills/concept-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "concept-explainer", 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/chmonitor/chmonitor/tree/main/.agents/skills/concept-explainerType 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 chmonitor/chmonitor --skill concept-explainer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install chmonitor/chmonitor concept-explainer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/concept-explainer .agents/skills/concept-explainer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "concept-explainer" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/concept-explainer into .agents/skills/concept-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "concept-explainer", 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 chmonitor/chmonitor --skill concept-explainer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install chmonitor/chmonitor concept-explainer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/concept-explainer .cursor/skills/concept-explainer && 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 "concept-explainer" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/concept-explainer into .cursor/skills/concept-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "concept-explainer", 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/chmonitor/chmonitor.git --path .agents/skills/concept-explainer--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 chmonitor/chmonitor --skill concept-explainer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install chmonitor/chmonitor concept-explainer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/concept-explainer .gemini/skills/concept-explainer && 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 "concept-explainer" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/concept-explainer into .gemini/skills/concept-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "concept-explainer", 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 chmonitor/chmonitor concept-explainerInstalls 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 chmonitor/chmonitor --skill concept-explainer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/concept-explainer .github/skills/concept-explainer && 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 "concept-explainer" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/concept-explainer into .github/skills/concept-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "concept-explainer", 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 chmonitor/chmonitor --skill concept-explainer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install chmonitor/chmonitor concept-explainer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/concept-explainer .opencode/skills/concept-explainer && 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 "concept-explainer" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/concept-explainer into .opencode/skills/concept-explainer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "concept-explainer", 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.
concept-explainerExplains core ClickHouse concepts with accurate mental models — MergeTree, indexes, replication, sharding, and special engines.
Concept Explainer is an agent skill from chmonitor/chmonitor. Explains core ClickHouse concepts with accurate mental models — MergeTree, indexes, replication, sharding, and special engines.
Its SKILL.md is about 2.1k 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 Database administration, Data warehousing and Tutoring and explanations. It works with ClickHouse. The repository describes itself as: Open-source operational advisor for ClickHouse — real-time monitoring plus AI-driven index/partition/materialized-view recommendations. The licence is GPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fc39ef0. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are sql).
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.
Concept Explainer loads about 2.1k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 1,006 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 chmonitor/chmonitor at commit fc39ef0, republished under its GPL-3.0 licence (© chmonitor). 1,006 words, ~2,107 tokens.
.claude/skills/concept-explainer/SKILL.md (or your agent's skills folder).Use this skill when a user asks "what is X", "explain Y", or "how does Z work". Give the right mental model first, add a concrete example, then offer to go deeper. Tailor detail to the user's apparent experience level.
Every insert creates one or more immutable parts on disk (a directory of column files + index). ClickHouse merges these parts in the background — combining small parts into larger ones, re-sorting data, applying deduplication or aggregation depending on the engine variant. Until a merge happens, the same logical row may exist across multiple parts.
Why small inserts are bad: each INSERT of 10 rows creates a tiny part. Parts accumulate faster than the background merger can keep up, hitting the too many parts error (default threshold: 300 parts per partition). Always batch at least 1 000–10 000 rows per insert; use async inserts for high-frequency small writes.
-- Check live part counts per table
SELECT table, count() AS parts, sum(rows) AS total_rows
FROM system.parts
WHERE active AND database = currentDatabase()
GROUP BY table ORDER BY parts DESC;Cross-reference: clickhouse-best-practices for insert batching settings.
ClickHouse does not build a per-row B-tree index. Instead it stores one index entry per granule (default 8 192 rows, set by index_granularity). Each entry records the primary key value at the start of that granule.
At query time ClickHouse binary-searches these sparse marks, selects the minimal set of granules that could match, and reads only those blocks from disk. The primary key is not unique — duplicates are allowed and common. Its sole purpose is to sort data on disk so range scans skip irrelevant granules.
-- Effective only when filtering on leading primary-key columns:
SELECT count() FROM events WHERE user_id = 42 AND event_date >= today() - 7;
-- user_id must be the first or second ORDER BY column to benefit from the index.Cross-reference: query-optimization for EXPLAIN INDEXES and skip indexes.
These three clauses look similar but serve different purposes:
| Clause | Role |
|---|---|
ORDER BY (a, b) | Physical sort order within each part; defines the primary key by default |
PARTITION BY expr | Splits data into independent sub-trees; each partition has its own parts |
PRIMARY KEY (a) | Override the index prefix (rarely needed; defaults to full ORDER BY) |
Partitioning rule of thumb: partition on a low-cardinality column (e.g., toYYYYMM(date)). Each partition is merged independently; over-partitioning (millions of partitions) slows queries and maintenance. Most tables need no explicit PARTITION BY or just a monthly/daily date partition.
Cross-reference: schema-design-advisor for partition sizing guidance.
ClickHouse stores each column in its own file. A query reading only 3 out of 100 columns touches ~3% of the data. Within a column file, values are stored consecutively, so they compress extremely well — identical or slowly-changing values in sorted data often achieve 5–20× compression with LZ4 (default) or ZSTD.
Per-column codecs let you tune further:
CREATE TABLE metrics (
ts DateTime CODEC(DoubleDelta, ZSTD), -- timestamps: delta + entropy coding
value Float64 CODEC(Gorilla, ZSTD) -- float series: XOR delta
) ENGINE = MergeTree ORDER BY ts;This is why ClickHouse wins on analytical queries: it reads far less data off disk than row-oriented databases, and what it does read is compact.
ReplicatedMergeTree keeps two or more replicas in sync through ClickHouse Keeper (or ZooKeeper). The coordination protocol works like this:
Replication is eventually consistent: a fresh replica may not yet have a just-inserted row. Use SYSTEM SYNC REPLICA to wait for a replica to catch up, or enable insert_quorum to make inserts wait for N replicas before acknowledging.
Cross-reference: replication-guide for quorum settings and Keeper health checks.
Shard: an independent subset of data, typically one ReplicatedMergeTree table (with its own replicas). Sharding is horizontal scaling — more shards = more total data capacity and parallelism.
Distributed engine: a virtual table that fans out queries to all shards and merges results. It stores no data itself.
CREATE TABLE events_dist AS events
ENGINE = Distributed('my_cluster', currentDatabase(), 'events', rand());
-- rand() = random shard key; replace with cityHash64(user_id) for colocationA write to the Distributed table is routed to one shard (per the shard key). A SELECT is broadcast to all shards and results are merged on the query initiator. Use GLOBAL JOIN when joining a Distributed table against another, to avoid N×M fan-out.
Cross-reference: cluster-operations for cluster topology and query-optimization for GLOBAL JOIN.
Both compute derived data automatically on insert, but they serve different purposes:
Materialized view: an independent table populated by a trigger query that runs on every insert into the source table. Use for pre-aggregating into a separate table, routing subsets to different engines, or transforming schemas.
CREATE MATERIALIZED VIEW hourly_counts
ENGINE = SummingMergeTree ORDER BY (hour, event)
AS SELECT toStartOfHour(ts) AS hour, event, count() AS cnt
FROM events GROUP BY hour, event;Projection: an alternative sort order or pre-aggregation stored inside the same table. ClickHouse automatically picks the best projection at query time. Projections update atomically with the parent table and stay consistent across replicas.
Use projections when you want a secondary sort key without managing a separate table. Use materialized views when you need a different engine, schema, or destination cluster.
| Engine | Problem it solves |
|---|---|
ReplacingMergeTree(ver) | Keeps only the latest version of a row with the same primary key (deduplication). Final dedup happens at merge time or with FINAL; duplicates may be visible until then. |
AggregatingMergeTree | Stores partial aggregation states (e.g., AggregateFunction(sum, UInt64)) so that merges combine states rather than raw rows. Typically used as the target of a materialized view. |
SummingMergeTree(cols) | Sums specified numeric columns during merges for rows with identical primary key. Simple pre-aggregation without partial states. |
CollapsingMergeTree(sign) | Cancels rows by pairing a sign=1 (insert) row with a sign=-1 (delete/update) row sharing the same primary key. Merges collapse the pair to nothing. Used for update-heavy fact tables. |
All variants still inherit the full MergeTree behaviour (parts, background merges, sparse index). They differ only in what happens during a merge.
PREWHERE is read first, on only the columns it references, before the rest of the row is decoded. WHERE is evaluated after all selected columns are read. Use PREWHERE for highly selective conditions on narrow columns to skip reading wide columns for most rows. ClickHouse applies this optimization automatically for simple conditions when optimize_move_to_prewhere = 1 (default on).
-- Manual hint: filter on the cheap column first, avoid reading `payload` for 99% of rows
SELECT payload FROM events PREWHERE event = 'purchase' WHERE amount > 1000;Ask follow-up questions to go deeper on any concept. For query tuning see query-optimization; for schema choices see schema-design-advisor; for cluster topology see cluster-operations and replication-guide.
© chmonitor, GPL-3.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 .agents/skills/concept-explainer of chmonitor/chmonitor.
Open the folder on GitHubat commit fc39ef0
Concept Explainer 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 |
|---|---|---|---|---|---|---|
| Concept Explainer this skillchmonitor/chmonitor | 298 | — | ~2.1k | Automated safety check: Pass | GPL-3.0 | |
| Clickhouse AnalystFerroxLabs/wayland | 608 | — | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| Whodbxiaoyuge886/aigc | 198 | — | ~894 | Automated safety check: Pass | MIT | |
| Clickhouse Architecture Advisorvemetric/vemetric | 394 | 2 repos | ~791 | Automated safety check: Pass | Apache-2.0 | |
| Ddia Principlesluoling8192/ai-coding-principles | 173 | — | ~4.7k | Automated safety check: Pass | MIT | |
| Clickhouse Ioaffaan-m/ECC | 274k | 3 repos | ~2.3k | Automated safety check: Pass | MIT |
FerroxLabs/wayland
ClickHouse columnar OLAP expert covering table engine selection (MergeTree family), materialized views, aggregating merge trees, data sharding and replication, query optimization for analytical…
xiaoyuge886/aigc
Database operations including querying, schema exploration, and data analysis.
vemetric/vemetric
MUST USE when designing ClickHouse architectures, selecting between ingestion or modeling patterns, or translating best practices into workload-specific system designs.
luoling8192/ai-coding-principles
Designing Data-Intensive Applications (DDIA) distilled reference guide by Martin Kleppmann.
affaan-m/ECC
ClickHouse数据库模式、查询优化、分析以及高性能分析工作负载的数据工程最佳实践. An agent skill from affaan-m/ECC.
affaan-m/ECC
고성능 분석 워크로드를 위한 ClickHouse 데이터베이스 패턴, 쿼리 최적화, 분석 및 데이터 엔지니어링 모범 사례.
chmonitor/chmonitor
Non-animation creative direction for HyperFrames videos. An agent skill from chmonitor/chmonitor.
chmonitor/chmonitor
Audio and media assets for HyperFrames compositions, produced by one shared audio engine (scripts/audio.mjs) — multi-provider TTS (HeyGen / ElevenLabs / Kokoro local), background music + sound…
chmonitor/chmonitor
Port an existing Remotion (React) composition to HyperFrames HTML.
chmonitor/chmonitor
A skill your agent uses when the user has a music track (an audio file, or a video to pull audio from) and wants a beat-synced HyperFrames video, calm to hard-hitting.
chmonitor/chmonitor
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus…
chmonitor/chmonitor
turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video, up to ~3 min (sweet spot 30-90s), where every visual is invented (typography, abstract graphics…
Works with
Categories
Explains core ClickHouse concepts with accurate mental models — MergeTree, indexes, replication, sharding, and special engines. Concept Explainer is an agent skill from chmonitor/chmonitor. Explains core ClickHouse concepts with accurate mental models — MergeTree, indexes, replication, sharding, and special engines.
Concept Explainer fits situations like: tasks that involve Database administration; tasks that involve Data warehousing; tasks that involve Tutoring and explanations.
Run `npx skills add chmonitor/chmonitor --skill concept-explainer -a claude-code`. Or copy the skill folder (.agents/skills/concept-explainer in chmonitor/chmonitor) into .claude/skills/concept-explainer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add chmonitor/chmonitor --skill concept-explainer -a codex`. Or copy the skill folder (.agents/skills/concept-explainer in chmonitor/chmonitor) into .agents/skills/concept-explainer 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 chmonitor/chmonitor --skill concept-explainer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/concept-explainer, .gemini/skills/concept-explainer, .github/skills/concept-explainer and .opencode/skills/concept-explainer in your project.
SKILL.md names no scripts, command-line tools or credentials: Concept Explainer is instructions for the agent only.
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 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.
Concept Explainer is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k 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 Concept Explainer: Clickhouse Analyst (FerroxLabs/wayland, 608 stars), Whodb (xiaoyuge886/aigc, 198 stars), Clickhouse Architecture Advisor (vemetric/vemetric, 394 stars) and Ddia Principles (luoling8192/ai-coding-principles, 173 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
chmonitor (a GitHub organization) maintains it in chmonitor/chmonitor, which has 298 GitHub stars. The repository holds 53 skills in this directory. The repository was last updated on October 5, 2026.
Source: chmonitor/chmonitor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.