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.
Generates TypeScript or JavaScript readers and writers for ClickHouse's RowBinary formats over HTTP in Node.js, after checking that RowBinary suits the data.
$ npx skills add ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ClickHouse/agent-skills clickhouse-js-node-rowbinary --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/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-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-rowbinary" agent skill from https://github.com/ClickHouse/agent-skills/tree/main/skills/clickhouse-js-node-rowbinary into .claude/skills/clickhouse-js-node-rowbinary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-rowbinary", 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/ClickHouse/agent-skills/tree/main/skills/clickhouse-js-node-rowbinaryType 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 ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ClickHouse/agent-skills clickhouse-js-node-rowbinary --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/clickhouse-js-node-rowbinary .agents/skills/clickhouse-js-node-rowbinary && 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-rowbinary" agent skill from https://github.com/ClickHouse/agent-skills/tree/main/skills/clickhouse-js-node-rowbinary into .agents/skills/clickhouse-js-node-rowbinary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-rowbinary", 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 ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ClickHouse/agent-skills clickhouse-js-node-rowbinary --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/clickhouse-js-node-rowbinary .cursor/skills/clickhouse-js-node-rowbinary && 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-rowbinary" agent skill from https://github.com/ClickHouse/agent-skills/tree/main/skills/clickhouse-js-node-rowbinary into .cursor/skills/clickhouse-js-node-rowbinary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-rowbinary", 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/ClickHouse/agent-skills.git --path skills/clickhouse-js-node-rowbinary--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 ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ClickHouse/agent-skills clickhouse-js-node-rowbinary --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/clickhouse-js-node-rowbinary .gemini/skills/clickhouse-js-node-rowbinary && 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-rowbinary" agent skill from https://github.com/ClickHouse/agent-skills/tree/main/skills/clickhouse-js-node-rowbinary into .gemini/skills/clickhouse-js-node-rowbinary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-rowbinary", 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 ClickHouse/agent-skills clickhouse-js-node-rowbinaryInstalls 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 ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ClickHouse/agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/clickhouse-js-node-rowbinary .github/skills/clickhouse-js-node-rowbinary && 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-rowbinary" agent skill from https://github.com/ClickHouse/agent-skills/tree/main/skills/clickhouse-js-node-rowbinary into .github/skills/clickhouse-js-node-rowbinary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-rowbinary", 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 ClickHouse/agent-skills --skill clickhouse-js-node-rowbinary -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ClickHouse/agent-skills clickhouse-js-node-rowbinary --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ClickHouse/agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/clickhouse-js-node-rowbinary .opencode/skills/clickhouse-js-node-rowbinary && 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-rowbinary" agent skill from https://github.com/ClickHouse/agent-skills/tree/main/skills/clickhouse-js-node-rowbinary into .opencode/skills/clickhouse-js-node-rowbinary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clickhouse-js-node-rowbinary", 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-rowbinaryGenerates 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. 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.
Read from SKILL.md and the folder at commit 356a8c1. 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.
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.
Links to these hosts (documentation or services it may open):
clickhouse.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 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.
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 ClickHouse/agent-skills at commit 356a8c1, republished under its Apache-2.0 licence (© ClickHouse). 599 words, ~1,275 tokens.
.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.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:
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.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/.
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:
Int128/Int256/UInt128/UInt256,
Decimal128/Decimal256.IPv4, IPv6, UUID, FixedString.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.
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.
Six end-to-end examples with real speedup are catalogued in EXAMPLES.md.
clickhouse-js-node-coding.clickhouse-js-node-troubleshooting.@clickhouse/client-web.© 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
SKILL.md and 195 other files in skills/clickhouse-js-node-rowbinary of ClickHouse/agent-skills.
Open the folder on GitHubat commit 356a8c1
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| ClickHouse RowBinary for Node.js this skillClickHouse/agent-skills | 544 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| 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 | |
| Releasehypequery/hypequery | 103 | — | ~623 | Automated safety check: Pass | Custom licence | |
| Manual Testhypequery/hypequery | 103 | — | ~618 | Automated safety check: Pass | Custom licence | |
| Clickhouse JS Node Codingvemetric/vemetric | 394 | 1 repos | ~2.8k | Automated safety check: Pass | AGPL-3.0 |
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.
hypequery/hypequery
Cut a stable hypequery release via Changesets, or explain/check the canary flow.
hypequery/hypequery
Execute one of the model-runnable E2E test specs in testing/ (cli, datasets, serve, mcp, react) against a real ClickHouse instance.
vemetric/vemetric
Write idiomatic application code with the ClickHouse Node.js client (@clickhouse/client).
vemetric/vemetric
Troubleshoot and resolve common issues with the ClickHouse Node.js client (@clickhouse/client).
ClickHouse/agent-skills
MUST USE when investigating performance issues on a ClickHouse-managed Postgres instance.
Works with
Categories
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/`.
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.
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.
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.
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.
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.
SKILL.md names 1 domain. As links in the text: clickhouse.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 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.
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.
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.
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.