What problem does it solve? ClickHouse behaves very differently from OLTP databases, and developers routinely hit merge storms, "too many parts" errors, and slow queries by applying transactional-database habits. This Skill encodes the conventions for using ClickHouse correctly from Rust and Node.js so agents generate idiomatic ingestion and analytics code. ## Core Features & Use Cases - Client library guidance: Covers the Rust clickhouse crate (typed Row structs, buffered inserts, RowBinary) and the official @clickhouse/client for Node.js, including the browser/edge build. - Insert and query patterns: Large batch inserts, async inserts, ReplacingMergeTree deduplication, materialized-view rollups, TTL retention, and ORDER BY/skip-index design. - Antipattern catalog: A table of common mistakes (per-row inserts, heavy mutations, FINAL everywhere, over-partitioning) with the correct alternative for each. - Use Case: When building an event-ingestion pipeline that writes millions of rows per day, use this Skill to generate batched insert code with async_insert settings and a ReplacingMergeTree table instead of row-by-row writes. ## Quick Start Ask the agent to write a Rust or Node.js function that batch-inserts events into a ClickHouse table following ClickHouse best practices.