ClickHouse RowBinary for Node.js
ClickHouse/agent-skills
Generates TypeScript or JavaScript readers and writers for ClickHouse's RowBinary formats over HTTP in Node.js, after checking that RowBinary suits the data.
Write idiomatic application code with the ClickHouse Node.js client (@clickhouse/client).
$ npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vemetric/vemetric clickhouse-js-node-coding --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/vemetric/vemetric.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/clickhouse-js-node-coding .claude/skills/clickhouse-js-node-coding && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "clickhouse-js-node-coding" agent skill from https://github.com/vemetric/vemetric/tree/main/.agents/skills/clickhouse-js-node-coding into .claude/skills/clickhouse-js-node-coding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-coding", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/vemetric/vemetric/tree/main/.agents/skills/clickhouse-js-node-codingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vemetric/vemetric clickhouse-js-node-coding --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vemetric/vemetric.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/clickhouse-js-node-coding .agents/skills/clickhouse-js-node-coding && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "clickhouse-js-node-coding" agent skill from https://github.com/vemetric/vemetric/tree/main/.agents/skills/clickhouse-js-node-coding into .agents/skills/clickhouse-js-node-coding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-coding", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vemetric/vemetric clickhouse-js-node-coding --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vemetric/vemetric.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/clickhouse-js-node-coding .cursor/skills/clickhouse-js-node-coding && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "clickhouse-js-node-coding" agent skill from https://github.com/vemetric/vemetric/tree/main/.agents/skills/clickhouse-js-node-coding into .cursor/skills/clickhouse-js-node-coding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-coding", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/vemetric/vemetric.git --path .agents/skills/clickhouse-js-node-coding--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vemetric/vemetric clickhouse-js-node-coding --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vemetric/vemetric.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/clickhouse-js-node-coding .gemini/skills/clickhouse-js-node-coding && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "clickhouse-js-node-coding" agent skill from https://github.com/vemetric/vemetric/tree/main/.agents/skills/clickhouse-js-node-coding into .gemini/skills/clickhouse-js-node-coding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-coding", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install vemetric/vemetric clickhouse-js-node-codingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vemetric/vemetric.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/clickhouse-js-node-coding .github/skills/clickhouse-js-node-coding && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "clickhouse-js-node-coding" agent skill from https://github.com/vemetric/vemetric/tree/main/.agents/skills/clickhouse-js-node-coding into .github/skills/clickhouse-js-node-coding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-coding", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vemetric/vemetric clickhouse-js-node-coding --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vemetric/vemetric.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/clickhouse-js-node-coding .opencode/skills/clickhouse-js-node-coding && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "clickhouse-js-node-coding" agent skill from https://github.com/vemetric/vemetric/tree/main/.agents/skills/clickhouse-js-node-coding into .opencode/skills/clickhouse-js-node-coding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-coding", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
clickhouse-js-node-codingWrite idiomatic application code with the ClickHouse Node.js client (@clickhouse/client).
Clickhouse JS Node Coding is an agent skill from vemetric/vemetric. 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.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files (for example `reference/async-insert.md`, `reference/client-configuration.md` and `reference/compression.md`).
It sits in Databases, covering Data warehousing. It works with ClickHouse and Node.js. The repository describes itself as: Simple, yet powerful Web- & Product Analytics. The licence is AGPL-3.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6b7b01a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
clickhouse.comgithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Clickhouse JS Node Coding loads about 2.8k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 845 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from vemetric/vemetric at commit 6b7b01a, republished under its AGPL-3.0 licence (© vemetric). 845 words, ~2,783 tokens.
.claude/skills/clickhouse-js-node-coding/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.Reference: https://clickhouse.com/docs/integrations/javascript
⚠️ Node.js runtime only. This skill covers the
@clickhouse/clientpackage 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.
@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.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.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.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.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.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).Identify the user's task and read the matching reference file.
| Task | Triggers / symptoms | Reference file |
|---|---|---|
| Configure / connect the client | Building a createClient call, URL parameters, clickhouse_settings, default format, custom HTTP headers | reference/client-configuration.md |
| Compress requests / responses | compression, gzip vs zstd, { codec } option shape, Node version requirements, web limitations | reference/compression.md |
| Ping the server | Health 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 JSONObjectEachRow | reference/insert-formats.md |
| Insert into a subset of columns / different database | insert({ columns }), excluding columns, ephemeral columns, cross-DB inserts | reference/insert-columns.md |
| Insert values, expressions, dates, decimals | INSERT … 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 UInt128 | reference/insert-values.md |
| Async inserts (server-side batching) | async_insert=1, fire-and-forget vs wait-for-ack | reference/async-insert.md |
| Select and parse results | JSONEachRow reads, JSON with metadata, picking a select format | reference/select-formats.md |
| Parameterize queries | Binding values, special characters / escaping, "SQL injection?", {name: Type} syntax | reference/query-parameters.md |
| Sessions & temporary tables | session_id, CREATE TEMPORARY TABLE, per-session SET commands | reference/sessions.md |
| Modern data types | Dynamic, Variant, JSON (object), Time, Time64, QBit (vector search) | reference/data-types.md |
| Custom JSON parse/stringify | Plug in JSONBig / safe-stable-stringify / a BigInt-aware serializer | reference/custom-json.md |
import { createClient } from '@clickhouse/client' (Node, never
Web).await client.close() at the end of self-contained snippets; in
long-running services, close on graceful shutdown.format: 'JSONEachRow' and values: [...] unless the
user's scenario requires otherwise.await (await client.query({...})).json<RowType>() for
small / medium result sets; for bigger results suggest streaming.{name: Type}
syntax — never $1, ?, or :name.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.This skill covers day-to-day coding against @clickhouse/client (Node).
The following topics are intentionally not covered here:
ECONNRESET → use the
clickhouse-js-node-troubleshooting skill.examples/node/performance/.examples/node/security/.CREATE TABLE patterns, deployment-shaped connection strings,
replication / sharding choices — see
examples/node/schema-and-deployments/.@clickhouse/client-web and see
examples/web/.examples/node/coding/ — the runnable corpus this skill is built on.© vemetric, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 12 other files in .agents/skills/clickhouse-js-node-coding of vemetric/vemetric.
Open the folder on GitHubat commit 6b7b01a
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in vemetric/vemetric, which our catalogue first saw on October 7, 2026.
Clickhouse JS Node Coding next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Clickhouse JS Node Coding this skillvemetric/vemetric | 394 | 1 repos | ~2.8k | Automated safety check: Pass | AGPL-3.0 | |
| ClickHouse RowBinary for Node.jsClickHouse/agent-skills | 544 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Adding Ingestion WarningsPostHog/posthog-foss | 721 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Monitoring Ingestion PipelinePostHog/posthog-foss | 721 | — | ~9.1k | Automated safety check: Pass | MIT | |
| Ar Io Gateway Operatorar-io/ar-io-node | 127 | — | ~8.2k | Automated safety check: Notes | AGPL-3.0 | |
| Testingar-io/ar-io-node | 127 | — | ~2.6k | Automated safety check: Notes | AGPL-3.0 |
ClickHouse/agent-skills
Generates TypeScript or JavaScript readers and writers for ClickHouse's RowBinary formats over HTTP in Node.js, after checking that RowBinary suits the data.
PostHog/posthog-foss
How to add a new ingestion warning type to the event ingestion pipeline.
PostHog/posthog-foss
Guide for using the Grafana MCP to monitor and diagnose the Node.js ingestion pipeline workers in production.
ar-io/ar-io-node
Operate any AR.IO node deployment — architecture, daily ops, diagnostics, and recurring pitfalls that apply to every operator.
ar-io/ar-io-node
Decision guide for testing in the ar-io-node repo — which test layer to use, how to run it, and which helpers to reach for.
Observal/Observal
Administers Observal users, settings, diagnostics, review queues, security events, audit logs, SAML, SCIM, the local Observal server, its upgrades and rollback, and its own PostgreSQL and ClickHouse…
vemetric/vemetric
A skill your agent uses when the user has tabular data (pandas DataFrame, parquet, csv, Arrow, json) and wants to filter, group, aggregate, join, or speed up slow pandas.
vemetric/vemetric
A skill your agent uses when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse…
vemetric/vemetric
MUST USE when designing ClickHouse architectures, selecting between ingestion or modeling patterns, or translating best practices into workload-specific system designs.
vemetric/vemetric
MUST USE when reviewing ClickHouse schemas, queries, or configurations.
vemetric/vemetric
Troubleshoot and resolve common issues with the ClickHouse Node.js client (@clickhouse/client).
Works with
Categories
Write idiomatic application code with the ClickHouse Node.js client (@clickhouse/client). Clickhouse JS Node Coding is an agent skill from vemetric/vemetric.js client (@clickhouse/client).
Clickhouse JS Node Coding fits situations like: A user is building against the Node.js client — configuring the client; inserting rows in JSON; selecting and parsing results; binding query parameters.
Run `npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a claude-code`. Or copy the skill folder (.agents/skills/clickhouse-js-node-coding in vemetric/vemetric) into .claude/skills/clickhouse-js-node-coding in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a codex`. Or copy the skill folder (.agents/skills/clickhouse-js-node-coding in vemetric/vemetric) into .agents/skills/clickhouse-js-node-coding in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vemetric/vemetric --skill clickhouse-js-node-coding -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/clickhouse-js-node-coding, .gemini/skills/clickhouse-js-node-coding, .github/skills/clickhouse-js-node-coding and .opencode/skills/clickhouse-js-node-coding in your project.
SKILL.md names no scripts, command-line tools or credentials: Clickhouse JS Node Coding is instructions for the agent only. Our summary lists: Node.js.
SKILL.md names 2 domains. As links in the text: clickhouse.com and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Clickhouse JS Node Coding is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Clickhouse JS Node Coding: ClickHouse RowBinary for Node.js (ClickHouse/agent-skills, 544 stars), Adding Ingestion Warnings (PostHog/posthog-foss, 721 stars), Monitoring Ingestion Pipeline (PostHog/posthog-foss, 721 stars) and Ar Io Gateway Operator (ar-io/ar-io-node, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vemetric (a GitHub organization) maintains it in vemetric/vemetric, which has 394 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 7, 2026.
Source: vemetric/vemetric on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.