Agent skill

Clickhouse Best Practices

by langfuse in langfuse/langfuse

MUST USE when reviewing ClickHouse schemas, queries, or configurations.

Apache-2.0Auto-check passedDatabases

Install Clickhouse Best Practices

skills CLI
$ npx skills add langfuse/langfuse --skill clickhouse-best-practices -a claude-code

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

GitHub CLI
$ gh skill install langfuse/langfuse clickhouse-best-practices --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/langfuse/langfuse.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/clickhouse-best-practices .claude/skills/clickhouse-best-practices && 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
clickhouse-best-practices
GitHub stars
36k
Token cost
~3.5k tokens
SKILL.md length
1,444 words
Files
32
Skills in repo
33
Repo updated
First seen
Licence
Apache-2.0

At a glance

MUST USE when reviewing ClickHouse schemas, queries, or configurations.

  • Works in 5 steps: Check for applicable rules in the rules/… → If rules exist: Apply them and cite them… → If no rule exists: Use the LLM's… → …
  • Reviewing ClickHouse schemas
  • SKILL.md covers IMPORTANT: How to Apply This…, Langfuse-Specific Rules, Review Procedures and Output Format, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Clickhouse Best Practices is an agent skill from langfuse/langfuse. MUST USE when reviewing ClickHouse schemas, queries, or configurations. Contains 28 rules that MUST be checked before providing recommendations. Always read relevant rule files and cite specific rules in responses.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 32 other files (for example `README.md`, `rules/_sections.md` and `rules/_template.md`).

It sits in Databases, covering Data warehousing. It works with ClickHouse and Langfuse. The repository describes itself as: 🪢 Open source agent evals & observability: Trace, evaluate, and improve LLM applications with one open platform. The licence is Apache-2.0.

When your agent uses it

  • Reviewing ClickHouse schemas
  • Tasks that involve Data warehousing

Example prompts

  • “/clickhouse-best-practices”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Check for applicable rules in the rules/ directory
  2. If rules exist: Apply them and cite them in your response using "Per rule-name..."
  3. If no rule exists: Use the LLM's ClickHouse knowledge or search documentation
  4. If uncertain: Use web search for current best practices
  5. Always cite your source: rule name, "general ClickHouse guidance", or URL

What it can do on your machine

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

  • Tool permissions

    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.

  • Runs code

    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.

  • Network

    Links to these hosts (documentation or services it may open):

    • clickhouse.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Clickhouse Best Practices loads about 3.5k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 1,444 words of instructions outside code blocks.

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

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 passed

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.

SKILL.md

The full file from langfuse/langfuse at commit 389f393, republished under its Apache-2.0 licence (© langfuse). 1,444 words, ~3,537 tokens.

Download SKILL.mdSave it as .claude/skills/clickhouse-best-practices/SKILL.md (or your agent's skills folder). This skill also uses 31 other files; get the full folder from GitHub.
name
clickhouse-best-practices
description
MUST USE when reviewing ClickHouse schemas, queries, or configurations. Contains 28 rules that MUST be checked before providing recommendations. Always read relevant rule files and cite specific rules in responses.
license
Apache-2.0
metadata.author
ClickHouse Inc
metadata.version
0.3.0

ClickHouse Best Practices

Comprehensive guidance for ClickHouse covering schema design, query optimization, and data ingestion. Contains 28 rules across 3 main categories (schema, query, insert), prioritized by impact.

Official docs: ClickHouse Best Practices

IMPORTANT: How to Apply This Skill

Before answering ClickHouse questions, follow this priority order:

  1. Check for applicable rules in the rules/ directory
  2. If rules exist: Apply them and cite them in your response using "Per rule-name..."
  3. If no rule exists: Use the LLM's ClickHouse knowledge or search documentation
  4. If uncertain: Use web search for current best practices
  5. Always cite your source: rule name, "general ClickHouse guidance", or URL

Why rules take priority: ClickHouse has specific behaviors (columnar storage, sparse indexes, merge tree mechanics) where general database intuition can be misleading. The rules encode validated, ClickHouse-specific guidance.

Langfuse-Specific Rules

  • Use packages/shared/src/server/queries/clickhouse-sql/event-query-builder.ts for queries against the events table. Do not hand-roll events SQL unless you first confirm the query builder cannot express the query.
  • Never use FINAL on the events table; it is designed so FINAL is not required and the keyword hurts performance.
  • ClickHouse query attribution is stored in system.query_log.log_comment as JSON from packages/shared/src/server/clickhouse/queryTags.ts. Parse it with JSONExtractString(log_comment, 'surface'), JSONExtractString(log_comment, 'route'), and JSONExtractString(log_comment, 'projectId'). Known surface values are trpc, publicapi, worker, mcp, and unknown; ClickhouseWriter inserts use projectId = "MULTI_PROJECT".
  • Query attribution is propagated through OpenTelemetry baggage. Entry points call contextWithLangfuseProps(...) from packages/shared/src/server/headerPropagation.ts, setting ClickHouse surface, optional route, and optional projectId. The ClickHouse repository layer then reads baggage via normalizeClickHouseQueryTags(...) and writes it to log_comment. Prefer setting attribution at entry points rather than passing tags through every repository call.
  • packages/shared/clickhouse/migrations/canonical/** is the single canonical template tree rendered for clustered and unclustered installs. Put {CLICKHOUSE_CLUSTER_CLAUSE} at every cluster-aware DDL position. Use {CLICKHOUSE_REPLICATION_PREFIX} only for engines that deliberately differ by mode; some tables intentionally stay non-replicated in both modes.
  • Every metadata ALTER (ADD/DROP/MODIFY COLUMN, ADD/DROP INDEX) in a new canonical migration must include {CLICKHOUSE_CLUSTERED_ONLY: SETTINGS alter_sync = 2}, and every mutation-creating ALTER (MATERIALIZE …, UPDATE, DELETE) must include {CLICKHOUSE_CLUSTERED_ONLY: SETTINGS mutations_sync = 2}. This applies to a file holding a single ALTER too — the race is across migration files, not within one. alter_sync defaults to 1, so the statement returns as soon as the initiating replica has bumped the table's metadata version in Keeper; golang-migrate then opens the next file immediately, and its first ALTER on that table can land on a replica still on the previous version. ClickHouse refuses to queue it and aborts the whole run with code 517 because the replica metadata version is behind the common metadata version. Note that mutations_sync does not substitute for alter_sync: it governs when mutations finish, not metadata propagation. The renderer omits these fragments for unclustered MergeTree migrations. Use {CLICKHOUSE_UNCLUSTERED_ONLY:...} only for a deliberate mode-specific difference. Do not retrofit synchronization settings into already-shipped migrations merely to normalize them; the historical compatibility test intentionally protects their existing output.
  • Never use CREATE OR REPLACE VIEW (nor CREATE OR REPLACE TABLE / EXCHANGE TABLES) in ClickHouse migrations. The atomic replace requires renameat2 filesystem support, which NFS-backed self-hosted deployments (e.g. ClickHouse data on AWS EFS) lack — the migration fails and the deployment aborts on startup (GitHub issue #14906). Redefine a plain view as two statements in the same migration file. First use DROP VIEW IF EXISTS <name> {CLICKHOUSE_CLUSTER_CLAUSE};, then CREATE VIEW <name> {CLICKHOUSE_CLUSTER_CLAUSE} AS …. The migration runner passes x-multi-statement=true and golang-migrate splits files on ; without parsing SQL, so keep semicolons out of comments and string literals. Keep every statement idempotent (IF EXISTS/IF NOT EXISTS) so a dirty, half-applied migration can be re-run after migrate force. Readers hitting the view inside the drop→create window fail transiently — acceptable for the analytics_* export views, so keep plain views off product hot paths.
  • Never drop-and-recreate a materialized view whose source table receives live inserts: every row inserted between DROP and CREATE is silently and permanently missing from the target table. Change an MV's SELECT with ALTER TABLE <mv> {CLICKHOUSE_CLUSTER_CLAUSE} MODIFY QUERY <select>, which swaps the transformation without interrupting ingestion. When the change adds columns, ALTER the target table(s) first (ADD COLUMN IF NOT EXISTS …), then MODIFY QUERY; those target-table ALTERs must carry the clustered-only alter_sync template fragment so no host applies the new MV query before its target replica has the new columns. MODIFY QUERY is only viable for TO-table MVs (all Langfuse MVs use TO).

Review Procedures

For Schema Reviews (CREATE TABLE, ALTER TABLE)

Read these rule files in order:

  1. rules/schema-pk-plan-before-creation.md - ORDER BY is immutable
  2. rules/schema-pk-cardinality-order.md - Column ordering in keys
  3. rules/schema-pk-prioritize-filters.md - Filter column inclusion
  4. rules/schema-types-native-types.md - Proper type selection
  5. rules/schema-types-minimize-bitwidth.md - Numeric type sizing
  6. rules/schema-types-lowcardinality.md - LowCardinality usage
  7. rules/schema-types-avoid-nullable.md - Nullable vs DEFAULT
  8. rules/schema-partition-low-cardinality.md - Partition count limits
  9. rules/schema-partition-lifecycle.md - Partitioning purpose

Check for:

  • PRIMARY KEY / ORDER BY column order (low-to-high cardinality)
  • Data types match actual data ranges
  • LowCardinality applied to appropriate string columns
  • Partition key cardinality bounded (100-1,000 values)
  • ReplacingMergeTree has version column if used
  • Every metadata ALTER in a new canonical migration includes {CLICKHOUSE_CLUSTERED_ONLY: SETTINGS alter_sync = 2} — including files with a single ALTER, since the next migration file is what breaks — and every MATERIALIZE … / UPDATE / DELETE includes the corresponding mutations_sync fragment; mutations_sync is not a substitute for alter_sync; do not normalize already-shipped migration output; both rendered modes pass prepareMigrations.test.ts
  • No CREATE OR REPLACE VIEW/TABLE or EXCHANGE TABLES in migrations (breaks NFS/EFS self-hosting); plain views are redefined via DROP VIEW IF EXISTS + CREATE VIEW in the same file
  • Materialized views are never dropped and recreated while their source table takes inserts; SELECT changes go through ALTER TABLE <mv> MODIFY QUERY after the target-table ALTERs
Show full SKILL.md (524 more words)Show less
For Query Reviews (SELECT, JOIN, aggregations)

Read these rule files:

  1. rules/query-join-choose-algorithm.md - Algorithm selection
  2. rules/query-join-filter-before.md - Pre-join filtering
  3. rules/query-join-use-any.md - ANY vs regular JOIN
  4. rules/query-index-skipping-indices.md - Secondary index usage
  5. rules/schema-pk-filter-on-orderby.md - Filter alignment with ORDER BY

Check for:

  • Filters use ORDER BY prefix columns
  • JOINs filter tables before joining (not after)
  • Correct JOIN algorithm for table sizes
  • Skipping indices for non-ORDER BY filter columns
For Insert Strategy Reviews (data ingestion, updates, deletes)

Read these rule files:

  1. rules/insert-batch-size.md - Batch sizing requirements
  2. rules/insert-mutation-avoid-update.md - UPDATE alternatives
  3. rules/insert-mutation-avoid-delete.md - DELETE alternatives
  4. rules/insert-async-small-batches.md - Async insert usage
  5. rules/insert-optimize-avoid-final.md - OPTIMIZE TABLE risks

Check for:

  • Batch size 10K-100K rows per INSERT
  • No ALTER TABLE UPDATE for frequent changes
  • ReplacingMergeTree or CollapsingMergeTree for update patterns
  • Async inserts enabled for high-frequency small batches

Output Format

Structure your response as follows:

## Rules Checked
- `rule-name-1` - Compliant / Violation found
- `rule-name-2` - Compliant / Violation found
...

## Findings

### Violations
- **`rule-name`**: Description of the issue
  - Current: [what the code does]
  - Required: [what it should do]
  - Fix: [specific correction]

### Compliant
- `rule-name`: Brief note on why it's correct

## Recommendations
[Prioritized list of changes, citing rules]

Rule Categories by Priority

PriorityCategoryImpactPrefixRule Count
1Primary Key SelectionCRITICALschema-pk-4
2Data Type SelectionCRITICALschema-types-5
3JOIN OptimizationCRITICALquery-join-5
4Insert BatchingCRITICALinsert-batch-1
5Mutation AvoidanceCRITICALinsert-mutation-2
6Partitioning StrategyHIGHschema-partition-4
7Skipping IndicesHIGHquery-index-1
8Materialized ViewsHIGHquery-mv-2
9Async InsertsHIGHinsert-async-2
10OPTIMIZE AvoidanceHIGHinsert-optimize-1
11JSON UsageMEDIUMschema-json-1

Quick Reference

Schema Design - Primary Key (CRITICAL)
  • schema-pk-plan-before-creation - Plan ORDER BY before table creation (immutable)
  • schema-pk-cardinality-order - Order columns low-to-high cardinality
  • schema-pk-prioritize-filters - Include frequently filtered columns
  • schema-pk-filter-on-orderby - Query filters must use ORDER BY prefix
Schema Design - Data Types (CRITICAL)
  • schema-types-native-types - Use native types, not String for everything
  • schema-types-minimize-bitwidth - Use smallest numeric type that fits
  • schema-types-lowcardinality - LowCardinality for <10K unique strings
  • schema-types-enum - Enum for finite value sets with validation
  • schema-types-avoid-nullable - Avoid Nullable; use DEFAULT instead
Schema Design - Partitioning (HIGH)
  • schema-partition-low-cardinality - Keep partition count 100-1,000
  • schema-partition-lifecycle - Use partitioning for data lifecycle, not queries
  • schema-partition-query-tradeoffs - Understand partition pruning trade-offs
  • schema-partition-start-without - Consider starting without partitioning
Schema Design - JSON (MEDIUM)
  • schema-json-when-to-use - JSON for dynamic schemas; typed columns for known
Query Optimization - JOINs (CRITICAL)
  • query-join-choose-algorithm - Select algorithm based on table sizes
  • query-join-use-any - ANY JOIN when only one match needed
  • query-join-filter-before - Filter tables before joining
  • query-join-consider-alternatives - Dictionaries/denormalization vs JOIN
  • query-join-null-handling - join_use_nulls=0 for default values
Query Optimization - Indices (HIGH)
  • query-index-skipping-indices - Skipping indices for non-ORDER BY filters
Query Optimization - Materialized Views (HIGH)
  • query-mv-incremental - Incremental MVs for real-time aggregations
  • query-mv-refreshable - Refreshable MVs for complex joins
Insert Strategy - Batching (CRITICAL)
  • insert-batch-size - Batch 10K-100K rows per INSERT
Insert Strategy - Async (HIGH)
  • insert-async-small-batches - Async inserts for high-frequency small batches
  • insert-format-native - Native format for best performance
Insert Strategy - Mutations (CRITICAL)
  • insert-mutation-avoid-update - ReplacingMergeTree instead of ALTER UPDATE
  • insert-mutation-avoid-delete - Lightweight DELETE or DROP PARTITION
Insert Strategy - Optimization (HIGH)
  • insert-optimize-avoid-final - Let background merges work

When to Apply

This skill activates when you encounter:

  • CREATE TABLE statements
  • ALTER TABLE modifications
  • ORDER BY or PRIMARY KEY discussions
  • Data type selection questions
  • Slow query troubleshooting
  • JOIN optimization requests
  • Data ingestion pipeline design
  • Update/delete strategy questions
  • ReplacingMergeTree or other specialized engine usage
  • Partitioning strategy decisions

Rule File Structure

Each rule file in rules/ contains:

  • YAML frontmatter: title, impact level, tags
  • Brief explanation: Why this rule matters
  • Incorrect example: Anti-pattern with explanation
  • Correct example: Best practice with explanation
  • Additional context: Trade-offs, when to apply, references

© langfuse, 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 31 other files in .agents/skills/clickhouse-best-practices of langfuse/langfuse.

  • SKILL.md
  • README.md
  • rules/_sections.md
  • rules/_template.md
  • rules/insert-async-small-batches.md
  • rules/insert-batch-size.md
  • rules/insert-format-native.md
  • rules/insert-mutation-avoid-delete.md
  • rules/insert-mutation-avoid-update.md
  • rules/insert-optimize-avoid-final.md
  • rules/query-index-skipping-indices.md
  • rules/query-join-choose-algorithm.md
  • rules/query-join-consider-alternatives.md
  • rules/query-join-filter-before.md
  • rules/query-join-null-handling.md
  • rules/query-join-use-any.md
  • rules/query-mv-incremental.md
  • rules/query-mv-refreshable.md
  • rules/schema-json-when-to-use.md
  • rules/schema-partition-lifecycle.md
  • … and 12 more

Open the folder on GitHubat commit 389f393

Compare with similar skills

Clickhouse Best Practices 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.

Clickhouse Best Practices compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Clickhouse Best Practices this skilllangfuse/langfuse36k—~3.5kAutomated safety check: PassApache-2.0
Clickhouse Logs Queriessupabase/supabase111k—~2.4kAutomated safety check: PassApache-2.0
Keeper Stress AnalysisClickHouse/ClickHouse50k—~4.7kAutomated safety check: PassApache-2.0
Perf ComparisonClickHouse/ClickHouse50k—~3.9kAutomated safety check: NotesApache-2.0
Patch Release CheckClickHouse/ClickHouse50k—~4kAutomated safety check: NotesApache-2.0
Chdb SQLvemetric/vemetric3951 repos~1.2kAutomated safety check: PassApache-2.0

Similar skills

  • Clickhouse Logs Queries

    supabase/supabase

    Official

    Write, review, and migrate Supabase logs queries against the ClickHouse-backed logs table (the logs.all.otel analytics endpoint).

    111k GitHub stars~2.4k tokensUpdated today
    DatabasesAuto-check passed
  • 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
    DatabasesAuto-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
    DatabasesAuto-check: notes
  • Patch Release Check

    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…

    50k GitHub stars~4k tokensUpdated today
    DatabasesAuto-check: notes
  • Chdb SQL

    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…

    395 GitHub starsUsed in 1 repo~1.2k tokens
    DatabasesAuto-check passed
  • Bisect

    ClickHouse/ClickHouse

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

    50k GitHub stars~1.4k tokensUpdated today
    DatabasesAuto-check passed

More from langfuse/langfuse

All 33 skills in this repo
  • Linear Context Handover

    langfuse/langfuse

    Use Linear as the org's memory: reconstruct a feature's history before touching it, and leave the reasoning behind finished work in the ticket description so the next agent inherits it.

    36k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Add Model Price

    langfuse/langfuse

    A skill your agent uses when editing worker/src/constants/default-model-prices.json, packages/shared/src/server/llm/types.ts, pricing tiers, tokenizer IDs, or matchPattern regexes for OpenAI…

    36k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Backend Dev Guidelines

    langfuse/langfuse

    Build or review Langfuse backend code. An agent skill from langfuse/langfuse.

    36k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Navigate Langfuse repositories, code areas, and agent skills.

    36k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Refactor React Effects

    langfuse/langfuse

    Refactor avoidable React useEffect usage in Langfuse frontend code.

    36k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Add To Dependabot CSV

    langfuse/langfuse

    Append GitHub Dependabot or Snyk/code-scanning alerts to an existing vulnerability CSV after verifying their API metadata.

    36k GitHub stars~1.5k tokensUpdated today
    Auto-check passed

Categories

Questions about Clickhouse Best Practices

What does Clickhouse Best Practices do?

MUST USE when reviewing ClickHouse schemas, queries, or configurations. Clickhouse Best Practices is an agent skill from langfuse/langfuse. MUST USE when reviewing ClickHouse schemas, queries, or configurations.

When should I use Clickhouse Best Practices?

Clickhouse Best Practices fits situations like: reviewing ClickHouse schemas; tasks that involve Data warehousing.

How do I install Clickhouse Best Practices in Claude Code?

Run `npx skills add langfuse/langfuse --skill clickhouse-best-practices -a claude-code`. Or copy the skill folder (.agents/skills/clickhouse-best-practices in langfuse/langfuse) into .claude/skills/clickhouse-best-practices in your project. Claude Code loads it when a task matches its description.

How do I install Clickhouse Best Practices in Codex?

Run `npx skills add langfuse/langfuse --skill clickhouse-best-practices -a codex`. Or copy the skill folder (.agents/skills/clickhouse-best-practices in langfuse/langfuse) into .agents/skills/clickhouse-best-practices in your project. Codex loads it when a task matches its description.

Can I use Clickhouse Best Practices 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 langfuse/langfuse --skill clickhouse-best-practices -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-best-practices, .gemini/skills/clickhouse-best-practices, .github/skills/clickhouse-best-practices and .opencode/skills/clickhouse-best-practices in your project.

What does Clickhouse Best Practices need to run?

SKILL.md names no scripts, command-line tools or credentials: Clickhouse Best Practices is instructions for the agent only.

Does Clickhouse Best Practices access the network?

SKILL.md names 1 domain. As links in the text: clickhouse.com. This is read from the text; nothing was executed.

Is Clickhouse Best Practices safe to install?

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.

What licence does Clickhouse Best Practices use?

Clickhouse Best Practices is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Clickhouse Best Practices use?

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

What are the alternatives to Clickhouse Best Practices?

Skills that share tags, products or a category with Clickhouse Best Practices: Clickhouse Logs Queries (supabase/supabase, 111k stars), Keeper Stress Analysis (ClickHouse/ClickHouse, 50k stars), Perf Comparison (ClickHouse/ClickHouse, 50k stars) and Patch Release Check (ClickHouse/ClickHouse, 50k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Clickhouse Best Practices?

langfuse (a GitHub organization) maintains it in langfuse/langfuse, which has 35,555 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 9, 2026.

Source: langfuse/langfuse on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.