.agents/skills/database-clickhouse-weaviate/SKILL.md
ClickHouse queries, Goose migrations, chdb test schema, Weaviate collections/migrations, or telemetry storage paths.
npx skillsauth add latitude-dev/latitude-llm database-clickhouse-weaviateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When to use: ClickHouse queries, Goose migrations, chdb test schema, Weaviate collections/migrations, or telemetry storage paths.
ClickHouse adapter stack remains SQL-oriented in packages/platform/db-clickhouse.
All ClickHouse queries must use parameterized bindings ({name:Type} syntax with query_params) — never interpolate user-supplied values directly into SQL strings.
Install goose (if not already installed):
brew install goose
Migration files live in packages/platform/db-clickhouse/clickhouse/migrations/:
unclustered/ — single-node deployments (local dev, default)clustered/ — distributed deployments (CLICKHOUSE_CLUSTER_ENABLED=true)Goose tracks applied migrations automatically in the goose_db_version table (no manual registry).
Same rule as Postgres: do not run ch:* or ch:schema:dump unless the user explicitly asked in this conversation.
Commands (run from repo root):
# Apply all pending migrations
pnpm --filter @platform/db-clickhouse ch:up
# Roll back last migration
pnpm --filter @platform/db-clickhouse ch:down
# Show migration status
pnpm --filter @platform/db-clickhouse ch:status
# Create a new migration (creates timestamp-named files in both unclustered/ and clustered/)
pnpm --filter @platform/db-clickhouse ch:create <migration_name>
# Convert timestamp migrations to sequential order (run before merging a PR)
pnpm --filter @platform/db-clickhouse ch:fix
# Roll back ALL migrations (equivalent to drop)
pnpm --filter @platform/db-clickhouse ch:drop
# Reset ClickHouse volume and re-migrate (nuclear option)
pnpm --filter @platform/db-clickhouse ch:reset
# Seed sample span data
pnpm --filter @platform/db-clickhouse ch:seed
ch:create <name> — creates 20260305120000_name.sql in both unclustered/ and clustered/ch:fix — renames timestamp files to the next sequential number (e.g. 00002_name.sql) and commits the renamed files.sql file with -- +goose Up and -- +goose Down sections-- +goose NO TRANSACTION (ClickHouse does not support transactions)unclustered/ and clustered/ instead.ALTER TABLE or additive projection migrations with sensible defaults unless the change truly requires a table rebuild.unclustered/: use standard table engines (e.g. ReplacingMergeTree)clustered/: add ON CLUSTER default and use Replicated* enginesIn clustered ClickHouse, replicas can temporarily lag DDL metadata propagation. A migration can fail with:
code: 517Code: 517doesn't catchup with latest ALTER query updatesUse these authoring rules to reduce failures:
IF EXISTS / IF NOT EXISTS) so retries are safe.ALTER statements in one migration.ALTER TABLE ... with multiple actions over multiple dependent ALTER statements.ch:up against the same cluster).Execution safety:
packages/platform/db-clickhouse/clickhouse/scripts/up.sh retries transient replica lag errors from goose ... up.alter_sync, distributed_ddl_task_timeout, and replication_wait_for_inactive_replica_timeout to improve DDL convergence.CLICKHOUSE_MIGRATION_MAX_RETRIES (default 20)CLICKHOUSE_MIGRATION_RETRY_DELAY_SECONDS (default 5)CLICKHOUSE_MIGRATION_MAX_RETRY_DELAY_SECONDS (default 30)CLICKHOUSE_MIGRATION_ALTER_SYNC (default 2)CLICKHOUSE_MIGRATION_DISTRIBUTED_DDL_TASK_TIMEOUT_SECONDS (default 300)CLICKHOUSE_MIGRATION_REPLICA_WAIT_TIMEOUT_SECONDS (default 300)Use the dedicated Weaviate package for connection and schema bootstrapping:
packages/platform/db-weaviate/src/client.ts — createWeaviateClient() and createWeaviateClientEffect() connect and perform health checks. For the general platform pattern (Effect-first client, tagged errors, env, layer wiring), see architecture-boundaries — Platform adapters: Effect-based clients.packages/platform/db-weaviate/src/collections.ts — define all collections in code via defineWeaviateCollections([...]).packages/platform/db-weaviate/src/migrations.ts — idempotent: checks collections.exists() before create and tolerates "already exists" race conditions.pnpm --filter @platform/db-weaviate wv:migrate — entrypoint is packages/platform/db-weaviate/src/migrate.ts.packages/platform/db-weaviate.src/collections.ts and rely on the package migration flow.Do not run wv:migrate unless the user explicitly asked in this conversation.
data-ai
Continuous Agentation annotation handling. Use when the user says "watch mode", asks you to watch for Agentation annotations, process feedback as it arrives, or keep fixing annotation-driven changes until told to stop or a timeout is reached.
development
apps/web UI — routes, @repo/ui, TanStack Start server functions and collections, forms, Tailwind layout rules, design-system updates, and useEffect / useMountEffect policy.
tools
Installing dependencies, running dev/build/test/lint, filtering packages, single-test runs, git hooks, preparing a clone (.env.development / .env.test), or Docker-backed local services and dev servers.
tools
Writing or debugging tests, choosing unit vs integration style, Postgres/ClickHouse tests, regenerating ClickHouse test schema, or exporting test helpers from packages without pulling test code into production bundles.