Agent skill

SQL Database Support for pREST

by prest in prest/prest

Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.

MITAuto-check passedDatabases

Install SQL Database Support for pREST

skills CLI
$ npx skills add prest/prest --skill sql-database-support -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install prest/prest sql-database-support --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/prest/prest.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/sql-database-support .claude/skills/sql-database-support && rm -rf skills-src

Use ~/.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/

Facts

Skill name
sql-database-support
GitHub stars
4.6k
Token cost
~1.6k tokens
SKILL.md length
606 words
Files
2
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.

  • Works in 7 steps: Runtime image / init — image tag;… → Connection / DSN / driver — same as… → Identifier quoting / reserved words —… → …
  • Adding support for a Postgres-compatible database such as TimescaleDB or Citus
  • SKILL.md covers Phase A — Classify, Phase B — Gap analysis →…, Phase C — Where to change and Phase D — Test policy, plus 4 more sections
  • Calls make

What it does

The skill is a playbook for thinking through and starting support for a SQL engine in pREST, not for shipping a full product surface in one pass. Phase A classifies the database: a Postgres-wire variant such as TimescaleDB or Citus reuses the postgres adapter and adds compose, seed and catalog quirks, while a new dialect such as MySQL or SQLite needs its own adapter implementing the adapter interface plus driver selection in the app code.

Decision criteria cover the wire protocol and driver, the SQL dialect, the catalog queries behind the listing endpoints, and identifier quoting. Phase B has you write a `DIFFERENCES.md` for the database before any Make or CI targets claim support, answering a worksheet on the runtime image, connection details, quoting, catalog listing, engine-native features, system schemas and access control, and compose ownership. Phase C maps where files and wiring change, with the TimescaleDB integration as the reference and an `examples.md` file in the bundle.

When your agent uses it

  • Adding support for a Postgres-compatible database such as TimescaleDB or Citus
  • Deciding whether a new database is a wire variant or a new dialect
  • Writing the DIFFERENCES.md gap analysis for a database
  • Planning docker-compose and GitHub workflow changes for a new engine's tests

Example prompts

  • “Classify MySQL for pREST: is it a wire variant or a new dialect?”
  • “Draft the DIFFERENCES.md worksheet for a Citus integration.”
  • “List which files in pREST I need to change to add a new SQLite adapter.”

Requirements

  • A pREST repository checkout

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Runtime image / init — image tag; extensions; required init SQL
  2. Connection / DSN / driver — same as Postgres or different?
  3. Identifier quoting / reserved words — impacts builders and path params?
  4. Catalog listing — /databases, /schemas, /tables, /columns vs stock Postgres (extra relation kinds, schemas, system catalogs)
  5. DDL / engine-native features — hypertables, policies, etc.; which need specific tests?
  6. System schemas and ACL — access_confine / allowlists implications
  7. Compose ownership — which stacks this DB job owns vs leave on Postgres (auth, multicluster, queries)

What it can do on your machine

Read from SKILL.md and the folder at commit 76d114d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

SQL Database Support for pREST loads about 1.6k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 606 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~90
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from prest/prest at commit 76d114d, republished under its MIT licence (© prest). 606 words, ~1,638 tokens.

Download SKILL.mdSave it as .claude/skills/sql-database-support/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
sql-database-support
description
Guides classifying, gap-analyzing, and scaffolding support for a new SQL database in pREST (wire-compatible variants like TimescaleDB or new dialects). Use when adding database support, creating integration/<db>/, DIFFERENCES.md, adapters/<engine>, per-DB docker-compose or GitHub workflows, or planning where config/app wiring must change.

Adding SQL Database Support

MUST invariants: .cursor/rules/sql-database-support.mdc. Compose/workflow package ownership: .cursor/rules/integration-layout.mdc. This skill is the full analysis → where-to-change → scaffold playbook.

Use this to think through and start support for a SQL engine — not to ship a full product surface in one pass.

Reference engine: integration/timescaledb/ (+ DIFFERENCES.md). See examples.md. Integration request style: skill prest-integration-tests.

Phase A — Classify

Decide before scaffolding CI or adapters.

KindExamplesImplication
Postgres-wire variantTimescaleDB, CitusReuse adapters/postgres; compose, seed, catalog quirks, specific tests
New dialectMySQL, SQLite, …New adapters/<engine> implementing adapters.Adapter; driver selection in app/app.go
Decision criteria

Ask whether these match stock Postgres:

  • Wire protocol / driver (lib/pq vs another)
  • SQL dialect (quoting, types, RETURNING, upserts)
  • Catalog SQL used by pREST listing endpoints
  • Identifier quoting and reserved words

If protocol and catalog SQL can stay on the postgres adapter with only seed/extension quirks → wire variant. If ports must emit different SQL or use another driver → new dialect. Do not greenwash a dialect as compose-only.

Phase B — Gap analysis → DIFFERENCES.md

Write integration/<db>/DIFFERENCES.md before Make/CI targets that claim support. Answer every item below (N/A with reason is fine).

Worksheet
  1. Runtime image / init — image tag; extensions; required init SQL
  2. Connection / DSN / driver — same as Postgres or different?
  3. Identifier quoting / reserved words — impacts builders and path params?
  4. Catalog listing — /databases, /schemas, /tables, /columns vs stock Postgres (extra relation kinds, schemas, system catalogs)
  5. DDL / engine-native features — hypertables, policies, etc.; which need specific tests?
  6. System schemas and ACL — access_confine / allowlists implications
  7. Compose ownership — which stacks this DB job owns vs leave on Postgres (auth, multicluster, queries)

Template shape: see integration/timescaledb/DIFFERENCES.md.

Phase C — Where to change

Wire-compatible variant (Timescale path)
Add / changePath
Differences docintegration/<db>/DIFFERENCES.md
Compose + seedintegration/<db>/docker-compose.yml, init/db-init.sh
Engine E2Eintegration/<db>/... only
Make targetMakefile → test-integration-<db>
CI.github/workflows/test-integration-<db>.yml (parallel with Postgres)

Do not: new adapters/<engine>; fold into integration/postgres/docker-compose.yml.

New dialect (future MySQL / SQLite path)
Add / changePath
Ports (only if contract gaps)adapters/*.go then make mockgen
Driven adapteradapters/<engine>/ implementing adapters.Adapter (+ connector/pinger as needed)
Composition rootapp/app.go New / EnsureAdapter (today hardcodes postgres.New)
Configconfig/config.go (+ fail-closed for credentials; see config-resilience.mdc)
Unit testsco-located under adapters/<engine>/ — TDD, ≥80% package coverage, no live DB (unit-tests-tdd.mdc, adapter-unit-tests.mdc)
Integration + CIsame layout as wire variant under integration/<db>/

Do not: import the engine from controllers/, middlewares/, or router/ (hexagonal: hexagonal-architecture.mdc).

Show full SKILL.md (227 more words)Show less
Layout reminder
text
integration/
  helpers/ testutils/ suites/   # shared; suites stay on Postgres job
  <db>/
    docker-compose.yml
    DIFFERENCES.md
    ... engine-specific tests ...

Details: integration-layout.mdc.

Phase D — Test policy

  1. Smoke / specific — extension present, one engine-native feature under integration/<db>/.
  2. Compat — shared suites/ run on Postgres compose; add a DB-specific compat job only if you intentionally gate that engine against the suite.
  3. Document every request per skill prest-integration-tests / integration-tests.mdc.

Safety

  • Parameterized SQL only; no concatenating untrusted identifiers unchecked.
  • Auth / ACL / JWT / secrets fail closed — never weaken for “compatibility”.
  • Do not call postgres.Load() or open live DBs outside integration/ and cmd/.

Adapter-Specific Features

When a feature is unique to one database engine (e.g., TimescaleDB's time_bucket):

Pattern:

  1. Base adapter provides empty/no-op implementation with a clear comment
  2. Specialized adapter overrides with the actual feature
  3. Handlers depend on the interface method, not the concrete adapter

Example — time_bucket (TimescaleDB-only):

Base postgres adapter:

go
func (adapter *postgres) TimeBucketClause(r *http.Request) (groupBySQL string, err error) {
	return  // Not supported in base postgres
}

TimescaleDB adapter:

go
func (a *Adapter) TimeBucketClause(req *http.Request) (groupBySQL string, err error) {
	// Full time_bucket implementation here
	return
}

Why: Base adapter must remain database-agnostic. Wire-compatible variants (Citus, Cockroach) inherit the base adapter unchanged; specialized variants override only what they need.

See rule: adapter-features.mdc.

Checklist (opening a new DB)

  • Engine classified (wire variant vs new dialect)
  • Gap worksheet answered; integration/<db>/DIFFERENCES.md written
  • Where-matrix paths identified for this kind
  • integration/<db>/docker-compose.yml + seed/init
  • Specific smoke + feature tests under integration/<db>/
  • make test-integration-<db> (compose runs ./integration/<db>/... only)
  • Dedicated workflow .github/workflows/test-integration-<db>.yml
  • Workflow does not run other DBs’ packages
  • New dialect only: adapter + app selection + mocks + unit tests (≥80%, TDD)
  • Cross-link docs/skills as needed

Examples

examples.md — TimescaleDB skeleton + new-dialect file stub list.

© prest, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .cursor/skills/sql-database-support of prest/prest.

  • SKILL.md
  • examples.md

Open the folder on GitHubat commit 76d114d

Compare with similar skills

SQL Database Support for pREST 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.

SQL Database Support for pREST compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
SQL Database Support for pREST this skillprest/prest4.6k—~1.6kAutomated safety check: PassMIT
Vsql Install Serverhashgraph-online/awesome-codex-plugins1.2k—~6.5kAutomated safety check: PassApache-2.0
Squixeduardofuncao/squix273—~784Automated safety check: PassMIT
Golang Databaseunxed/f42402 repos~2.9kAutomated safety check: PassMIT
Database MarchatCod-e-Codes/marchat137—~985Automated safety check: PassMIT
Databaseiii-hq/workers113—~1.9kAutomated safety check: PassApache-2.0

Similar skills

  • Vsql Install Server

    hashgraph-online/awesome-codex-plugins

    Get a working VillageSQL server on this machine and prove it works — choose an install path (installer, Docker, or source), start the server, connect, load a bundled extension, and call one of its…

    1.2k GitHub stars~6.5k tokensUpdated today
    DatabasesAuto-check passed
  • Squix

    eduardofuncao/squix

    Run SQL queries across databases (Postgres, MySQL, SQLite, etc.) via the squix CLI.

    273 GitHub stars~784 tokensUpdated 15 days ago
    DatabasesAuto-check passed
  • Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…

    240 GitHub starsUsed in 2 repos~2.9k tokens
    DatabasesAuto-check passed
  • Database Marchat

    Cod-e-Codes/marchat

    Changes marchat SQL schema and queries across SQLite, PostgreSQL, and MySQL using dialect helpers.

    137 GitHub stars~985 tokensUpdated 4 days ago
    DatabasesAuto-check passed
  • Database

    iii-hq/workers

    Run SQL against PostgreSQL, MySQL, or SQLite from the iii engine — reads, writes, transactions, and prepared statements over managed connection pools.

    113 GitHub stars~1.9k tokensUpdated today
    DatabasesAuto-check passed
  • Matlab Use Database

    matlab/matlab-agentic-toolkit

    Reads from, writes to, and manages relational databases using MATLAB Database Toolbox.

    1.1k GitHub stars~3.1k tokensUpdated 7 days ago
    DatabasesAuto-check passed

More from prest/prest

  • Guides writing and reviewing pREST Docker-based integration tests so every HTTP request is explained by step comments or table-driven descriptions.

    4.6k GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed

Questions about SQL Database Support for pREST

What does SQL Database Support for pREST do?

Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects. The skill is a playbook for thinking through and starting support for a SQL engine in pREST, not for shipping a full product surface in one pass. Phase A classifies the database: a Postgres-wire variant such as TimescaleDB or Citus reuses the postgres adapter and adds compose, seed and catalog quirks, while a new dialect such as MySQL or SQLite needs its own adapter implementing the adapter interface plus driver selection in the app code.

When should I use SQL Database Support for pREST?

SQL Database Support for pREST fits situations like: adding support for a Postgres-compatible database such as TimescaleDB or Citus; deciding whether a new database is a wire variant or a new dialect; writing the DIFFERENCES.md gap analysis for a database; planning docker-compose and GitHub workflow changes for a new engine's tests.

How do I install SQL Database Support for pREST in Claude Code?

Run `npx skills add prest/prest --skill sql-database-support -a claude-code`. Or copy the skill folder (.cursor/skills/sql-database-support in prest/prest) into .claude/skills/sql-database-support in your project. Claude Code loads it when a task matches its description.

How do I install SQL Database Support for pREST in Codex?

Run `npx skills add prest/prest --skill sql-database-support -a codex`. Or copy the skill folder (.cursor/skills/sql-database-support in prest/prest) into .agents/skills/sql-database-support in your project. Codex loads it when a task matches its description.

Can I use SQL Database Support for pREST in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add prest/prest --skill sql-database-support -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sql-database-support, .gemini/skills/sql-database-support, .github/skills/sql-database-support and .opencode/skills/sql-database-support in your project.

What does SQL Database Support for pREST need to run?

Going by SKILL.md and its folder, SQL Database Support for pREST needs the command-line tools its instructions call (make). Our summary lists: A pREST repository checkout.

Does SQL Database Support for pREST access the network?

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.

Is SQL Database Support for pREST safe to install?

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. Review the folder before installing.

What licence does SQL Database Support for pREST use?

SQL Database Support for pREST is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does SQL Database Support for pREST use?

About 1.6k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to SQL Database Support for pREST?

Skills that share tags, products or a category with SQL Database Support for pREST: Vsql Install Server (hashgraph-online/awesome-codex-plugins, 1.2k stars), Squix (eduardofuncao/squix, 273 stars), Golang Database (unxed/f4, 240 stars) and Database Marchat (Cod-e-Codes/marchat, 137 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains SQL Database Support for pREST?

prest (a GitHub organization) maintains it in prest/prest, which has 4,622 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 6, 2026.

Source: prest/prest on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.