Agent-skills clickhousectl-local-dev
Use when a user wants to build an application with ClickHouse, set up a local ClickHouse development environment, install ClickHouse, create a local server, create tables, or start developing with ClickHouse. Covers the full flow from zero to a working local ClickHouse setup.
git clone https://github.com/ClickHouse/agent-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/ClickHouse/agent-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/clickhousectl-local-dev" ~/.claude/skills/clickhouse-agent-skills-clickhousectl-local-dev && rm -rf "$T"
skills/clickhousectl-local-dev/SKILL.mdLocal ClickHouse Development Setup
This skill walks through setting up a complete local ClickHouse development environment using
clickhousectl. Follow these steps in order.
When to Apply
Use this skill when the user wants to:
- Build an application that needs an analytical database or ClickHouse specifically
- Set up a local ClickHouse instance for development
- Install ClickHouse on their machine
- Create tables and start querying ClickHouse locally
- Prototype or experiment with ClickHouse
Step 1: Install clickhousectl
Check if
clickhousectl is already available:
which clickhousectl
If not found, install it:
curl -fsSL https://clickhouse.com/cli | sh
This installs
clickhousectl to ~/.local/bin/clickhousectl and creates a chctl alias.
If the command is still not found after install: The user may need to add
~/.local/bin to their PATH or open a new terminal session. Suggest:
export PATH="$HOME/.local/bin:$PATH"
Step 2: Install ClickHouse
Install the latest stable ClickHouse version:
clickhousectl local install stable
This downloads the ClickHouse binary to
~/.clickhouse/versions/. The binary is shared across projects so it only needs to be downloaded once.
Alternative version specifiers (use if the user has a specific need):
— latest long-term support releaselts
— latest patch of a specific minor version25.12
— exact version25.12.5.44
Set the installed version as the default:
clickhousectl local use stable
Step 3: Initialize the project
From the user's project root directory:
clickhousectl local init
This creates a standard folder structure:
clickhouse/ tables/ # CREATE TABLE statements materialized_views/ # Materialized view definitions queries/ # Saved queries seed/ # Seed data / INSERT statements
Note: This step is optional. If the user already has their own folder structure for SQL files, skip this and adapt the later steps to use their paths.
Step 4: Start a local server
clickhousectl local server start --name <name>
This starts a ClickHouse server in the background. Server data is stored in
.clickhouse/servers/<anem>/data/ within the project directory.
To check running servers and see their exposed ports:
clickhousectl local server list
Step 5: Create the schema
Based on the user's application requirements, write CREATE TABLE SQL files.
Write each table definition to its own file in
clickhouse/tables/:
# Example: clickhouse/tables/events.sql
CREATE TABLE IF NOT EXISTS events ( timestamp DateTime, user_id UInt32, event_type LowCardinality(String), properties String ) ENGINE = MergeTree() ORDER BY (event_type, timestamp)
When designing schemas, if the
clickhouse-best-practices skill is available, consult it for guidance on ORDER BY column selection, data types, and partitioning.
Apply the schema to the running server:
clickhousectl local client --name <name> --queries-file clickhouse/tables/events.sql
Step 6: Seed data (optional)
If the user needs sample data for development, write INSERT statements to
clickhouse/seed/:
# Example: clickhouse/seed/events.sql
INSERT INTO events (timestamp, user_id, event_type, properties) VALUES ('2024-01-01 00:00:00', 1, 'page_view', '{"page": "/home"}'), ('2024-01-01 00:01:00', 2, 'click', '{"button": "signup"}');
Apply seed data:
clickhousectl local client --name <name> --queries-file clickhouse/seed/events.sql
Step 7: Verify the setup
Confirm tables were created:
clickhousectl local client --name <name> --query "SHOW TABLES"
Run a test query:
clickhousectl local client --name <name> --query "SELECT count() FROM events"
If the user wants to use a managed ClickHouse service, use the
clickhousectl-cloud-deploy skill to help the user deploy to ClickHouse Cloud.