Agent skill

ClickHouse RowBinary for Node.js

by ClickHouse in 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.

Apache-2.0Auto-check passedDatabases

Install ClickHouse RowBinary for Node.js

skills CLI
$ npx skills add ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ClickHouse/agent-skills clickhouse-js-node-rowbinary --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ClickHouse/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/clickhouse-js-node-rowbinary .claude/skills/clickhouse-js-node-rowbinary && rm -rf skills-src

Use ~/.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/

Facts

Skill name
clickhouse-js-node-rowbinary
GitHub stars
544
Token cost
~1.3k tokens
SKILL.md length
599 words
Files
196
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Generates TypeScript or JavaScript readers and writers for ClickHouse's RowBinary formats over HTTP in Node.js, after checking that RowBinary suits the data.

  • Decoding a RowBinary response from ClickHouse into JavaScript objects
  • SKILL.md covers First: is RowBinary even the…, Core guidance (both directions), Worked examples and Out of scope, plus 1 more section
  • Runs TypeScript scripts from its folder
  • Encoding rows into a RowBinary payload for an insert over HTTP

What it does

The skill produces both directions of the wire format for `RowBinary`, `RowBinaryWithNames` and `RowBinaryWithNamesAndTypes`: readers that decode bytes into values and writers that encode values into bytes. A task usually needs one side, so the main file sends you to `reader.md` or `writer.md` for streaming choices, row-object versus columnar output, schemas and per-type reference tables, with real per-type code under `src/readers/` and `src/writers/`.

Before writing a parser, the agent decides whether RowBinary is the right format. JSON formats such as `JSONEachRow` are preferred for mostly string or JSON-like data consumed wholesale, since `JSON.parse` is fast and HTTP compression helps. RowBinary wins for wide numerics like Int128 or Decimal256, binary types such as IPv4, UUID and FixedString, and high-volume fixed-width columns. The Native format suits columnar client-side analytics. It covers Node.js only, not browsers, and the folder ships 198 files including case studies.

When your agent uses it

  • Decoding a RowBinary response from ClickHouse into JavaScript objects
  • Encoding rows into a RowBinary payload for an insert over HTTP
  • Deciding between RowBinary, JSONEachRow and Native for a ClickHouse query

Example prompts

  • “Write a streaming RowBinaryWithNamesAndTypes reader for my events table query in Node.js.”
  • “Encode these order rows with UUID and Decimal128 columns as a RowBinary insert payload.”
  • “Should I use RowBinary or JSONEachRow for a log search that returns mostly strings?”

Requirements

  • Node.js
  • A ClickHouse server reachable over its HTTP interface

What it can do on your machine

Read from SKILL.md and the folder at commit 356a8c1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships script files (TypeScript, from the files we listed), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • clickhouse.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

ClickHouse RowBinary for Node.js loads about 1.3k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 599 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from ClickHouse/agent-skills at commit 356a8c1, republished under its Apache-2.0 licence (© ClickHouse). 599 words, ~1,275 tokens.

Download SKILL.mdSave it as .claude/skills/clickhouse-js-node-rowbinary/SKILL.md (or your agent's skills folder). This skill also uses 195 other files; get the full folder from GitHub.
name
clickhouse-js-node-rowbinary
description
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.

ClickHouse JS RowBinary Codec Generator for Node.js

This skill generates both directions of the wire format: readers (decode bytes → values) and writers (encode values → bytes, the mirror). A given task normally needs only one side. This file is the shared entry point — the format gate plus the principles common to both directions; the per-direction decisions, guidance, and the per-type reference tables live in two sibling files.

Pick your side — read only the one you need:

  • Decoding a RowBinary* response from ClickHouse into JS values → reader.md. Streaming vs whole-buffer, row-objects vs columnar, fixed vs runtime schema, and the per-type reader reference.
  • Encoding JS values into a RowBinary payload to send to ClickHouse → writer.md. The Sink/writeX building blocks, writeRows streaming, and the per-type writer reference.

The per-type code is real, split by direction under src/readers/ and src/writers/.

First: is RowBinary even the right format?

RowBinary exists for throughput, but it is not automatically the fastest path — match the format to the shape of the data before committing to a bespoke parser.

Prefer a JSON* format (e.g. JSONEachRow) when the result is mostly strings / JSON-like values that you consume wholesale — randomly accessing essentially every field, running string/regexp methods on them, treating values as text. V8's native JSON.parse is heavily optimized C++ and builds JS strings and objects faster than a JS-level RowBinary decoder can; pair it with HTTP response compression (gzip / zstd, which crushes JSON's repetitive keys) and the wire cost shrinks too.

RowBinary clearly wins when the result is dominated by:

  • Wide numerics — Int128/Int256/UInt128/UInt256, Decimal128/Decimal256.
  • Binary / fixed-width blobs — IPv4, IPv6, UUID, FixedString.
  • High-volume fixed-width numeric columns generally, where each value is a single DataView read.

Prefer the Native format when columnar load and client-side analytics are the main goal (fold/scan/filter columns, feed typed arrays to a Worker or WASM). Native is column-major, so it loads straight into one typed array per column with no transpose.

For help choosing and consuming a JSON* format (or CSV / TSV) instead, use the clickhouse-js-node-coding skill.

Show full SKILL.md (270 more words)Show less

Core guidance (both directions)

These principles apply whether you are generating a reader or a writer; the side-specific operational guidance is in reader.md / writer.md.

  • Little-endian only. RowBinary is little-endian; target x86/ARM. Read and write every multi-byte number with DataView accessors passing a literal true for the littleEndian flag.

  • Correct first, then optimize. First emit a correct codec built from the plain per-type API. Only after it's correct (and tested) specialize it. Don't bake performance assumptions in before correctness.

  • Monomorphize generic/composite types. Emit specialized, inlined code per type combination instead of passing functions as arguments where the type is known ahead of time.

  • Inline the leaf ops. The per-type readX/writeX functions are the correct, composable reference; the generated codec should INLINE their bodies, not call them, so the row loop is straight-line with no per-field indirection (and so the fixed-width coalescing can fold the offset arithmetic together).

  • Annotate the type per column. Inlining erases the type structure, so put a short comment above each column's encode/decode block naming the ClickHouse type it handles.

  • Shared scratch is not reentrant. Some hot methods reuse a module-level scratch buffer as a write-then-read pair — correct only because the access is fully synchronous. An async/yield boundary between populating and reading it corrupts the value.

  • TypeScript by default. Generate TypeScript code and helpers unless the user explicitly asks for plain JavaScript.

Worked examples

Six end-to-end examples with real speedup are catalogued in EXAMPLES.md.

Out of scope

  • JSON / CSV / TSV / Parquet parsing → use clickhouse-js-node-coding.
  • Connection errors, hangs, type mismatches → use clickhouse-js-node-troubleshooting.
  • Browser / Web Worker / Edge → @clickhouse/client-web.

Still Stuck?

© ClickHouse, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 195 other files in skills/clickhouse-js-node-rowbinary of ClickHouse/agent-skills.

  • SKILL.md
  • .gitignore
  • AGENTS.md
  • CHANGELOG.md
  • EXAMPLES.md
  • README.md
  • case-studies/iot-rowbinary-vs-json.md
  • case-studies/ledger-rowbinary-vs-json.md
  • case-studies/logs-json-wins.md
  • case-studies/wasm-vs-js.md
  • eval_result.md
  • eval_result_composer.md
  • eval_result_haiku.md
  • eval_result_sonnet.md
  • package-lock.json
  • package.json
  • reader.md
  • src/examples/carts.ts
  • … and 178 more

Open the folder on GitHubat commit 356a8c1

Compare with similar skills

ClickHouse RowBinary for Node.js 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.

ClickHouse RowBinary for Node.js compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
ClickHouse RowBinary for Node.js this skillClickHouse/agent-skills544—~1.3kAutomated safety check: PassApache-2.0
Ar Io Gateway Operatorar-io/ar-io-node127—~8.2kAutomated safety check: NotesAGPL-3.0
Testingar-io/ar-io-node127—~2.6kAutomated safety check: NotesAGPL-3.0
Releasehypequery/hypequery103—~623Automated safety check: PassCustom licence
Manual Testhypequery/hypequery103—~618Automated safety check: PassCustom licence
Clickhouse JS Node Codingvemetric/vemetric3941 repos~2.8kAutomated safety check: PassAGPL-3.0

Similar skills

  • Ar Io Gateway Operator

    ar-io/ar-io-node

    Operate any AR.IO node deployment — architecture, daily ops, diagnostics, and recurring pitfalls that apply to every operator.

    127 GitHub stars~8.2k tokensUpdated today
    Backend & APIsAuto-check: notes
  • Testing

    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.

    127 GitHub stars~2.6k tokensUpdated today
    Testing & QAAuto-check: notes
  • Release

    hypequery/hypequery

    Cut a stable hypequery release via Changesets, or explain/check the canary flow.

    103 GitHub stars~623 tokensUpdated today
    DatabasesAuto-check passed
  • Manual Test

    hypequery/hypequery

    Execute one of the model-runnable E2E test specs in testing/ (cli, datasets, serve, mcp, react) against a real ClickHouse instance.

    103 GitHub stars~618 tokensUpdated today
    DatabasesAuto-check passed
  • Clickhouse JS Node Coding

    vemetric/vemetric

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

    394 GitHub starsUsed in 1 repo~2.8k tokens
    DatabasesAuto-check passed
  • Troubleshoot and resolve common issues with the ClickHouse Node.js client (@clickhouse/client).

    394 GitHub starsUsed in 1 repo~1.3k tokens
    DatabasesAuto-check passed

More from ClickHouse/agent-skills

  • Clickhouse Managed Postgres Rca

    ClickHouse/agent-skills

    MUST USE when investigating performance issues on a ClickHouse-managed Postgres instance.

    544 GitHub stars~1.2k tokensUpdated 8 days ago
    Auto-check passed

Categories

Questions about ClickHouse RowBinary for Node.js

What does ClickHouse RowBinary for Node.js do?

Generates TypeScript or JavaScript readers and writers for ClickHouse's RowBinary formats over HTTP in Node.js, after checking that RowBinary suits the data. The skill produces both directions of the wire format for `RowBinary`, `RowBinaryWithNames` and `RowBinaryWithNamesAndTypes`: readers that decode bytes into values and writers that encode values into bytes.md` for streaming choices, row-object versus columnar output, schemas and per-type reference tables, with real per-type code under `src/readers/` and `src/writers/`.

When should I use ClickHouse RowBinary for Node.js?

ClickHouse RowBinary for Node.js fits situations like: decoding a RowBinary response from ClickHouse into JavaScript objects; encoding rows into a RowBinary payload for an insert over HTTP; deciding between RowBinary, JSONEachRow and Native for a ClickHouse query.

How do I install ClickHouse RowBinary for Node.js in Claude Code?

Run `npx skills add ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a claude-code`. Or copy the skill folder (skills/clickhouse-js-node-rowbinary in ClickHouse/agent-skills) into .claude/skills/clickhouse-js-node-rowbinary in your project. Claude Code loads it when a task matches its description.

How do I install ClickHouse RowBinary for Node.js in Codex?

Run `npx skills add ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a codex`. Or copy the skill folder (skills/clickhouse-js-node-rowbinary in ClickHouse/agent-skills) into .agents/skills/clickhouse-js-node-rowbinary in your project. Codex loads it when a task matches its description.

Can I use ClickHouse RowBinary for Node.js in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -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-rowbinary, .gemini/skills/clickhouse-js-node-rowbinary, .github/skills/clickhouse-js-node-rowbinary and .opencode/skills/clickhouse-js-node-rowbinary in your project.

What does ClickHouse RowBinary for Node.js need to run?

Going by SKILL.md and its folder, ClickHouse RowBinary for Node.js needs TypeScript for the scripts in its folder. Our summary lists: Node.js; A ClickHouse server reachable over its HTTP interface.

Does ClickHouse RowBinary for Node.js access the network?

SKILL.md names 1 domain. As links in the text: clickhouse.com. This is read from the text; nothing was executed.

Is ClickHouse RowBinary for Node.js safe to install?

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.

What licence does ClickHouse RowBinary for Node.js use?

ClickHouse RowBinary for Node.js is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does ClickHouse RowBinary for Node.js use?

About 1.3k tokens (SKILL.md is roughly 5.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to ClickHouse RowBinary for Node.js?

Skills that share tags, products or a category with ClickHouse RowBinary for Node.js: Ar Io Gateway Operator (ar-io/ar-io-node, 127 stars), Testing (ar-io/ar-io-node, 127 stars), Release (hypequery/hypequery, 103 stars) and Manual Test (hypequery/hypequery, 103 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains ClickHouse RowBinary for Node.js?

ClickHouse (a GitHub organization) maintains it in ClickHouse/agent-skills, which has 544 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 29, 2026.

Source: ClickHouse/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.