Source profileQuality 92/100

ClickHouse/agent-skills/skills/clickhouse-js-node-coding/SKILL.md

clickhouse-js-node-coding

Write idiomatic application code with the ClickHouse Node.js client (`@clickhouse/client`). Use this skill whenever a user is *building* against the Node.js client — configuring the client, pinging, inserting rows in JSON or raw formats, selecting and parsing results, binding query parameters, managing sessions and temporary tables, working with data types or customizing JSON parsing. Do NOT use for browser/Web client code.

Source repository stars
520
Declared platforms
0
Static risk flags
1
Last source update
2026-08-06
Source checked
2026-08-28

Decision brief

What it does: where it fits

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

Best for

    Not for

    • Do NOT use for browser/Web client code.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/ClickHouse/agent-skills --skill "skills/clickhouse-js-node-coding"
    Safe inspection promptEditorial

    Inspect the Agent Skill "clickhouse-js-node-coding" from https://github.com/ClickHouse/agent-skills/blob/5aec3114379671f33b1c502a51d420a0729c8172/skills/clickhouse-js-node-coding/SKILL.md at commit 5aec3114379671f33b1c502a51d420a0729c8172. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      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 use…

      Match the user's intent to a row in the Task Index below and read theAlways import from @clickhouse/client (never @clickhouse/client-web)Prefer JSONEachRow for typical row inserts/selects unless the user
    2. 02

      Task Index

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

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

      Conventions used in answers

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

      Always show import { createClient } from '@clickhouse/client' (Node, neverAlways await client.close() at the end of self-contained snippets; inFor inserts, prefer format: 'JSONEachRow' and values: [...] unless the
    4. 04

      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,Streaming, Parquet, file streams, server-side bulk moves, progressTLS, RBAC / read-only users, deeper SQL-injection guidance — see
    5. 05

      Still Stuck?

      examples/node/coding/ — the runnable corpus this skill is built on.

      examples/node/coding/ — the runnable corpus this skill is built on.ClickHouse JS client docsClickHouse supported formats

    Permission review

    Static risk signals and limitations

    Reads files

    low · line 65

    The documentation asks the agent to read local files, directories, or repositories.

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

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars520SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    ClickHouse/agent-skills
    Skill path
    skills/clickhouse-js-node-coding/SKILL.md
    Commit
    5aec3114379671f33b1c502a51d420a0729c8172
    License
    Apache-2.0
    Collected
    2026-08-28
    Default branch
    main
    View the original SKILL.md

    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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.
    6. 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?

    Frequently asked questions

    What to verify before installation and use

    What does the clickhouse-js-node-coding source document cover?

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

    How do I install clickhouse-js-node-coding?

    The source record exposes this install command: npx skills add https://github.com/ClickHouse/agent-skills --skill "skills/clickhouse-js-node-coding". Inspect the command and pinned source before running it.

    Which permission-related actions were detected?

    Static rules flagged read-files in the source; the page lists the matching lines and excerpts.

    Alternatives

    Compare before choosing

    Computed 10045,960

    coreyhaines31/marketingskills

    ab-testing

    When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

    Computed 10029,236

    garrytan/gbrain

    bulk-ingestion

    End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

    Computed 10025,136

    alirezarezvani/claude-skills

    app-store-optimization

    App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

    Computed 1005,277

    dotnet/skills

    migrate-vstest-to-mtp

    Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing