# Tidbx Kysely

> Set up Kysely with TiDB Cloud (TiDB X), including @tidbcloud/kysely over the TiDB Cloud serverless HTTP driver for serverless or edge environments, plus standard TCP usage. Use for Kysely + TiDB Cloud connection setup, demo snippets, and environment-specific guidance.

- Skill: `majiayu000/tidbx-kysely` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/tidbx-kysely`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/tidbx-kysely/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/tidbx-kysely

---


# TiDB Cloud + Kysely

Use this skill when a user wants to connect Kysely to TiDB Cloud (TiDB X). Default to
standard TCP (Node server/runtime). Only use the TiDB Cloud serverless driver over
HTTP for serverless or edge runtimes.

## Workflow

1. Confirm runtime and deployment target (Node server vs serverless/edge).
2. Confirm cluster type. The serverless HTTP driver applies to Starter/Essential clusters.
3. Collect connection info (prefer a `mysql://` URL in `DATABASE_URL`).
4. Choose the path:
   - Normal usage (default): TCP + `mysql2` pool + Kysely `MysqlDialect`.
   - Serverless/edge: `@tidbcloud/kysely` dialect over HTTP.
5. Show only the matching snippet first. Include the other path only if the user asks.
   Use `references/kysely-usage.md` for full examples.

## Normal usage (default)

Use this for Node servers, long-lived runtimes, or when TCP is available. This is the
primary path unless the user explicitly needs serverless/edge. Uses TCP with a `mysql2`
pool.

```ts
import { Kysely, MysqlDialect } from 'kysely'
import { createPool } from 'mysql2'

const pool = createPool({ uri: process.env.DATABASE_URL })
const db = new Kysely({ dialect: new MysqlDialect({ pool }) })
```

## Serverless/edge usage (HTTP)

Use this only when the runtime cannot keep TCP connections (serverless/edge). Requires
the TiDB Cloud serverless driver and Starter/Essential clusters. Use from backend
services only (browser origins may be blocked by CORS). See
`references/serverless-kysely-tutorial.md` for the full walkthrough.

```ts
import { Kysely } from 'kysely'
import { TiDBCloudServerlessDialect } from '@tidbcloud/kysely'

const db = new Kysely({
  dialect: new TiDBCloudServerlessDialect({ url: process.env.DATABASE_URL }),
})
```

## Notes

- Many users say "instance" to mean "cluster"; treat them as the same.
- Keep instructions concise; move any long docs into references.

