Agent skill

Tabularis Database Driver Plugin

by TabularisDB in TabularisDB/tabularis

Guides building or updating a Tabularis database driver plugin in Rust that speaks JSON-RPC over stdio and follows the repository's rules.

Apache-2.0Auto-check passedDatabases

Install Tabularis Database Driver Plugin

skills CLI
$ npx skills add TabularisDB/tabularis --skill tabularis-plugin-driver -a claude-code

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

GitHub CLI
$ gh skill install TabularisDB/tabularis tabularis-plugin-driver --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/TabularisDB/tabularis.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/tabularis-plugin-driver .claude/skills/tabularis-plugin-driver && 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
tabularis-plugin-driver
GitHub stars
5.1k
Token cost
~2.1k tokens
SKILL.md length
843 words
Files
3 (incl. references)
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Guides building or updating a Tabularis database driver plugin in Rust that speaks JSON-RPC over stdio and follows the repository's rules.

  • Works in 6 steps: Define plugin scope → Create a modern manifest → Build a modular RPC surface → …
  • Creating a new database driver plugin for Tabularis in Rust
  • SKILL.md covers Goals, Default Repo Layout, Required Research Before Coding and Implementation Workflow, plus 5 more sections
  • Calls cargo

What it does

The goals are a Rust plugin that talks Tabularis JSON-RPC over stdin and stdout, uses the modern manifest rather than the old minimal one, aims for feature coverage comparable to the built-in MySQL driver where the target database allows, stays modular instead of piling logic into main.rs, and has unit tests for pure utilities and SQL generation. A default repository layout is suggested, with Cargo.toml and manifest.json, and main.rs should only parse requests, dispatch methods and serialize responses.

Before coding, the agent reads the manifest schema, the plugin types and manager, the plugin guide with the RPC and driver sources, a broad built-in driver such as MySQL, and the files that load plugins and handle driver capabilities. Scope then comes from choosing which capabilities the database truly supports, among schemas, views, routines, file-based and folder-based modes, connection strings, identifier quoting, primary key and column changes, foreign keys, table management and read-only or no-connection modes. The plugin must not advertise support it cannot back with working handlers.

A modern manifest needs id, name, version, description, default port, executable, capabilities, data types, default username, color and icon, with optional settings and UI extensions. A manifest checklist reference ships with the skill.

When your agent uses it

  • Creating a new database driver plugin for Tabularis in Rust
  • Updating an existing Tabularis plugin to the modern manifest format
  • Deciding which driver capabilities a plugin should advertise
  • Adding optional UI extensions or settings to a driver plugin

Example prompts

  • “Create a Tabularis driver plugin for DuckDB with views and file-based connections.”
  • “Update my plugin's manifest.json to the modern format and check it against the manifest checklist.”
  • “Split this large main.rs into modules and add unit tests for the SQL generation.”

Requirements

  • A Rust toolchain
  • A checkout of the Tabularis repository for its rules and plugin sources

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Define plugin scope
  2. Create a modern manifest
  3. Build a modular RPC surface
  4. Target broad feature coverage
  5. Add settings only when they solve a real problem
  6. Add UI extensions only when the database needs them

What it can do on your machine

Read from SKILL.md and the folder at commit 3a8d43f. 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:

    • cargo

    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

Tabularis Database Driver Plugin loads about 2.1k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 70 tokens; SKILL.md has 843 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~70
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.9k

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 TabularisDB/tabularis at commit 3a8d43f, republished under its Apache-2.0 licence (© TabularisDB). 843 words, ~2,098 tokens.

Download SKILL.mdSave it as .claude/skills/tabularis-plugin-driver/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
tabularis-plugin-driver
description
Use when creating or updating a Tabularis database driver plugin in Rust. Covers modern manifest fields, JSON-RPC over stdio, modular plugin layout, MySQL-level feature coverage targets, optional UI extensions, and validation against Tabularis repo rules.

Tabularis Plugin Driver

Use this skill when building or updating a database plugin for Tabularis.

The skill is optimized for this repository. Follow AGENTS.md, the files in .rules/, and the current plugin-system behavior in src-tauri/src/plugins/ and src/types/plugins.ts.

Goals

  • Build a Rust plugin that speaks Tabularis JSON-RPC over stdin/stdout
  • Use the modern plugin manifest, not the old minimal format
  • Aim for broad feature coverage comparable to the built-in MySQL driver where the target database supports it
  • Keep the plugin modular instead of concentrating logic in a single main.rs
  • Add unit tests for pure utilities and SQL generation

Default Repo Layout

Prefer this structure for a new plugin repository:

text
plugin-root/
├── Cargo.toml
├── manifest.json
├── README.md
├── src/
│   ├── main.rs
│   ├── rpc.rs
│   ├── client.rs
│   ├── error.rs
│   ├── models.rs
│   ├── handlers/
│   │   ├── mod.rs
│   │   ├── metadata.rs
│   │   ├── query.rs
│   │   ├── crud.rs
│   │   └── ddl.rs
│   └── utils/
│       ├── mod.rs
│       ├── identifiers.rs
│       ├── values.rs
│       ├── types.rs
│       └── pagination.rs
├── src/bin/
│   └── test_plugin.rs
└── tests/                # only if integration tests are worth the overhead

Keep src/main.rs thin. It should mostly parse requests, dispatch methods, and serialize responses.

Required Research Before Coding

  1. Read the current plugin manifest shape in:
    • plugins/manifest.schema.json
    • src/types/plugins.ts
    • src-tauri/src/plugins/manager.rs
  2. Read the JSON-RPC expectations in:
    • plugins/PLUGIN_GUIDE.md
    • src-tauri/src/plugins/driver.rs
    • src-tauri/src/plugins/rpc.rs
  3. Read a built-in driver with broad coverage to understand expected behaviors:
    • src-tauri/src/drivers/mysql/mod.rs
  4. Read plugin-loading behavior and modern feature flags in:
    • src/hooks/useDrivers.ts
    • src/utils/connectionStringParser.ts
    • src/utils/driverCapabilities.ts

Implementation Workflow

1. Define plugin scope

Decide which capabilities are truly supported by the target database and driver library:

  • schemas
  • views
  • routines
  • file_based
  • folder_based
  • connection_string
  • connection_string_example
  • identifier_quote
  • alter_primary_key
  • alter_column
  • create_foreign_keys
  • manage_tables
  • readonly
  • no_connection_required

Do not advertise support you cannot back with working handlers.

2. Create a modern manifest

At minimum define:

  • id
  • name
  • version
  • description
  • default_port
  • executable
  • capabilities
  • data_types
  • default_username
  • color
  • icon

Use modern optional fields when useful:

  • settings
  • ui_extensions

See references/manifest-checklist.md.

3. Build a modular RPC surface

Implement the request loop in main.rs, but move logic out immediately:

  • rpc.rs: request parsing, success/error helpers, method routing support
  • client.rs: connection config, client creation, pooling or reuse key logic
  • handlers/metadata.rs: databases, schemas, tables, columns, indexes, foreign keys, views, routines
  • handlers/query.rs: test_connection, ping, execute_query, count_query, explain_query_plan if possible
  • handlers/crud.rs: insert_record, update_record, delete_record
  • handlers/ddl.rs: SQL generation helpers and DDL RPC methods
  • utils/*: quoting, escaping, value formatting, type normalization, pagination math
4. Target broad feature coverage

Use the built-in MySQL driver as the feature benchmark, not as text to copy.

For each feature area, classify it:

  • supported: implement fully
  • partially_supported: implement with explicit limitations
  • unsupported: return an accurate error or empty result as appropriate

Prioritize these methods:

  • test_connection
  • get_databases
  • get_schemas
  • get_tables
  • get_columns
  • get_foreign_keys
  • get_indexes
  • get_views
  • get_view_definition
  • get_view_columns
  • get_routines
  • get_routine_parameters
  • get_routine_definition
  • execute_query
  • insert_record
  • update_record
  • delete_record
  • get_schema_snapshot
  • get_all_columns_batch
  • get_all_foreign_keys_batch
  • get_create_table_sql
  • get_add_column_sql
  • get_alter_column_sql
  • get_create_index_sql
  • get_create_foreign_key_sql
  • drop_index
  • drop_foreign_key

If a method is not safe to emulate, fail explicitly instead of faking success.

Optional routine-management methods

When the manifest declares "routine_management": true, the host shows run / create / edit / drop actions for routines. The backing RPC methods are optional: if the plugin does not implement one, the host answers the JSON-RPC "method not found" error (-32601) with a dialect-neutral fallback (CALL name(args) / SELECT name(args), generic DROP, the raw definition as edit script). Implement only what the dialect needs:

  • build_routine_call_sql({ params, routine_name, routine_type, args, schema }) -> string — args is an ordered list of { name, mode, value: string|null, is_raw: bool }; return an executable invocation script (it is opened in the editor, so multi-statement scripts are fine — e.g. MySQL's SET @out / CALL / SELECT @out).
  • routine_create_template({ routine_type, schema }) -> string — starter script for a new PROCEDURE/FUNCTION in the plugin's dialect.
  • get_routine_edit_script({ params, routine_name, routine_type, schema }) -> string — re-runnable script to alter the routine (e.g. DROP + CREATE, or CREATE OR REPLACE).
  • drop_routine({ params, routine_name, routine_type, schema }) -> null — drop the routine; resolve overloads yourself if the dialect has them.
Show full SKILL.md (285 more words)Show less
5. Add settings only when they solve a real problem

Typical useful settings:

  • DSN name
  • driver/library path
  • default schema
  • TLS mode
  • extra connection properties

Keep settings in the manifest and resolve them in a dedicated config path, not inline in handlers.

6. Add UI extensions only when the database needs them

Examples of good reasons:

  • a custom connection helper for DSN-based setup
  • an advanced settings panel for database-specific options
  • contextual UI for unsupported-but-important caveats

Avoid UI extensions that only decorate the product without improving DB-specific workflows.

Testing Strategy

Always add unit tests for pure logic:

  • identifier quoting
  • SQL builders
  • type normalization
  • pagination helpers
  • value serialization
  • capability-driven helper decisions

Prefer pure utility modules so tests stay fast and deterministic.

If the plugin includes a JSON-RPC smoke binary like src/bin/test_plugin.rs, use it to simulate Tabularis requests over stdio.

Validation Checklist

Before finishing:

  • cargo test
  • cargo build --release
  • smoke test at least one JSON-RPC request through stdin/stdout
  • verify manifest.json matches current Tabularis schema and capabilities
  • verify any advertised capability has corresponding handler behavior
  • verify unsupported operations return clear errors

Tabularis-Specific Rules

  • Comments and docs must be in English
  • Keep code split by responsibility; avoid a monolithic main.rs
  • Add unit tests for extracted utility logic
  • When updating this repo itself, follow AGENTS.md requirements including GitNexus impact analysis before editing existing symbols
  • Use pnpm for frontend-side validation in this repo and cargo for plugin validation

Common Mistakes

  • copying old plugin manifests that omit modern fields
  • putting connection logic, SQL generation, RPC parsing, and metadata extraction in one file
  • advertising manage_tables or alter_column without implementing the related methods
  • returning fake empty success for operations that should surface unsupported behavior
  • skipping tests for identifier quoting and SQL generation

References

© TabularisDB, Apache-2.0. 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 2 other files (references) in .claude/skills/tabularis-plugin-driver of TabularisDB/tabularis.

  • SKILL.md
  • agents/openai.yaml
  • references/manifest-checklist.md

Open the folder on GitHubat commit 3a8d43f

Compare with similar skills

Tabularis Database Driver Plugin 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.

Tabularis Database Driver Plugin compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tabularis Database Driver Plugin this skillTabularisDB/tabularis5.1k—~2.1kAutomated safety check: PassApache-2.0
Golem Add Mysql Rustgolemcloud/golem1.5k—~516Automated safety check: PassCustom licence
Diesel Guardayarotsky/diesel-guard121—~3.1kAutomated safety check: PassMIT
SQL Code Reviewgithub/awesome-copilot40k1 repos~2.2kAutomated safety check: PassMIT
SQL Database Support for pRESTprest/prest4.6k—~1.6kAutomated safety check: PassMIT
Chdb SQLvemetric/vemetric3941 repos~1.2kAutomated safety check: PassApache-2.0

Similar skills

  • Golem Add Mysql Rust

    golemcloud/golem

    Using golem:rdbms/mysql from a Rust Golem agent. An agent skill from golemcloud/golem.

    1.5k GitHub stars~516 tokensUpdated today
    DatabasesAuto-check passed
  • Diesel Guard

    ayarotsky/diesel-guard

    Lints Diesel and SQLx Postgres migrations for unsafe schema changes that lock tables or cause downtime, and authors custom Rhai checks.

    121 GitHub stars~3.1k tokensUpdated 9 days ago
    DatabasesAuto-check passed
  • SQL Code Review

    github/awesome-copilot

    Official

    Universal SQL code review assistant that performs comprehensive security, maintainability, and code quality analysis across all SQL databases (MySQL, PostgreSQL, SQL Server, Oracle).

    40k GitHub starsUsed in 1 repo~2.2k tokens
    DatabasesAuto-check passed
  • Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.

    4.6k GitHub stars~1.6k tokensUpdated yesterday
    DatabasesAuto-check passed
  • Chdb SQL

    vemetric/vemetric

    A skill your agent uses when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse…

    394 GitHub starsUsed in 1 repo~1.2k tokens
    DatabasesAuto-check passed
  • Sql2er

    ystemsrx/sql_to_ER

    A skill your agent uses when the user wants a Chen-model ER diagram from SQL CREATE TABLE statements or DBML, wants to rearrange or clean up an existing sql2er state, wants a skeleton-only overview…

    188 GitHub stars~1.1k tokensUpdated 6 days ago
    DatabasesAuto-check passed

More from TabularisDB/tabularis

  • Tabularis Local PR Review

    TabularisDB/tabularis

    Reviews a Tabularis pull request locally, judging the diff against the repo's rule files, verifying every claim in its description against the code, and running its tests on the real branch.

    5.1k GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Tabularis Database Driver Plugin

What does Tabularis Database Driver Plugin do?

Guides building or updating a Tabularis database driver plugin in Rust that speaks JSON-RPC over stdio and follows the repository's rules. rs, and has unit tests for pure utilities and SQL generation.rs should only parse requests, dispatch methods and serialize responses.

When should I use Tabularis Database Driver Plugin?

Tabularis Database Driver Plugin fits situations like: creating a new database driver plugin for Tabularis in Rust; updating an existing Tabularis plugin to the modern manifest format; deciding which driver capabilities a plugin should advertise; adding optional UI extensions or settings to a driver plugin.

How do I install Tabularis Database Driver Plugin in Claude Code?

Run `npx skills add TabularisDB/tabularis --skill tabularis-plugin-driver -a claude-code`. Or copy the skill folder (.claude/skills/tabularis-plugin-driver in TabularisDB/tabularis) into .claude/skills/tabularis-plugin-driver in your project. Claude Code loads it when a task matches its description.

How do I install Tabularis Database Driver Plugin in Codex?

Run `npx skills add TabularisDB/tabularis --skill tabularis-plugin-driver -a codex`. Or copy the skill folder (.claude/skills/tabularis-plugin-driver in TabularisDB/tabularis) into .agents/skills/tabularis-plugin-driver in your project. Codex loads it when a task matches its description.

Can I use Tabularis Database Driver Plugin 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 TabularisDB/tabularis --skill tabularis-plugin-driver -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tabularis-plugin-driver, .gemini/skills/tabularis-plugin-driver, .github/skills/tabularis-plugin-driver and .opencode/skills/tabularis-plugin-driver in your project.

What does Tabularis Database Driver Plugin need to run?

Going by SKILL.md and its folder, Tabularis Database Driver Plugin needs the command-line tools its instructions call (cargo). Our summary lists: A Rust toolchain; A checkout of the Tabularis repository for its rules and plugin sources.

Does Tabularis Database Driver Plugin 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 Tabularis Database Driver Plugin 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 Tabularis Database Driver Plugin use?

Tabularis Database Driver Plugin is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Tabularis Database Driver Plugin use?

About 2.1k tokens (SKILL.md is roughly 8.4k 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 814 tokens, read only when the agent opens those files.

What are the alternatives to Tabularis Database Driver Plugin?

Skills that share tags, products or a category with Tabularis Database Driver Plugin: Golem Add Mysql Rust (golemcloud/golem, 1.5k stars), Diesel Guard (ayarotsky/diesel-guard, 121 stars), SQL Code Review (github/awesome-copilot, 40k stars) and SQL Database Support for pREST (prest/prest, 4.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Tabularis Database Driver Plugin?

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

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