CL

This skill runs read-only queries against ClickHouse for analysis, debugging, and event inspection, with support for optional writes and JSON output.

Install

mkdir -p .claude/skills/clickhouse-query && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4510" && unzip -o skill.zip -d .claude/skills/clickhouse-query && rm skill.zip

Installs to .claude/skills/clickhouse-query

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Run ClickHouse queries for analytics, metrics analysis, and event data exploration. Use when you need to query ClickHouse directly, analyze metrics, check event tracking data, or test query performance. Read-only by default.
224 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Execute ClickHouse queries from the command line
  • Analyze query execution plans with the --explain flag
  • Set query timeouts to prevent long-running operations
  • Output query results in JSON format for programmatic use
  • Query system tables across all replicas in a cluster
  • Perform write operations when explicitly enabled

How it works

The skill runs ad-hoc ClickHouse queries using a Node.js script, supporting various flags for output format, timeouts, and write permissions.

Inputs & outputs

You give it
ClickHouse SQL query string or file path
You get back
Query results, execution plan, or JSON output

When to use clickhouse-query

  • Querying ClickHouse directly
  • Analyzing metrics
  • Checking event tracking data
  • Testing query performance

About this skill

ClickHouse Query Testing

Use this skill to run ad-hoc ClickHouse queries for analytics, metrics analysis, and debugging.

Running Queries

Use the included query script:

node .claude/skills/clickhouse-query/query.mjs "SELECT count() FROM views"

Options

FlagDescription
--explainShow query execution plan
--writableAllow write operations (requires user permission)
--timeout <s>, -tQuery timeout in seconds (default: 30)
--file, -fRead query from a file
--jsonOutput results as JSON
--quiet, -qMinimal output, only results

Examples

# Count rows in a table
node .claude/skills/clickhouse-query/query.mjs "SELECT count() FROM views"

# Query with filters
node .claude/skills/clickhouse-query/query.mjs "SELECT * FROM modelEvents WHERE modelId = 123 LIMIT 10"

# Check query execution plan
node .claude/skills/clickhouse-query/query.mjs --explain "SELECT * FROM views WHERE userId = 1"

# Override default 30s timeout for longer queries
node .claude/skills/clickhouse-query/query.mjs --timeout 60 "SELECT ... (complex aggregation)"

# Query from file
node .claude/skills/clickhouse-query/query.mjs -f my-query.sql

# JSON output for processing
node .claude/skills/clickhouse-query/query.mjs --json "SELECT type, count() FROM modelEvents GROUP BY type"

Safety Features

  1. Read-only by default: Blocks INSERT/ALTER/DROP unless --writable flag is used
  2. 30 second timeout: Prevents runaway queries (override with --timeout)
  3. Explicit permission required: Before using --writable, you MUST ask the user for permission

When to Use --writable

Only use the --writable flag when:

  • The user explicitly requests write access
  • You need to insert test data
  • You're running maintenance operations

IMPORTANT: Always ask the user for permission before running with --writable.

Common Tables

TableDescription
viewsPage/entity view events
modelEventsModel create/publish/update events
modelVersionEventsModel version events including downloads
userActivitiesUser registration, login, subscription events
imagesImage upload/delete events
reactionsLike/dislike events
reportsContent report events
entityMetricEventsAggregated metric events

Querying Replica Clusters

IMPORTANT: Production uses a ClickHouse replica cluster. When querying system tables (logs, metrics, etc.), you must use clusterAllReplicas() to get data from all nodes.

System Tables on Replica Clusters

-- WRONG: Only queries the node you're connected to
SELECT * FROM system.query_log WHERE event_time > now() - INTERVAL 1 HOUR

-- CORRECT: Queries all replicas in the cluster
SELECT * FROM clusterAllReplicas(default, system.query_log)
WHERE event_time > now() - INTERVAL 1 HOUR

Common System Table Queries

-- Find recent queries across all nodes
SELECT
    hostname(),
    event_time,
    query_duration_ms,
    formatReadableSize(memory_usage) AS memory,
    query
FROM clusterAllReplicas(default, system.query_log)
WHERE type = 'QueryFinish'
    AND event_time > now() - INTERVAL 5 MINUTE
ORDER BY event_time DESC
LIMIT 20

-- Find expensive queries by memory usage (last 24 hours)
SELECT
    count() as query_count,
    user,
    sum(memory_usage) AS total_memory,
    normalized_query_hash
FROM clusterAllReplicas(default, system.query_log)
WHERE event_time > now() - INTERVAL 1 DAY
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
GROUP BY normalized_query_hash, user
ORDER BY total_memory DESC
LIMIT 10

-- Search query logs by pattern
SELECT event_time, query_id, query, type
FROM clusterAllReplicas(default, merge('system', '^query_log*'))
WHERE query ILIKE '%some_table%'
    AND event_time > now() - INTERVAL 5 MINUTE

-- Debug a specific query across all nodes
SELECT hostname(), message
FROM clusterAllReplicas(default, system.text_log)
WHERE query_id = 'your-query-id-here'
ORDER BY event_time_microseconds ASC

When to Use clusterAllReplicas()

Use CaseFunction
System tables (query_log, text_log, etc.)clusterAllReplicas(default, system.table_name)
Application tables (views, modelEvents, etc.)Direct query (already distributed)
Search multiple system tablesclusterAllReplicas(default, merge('system', '^pattern*'))

ClickHouse SQL Tips

-- Use count() not COUNT(*)
SELECT count() FROM views

-- Date filtering with toDate()
SELECT * FROM views WHERE toDate(time) = today()

-- Last 7 days
SELECT * FROM modelEvents WHERE time > now() - INTERVAL 7 DAY

-- Aggregations
SELECT type, count() as cnt FROM modelEvents GROUP BY type ORDER BY cnt DESC

When not to use it

  • When the task does not involve ClickHouse queries
  • When write operations are needed without explicit user permission

Limitations

  • Read-only by default, requiring a flag for write operations
  • Queries have a default 30-second timeout

How it compares

This skill provides direct command-line execution of ClickHouse queries with specific options, unlike manual database client interactions.

Compared to similar skills

clickhouse-query side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
clickhouse-query (this skill)16moReviewIntermediate
sql-queries185moNo flagsIntermediate
senior-data-engineer217moReviewAdvanced
powerbi-modeling116moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

sql-queries

anthropics

Write correct, performant SQL across all major data warehouse dialects (Snowflake, BigQuery, Databricks, PostgreSQL, etc.). Use when writing queries, optimizing slow SQL, translating between dialects, or building complex analytical queries with CTEs, window functions, or aggregations.

1888

senior-data-engineer

davila7

World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, and data infrastructure. Expertise in Python, SQL, Spark, Airflow, dbt, Kafka, and modern data stack. Includes data modeling, pipeline orchestration, data quality, and DataOps. Use when designing data architectures, building data pipelines, optimizing data workflows, or implementing data governance.

2179

powerbi-modeling

github

Power BI semantic modeling assistant for building optimized data models. Use when working with Power BI semantic models, creating measures, designing star schemas, configuring relationships, implementing RLS, or optimizing model performance. Triggers on queries about DAX calculations, table relationships, dimension/fact table design, naming conventions, model documentation, cardinality, cross-filter direction, calculation groups, and data model best practices. Always connects to the active model first using power-bi-modeling MCP tools to understand the data structure before providing guidance.

1161

data-quality-frameworks

wshobson

Implement data quality validation with Great Expectations, dbt tests, and data contracts. Use when building data quality pipelines, implementing validation rules, or establishing data contracts.

628

fuzzy-matching

dadbodgeoff

Multi-stage fuzzy matching pipeline for entity reconciliation. PostgreSQL trigram pre-filter, salient overlap check, and multi-factor similarity scoring.

825

query-writing

langchain-ai

For writing and executing SQL queries - from simple single-table queries to complex multi-table JOINs and aggregations

723

Search skills

Search the agent skills registry