clickhouse/agent-skills

clickhouse-js-node-coding

Write idiomatic application code with the ClickHouse Node.js client (@clickhouse/client).

Ver código-fonte

Como usar

  1. Copie o comando e verifique o pacote antes de instalar no seu ambiente de agente.
  2. Consulte no original as ferramentas, credenciais e ambientes necessários.
  3. Descreva os dados de entrada e a entrega esperada; confira a saída com as fontes.
npx skills add https://github.com/clickhouse/agent-skills --skill clickhouse-js-node-coding

Antes de começar

  • A instalação não inclui assinatura de modelo, franquia API ou acesso aos seus arquivos.
  • Estrelas e instalações indicam atividade, não um teste independente de qualidade ou segurança.
Documento original do Skill

Renderizado do repositório de origem, preservando títulos, exemplos, código, tabelas, links e imagens.

ClickHouse Node.js Client — Coding

Reference: https://clickhouse.com/docs/integrations/javascript

⚠️ Node.js runtime only. This skill covers the @clickhouse/client package running in a Node.js runtime exclusively — including Next.js Node runtime API routes, React Server Components, Server Actions, and standard Node.js processes. Do not apply this skill to browser client components, Web Workers, Next.js Edge runtime, Cloudflare Workers, or any usage of @clickhouse/client-web. For browser/edge environments, the correct package is @clickhouse/client-web.

How to Use This Skill

  1. Match the user's intent to a row in the Task Index below and read the

corresponding reference file before writing code. After reading it, scan any Answer checklist in that reference and make sure the final answer covers each relevant item; those checklists capture details users usually need but are easy to omit in short answers.

  1. Always import from `@clickhouse/client` (never @clickhouse/client-web)

and create a client with createClient({ url }) or rely on supported defaults when appropriate. Close it with await client.close() preferably when it's no longer needed or during graceful shutdown for global resources.

  1. Prefer `JSONEachRow` for typical row inserts/selects unless the user

has already chosen another format or is streaming raw bytes (CSV / TSV / Parquet — see examples/node/performance/). Note on `clickhouse_settings`: settings passed to createClient are defaults for every request; they can be overridden per-call by passing clickhouse_settings directly to insert(), query(), or command(). Always mention this when the user configures settings at the client level.

  1. Always use `query_params` for user-supplied values — never template-

literal-interpolate them into SQL. See reference/query-parameters.md. When answering a parameter-binding question, your response must explicitly name template-literal interpolation as a "SQL injection risk" — even when the user only asked about syntax and did not raise security. The literal phrase "SQL injection" needs to appear; this is the most common mistake from PostgreSQL/MySQL users and the security framing is part of the correct answer, not an optional aside.

  1. Pick the right method for the job:
  • client.insert() — write rows.
  • client.query() + resultSet.json() / .text() / .stream() — read

rows that return data.

  • client.command() — DDL and other statements that don't return rows

(CREATE, DROP, TRUNCATE, ALTER, SET in a session, etc.).

  • client.exec() — when you need the raw response stream of an arbitrary

statement (rare in coding scenarios).

  • client.ping() — health check; returns { success, error? }, never

throws on connection failure.

  1. Note version constraints when relevant. Examples:
  • pathname config option: client >= 1.0.0.
  • BigInt values in query_params: client >= 1.15.0.
  • TupleParam and JS Map in query_params: client >= 1.9.0.
  • Configurable json.parse / json.stringify: client >= 1.14.0.
  • Time / Time64 data types: ClickHouse server >= 25.6.
  • QBit data type: ClickHouse server >= 25.10 (GA on 26.x).
  • Dynamic / Variant / new JSON types: ClickHouse server >= 24.1 /

24.5 / 24.8 (no longer experimental since 25.3).


Task Index

Identify the user's task and read the matching reference file.

TaskTriggers / symptomsReference file
Configure / connect the clientBuilding a createClient call, URL parameters, clickhouse_settings, default format, custom HTTP headersreference/client-configuration.md
Compress requests / responsescompression, gzip vs zstd, { codec } option shape, Node version requirements, web limitationsreference/compression.md
Ping the serverHealth checks, readiness probes, "is ClickHouse up?"reference/ping.md
Choose an insert format"Which format should I use to insert?", JSON vs raw, JSONEachRow vs JSON vs JSONObjectEachRowreference/insert-formats.md
Insert into a subset of columns / different databaseinsert({ columns }), excluding columns, ephemeral columns, cross-DB insertsreference/insert-columns.md
Insert values, expressions, dates, decimalsINSERT … VALUES with SQL functions, Date/DateTime from JS, Decimal precision, INSERT … SELECT; inserting a UUID into a UInt128 column is tricky — use when the user is writing code that stores a UUID as UInt128reference/insert-values.md
Async inserts (server-side batching)async_insert=1, fire-and-forget vs wait-for-ackreference/async-insert.md
Select and parse resultsJSONEachRow reads, JSON with metadata, picking a select formatreference/select-formats.md
Parameterize queriesBinding values, special characters / escaping, "SQL injection?", {name: Type} syntaxreference/query-parameters.md
Sessions & temporary tablessession_id, CREATE TEMPORARY TABLE, per-session SET commandsreference/sessions.md
Modern data typesDynamic, Variant, JSON (object), Time, Time64, QBit (vector search)reference/data-types.md
Custom JSON parse/stringifyPlug in JSONBig / safe-stable-stringify / a BigInt-aware serializerreference/custom-json.md

Conventions used in answers

  • Always show import { createClient } from '@clickhouse/client' (Node, never

Web).

  • Always await client.close() at the end of self-contained snippets; in

long-running services, close on graceful shutdown.

  • For inserts, prefer format: 'JSONEachRow' and values: [...] unless the

user's scenario requires otherwise.

  • For selects, prefer await (await client.query({...})).json<RowType>() for

small / medium result sets; for bigger results suggest streaming.

  • When showing parameter binding, use ClickHouse's native {name: Type}

syntax — never $1, ?, or :name.

  • For DDL inside a cluster or behind a load balancer, set

clickhouse_settings: { wait_end_of_query: 1 } on the command() call so the server only acknowledges after the change is applied. See https://clickhouse.com/docs/en/interfaces/http/#response-buffering.


Out of scope

This skill covers day-to-day coding against @clickhouse/client (Node). The following topics are intentionally not covered here:

  • **Errors, hangs, type mismatches, proxy pathname surprises, log silence,

socket hang-ups, ECONNRESET** → use the clickhouse-js-node-troubleshooting skill.

  • **Streaming, Parquet, file streams, server-side bulk moves, progress

streaming, async-insert throughput tuning** — see `examples/node/performance/`.

  • TLS, RBAC / read-only users, deeper SQL-injection guidance — see

`examples/node/security/`.

  • CREATE TABLE patterns, deployment-shaped connection strings,

replication / sharding choices** — see `examples/node/schema-and-deployments/`.

  • Browser, Web Worker, Next.js Edge, Cloudflare Workers — use

@clickhouse/client-web and see `examples/web/`.


Still Stuck?

Relacionados por tarefa

do mesmo repositório

Mais Skills

Todos os Skills
clickhouse
Oficial

chdb-datastore

Use when the user has tabular data (pandas DataFrame, parquet, csv, Arrow, json) and wants to filter, group, aggregate, join, or speed up slow pandas. Provides chDB DataStore — same pandas API, ClickHouse engine underneath. Also handles reading from S3, MySQL, PostgreSQL, MongoDB, ClickHouse Cloud, Iceberg, Delta Lake as DataFrames and joining across sources. TRIGGER when: user mentions DataFrame, parquet, csv, "fast pandas", "speed up pandas", or cross-source DataFrame joins; user imports chdb.

instalações
2
GitHub Stars
557
Atualizado
21 de out.
clickhouse
Oficial

clickhouse-js-node-rowbinary

Generate TypeScript/JavaScript code that reads/decodes AND writes/encodes ClickHouse RowBinary streams for the ClickHouse HTTP server. Use this skill whenever a user wants to parse or produce RowBinary, RowBinaryWithNames, or RowBinaryWithNamesAndTypes. Node.js only, doesn't cover browsers.

instalações
2
GitHub Stars
557
Atualizado
21 de out.
clickhouse
Oficial

clickhouse-managed-postgres-rca

MUST USE when investigating performance issues on a ClickHouse-managed Postgres instance. Provides an evidence-based RCA workflow that scrapes the Prometheus endpoint for system signal, pulls per-digest evidence from the Slow Query Patterns API, and recommends (does not apply) a fix.

instalações
2
GitHub Stars
557
Atualizado
21 de out.
clickhouse
Oficial

infra-postgres

Sets up and manages Postgres using the clickhousectl CLI — runs a local Docker-backed Postgres for development, and creates and operates managed ClickHouse Cloud Postgres services (connections, TLS, runtime config, read replicas, failover, point-in-time restore). Use when the user wants a Postgres or PostgreSQL database for their application, a local Postgres dev environment, psql access, or a managed/production Postgres in ClickHouse Cloud, or mentions moving a local Postgres to production. Als

instalações
2
GitHub Stars
557
Atualizado
21 de out.