用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/evrendom/rudel --skill clickhouse-query命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
Test the local Rudel API with authenticated requests. Use when the user wants to test API endpoints, debug RPC calls, verify auth flows, or inspect API responses against the local dev server.
Environment variable management patterns. CRITICAL use when adding new environment variables (secrets, API keys, config), debugging "X not defined" or missing env var errors, tests passing locally but failing in CI, Turborepo not passing env vars to tasks, or troubleshooting deployment configuration errors.
CRITICAL - Invoke BEFORE writing ANY test code. Use when creating new tests, adding test cases, modifying existing tests, writing `it()` or `describe()` blocks, or touching any `*.test.ts` or `*.spec.ts` file. Enforces no try-catch in positive tests, no early returns, no test skipping.
基于 SOC 职业分类
| name | clickhouse-query |
| description | Run bounded, read-only ClickHouse queries through the repository wrapper. |
| metadata | {"author":"rudel","version":"2.0"} |
| compatibility | Requires Bun and a reachable ClickHouse instance. |
| allowed-tools | Bash(bun run --cwd packages/ch-schema chcli --:*) Read Write |
Use one command:
bun run --cwd packages/ch-schema chcli -- -F json -q "<SQL>"
The wrapper reads CLICKHOUSE_URL, CLICKHOUSE_USERNAME, and
CLICKHOUSE_PASSWORD from the current process. The URL must not contain
credentials. See references/connection.md.
-F json by default; use -F jsonl only for bounded streaming output.Per ClickHouse's
agent-query-safety
rule, every application-data query must have:
LIMIT;max_execution_time;max_rows_to_read or max_bytes_to_read.LIMIT does not cap scanned rows. Metadata queries must also have a finite
LIMIT, a time limit, and a read limit.
Per ClickHouse's
agent-discovery-schema
rule, run these steps in order. Execute every SQL block with the wrapper command
above and structured output.
SELECT name
FROM system.databases
WHERE name NOT IN ('system', 'information_schema', 'INFORMATION_SCHEMA')
ORDER BY name
LIMIT 100
SETTINGS max_execution_time = 10, max_rows_to_read = 100000
Replace analytics with the selected database.
SELECT
t.name,
t.engine,
coalesce(sumIf(p.rows, p.active), 0) AS rows,
formatReadableSize(coalesce(sumIf(p.bytes_on_disk, p.active), 0)) AS size
FROM system.tables AS t
LEFT JOIN system.parts AS p
ON p.database = t.database AND p.table = t.name
WHERE t.database = 'analytics'
GROUP BY t.name, t.engine
ORDER BY sumIf(p.bytes_on_disk, p.active) DESC
LIMIT 200
SETTINGS max_execution_time = 15, max_rows_to_read = 1000000
SELECT position, name, type, default_expression, comment
FROM system.columns
WHERE database = 'analytics' AND table = 'events'
ORDER BY position
LIMIT 500
SETTINGS max_execution_time = 10, max_rows_to_read = 100000
SELECT sorting_key, primary_key, partition_key
FROM system.tables
WHERE database = 'analytics' AND name = 'events'
LIMIT 1
SETTINGS max_execution_time = 10, max_rows_to_read = 100000
SELECT name, type_full, expr, granularity
FROM system.data_skipping_indices
WHERE database = 'analytics' AND table = 'events'
ORDER BY name
LIMIT 100
SETTINGS max_execution_time = 10, max_rows_to_read = 100000
Use fields discovered in steps 3–4. This example assumes event_date is a key:
SELECT event_date, user_id, event_type
FROM analytics.events
WHERE event_date >= today() - 1
LIMIT 10
SETTINGS max_execution_time = 30,
max_rows_to_read = 10000000,
timeout_before_checking_execution_speed = 0
Explain the exact bounded query:
EXPLAIN indexes = 1
SELECT event_type, count() AS events
FROM analytics.events
WHERE event_date >= today() - 1
GROUP BY event_type
ORDER BY events DESC
LIMIT 100
SETTINGS max_execution_time = 30,
max_rows_to_read = 10000000,
timeout_before_checking_execution_speed = 0
If the plan shows useful part or granule pruning, run the same query without
EXPLAIN. Otherwise narrow the key filter. On timeout, read-limit, or memory
errors, narrow the query rather than increasing limits.