Better Drizzle
almeidazs/better-drizzle
Write, review, and debug code that uses better-drizzle, the typed repository layer over Drizzle ORM 1.x (better(db), client.users.findMany, paginate, cursor, upsertMany, relation include/connect…
A skill your agent uses when deciding whether plain SQLite is enough, or wiring SQLite, Turso or libSQL for local-first, edge and embedded-replica apps — a local file DB, a remote Turso URL, or a…
$ npx skills add ericrisco/rsc-harness --skill sqlite-turso -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness sqlite-turso --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sqlite-turso .claude/skills/sqlite-turso && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sqlite-turso" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sqlite-turso into .claude/skills/sqlite-turso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sqlite-turso", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/sqlite-tursoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill sqlite-turso -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness sqlite-turso --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/sqlite-turso .agents/skills/sqlite-turso && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sqlite-turso" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sqlite-turso into .agents/skills/sqlite-turso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sqlite-turso", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill sqlite-turso -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness sqlite-turso --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/sqlite-turso .cursor/skills/sqlite-turso && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sqlite-turso" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sqlite-turso into .cursor/skills/sqlite-turso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sqlite-turso", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/sqlite-turso--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill sqlite-turso -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness sqlite-turso --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/sqlite-turso .gemini/skills/sqlite-turso && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sqlite-turso" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sqlite-turso into .gemini/skills/sqlite-turso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sqlite-turso", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness sqlite-tursoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill sqlite-turso -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/sqlite-turso .github/skills/sqlite-turso && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sqlite-turso" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sqlite-turso into .github/skills/sqlite-turso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sqlite-turso", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill sqlite-turso -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness sqlite-turso --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/sqlite-turso .opencode/skills/sqlite-turso && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sqlite-turso" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sqlite-turso into .opencode/skills/sqlite-turso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sqlite-turso", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sqlite-tursoA skill your agent uses when deciding whether plain SQLite is enough, or wiring SQLite, Turso or libSQL for local-first, edge and embedded-replica apps — a local file DB, a remote Turso URL, or a…
Sqlite Turso is an agent skill from ericrisco/rsc-harness. Use when deciding whether plain SQLite is enough, or wiring SQLite, Turso or libSQL for local-first, edge and embedded-replica apps — a local file DB, a remote Turso URL, or a local replica synced to a remote primary — plus WAL mode and SQLite's single-writer model and its lock errors. NOT Drizzle schema or queries on libSQL (that is drizzle-orm), NOT versioned up/down migrations (that is db-migrations), NOT serverless Postgres with branching (that is neon).
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/embedded-replicas.md`).
It sits in Databases, covering Serverless, Database migrations and ORMs and data access. It works with Turso, SQLite, PostgreSQL and Drizzle ORM. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
bashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
TURSO_AUTH_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sqlite Turso loads about 2.9k tokens when it runs, and up to ~4.3k if it reads all its reference files. Until then it costs about 120 tokens; SKILL.md has 1,149 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,149 words, ~2,908 tokens.
.claude/skills/sqlite-turso/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.SQLite is an in-process, single-file, single-writer relational engine. Turso/libSQL is the fork that adds a remote edge database and — the part people actually want — embedded replicas: a local SQLite file that syncs to a remote primary, so reads are microsecond-local and writes still land durably in the cloud.
This skill is decide + connect + operate. It owns the engine truths (WAL, single writer,
pragmas), the three deployment shapes, and wiring the current @libsql/client. It does NOT own
schema modeling or type-safe queries (that is drizzle-orm), versioned migration files (that is
db-migrations), or backup strategy as a primary task (that is backups).
Decide first. Picking SQLite for a high-write multi-writer workload is the mistake that wastes a week.
| Workload | Verdict | Why / route |
|---|---|---|
| Read-heavy, single-tenant, low-to-moderate writes | SQLite/Turso | One writer is plenty; reads are local and fast. |
| Local-first / offline / edge app needing cloud durability | Turso embedded replica | Local file for reads, syncs to a remote primary. |
| Database-per-user / per-tenant at scale | Turso | Unlimited databases on the free tier; cheap isolation. |
| Many concurrent writers, complex roles, extensions | No → postgresdb (or mysql) | SQLite serializes writers; one writer at a time. |
| Serverless Postgres with branching | No → neon | Turso is serverless SQLite, not Postgres. |
| MySQL-compatible serverless | No → planetscale | Different engine and protocol. |
| Auth + realtime + storage + Postgres bundled | No → supabase | You want a BaaS, not a raw SQL engine. |
| Columnar OLAP / analytical aggregates | No → duckdb | SQLite/Turso is OLTP, row-oriented. |
| Ephemeral cache / KV | No → redis | Not a durable relational store. |
Every Turso/libSQL decision reduces to which of these three you are wiring. The URL scheme picks the transport automatically.
| Shape | createClient config | Latency | When |
|---|---|---|---|
| Local file | url: "file:local.db" | In-process | Dev, CLI tools, single-node app, tests. |
| Remote edge DB | url: "libsql://<db>.turso.io" + authToken | Network round-trip | Serverless/stateless functions; no local disk to sync. |
| Embedded replica | url: "file:local.db" + syncUrl + authToken | Microsecond reads | Local-first/edge with cloud durability — the flagship. |
libsql:// resolves to HTTPS/WSS. file: is native. https:/http: is Hrana HTTP, wss:/ws:
is Hrana WebSocket. You rarely set the scheme by hand — you set the URL and the client chooses.
@libsql/clientCurrent client is @libsql/client v0.17.x. Never hardcode the auth token — read it from the
environment. Convention: TURSO_DATABASE_URL and TURSO_AUTH_TOKEN.
// 1. Local file — dev, tests, single node
import { createClient } from "@libsql/client";
const db = createClient({ url: "file:local.db" });// 2. Remote edge DB — serverless, no local disk
import { createClient } from "@libsql/client";
const db = createClient({
url: process.env.TURSO_DATABASE_URL!, // libsql://<db>.turso.io
authToken: process.env.TURSO_AUTH_TOKEN!,
});// 3. Embedded replica — local reads, syncs to the primary
import { createClient } from "@libsql/client";
const db = createClient({
url: "file:local.db", // MUST be a local file
syncUrl: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN!,
syncInterval: 60, // seconds; or call db.sync() manually
});Rule: an embedded replica's url is always a local file: — syncUrl is the remote. If you
set syncUrl next to a libsql:// url you have not built a replica, you have a confused remote
client. (verify.sh enforces exactly this.)
In serverless/edge runtimes the import is the same; just confirm the runtime exposes a writable temp
path for the file: replica, or fall back to shape #2 (remote-only).
For any local file or embedded replica connection, set these per-connection on open. They do not apply to a remote-only client (the primary already runs WAL server-side).
PRAGMA journal_mode = WAL; -- concurrent readers + one writer; default rollback-journal blocks readers during writes
PRAGMA busy_timeout = 5000; -- wait up to 5s for the write lock instead of erroring SQLITE_BUSY immediately
PRAGMA foreign_keys = ON; -- FK enforcement is OFF by default and is PER-CONNECTION — set it every time
PRAGMA synchronous = NORMAL; -- safe with WAL; far fewer fsyncs than the default FULLjournal_mode is persistent once set on the file; busy_timeout, foreign_keys, and synchronous
are per-connection — re-issue them on every new connection (and in pooled environments, on checkout).
Always parameterize. String-concatenated SQL is an injection hole and defeats statement caching.
// Bad — string interpolation
await db.execute(`INSERT INTO users (email) VALUES ('${email}')`);
// Good — positional ? args (named $name and tuple [sql, args] forms also work)
await db.execute({ sql: "INSERT INTO users (email) VALUES (?)", args: [email] });batch runs many statements atomically in one transaction — all commit or all roll back.
// mode: "write" (default), "read", or "deferred"
const rs = await db.batch(
[
{ sql: "INSERT INTO orders (user_id, total) VALUES (?, ?)", args: [userId, total] },
{ sql: "UPDATE users SET order_count = order_count + 1 WHERE id = ?", args: [userId] },
],
"write",
);Single-writer rule: SQLite allows exactly one writer at a time. Under concurrent writes you get
SQLITE_BUSY / "database is locked". The fix is WAL + busy_timeout above, plus keeping write
transactions short. If you genuinely need many simultaneous writers, that is the signal to route to
postgresdb — do not paper over it with retries forever.
A replica keeps a local copy of the data and pulls changes from the primary. Reads hit the local file; writes are sent to the primary and propagate back on the next sync.
syncInterval (seconds) to createClient and the client syncs in the background.await db.sync() yourself — it returns { frame_no, frames_synced } (the
replication frame you are now at, and how many frames this call pulled).readYourWrites (default true) guarantees a connection sees its own writes immediately. Set it
to false only when you specifically want a sync's effect to become observable on its own timeline.db.sync() on a remote-only or pure HTTP/WS client throws LibsqlError with
code SYNC_NOT_SUPPORTED. Only embedded-replica clients (those with a local file: + syncUrl)
can sync.Deeper material — sync internals, frame numbers, readYourWrites semantics, offline/bidirectional
writes, per-tenant database-per-user patterns, stale-read handling — lives in
references/embedded-replicas.md.
Two things wear the "Turso" name; do not confuse them.
@libsql/client. This is the official guidance — mission-critical workloads run here.Separately: "edge replicas" are being discontinued for new users (data showed ~70% never used
them), along with multi-DB schemas and ATTACH. Existing paid customers keep them. This is not
the same as embedded replicas — embedded replicas remain the flagship. Do not design a new account
around edge replicas.
Turso/libSQL also has native vector search (DiskANN). For a dedicated vector store, route to
vector-db regardless.
turso CLIturso db create my-app # create a database
turso db show my-app --url # get the libsql:// URL for TURSO_DATABASE_URL
turso db tokens create my-app # mint an auth token for TURSO_AUTH_TOKEN
turso db shell my-app # interactive SQL shell against the primaryPricing note: the free tier offers unlimited databases (post "Database Freedom Day", mid-2025), usage-based with generous read/storage allowances — exact GB and row-read numbers shift, so verify on turso.tech/pricing before quoting a figure. This is what makes database-per-user economical.
Route out: backups/restore strategy → backups; versioned migrations → db-migrations; type-safe
schema and queries → drizzle-orm; generic SQL authoring (window functions, tuning) → sql.
| Anti-pattern | Why it bites | Do instead |
|---|---|---|
| Treating SQLite like multi-writer Postgres | One writer at a time → SQLITE_BUSY storms under load | Keep writes serial + short, or route to postgresdb |
Forgetting PRAGMA journal_mode=WAL | Default journal blocks readers during every write | Set WAL on local file / replica connections |
Embedded replica with a libsql:// url | Not a replica — a confused remote client; reads aren't local | url: is a local file:, remote goes in syncUrl |
| Hardcoding the auth token in source | Leaks a credential into VCS | Read process.env.TURSO_AUTH_TOKEN |
Calling db.sync() on a remote/HTTP client | Throws LibsqlError SYNC_NOT_SUPPORTED | Only sync embedded-replica clients |
| Assuming FK constraints are enforced | foreign_keys is OFF by default, per-connection | PRAGMA foreign_keys=ON on every connection |
| Designing a new account around edge replicas | Discontinued for new users | Use embedded replicas (the flagship) |
| String-concatenated SQL | Injection + no statement caching | Parameterize with ? / $name / tuple args |
| Reaching for Turso for OLAP dashboards | Row-store, single writer — wrong shape | Use duckdb for columnar analytics |
| Layering migrations/ORM logic into this skill | Out of scope; duplicates sibling rigor | db-migrations / drizzle-orm |
When you emit a connection/config file, gate it:
bash scripts/verify.sh path/to/db.ts # or a directory; defaults to cwdIt statically checks (no network): @libsql/client import + createClient use; that a syncUrl
always sits next to a local file: url; no hardcoded token literal; and (advisory) WAL pragma
presence on file-backed clients. Read-only; exits 0 on a clean/empty target.
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts, references) in skills/sqlite-turso of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Sqlite Turso next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sqlite Turso this skillericrisco/rsc-harness | 156 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Better Drizzlealmeidazs/better-drizzle | 347 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Uql Ormrogerpadilla/uql | 125 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Prisma 8 Contract-First ORMprisma/orm | 48k | — | ~3.7k | Automated safety check: Notes | Apache-2.0 | |
| Daoyou Data LayerChurchTao/Daoyou | 119 | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Drizzle Orm Expertdavila7/claude-code-templates | 32k | 3 repos | ~2.6k | Automated safety check: Pass | MIT |
almeidazs/better-drizzle
Write, review, and debug code that uses better-drizzle, the typed repository layer over Drizzle ORM 1.x (better(db), client.users.findMany, paginate, cursor, upsertMany, relation include/connect…
rogerpadilla/uql
Write code with UQL (the uql-orm package), the TypeScript ORM whose queries are plain JSON objects, on PostgreSQL, MySQL, MariaDB, SQLite, CockroachDB, SQL Server, MongoDB, Turso, Neon, D1 and PGlite.
prisma/orm
Routes Prisma 8 tasks such as contracts, migrations, queries and upgrades to the right reference files for projects on the contract-first @prisma/orm packages.
ChurchTao/Daoyou
Daoyou Drizzle/PostgreSQL、事务、V6 角色与宗门归属、统一背包、Redis 战局和回放归档指南。Use when modifying schema, migrations, repositories, persistence mappers, resource commits or durable game models.
davila7/claude-code-templates
Expert in Drizzle ORM for TypeScript — schema design, relational queries, migrations, and serverless database integration.
EpicenterHQ/epicenter
Apply Drizzle ORM patterns for schemas, migrations, queries, branded types, and Postgres or D1 boundaries.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
Categories
A skill your agent uses when deciding whether plain SQLite is enough, or wiring SQLite, Turso or libSQL for local-first, edge and embedded-replica apps — a local file DB, a remote Turso URL, or a…. Sqlite Turso is an agent skill from ericrisco/rsc-harness. Use when deciding whether plain SQLite is enough, or wiring SQLite, Turso or libSQL for local-first, edge and embedded-replica apps — a local file DB, a remote Turso URL, or a local replica synced to a remote primary — plus WAL mode and SQLite's single-writer model and its lock errors.
Sqlite Turso fits situations like: deciding whether plain SQLite is enough; libSQL for local-first; edge and embedded-replica apps — a local file DB; A remote Turso URL.
Run `npx skills add ericrisco/rsc-harness --skill sqlite-turso -a claude-code`. Or copy the skill folder (skills/sqlite-turso in ericrisco/rsc-harness) into .claude/skills/sqlite-turso in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill sqlite-turso -a codex`. Or copy the skill folder (skills/sqlite-turso in ericrisco/rsc-harness) into .agents/skills/sqlite-turso in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill sqlite-turso -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sqlite-turso, .gemini/skills/sqlite-turso, .github/skills/sqlite-turso and .opencode/skills/sqlite-turso in your project.
Going by SKILL.md and its folder, Sqlite Turso needs a shell for the scripts in its folder, the command-line tools its instructions call (bash) and credentials named TURSO_AUTH_TOKEN. Our summary lists: A Bash shell; A credential in TURSO_AUTH_TOKEN.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Sqlite Turso is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Sqlite Turso: Better Drizzle (almeidazs/better-drizzle, 347 stars), Uql Orm (rogerpadilla/uql, 125 stars), Prisma 8 Contract-First ORM (prisma/orm, 48k stars) and Daoyou Data Layer (ChurchTao/Daoyou, 119 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.