Golang Database
unxed/f4
Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…
A skill your agent uses when designing, querying, indexing or operating a MySQL or MariaDB database and engine-specific behaviour matters — schema and type choices, index design, reading EXPLAIN…
$ npx skills add ericrisco/rsc-harness --skill mysql -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness mysql --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/mysql .claude/skills/mysql && 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 "mysql" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mysql into .claude/skills/mysql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mysql", 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/mysqlType 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 mysql -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness mysql --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/mysql .agents/skills/mysql && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mysql" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mysql into .agents/skills/mysql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mysql", 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 mysql -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness mysql --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/mysql .cursor/skills/mysql && 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 "mysql" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mysql into .cursor/skills/mysql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mysql", 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/mysql--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 mysql -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness mysql --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/mysql .gemini/skills/mysql && 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 "mysql" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mysql into .gemini/skills/mysql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mysql", 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 mysqlInstalls 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 mysql -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/mysql .github/skills/mysql && 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 "mysql" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mysql into .github/skills/mysql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mysql", 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 mysql -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 mysql --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/mysql .opencode/skills/mysql && 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 "mysql" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mysql into .opencode/skills/mysql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mysql", 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.
mysqlA skill your agent uses when designing, querying, indexing or operating a MySQL or MariaDB database and engine-specific behaviour matters — schema and type choices, index design, reading EXPLAIN…
Mysql is an agent skill from ericrisco/rsc-harness. Use when designing, querying, indexing or operating a MySQL or MariaDB database and engine-specific behaviour matters — schema and type choices, index design, reading EXPLAIN, online schema change, replication and replica lag, locking and InnoDB deadlocks, charset traps, and server config. NOT portable SELECT/JOIN/window-function craft (that is sql), NOT PostgreSQL engine behaviour like VACUUM or JSONB (that is postgresdb), NOT the PlanetScale/Vitess branch-and-deploy workflow (that is planetscale).
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/indexing-and-explain.md`).
It sits in Databases, covering SQL, Database administration and Database migrations. It works with MySQL, MariaDB, PlanetScale and SQL. 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.
8 steps, taken from the first numbered list in SKILL.md.
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.
From 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:
SOURCE_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Mysql loads about 3.7k tokens when it runs, and up to ~9.7k if it reads all its reference files. Until then it costs about 129 tokens; SKILL.md has 1,461 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,461 words, ~3,741 tokens.
.claude/skills/mysql/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.You are working below portable SQL, at the layer where the answer depends on which engine is
running. This skill owns MySQL 8.4 LTS and MariaDB 11.8 LTS: the InnoDB clustered-index storage
model, MySQL-flavoured DDL and types, index design and the leftmost-prefix rule, reading EXPLAIN
and fixing the plan, online DDL, replication, locking/deadlocks, and day-2 server config.
The dividing line is simple: if the answer is identical on PostgreSQL, it belongs in sql, not
here. sql owns the dialect-independent SELECT grammar. mysql owns how this engine stores,
plans, locks, and replicates. postgresdb is the peer engine for the other database — same body
shape, different facts, never the same answer.
DECIMAL/VARCHAR sizing,
utf8mb4 charset/collation, JSON + generated/STORED columns, PK design for InnoDB.EXPLAIN / EXPLAIN ANALYZE / FORMAT=JSON.TEXT,
invisible indexes for safe rollout, why an index is not used.ALGORITHM=INSTANT/INPLACE/COPY, pt-osc, gh-ost.REPEATABLE READ, SELECT ... FOR UPDATE.caching_sha2_password + TLS, slow-query log, performance_schema.| The ask | Goes to |
|---|---|
| Portable query craft — joins, window functions, CTEs, NULL 3VL | sql |
| PostgreSQL engine behaviour — MVCC, VACUUM, RLS, JSONB, PgBouncer | postgresdb |
| PlanetScale / Vitess branch + deploy-request workflow, no-FK design | planetscale |
| Vendor-neutral migration theory — expand-contract, batched backfill | db-migrations |
| ORM / query-builder API ergonomics | drizzle-orm, prisma-orm |
| Backup strategy / retention / restore drills as a discipline | backups |
| OLAP / columnar analytics | clickhouse-analytics, duckdb |
The boundaries with planetscale and db-migrations are sharp: this skill owns the raw-MySQL
mechanics (EXPLAIN, index choice, ALGORITHM=, gh-ost). PlanetScale wraps those in its platform
workflow; db-migrations wraps them in vendor-neutral strategy. You own the knobs they ride on.
Get this wrong and every later decision (auth, vector, isolation defaults) is wrong too.
| Target | Use it when | Watch out |
|---|---|---|
| MySQL 8.4 LTS | Default for conservative production. GA 2024-04-30, supported through April 2032. | mysql_native_password is disabled by default here. |
| MySQL 9.x Innovation | Only if you need VECTOR or the newest features and accept short support. | Short-lived track; mysql_native_password is removed. Not for stable prod. |
| MariaDB 11.8 LTS | The fork; 2025 yearly LTS, first MariaDB LTS with native vector search. | Auth, vector syntax, and RETURNING differ from MySQL — not drop-in compatible; innodb_snapshot_isolation defaults ON. |
VECTOR is a MySQL 9.0 (Innovation) feature, not in 8.4 LTS. MariaDB 11.8 also has VECTOR but
with different functions (VEC_DISTANCE_COSINE() vs MySQL's STRING_TO_VECTOR()) — see
references/mysql-vs-mariadb.md. Do not assume one's vector SQL runs on the other.
utf8mb4, always — at the column level. Legacy utf8 (alias utf8mb3) is 3-byte and
silently truncates emoji and supplementary characters. Default collation is utf8mb4_0900_ai_ci.
Setting it on the connection only is not enough; set it on the column.UUID/CHAR(36) PK bloats every secondary index and
wrecks insert locality. Use BIGINT AUTO_INCREMENT or an ordered UUIDv7 stored as BINARY(16).binlog_format=ROW + GTID. ROW is the only reliable replication format; GTID gives each
transaction a globally unique id with auto-skip so it applies at most once per replica.caching_sha2_password + TLS. It is the default auth plugin and SHA-256 based; clients need
TLS for first-time auth. mysql_native_password is disabled by default in 8.4 and gone in 9.0 —
do not design around it.INDEX (a,b,c) serves a, a,b, a,b,c —
never b alone. Put equality columns first, then the range/ORDER BY column.ALTER a hot table without choosing an algorithm. Default COPY locks and rebuilds.
Pick INSTANT/INPLACE, or use gh-ost / pt-osc, before you run it at peak.REPEATABLE READ + next-key (gap) locks → short, consistently-ordered transactions. This is
the InnoDB default and the usual deadlock source. Acquire rows in the same order everywhere.EXPLAIN ANALYZE, do not guess. The optimizer's rows is an estimate;
EXPLAIN ANALYZE runs the query and reports actual rows and timing.| You have | Use |
|---|---|
One column in WHERE, high selectivity | Single-column index |
Multiple WHERE columns + an ORDER BY | Composite index: equality cols first, then range/sort col (leftmost prefix) |
| Query reads only indexed columns | Covering index (add the selected cols) — avoids the PK back-lookup |
Filtering a long TEXT/VARCHAR prefix | Prefix index col(20) — can't be covering, watch selectivity |
| Rolling out an index on a hot table safely | INVISIBLE index, then flip VISIBLE once verified |
-- Bad: separate single-column indexes; the optimizer uses at most one, then filesorts.
CREATE INDEX idx_uid ON orders (user_id);
CREATE INDEX idx_created ON orders (created_at);
-- Query: WHERE user_id = ? AND created_at >= ? ORDER BY created_at DESC
-- Good: one composite index — equality (user_id) first, then the range/sort column.
-- This serves the WHERE and the ORDER BY with no separate sort step.
CREATE INDEX idx_user_created ON orders (user_id, created_at);EXPLAIN shows the plan; EXPLAIN ANALYZE runs it and reports actual rows/time;
EXPLAIN FORMAT=JSON shows cost and used-key-parts. Read the access type first — it is the ladder
from worst to best:
ALL (full scan) → index (full index scan) → range → ref → eq_ref → const.
Anything ALL on a large table is a red flag. Then check rows (estimated rows examined),
filtered (% surviving the WHERE), and the Extra flags: Using filesort (extra sort pass),
Using temporary (materialised temp table), Using index (covering — good, no back-lookup).
The most common cause of a missed index is a non-sargable predicate — a function or implicit charset/type cast wrapping the indexed column:
-- Bad: DATE() wraps the indexed column → the index on created_at can't be used → type=ALL.
SELECT * FROM orders WHERE DATE(created_at) = '2026-06-01';
-- Good: range over the raw column → index range scan (type=range).
SELECT * FROM orders
WHERE created_at >= '2026-06-01' AND created_at < '2026-06-02';A subtler version: joining a utf8mb4 column to a latin1 column, or a VARCHAR to an INT,
forces a per-row cast and disables the index. Make both sides the same type and collation. Full
field-by-field reading, the type ladder, and every "why no index" cause are in
references/indexing-and-explain.md.
| Operation / situation | Use |
|---|---|
| Add column at end, rename column, set default, drop index | ALGORITHM=INSTANT — metadata-only, near-free (8.0+) |
| Add secondary index, change column nullability inplace | ALGORITHM=INPLACE, LOCK=NONE — rebuilds without blocking most writes |
| What INSTANT/INPLACE can't do, on a small/cold table | ALGORITHM=COPY — locks + rebuilds; fine off-hours |
| Same change on a large/hot table, zero downtime | gh-ost or pt-online-schema-change — shadow table + swap |
-- INSTANT: adding a column at the end is metadata-only in 8.0+. Always be explicit so a
-- silent fall-through to COPY (which locks) can't happen.
ALTER TABLE orders ADD COLUMN note VARCHAR(255) NULL, ALGORITHM=INSTANT, LOCK=NONE;# gh-ost: build a shadow table, copy + tail the binlog, then atomic cutover. Always --dry-run
# first; throttle on replica lag so you don't melt production.
gh-ost \
--host=primary.db --database=shop --table=orders \
--alter="ADD INDEX idx_user_created (user_id, created_at)" \
--max-lag-millis=1500 --throttle-control-replicas="replica1.db" \
--execute # drop --execute to dry-runIf gh-ost refuses to read the binlog, run pt-online-schema-change, which uses triggers instead.
Both, plus the rollback path and how this composes with db-migrations expand-contract theory, are
in references/online-ddl-and-migrations.md.
-- Covering index: the query reads only (user_id, status, total), so put them all in the index.
-- EXPLAIN then shows "Using index" — no trip back to the PK leaf for each row.
SELECT status, total FROM orders WHERE user_id = ?;
CREATE INDEX idx_cover ON orders (user_id, status, total);-- GTID replication on the replica: GTID auto-positioning, no log file/pos bookkeeping.
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='primary.db', SOURCE_USER='repl', SOURCE_PASSWORD='***',
SOURCE_SSL=1, SOURCE_AUTO_POSITION=1;
START REPLICA;-- Replica lag: read the field, don't eyeball. Seconds_Behind_Source is coarse; for accuracy use
-- performance_schema replication tables. NULL means replication is broken, not "0 lag".
SHOW REPLICA STATUS\G -- Replica_IO_Running / Replica_SQL_Running / Seconds_Behind_Source
SELECT * FROM performance_schema.replication_applier_status_by_worker;-- Deadlock post-mortem: InnoDB rolls back the cheaper transaction and logs the cycle here.
SHOW ENGINE INNODB STATUS\G -- read the LATEST DETECTED DEADLOCK section# Consistent logical dump without locking every table: single transaction over InnoDB.
mysqldump --single-transaction --set-gtid-purged=AUTO --routines --triggers shop > shop.sqlReplication topologies (async / semi-sync / group replication / InnoDB Cluster + MySQL Router),
failover, and read-replica routing are in references/replication-and-ha.md.
They share a heritage and diverge in ways that break copy-pasted SQL. Do not assume parity.
| Area | MySQL 8.4 / 9.x | MariaDB 11.8 |
|---|---|---|
| Default auth | caching_sha2_password | mysql_native_password / ed25519 |
VECTOR | MySQL 9.0+ only; STRING_TO_VECTOR() | Native in 11.8; VEC_DISTANCE_COSINE() — different syntax |
RETURNING | INSERT ... RETURNING only (8.0+) | INSERT/UPDATE/DELETE ... RETURNING |
| Sequences | No CREATE SEQUENCE | CREATE SEQUENCE supported |
| System-versioned (temporal) tables | Not supported | WITH SYSTEM VERSIONING supported |
| Snapshot isolation | RR snapshot, no write-conflict detection | innodb_snapshot_isolation defaults ON |
| JSON | Native binary JSON type | Historically a LONGTEXT alias; check version |
Depth and both-direction migration gotchas: references/mysql-vs-mariadb.md.
| Rationalization | Reality | Do instead |
|---|---|---|
"utf8 is Unicode, it's fine." | utf8 = 3-byte utf8mb3; emoji silently become ????. | utf8mb4 at the column level. |
| "A random UUID PK is clean and unique." | Random PK bloats every secondary index and kills insert locality in the clustered index. | BIGINT AUTO_INCREMENT or ordered UUIDv7 as BINARY(16). |
"STATEMENT binlog is smaller, use it." | Non-deterministic statements replicate wrong; silent data drift on replicas. | binlog_format=ROW. |
"Just keep using mysql_native_password." | Disabled by default in 8.4, removed in 9.0 — your upgrade breaks. | caching_sha2_password + TLS. |
"Wrapping the column in DATE()/LOWER() is readable." | Function on an indexed column → full scan. | Rewrite to a sargable range; or add a generated column + index. |
"SELECT * is convenient." | Pulls wide InnoDB rows off-disk and defeats covering indexes. | Select only needed columns. |
| "I'll hold the transaction open while I do other work." | RR + gap locks held long → deadlocks and lock waits everywhere. | Keep transactions short; commit fast; order rows consistently. |
"ALTER it now, traffic is fine." | COPY algorithm locks a multi-GB table; outage at peak. | Pick INSTANT/INPLACE, or gh-ost off-peak. |
"EXPLAIN says 12 rows, so it's fast." | rows is an estimate from stats. | Confirm with EXPLAIN ANALYZE (actual rows/time). |
| "MyISAM is faster for our table." | No transactions, no FKs, table-level locks, crash-unsafe. | InnoDB for anything transactional. |
Run scripts/verify.sh from your project root. It is read-only and never connects to a
database — it heuristically lints discovered *.sql and *.cnf/my.cnf files for the foot-guns
above (legacy utf8, MyISAM, random-UUID PK, binlog_format=STATEMENT, mysql_native_password,
function-wrapped indexed columns) and checks balanced delimiters. It exits non-zero only on
unbalanced delimiters or a committed binlog_format=STATEMENT; every schema heuristic is advisory.
It optionally runs sqlfluff --dialect mysql if installed.
../sql/SKILL.md — portable, engine-agnostic SELECT/JOIN/window-function craft.../postgresdb/SKILL.md — the peer engine (PostgreSQL): MVCC, VACUUM, RLS, JSONB.../planetscale/SKILL.md — the PlanetScale/Vitess platform workflow on top of MySQL.db-migrations — vendor-neutral migration strategy (expand-contract) that the ALGORITHM=/gh-ost
mechanics here ride on.backups — backup strategy, retention, and restore drills as a discipline.© 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 7 other files (scripts, references) in skills/mysql of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Mysql 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 |
|---|---|---|---|---|---|---|
| Mysql this skillericrisco/rsc-harness | 156 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Golang Databaseunxed/f4 | 240 | 2 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Database Migrations SQL Migrationsrmyndharis/antigravity-skills | 1.7k | 2 repos | ~577 | Automated safety check: Notes | MIT | |
| Expert DatabaseReJeCtAll/ExpertTeam-Codex | 113 | — | ~692 | Automated safety check: Pass | MIT | |
| Database MarchatCod-e-Codes/marchat | 137 | — | ~985 | Automated safety check: Pass | MIT | |
| Lunora Setup Hyperdrive Globalanolilab/lunora | 283 | — | ~1.9k | Automated safety check: Pass | Custom licence |
unxed/f4
Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…
rmyndharis/antigravity-skills
SQL database migrations with zero-downtime strategies for PostgreSQL, MySQL, SQL Server
ReJeCtAll/ExpertTeam-Codex
数据库优化专家入口。用于 Codex CLI 的 $expert-database 调用. An agent skill from ReJeCtAll/ExpertTeam-Codex.
Cod-e-Codes/marchat
Changes marchat SQL schema and queries across SQLite, PostgreSQL, and MySQL using dialect helpers.
anolilab/lunora
Use PlanetScale (Postgres/MySQL via Cloudflare Hyperdrive) as a first-class, REACTIVE .global() storage backend for a Lunora app — and migrate an existing D1 .global() dataset to it.
matlab/matlab-agentic-toolkit
Reads from, writes to, and manages relational databases using MATLAB Database Toolbox.
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 designing, querying, indexing or operating a MySQL or MariaDB database and engine-specific behaviour matters — schema and type choices, index design, reading EXPLAIN…. Mysql is an agent skill from ericrisco/rsc-harness. Use when designing, querying, indexing or operating a MySQL or MariaDB database and engine-specific behaviour matters — schema and type choices, index design, reading EXPLAIN, online schema change, replication and replica lag, locking and InnoDB deadlocks, charset traps, and server config.
Mysql fits situations like: operating a MySQL; mariaDB database and engine-specific behaviour matters — schema and type choices; reading EXPLAIN; online schema change.
Run `npx skills add ericrisco/rsc-harness --skill mysql -a claude-code`. Or copy the skill folder (skills/mysql in ericrisco/rsc-harness) into .claude/skills/mysql in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill mysql -a codex`. Or copy the skill folder (skills/mysql in ericrisco/rsc-harness) into .agents/skills/mysql 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 mysql -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mysql, .gemini/skills/mysql, .github/skills/mysql and .opencode/skills/mysql in your project.
Going by SKILL.md and its folder, Mysql needs a shell for the scripts in its folder and credentials named SOURCE_PASSWORD. Our summary lists: A Bash shell.
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.
Mysql is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k 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 6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Mysql: Golang Database (unxed/f4, 240 stars), Database Migrations SQL Migrations (rmyndharis/antigravity-skills, 1.7k stars), Expert Database (ReJeCtAll/ExpertTeam-Codex, 113 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.
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.