{"id":"cb333b9e-7a09-4385-bc09-eaa3ef752707","shortId":"bZvMAA","kind":"skill","title":"cc-skill-clickhouse-io","tagline":"ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.","description":"# ClickHouse Analytics Patterns\n\nClickHouse-specific patterns for high-performance analytics and data engineering.\n\n## Overview\n\nClickHouse is a column-oriented database management system (DBMS) for online analytical processing (OLAP). It's optimized for fast analytical queries on large datasets.\n\n**Key Features:**\n- Column-oriented storage\n- Data compression\n- Parallel query execution\n- Distributed queries\n- Real-time analytics\n\n## Table Design Patterns\n\n### MergeTree Engine (Most Common)\n\n```sql\nCREATE TABLE markets_analytics (\n    date Date,\n    market_id String,\n    market_name String,\n    volume UInt64,\n    trades UInt32,\n    unique_traders UInt32,\n    avg_trade_size Float64,\n    created_at DateTime\n) ENGINE = MergeTree()\nPARTITION BY toYYYYMM(date)\nORDER BY (date, market_id)\nSETTINGS index_granularity = 8192;\n```\n\n### ReplacingMergeTree (Deduplication)\n\n```sql\n-- For data that may have duplicates (e.g., from multiple sources)\nCREATE TABLE user_events (\n    event_id String,\n    user_id String,\n    event_type String,\n    timestamp DateTime,\n    properties String\n) ENGINE = ReplacingMergeTree()\nPARTITION BY toYYYYMM(timestamp)\nORDER BY (user_id, event_id, timestamp)\nPRIMARY KEY (user_id, event_id);\n```\n\n### AggregatingMergeTree (Pre-aggregation)\n\n```sql\n-- For maintaining aggregated metrics\nCREATE TABLE market_stats_hourly (\n    hour DateTime,\n    market_id String,\n    total_volume AggregateFunction(sum, UInt64),\n    total_trades AggregateFunction(count, UInt32),\n    unique_users AggregateFunction(uniq, String)\n) ENGINE = AggregatingMergeTree()\nPARTITION BY toYYYYMM(hour)\nORDER BY (hour, market_id);\n\n-- Query aggregated data\nSELECT\n    hour,\n    market_id,\n    sumMerge(total_volume) AS volume,\n    countMerge(total_trades) AS trades,\n    uniqMerge(unique_users) AS users\nFROM market_stats_hourly\nWHERE hour >= toStartOfHour(now() - INTERVAL 24 HOUR)\nGROUP BY hour, market_id\nORDER BY hour DESC;\n```\n\n## Query Optimization Patterns\n\n### Efficient Filtering\n\n```sql\n-- ✅ GOOD: Use indexed columns first\nSELECT *\nFROM markets_analytics\nWHERE date >= '2025-01-01'\n  AND market_id = 'market-123'\n  AND volume > 1000\nORDER BY date DESC\nLIMIT 100;\n\n-- ❌ BAD: Filter on non-indexed columns first\nSELECT *\nFROM markets_analytics\nWHERE volume > 1000\n  AND market_name LIKE '%election%'\n  AND date >= '2025-01-01';\n```\n\n### Aggregations\n\n```sql\n-- ✅ GOOD: Use ClickHouse-specific aggregation functions\nSELECT\n    toStartOfDay(created_at) AS day,\n    market_id,\n    sum(volume) AS total_volume,\n    count() AS total_trades,\n    uniq(trader_id) AS unique_traders,\n    avg(trade_size) AS avg_size\nFROM trades\nWHERE created_at >= today() - INTERVAL 7 DAY\nGROUP BY day, market_id\nORDER BY day DESC, total_volume DESC;\n\n-- ✅ Use quantile for percentiles (more efficient than percentile)\nSELECT\n    quantile(0.50)(trade_size) AS median,\n    quantile(0.95)(trade_size) AS p95,\n    quantile(0.99)(trade_size) AS p99\nFROM trades\nWHERE created_at >= now() - INTERVAL 1 HOUR;\n```\n\n### Window Functions\n\n```sql\n-- Calculate running totals\nSELECT\n    date,\n    market_id,\n    volume,\n    sum(volume) OVER (\n        PARTITION BY market_id\n        ORDER BY date\n        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n    ) AS cumulative_volume\nFROM markets_analytics\nWHERE date >= today() - INTERVAL 30 DAY\nORDER BY market_id, date;\n```\n\n## Data Insertion Patterns\n\n### Bulk Insert (Recommended)\n\n```typescript\nimport { ClickHouse } from 'clickhouse'\n\nconst clickhouse = new ClickHouse({\n  url: process.env.CLICKHOUSE_URL,\n  port: 8123,\n  basicAuth: {\n    username: process.env.CLICKHOUSE_USER,\n    password: process.env.CLICKHOUSE_PASSWORD\n  }\n})\n\n// ✅ Batch insert (efficient)\nasync function bulkInsertTrades(trades: Trade[]) {\n  const values = trades.map(trade => `(\n    '${trade.id}',\n    '${trade.market_id}',\n    '${trade.user_id}',\n    ${trade.amount},\n    '${trade.timestamp.toISOString()}'\n  )`).join(',')\n\n  await clickhouse.query(`\n    INSERT INTO trades (id, market_id, user_id, amount, timestamp)\n    VALUES ${values}\n  `).toPromise()\n}\n\n// ❌ Individual inserts (slow)\nasync function insertTrade(trade: Trade) {\n  // Don't do this in a loop!\n  await clickhouse.query(`\n    INSERT INTO trades VALUES ('${trade.id}', ...)\n  `).toPromise()\n}\n```\n\n### Streaming Insert\n\n```typescript\n// For continuous data ingestion\nimport { createWriteStream } from 'fs'\nimport { pipeline } from 'stream/promises'\n\nasync function streamInserts() {\n  const stream = clickhouse.insert('trades').stream()\n\n  for await (const batch of dataSource) {\n    stream.write(batch)\n  }\n\n  await stream.end()\n}\n```\n\n## Materialized Views\n\n### Real-time Aggregations\n\n```sql\n-- Create materialized view for hourly stats\nCREATE MATERIALIZED VIEW market_stats_hourly_mv\nTO market_stats_hourly\nAS SELECT\n    toStartOfHour(timestamp) AS hour,\n    market_id,\n    sumState(amount) AS total_volume,\n    countState() AS total_trades,\n    uniqState(user_id) AS unique_users\nFROM trades\nGROUP BY hour, market_id;\n\n-- Query the materialized view\nSELECT\n    hour,\n    market_id,\n    sumMerge(total_volume) AS volume,\n    countMerge(total_trades) AS trades,\n    uniqMerge(unique_users) AS users\nFROM market_stats_hourly\nWHERE hour >= now() - INTERVAL 24 HOUR\nGROUP BY hour, market_id;\n```\n\n## Performance Monitoring\n\n### Query Performance\n\n```sql\n-- Check slow queries\nSELECT\n    query_id,\n    user,\n    query,\n    query_duration_ms,\n    read_rows,\n    read_bytes,\n    memory_usage\nFROM system.query_log\nWHERE type = 'QueryFinish'\n  AND query_duration_ms > 1000\n  AND event_time >= now() - INTERVAL 1 HOUR\nORDER BY query_duration_ms DESC\nLIMIT 10;\n```\n\n### Table Statistics\n\n```sql\n-- Check table sizes\nSELECT\n    database,\n    table,\n    formatReadableSize(sum(bytes)) AS size,\n    sum(rows) AS rows,\n    max(modification_time) AS latest_modification\nFROM system.parts\nWHERE active\nGROUP BY database, table\nORDER BY sum(bytes) DESC;\n```\n\n## Common Analytics Queries\n\n### Time Series Analysis\n\n```sql\n-- Daily active users\nSELECT\n    toDate(timestamp) AS date,\n    uniq(user_id) AS daily_active_users\nFROM events\nWHERE timestamp >= today() - INTERVAL 30 DAY\nGROUP BY date\nORDER BY date;\n\n-- Retention analysis\nSELECT\n    signup_date,\n    countIf(days_since_signup = 0) AS day_0,\n    countIf(days_since_signup = 1) AS day_1,\n    countIf(days_since_signup = 7) AS day_7,\n    countIf(days_since_signup = 30) AS day_30\nFROM (\n    SELECT\n        user_id,\n        min(toDate(timestamp)) AS signup_date,\n        toDate(timestamp) AS activity_date,\n        dateDiff('day', signup_date, activity_date) AS days_since_signup\n    FROM events\n    GROUP BY user_id, activity_date\n)\nGROUP BY signup_date\nORDER BY signup_date DESC;\n```\n\n### Funnel Analysis\n\n```sql\n-- Conversion funnel\nSELECT\n    countIf(step = 'viewed_market') AS viewed,\n    countIf(step = 'clicked_trade') AS clicked,\n    countIf(step = 'completed_trade') AS completed,\n    round(clicked / viewed * 100, 2) AS view_to_click_rate,\n    round(completed / clicked * 100, 2) AS click_to_completion_rate\nFROM (\n    SELECT\n        user_id,\n        session_id,\n        event_type AS step\n    FROM events\n    WHERE event_date = today()\n)\nGROUP BY session_id;\n```\n\n### Cohort Analysis\n\n```sql\n-- User cohorts by signup month\nSELECT\n    toStartOfMonth(signup_date) AS cohort,\n    toStartOfMonth(activity_date) AS month,\n    dateDiff('month', cohort, month) AS months_since_signup,\n    count(DISTINCT user_id) AS active_users\nFROM (\n    SELECT\n        user_id,\n        min(toDate(timestamp)) OVER (PARTITION BY user_id) AS signup_date,\n        toDate(timestamp) AS activity_date\n    FROM events\n)\nGROUP BY cohort, month, months_since_signup\nORDER BY cohort, months_since_signup;\n```\n\n## Data Pipeline Patterns\n\n### ETL Pattern\n\n```typescript\n// Extract, Transform, Load\nasync function etlPipeline() {\n  // 1. Extract from source\n  const rawData = await extractFromPostgres()\n\n  // 2. Transform\n  const transformed = rawData.map(row => ({\n    date: new Date(row.created_at).toISOString().split('T')[0],\n    market_id: row.market_slug,\n    volume: parseFloat(row.total_volume),\n    trades: parseInt(row.trade_count)\n  }))\n\n  // 3. Load to ClickHouse\n  await bulkInsertToClickHouse(transformed)\n}\n\n// Run periodically\nsetInterval(etlPipeline, 60 * 60 * 1000)  // Every hour\n```\n\n### Change Data Capture (CDC)\n\n```typescript\n// Listen to PostgreSQL changes and sync to ClickHouse\nimport { Client } from 'pg'\n\nconst pgClient = new Client({ connectionString: process.env.DATABASE_URL })\n\npgClient.query('LISTEN market_updates')\n\npgClient.on('notification', async (msg) => {\n  const update = JSON.parse(msg.payload)\n\n  await clickhouse.insert('market_updates', [\n    {\n      market_id: update.id,\n      event_type: update.operation,  // INSERT, UPDATE, DELETE\n      timestamp: new Date(),\n      data: JSON.stringify(update.new_data)\n    }\n  ])\n})\n```\n\n## Best Practices\n\n### 1. Partitioning Strategy\n- Partition by time (usually month or day)\n- Avoid too many partitions (performance impact)\n- Use DATE type for partition key\n\n### 2. Ordering Key\n- Put most frequently filtered columns first\n- Consider cardinality (high cardinality first)\n- Order impacts compression\n\n### 3. Data Types\n- Use smallest appropriate type (UInt32 vs UInt64)\n- Use LowCardinality for repeated strings\n- Use Enum for categorical data\n\n### 4. Avoid\n- SELECT * (specify columns)\n- FINAL (merge data before query instead)\n- Too many JOINs (denormalize for analytics)\n- Small frequent inserts (batch instead)\n\n### 5. Monitoring\n- Track query performance\n- Monitor disk usage\n- Check merge operations\n- Review slow query log\n\n**Remember**: ClickHouse excels at analytical workloads. Design tables for your query patterns, batch inserts, and leverage materialized views for real-time aggregations.\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["skill","clickhouse","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-cc-skill-clickhouse-io","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/cc-skill-clickhouse-io","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34882 github stars · SKILL.md body (10,199 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T12:50:43.908Z","embedding":null,"createdAt":"2026-04-18T21:34:03.357Z","updatedAt":"2026-04-24T12:50:43.908Z","lastSeenAt":"2026-04-24T12:50:43.908Z","tsv":"'-01':284,285,323,324 '-123':290 '0':805,808,1042 '0.50':394 '0.95':400 '0.99':406 '1':418,713,813,816,1020,1129 '10':722 '100':299,902,912 '1000':293,314,707,1068 '2':903,913,1028,1151 '2025':283,322 '24':255,668 '3':1055,1168 '30':458,788,829,832 '4':1188 '5':1210 '60':1066,1067 '7':370,821,824 '8123':484 '8192':129 'action':1260 'activ':750,768,780,846,852,864,954,971,991 'aggreg':182,186,225,325,332,588,1247 'aggregatefunct':200,205,210 'aggregatingmergetre':179,214 'amount':522,616 'analysi':765,797,876,940 'analyt':11,21,24,34,51,59,80,92,280,311,453,761,1204,1229 'applic':1254 'appropri':1173 'ask':1298 'async':495,530,565,1017,1101 'avg':108,357,361 'avoid':1139,1189 'await':512,542,574,581,1026,1059,1107 'bad':300 'basicauth':485 'batch':492,576,580,1208,1237 'best':15,1127 'boundari':1306 'bulk':468 'bulkinserttoclickhous':1060 'bulkinserttrad':497 'byte':694,734,758 'calcul':423 'captur':1073 'cardin':1161,1163 'categor':1186 'cc':2 'cc-skill-clickhouse-io':1 'cdc':1074 'chang':1071,1079 'check':680,726,1218 'clarif':1300 'clear':1273 'click':889,892,900,907,911,915 'clickhous':4,6,23,27,39,330,473,475,477,479,1058,1083,1226 'clickhouse-specif':26,329 'clickhouse.insert':570,1108 'clickhouse.query':513,543 'client':1085,1091 'cohort':939,943,952,960,997,1004 'column':43,67,275,306,1158,1192 'column-ori':42,66 'common':87,760 'complet':895,898,910,917 'compress':71,1167 'connectionstr':1092 'consid':1160 'const':476,500,568,575,1024,1030,1088,1103 'continu':554 'convers':878 'count':206,347,966,1054 'countif':801,809,817,825,881,887,893 'countmerg':236,650 'countstat':620 'creat':89,112,143,188,336,366,414,590,596 'createwritestream':558 'criteria':1309 'cumul':449 'current':446 'daili':767,779 'data':13,36,70,134,226,465,555,1008,1072,1123,1126,1169,1187,1195 'databas':7,45,730,753 'dataset':63 'datasourc':578 'date':93,94,120,123,282,296,321,427,440,455,464,774,792,795,800,842,847,851,853,865,869,873,933,950,955,987,992,1034,1036,1122,1146 'datediff':848,958 'datetim':114,157,194 'day':339,371,374,379,459,789,802,807,810,815,818,823,826,831,849,855,1138 'dbms':48 'dedupl':131 'delet':1119 'denorm':1202 'desc':265,297,380,383,720,759,874 'describ':1261,1277 'design':82,1231 'disk':1216 'distinct':967 'distribut':75 'duplic':138 'durat':689,705,718 'e.g':139 'effici':269,389,494 'elect':319 'engin':14,37,85,115,160,213 'enum':1184 'environ':1289 'environment-specif':1288 'etl':1011 'etlpipelin':1019,1065 'event':146,147,153,170,177,709,783,859,925,930,932,994,1114 'everi':1069 'excel':1227 'execut':74,1256 'expert':1294 'extract':1014,1021 'extractfrompostgr':1027 'fast':58 'featur':65 'filter':270,301,1157 'final':1193 'first':276,307,1159,1164 'float64':111 'formatreadables':732 'frequent':1156,1206 'fs':560 'function':333,421,496,531,566,1018 'funnel':875,879 'good':272,327 'granular':128 'group':257,372,632,670,751,790,860,866,935,995 'high':19,32,1162 'high-perform':18,31 'hour':192,193,218,221,228,249,251,256,259,264,419,594,601,606,612,634,642,663,665,669,672,714,1070 'id':96,125,148,151,169,171,176,178,196,223,230,261,288,341,353,376,429,437,463,506,508,517,519,521,614,626,636,644,674,685,777,836,863,922,924,938,969,976,984,1044,1112 'impact':1144,1166 'import':472,557,561,1084 'index':127,274,305 'individu':527 'ingest':556 'input':1303 'insert':466,469,493,514,528,544,551,1117,1207,1238 'inserttrad':532 'instead':1198,1209 'interv':254,369,417,457,667,712,787 'io':5 'join':511,1201 'json.parse':1105 'json.stringify':1124 'key':64,174,1150,1153 'larg':62 'latest':745 'leverag':1240 'like':318 'limit':298,721,1265 'listen':1076,1096 'load':1016,1056 'log':699,1224 'loop':541 'lowcardin':1179 'maintain':185 'manag':46 'mani':1141,1200 'market':91,95,98,124,190,195,222,229,247,260,279,287,289,310,316,340,375,428,436,452,462,518,599,604,613,635,643,661,673,884,1043,1097,1109,1111 'match':1274 'materi':583,591,597,639,1241 'max':741 'may':136 'median':398 'memori':695 'merg':1194,1219 'mergetre':84,116 'metric':187 'min':837,977 'miss':1311 'modif':742,746 'monitor':676,1211,1215 'month':946,957,959,961,963,998,999,1005,1136 'ms':690,706,719 'msg':1102 'msg.payload':1106 'multipl':141 'mv':602 'name':99,317 'new':478,1035,1090,1121 'non':304 'non-index':303 'notif':1100 'olap':53 'onlin':50 'oper':1220 'optim':10,56,267 'order':121,166,219,262,294,377,438,460,715,755,793,870,1002,1152,1165 'orient':44,68 'output':1283 'overview':38,1264 'p95':404 'p99':410 'parallel':72 'parsefloat':1048 'parseint':1052 'partit':117,162,215,434,981,1130,1132,1142,1149 'password':489,491 'pattern':8,25,29,83,268,467,1010,1012,1236 'percentil':387,391 'perform':20,33,675,678,1143,1214 'period':1063 'permiss':1304 'pg':1087 'pgclient':1089 'pgclient.on':1099 'pgclient.query':1095 'pipelin':562,1009 'port':483 'postgresql':1078 'practic':16,1128 'pre':181 'pre-aggreg':180 'preced':444 'primari':173 'process':52 'process.env.clickhouse':481,487,490 'process.env.database':1093 'properti':158 'put':1154 'quantil':385,393,399,405 'queri':9,60,73,76,224,266,637,677,682,684,687,688,704,717,762,1197,1213,1223,1235 'queryfinish':702 'rate':908,918 'rawdata':1025 'rawdata.map':1032 'read':691,693 'real':78,586,1245 'real-tim':77,585,1244 'recommend':470 'rememb':1225 'repeat':1181 'replacingmergetre':130,161 'requir':1302 'retent':796 'review':1221,1295 'round':899,909 'row':441,447,692,738,740,1033 'row.created':1037 'row.market':1045 'row.total':1049 'row.trade':1053 'run':424,1062 'safeti':1305 'scope':1276 'select':227,277,308,334,392,426,608,641,683,729,770,798,834,880,920,947,974,1190 'seri':764 'session':923,937 'set':126 'setinterv':1064 'signup':799,804,812,820,828,841,850,857,868,872,945,949,965,986,1001,1007 'sinc':803,811,819,827,856,964,1000,1006 'size':110,359,362,396,402,408,728,736 'skill':3,1252,1268 'skill-cc-skill-clickhouse-io' 'slow':529,681,1222 'slug':1046 'small':1205 'smallest':1172 'sourc':142,1023 'source-sickn33' 'specif':28,331,1290 'specifi':1191 'split':1040 'sql':88,132,183,271,326,422,589,679,725,766,877,941 'stat':191,248,595,600,605,662 'statist':724 'step':882,888,894,928 'stop':1296 'storag':69 'strategi':1131 'stream':550,569,572 'stream.end':582 'stream.write':579 'stream/promises':564 'streaminsert':567 'string':97,100,149,152,155,159,197,212,1182 'substitut':1286 'success':1308 'sum':201,342,431,733,737,757 'summerg':231,645 'sumstat':615 'sync':1081 'system':47 'system.parts':748 'system.query':698 'tabl':81,90,144,189,723,727,731,754,1232 'task':1272 'test':1292 'time':79,587,710,743,763,1134,1246 'timestamp':156,165,172,523,610,772,785,839,844,979,989,1120 'todat':771,838,843,978,988 'today':368,456,786,934 'toisostr':1039 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'topromis':526,549 'tostartofday':335 'tostartofhour':252,609 'tostartofmonth':948,953 'total':198,203,232,237,345,349,381,425,618,622,646,651 'toyyyymm':119,164,217 'track':1212 'trade':103,109,204,238,240,350,358,364,395,401,407,412,498,499,503,516,533,534,546,571,623,631,652,654,890,896,1051 'trade.amount':509 'trade.id':504,548 'trade.market':505 'trade.timestamp.toisostring':510 'trade.user':507 'trader':106,352,356 'trades.map':502 'transform':1015,1029,1031,1061 'treat':1281 'type':154,701,926,1115,1147,1170,1174 'typescript':471,552,1013,1075 'uint32':104,107,207,1175 'uint64':102,202,1177 'unbound':443 'uniq':211,351,775 'uniqmerg':241,655 'uniqst':624 'uniqu':105,208,242,355,628,656 'updat':1098,1104,1110,1118 'update.id':1113 'update.new':1125 'update.operation':1116 'url':480,482,1094 'usag':696,1217 'use':273,328,384,1145,1171,1178,1183,1250,1266 'user':145,150,168,175,209,243,245,488,520,625,629,657,659,686,769,776,781,835,862,921,942,968,972,975,983 'usernam':486 'usual':1135 'valid':1291 'valu':501,524,525,547 'view':584,592,598,640,883,886,901,905,1242 'volum':101,199,233,235,292,313,343,346,382,430,432,450,619,647,649,1047,1050 'vs':1176 'window':420 'workflow':1258 'workload':22,1230","prices":[{"id":"4000bbda-51e3-45a4-aacf-e6dd8f512c34","listingId":"cb333b9e-7a09-4385-bc09-eaa3ef752707","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:34:03.357Z"}],"sources":[{"listingId":"cb333b9e-7a09-4385-bc09-eaa3ef752707","source":"github","sourceId":"sickn33/antigravity-awesome-skills/cc-skill-clickhouse-io","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/cc-skill-clickhouse-io","isPrimary":false,"firstSeenAt":"2026-04-18T21:34:03.357Z","lastSeenAt":"2026-04-24T12:50:43.908Z"}],"details":{"listingId":"cb333b9e-7a09-4385-bc09-eaa3ef752707","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"cc-skill-clickhouse-io","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34882,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"938f9b45fc6e5b523a3ed6adb594b95edf9e8956","skill_md_path":"skills/cc-skill-clickhouse-io/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/cc-skill-clickhouse-io"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"cc-skill-clickhouse-io","description":"ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/cc-skill-clickhouse-io"},"updatedAt":"2026-04-24T12:50:43.908Z"}}