Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Install @clickhouse/client and configure authentication to ClickHouse Cloud or self-hosted. Use when setting up a new ClickHouse project, configuring connection strings, or initializing the official Node.js or Python client. Trigger with "install clickhouse", "setup clickhouse client", "clickhouse auth", "connect to clickhouse", "clickhouse credentials".
.claude/skills/jeremylongshore-clickhouse-install-auth/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 92% | 12 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 67% | 0% |
Set up the official ClickHouse client for Node.js or Python and configure authentication to ClickHouse Cloud or a self-hosted instance. The workflow below is the high-level path; each step links to a full walkthrough with complete code in references/implementation.md.
Follow these five steps. Read the current project for an existing .env before writing one; write credentials to .env (never commit it).
@clickhouse/client; Python uses clickhouse-connect.
bash npm install @clickhouse/client # Node.js pip install clickhouse-connect # Python
.envand add it to .gitignore. Cloud hosts use port 8443 (HTTPS); self-hosted uses 8123 (HTTP).
url, username, and password tocreateClient() (Node.js) or get_client() (Python). Cloud requires TLS — supply an https:// URL and the client handles it.
typescript import { createClient } from '@clickhouse/client'; const client = createClient({ url: process.env.CLICKHOUSE_HOST, username: process.env.CLICKHOUSE_USER, password: process.env.CLICKHOUSE_PASSWORD, });
client.ping() plus a SELECT version()probe.
clickhouse_connect.get_client(...)with secure=True for Cloud.
Full code for every step (Cloud + self-hosted variants, the verify routine, and the Python client): references/implementation.md. Every createClient() option and a Cloud-vs-self-hosted comparison: references/connection-reference.md.
After completing the workflow you have:
@clickhouse/client or clickhouse-connect)..env holding CLICKHOUSE_HOST / CLICKHOUSE_USER / CLICKHOUSE_PASSWORD(gitignored).
ping() returning success: true and a SELECT version()probe printing the server version and uptime — proof the connection and auth both work.
| Error | Cause | Solution | |-------|-------|----------| | ECONNREFUSED | Server not running | Check host/port, verify ClickHouse is up | | Authentication failed | Wrong user/password | Verify credentials in ClickHouse users.xml or Cloud console | | CERTIFICATE_VERIFY_FAILED | TLS mismatch | Use https:// for Cloud, check CA certs for self-hosted | | TIMEOUT | Network/firewall | Check IP allowlists in Cloud console, firewall rules | | Database not found | Wrong database name | Run SHOW DATABASES to list available databases |
Connect to ClickHouse Cloud (Node.js). With .env populated, create the client against the https://…:8443 host and verify:
typescriptconst alive = await client.ping(); // { success: true } const rs = await client.query({ query: 'SELECT version() AS ver', format: 'JSONEachRow', }); console.log((await rs.json())[0].ver); // e.g. "24.8.1"
Connect to a local self-hosted instance (no TLS). Point at the HTTP interface on 8123 with an empty password:
typescriptconst localClient = createClient({ url: 'http://localhost:8123', username: 'default', password: '', });
The full Cloud + self-hosted + Python set is in references/implementation.md.
Proceed to clickhouse-hello-world to create your first table and run an insert-and-select round trip against the connection you just verified.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,941 | 7,503 | -31% | 1 | 1 | 0% | 2,107 | 2,815 | +34% | 0 | 0 | — |
case-02 | fail→pass | 12,432 | 17,775 | +43% | 1 | 1 | 0% | 2,513 | 3,276 | +30% | 0 | 0 | — |
case-03 | pass→pass | 10,267 | 6,838 | -33% | 1 | 1 | 0% | 1,971 | 2,566 | +30% | 0 | 0 | — |
case-04 | pass→pass | 4,743 | 4,249 | -10% | 1 | 1 | 0% | 812 | 1,793 | +121% | 0 | 0 | — |
case-05 | pass→pass | 8,058 | 4,887 | -39% | 1 | 1 | 0% | 1,380 | 2,083 | +51% | 0 | 0 | — |
case-06 | pass→pass | 10,822 | 8,827 | -18% | 1 | 1 | 0% | 1,898 | 2,816 | +48% | 0 | 0 | — |
case-07 | pass→pass | 6,043 | 3,297 | -45% | 1 | 1 | 0% | 1,038 | 1,671 | +61% | 0 | 0 | — |
case-08 | pass→pass | 12,837 | 10,237 | -20% | 1 | 1 | 0% | 2,472 | 2,929 | +18% | 0 | 0 | — |
case-09 | fail→pass | 12,379 | 13,437 | +9% | 1 | 1 | 0% | 2,279 | 3,724 | +63% | 0 | 0 | — |
case-10 | pass→pass | 9,681 | 7,231 | -25% | 1 | 1 | 0% | 1,762 | 2,351 | +33% | 0 | 0 | — |
case-11 | fail→pass | 12,340 | 6,815 | -45% | 1 | 1 | 0% | 2,083 | 2,393 | +15% | 0 | 0 | — |
case-12 | pass→pass | 6,343 | 2,416 | -62% | 1 | 1 | 0% | 1,181 | 1,526 | +29% | 0 | 0 | — |
case-13 | pass→pass | 10,513 | 7,085 | -33% | 1 | 1 | 0% | 1,880 | 2,471 | +31% | 0 | 0 | — |
case-14 | pass→pass | 4,400 | 3,083 | -30% | 1 | 1 | 0% | 752 | 1,632 | +117% | 0 | 0 | — |
case-15 | pass→pass | 4,327 | 3,845 | -11% | 1 | 1 | 0% | 710 | 1,848 | +160% | 0 | 0 | — |
case-16 | pass→pass | 6,943 | 6,258 | -10% | 1 | 1 | 0% | 1,304 | 2,258 | +73% | 0 | 0 | — |
case-17 | pass→pass | 3,336 | 3,388 | +2% | 1 | 1 | 0% | 577 | 1,814 | +214% | 0 | 0 | — |
case-18 | fail→pass | 6,612 | 4,046 | -39% | 1 | 1 | 0% | 1,174 | 1,959 | +67% | 0 | 0 | — |
case-19 | pass→pass | 4,061 | 2,381 | -41% | 1 | 1 | 0% | 608 | 1,583 | +160% | 0 | 0 | — |
case-20 | pass→pass | 4,768 | 6,834 | +43% | 1 | 1 | 0% | 888 | 2,553 | +188% | 0 | 0 | — |
case-21 | pass→pass | 10,506 | 9,963 | -5% | 1 | 1 | 0% | 2,119 | 3,154 | +49% | 0 | 0 | — |
case-22 | pass→pass | 10,681 | 13,533 | +27% | 1 | 1 | 0% | 2,040 | 3,687 | +81% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.