SQL Expert

Zasady SQL ClickHouse: filtry wiodącego klucza głównego, kwalifikowane nazwy, uniq zamiast uniqExact

Autor: FrankChen021 · FrankChen021/datastoria

Działa po konfiguracji ★ 7.2/10

SQL Expert — Zasady SQL ClickHouse: filtry wiodącego klucza głównego, kwalifikowane nazwy, uniq zamiast uniqExact

Co robi ten skill

Zestaw reguł tworzenia zapytań SQL ClickHouse, który ogranicza sposób pisania zapytań: w pełni kwalifikowane nazwy tabel, brak końcowych średników, obowiązkowy LIMIT w zapytaniach eksploracyjnych, ograniczone okna czasowe, filtr na wiodącej kolumnie klucza głównego zawsze, gdy filtrowana jest kolumna pomocnicza, uniq() zamiast uniqExact() i mniejsza tabela po prawej stronie złączeń. Uruchamia się, gdy użytkownik prosi o napisanie, naprawienie lub optymalizację zapytania ClickHouse lub pobranie danych z tabeli ClickHouse. Jego wykrywanie schematu i obowiązkowy przepływ pracy validate_sql/execute_sql zależą od narzędzi dostarczanych przez aplikację internetową DataStoria, więc w czystym Claude Code mają zastosowanie tylko reguły pisania SQL.

Raport z testu

Sklonowano repozytorium (GitHub API miało ograniczenia szybkości, więc użyłem git), znaleziono SKILL.md w resources/skills/sql-expert/ i zainstalowano do tymczasowego HOME=$(mktemp -d) — frontmatter sparsowano jako prawidłowy YAML z name=sql-expert i 129-znakowym description. Sprawdzono surowe pobrania: SKILL.md 200 i clickhouse-system-queries/references/system-query-log.md 200, ale sql-expert/references/system-query-log.md to 404, więc względne odwołanie w treści wisi, gdy umiejętność jest zainstalowana samodzielnie; brak curl|sh, base64 lub tekstu iniekcji w resources/skills/. Oceny wyzwalaczy, wszystkie 5 poprawne: TAK na "Write me a ClickHouse query for the top 10 slowest endpoints last week", "I need a query against our ClickHouse events table showing daily unique users", "Optimize this ClickHouse SQL, it's scanning the whole table"; NIE na "Write a Postgres query with a lateral join for each customer's latest order" i "Analyze this CSV of sales figures and tell me which region grew fastest" — chociaż drugie zdanie opisu ("use this when the user needs data, queries, or analysis") nie ma kwalifikatora ClickHouse i stanowi realne zagrożenie nadmiernego wyzwalania. Test wyjścia na jednej tabeli MergeTree (PARTITION BY toYYYYMM(event_date), ORDER BY (event_date, site_id, event_time)): baseline.sql wygenerował `FROM page_views WHERE site_id = 42 AND event_time >= now() - INTERVAL 7 DAY ... uniqExact(user_id) ... LIMIT 10;` podczas gdy skill.sql wygenerował `FROM analytics.page_views WHERE event_date >= toDate(now() - INTERVAL 7 DAY) AND event_time >= ... AND site_id = 42 ... uniq(user_id) ... LIMIT 10` bez średnika — cztery różnice, z których najważniejsza to dodany predykat event_date, który linia bazowa pomija, co pozwala ClickHouse przycinać partycje i używać rzadkiego indeksu podczas filtrowania kolumny pomocniczej PK site_id. Nie mogłem tego zweryfikować za pomocą EXPLAIN (brak clickhouse, clickhouse-local lub docker na tej maszynie), i nie mogłem wykonać własnej KRYTYCZNEJ ZASADY umiejętności — validate_sql — ponieważ to narzędzie jest dostarczane z aplikacją internetową DataStoria, stąd werdykt "setup" zamiast "pass".

Testowano: 2026-07-21 · Claude Code 2.x (agent harness)

Instalacja

git clone --depth 1 https://github.com/FrankChen021/datastoria.git /tmp/sql-expert-src
mkdir -p ~/.claude/skills
cp -R /tmp/sql-expert-src/resources/skills/sql-expert ~/.claude/skills/sql-expert
# The SKILL.md body calls tools provided by the DataStoria app, not by Claude Code:
#   validate_sql, execute_sql, get_tables, explore_schema, skill_resource, search_query_log
# Without a ClickHouse MCP server exposing equivalents, Claude cannot run the skill's
# "MANDATORY validation" step - only the syntax/optimization rules in sections 2 and 3 apply.
# The body's `references/system-query-log.md` lives in a sibling skill, not this dir. To get it:
#   cp -R /tmp/sql-expert-src/resources/skills/clickhouse-system-queries ~/.claude/skills/clickhouse-system-queries
# Sibling skills also referenced by the body: visualization, optimize-clickhouse-sql,
#   diagnose-clickhouse-errors, diagnose-clickhouse-clusters, source-code-inspection
# Full experience (with the tools wired up): use the app at https://datastoria.app

Komendy i przykładowe prompty

  • /sql-expertZasady SQL ClickHouse: filtry wiodącego klucza głównego, kwalifikowane nazwy, uniq zamiast uniqExact

Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):

  • Write a ClickHouse query to aggregate daily sales
  • Optimize this slow ClickHouse SQL query
  • Validate this ClickHouse query for correctness