frankchen021/sql-expert
Expert system for generating, validating, and optimizing ClickHouse SQL. Use this when the user needs data, queries, or analysis.
npx skills add https://github.com/FrankChen021/datastoria --skill sql-expert
> ## 🚨 CRITICAL RULE: MANDATORY VALIDATION
> You MUST call validate_sql(sql) for every new query you generate.
> Context Note: Historical validation steps are pruned to save tokens, but this does NOT excuse you from validating new queries in the current turn. Always validate before executing.
get_tables and explore_schema first.columns argument of explore_schema instead of loading the full table schema.ProfileEvent_*, CurrentMetric_*, and flattened event columns on system.* tables.explore_schema with a narrower columns list based on the user-mentioned identifier or the closest confirmed column names.explore_schema. Do not assume standard columns exist if they are not in the tool output.WHERE user = '<clickHouseUser>'.system.* tables (e.g., system.query_log, system.parts, system.merges), defer to the clickhouse-system-queries skill - it contains table-specific patterns, predicates, and resource metrics that this skill does not cover. For system.query_log, do not generate SQL until references/system-query-log.md has been loaded via skill_resource, and do not call search_query_log for chart/time-series requests.database.table).;).LIMIT for data exploration queries.event_date or timestamp) first. Use bounded time windows (e.g., last 24h, 7 days) unless the user asks for all history.WHERE event_time > now() - 1h (If PK is event_date, event_time, this scans everything).WHERE event_date >= toDate(now() - 1h) AND event_time > now() - 1h (Uses index, handles midnight crossover).uniq() instead of uniqExact() unless precision is explicitly requested.GLOBAL IN only for distributed queries.validate_sql(sql).execute_sql(sql).Take frankchen021/sql-expert from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.