Database Observability
grafana/skills
Set up Grafana Cloud Database Observability for MySQL and PostgreSQL — enables pgstatstatements / Performance Schema, creates a least-privilege monitoring user, configures the…
Refresh a LOCAL MySQL database from a PRODUCTION dump, safely.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add hmislk/hmis --skill restore-local-db -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hmislk/hmis restore-local-db --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/hmislk/hmis.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/restore-local-db .claude/skills/restore-local-db && 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 "restore-local-db" agent skill from https://github.com/hmislk/hmis/tree/development/.codex/skills/restore-local-db into .claude/skills/restore-local-db/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restore-local-db", 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/hmislk/hmis/tree/development/.codex/skills/restore-local-dbType 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 hmislk/hmis --skill restore-local-db -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hmislk/hmis restore-local-db --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/restore-local-db .agents/skills/restore-local-db && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "restore-local-db" agent skill from https://github.com/hmislk/hmis/tree/development/.codex/skills/restore-local-db into .agents/skills/restore-local-db/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restore-local-db", 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 hmislk/hmis --skill restore-local-db -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hmislk/hmis restore-local-db --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/restore-local-db .cursor/skills/restore-local-db && 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 "restore-local-db" agent skill from https://github.com/hmislk/hmis/tree/development/.codex/skills/restore-local-db into .cursor/skills/restore-local-db/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restore-local-db", 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/hmislk/hmis.git --path .codex/skills/restore-local-db--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 hmislk/hmis --skill restore-local-db -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hmislk/hmis restore-local-db --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/restore-local-db .gemini/skills/restore-local-db && 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 "restore-local-db" agent skill from https://github.com/hmislk/hmis/tree/development/.codex/skills/restore-local-db into .gemini/skills/restore-local-db/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restore-local-db", 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 hmislk/hmis restore-local-dbInstalls 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 hmislk/hmis --skill restore-local-db -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/restore-local-db .github/skills/restore-local-db && 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 "restore-local-db" agent skill from https://github.com/hmislk/hmis/tree/development/.codex/skills/restore-local-db into .github/skills/restore-local-db/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restore-local-db", 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 hmislk/hmis --skill restore-local-db -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hmislk/hmis restore-local-db --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/restore-local-db .opencode/skills/restore-local-db && 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 "restore-local-db" agent skill from https://github.com/hmislk/hmis/tree/development/.codex/skills/restore-local-db into .opencode/skills/restore-local-db/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restore-local-db", 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.
restore-local-dbRefresh a LOCAL MySQL database from a PRODUCTION dump, safely.
Restore Local DB is an agent skill from hmislk/hmis. Refresh a LOCAL MySQL database from a PRODUCTION dump, safely. Use when asked to "restore <db locally from prod", "get a fresh copy of coop/ruhunu for testing", "load this dump into my local database", or "back up prod and restore it locally". Two entry points: (1) name one or more databases and the skill dumps them from the Azure VM, downloads, and restores; (2) point at an existing dump file and the skill only restores. Works for ANY database, not just coop/ruhunu. Hard guardrails prevent ever writing to the…
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases. It works with Microsoft Azure, MySQL and SQL. The repository describes itself as: This is an Open Source Java EE based Hospital Information Management System. The licence is GPL-3.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d5d2020. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
mysqlsshshFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use ssh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
DB_ADMIN_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Restore Local DB loads about 4.1k tokens when it runs. Until then it costs about 173 tokens; SKILL.md has 1,711 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 patterns that need a careful read before installing.
/c/Windows/System32/OpenSSH/ssh.exe -F ~/.ssh/config -N -f <ssh-alias>DB / Payara-admin ports listening (the ~/.ssh/configallowed-tools: BashAutomated 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.
The full file from hmislk/hmis at commit d5d2020, republished under its GPL-3.0 licence (© hmislk). 1,711 words, ~4,084 tokens.
.claude/skills/restore-local-db/SKILL.md (or your agent's skills folder).Bring a local MySQL database up to date with a production copy, without any risk of touching the live Azure production databases.
The destructive step is DROP DATABASE. Every guardrail exists to guarantee
that when it runs, it runs against local MySQL and nothing else.
Parse the user's request into:
| Input | Meaning | Default |
|---|---|---|
<db> (one or more) | Database name(s) to restore locally, e.g. coop, ruhunu, mp | required |
--dump <path> | An already-downloaded dump file (.sql or .sql.gz). When given, skip acquisition — go straight to Phase 0. One --dump per <db>. | none |
--skip-pre-backup | Skip the local rollback dump in Phase 2. Announce this loudly. | off (backup is taken) |
--bill-threshold N | Sanity-gate row limit | 100 |
--bill-days D | Sanity-gate look-back window in days | 5 |
If the user pastes a dump path in prose ("restore local coop from
<BACKUP_DIR>\coop_x.sql.gz"), treat it as --dump.
All passwords are read at runtime from the machine's credentials file — never
hardcode them in this skill. Location is platform-specific (per the
database-guide skill):
C:\Credentials\Credentials.txt~/.config/hmis/credentials.txtResolve it once at the start: use the Windows path if it exists, else the
$HOME/.config/hmis/credentials.txt path, else stop and ask the user where
their credentials file is. Referenced below as <CREDS>.
Downloaded dumps and rollback backups go under a backup directory —
C:\Backups on the Windows dev laptop (C:\Backups\pre-restore for rollback
copies). Adjust for the platform if the skill ever runs elsewhere. Referenced
below as <BACKUP_DIR>. Temp files (.err logs etc.) go in the session
scratchpad directory, referenced as <SCRATCH>.
Section names and the exact set of DB servers in that file change over time — read the file and match on the section headings and the "Databases :" lines, don't assume a fixed layout.
user named DB(s) only -> Acquisition sub-procedure, then Phase 0..3 per DB
user gave --dump <path> -> Phase 0..3 per DB (no acquisition)Phase 0 runs in BOTH paths. A provided dump does not exempt the run from the
no-SSH-tunnel assertion — the DROP DATABASE is just as destructive either way.
A large import takes many minutes and the machine going to sleep mid-import kills it, leaving the target DB half-populated. Before starting, disable sleep:
powercfg //change standby-timeout-ac 0
powercfg //change standby-timeout-dc 0
powercfg //change hibernate-timeout-ac 0
powercfg //change hibernate-timeout-dc 0If the laptop lid may be closed, also set the lid action to "do nothing"
(powercfg //setacvalueindex SCHEME_CURRENT SUB_BUTTONS LIDACTION 0 +
//setdcvalueindex ... 0 + //setactive SCHEME_CURRENT). Restore the previous
power scheme (powercfg //setactive SCHEME_BALANCED, or re-apply the saved
timeouts) in Phase 3 once every DB is done.
Run the import itself as a detached process (a hidden powershell.exe Start-Process, or nohup under a persistent shell) that survives the
controlling session being interrupted, and have it write progress to a status
file you poll.
--dump given)Runs before Phase 0. It opens an SSH tunnel to Azure, dumps on the VM, downloads the compressed file, then kills the tunnel. The restore never coexists with a tunnel.
Read <CREDS>. In the
NEW - MySQL Flexible Servers section it lists, per server:
--- db3 --- 10.30.2.6 ---
Databases : coop, rhdrawer (+ audits)
Username : hmis_admin
Password : <complex>and the SSH host aliases in the NEW - SSH access section
(new-shared1..4, each forwarding local ports 4305=db1 4306=db2 4307=db3 4308=db4). Any new-shared* alias forwards all four DB ports, so you can
tunnel through a single host for several DBs.
Build, for each <db>:
DB_PRIVATE_IP (e.g. 10.30.2.6)DB_LOCAL_PORT (4305..4308 matching db1..db4)DB_ADMIN_PASSWORD (the complex Azure password for that server)new-shared*; prefer the one whose
"Clients" list names this DB)If a DB is not listed in the credentials file, stop and ask the user for the DB server's private IP, the matching local port, and which SSH alias to use.
/c/Windows/System32/OpenSSH/ssh.exe -F ~/.ssh/config -N -f <ssh-alias>Verify the needed port(s) answer:
mysql -h 127.0.0.1 -P <DB_LOCAL_PORT> -u hmis_admin -p'<DB_ADMIN_PASSWORD>' -e "SELECT 1;"Only one new-shared* tunnel at a time — the 4305-4308 ports are identical
across every alias.
Do the dump on the VM against the DB's private IP. Dumping through the tunnel from the laptop is far slower — an 8 GB DB did not finish in 2 minutes that way, versus ~90 seconds on the VM.
Write a --defaults-extra-file cnf locally, scp it to /var/tmp on the VM,
chmod 600, then run mysqldump on the VM. Quote the password in the cnf
(password="...") — the Azure admin passwords contain #, ?, =, +, and
an unquoted value silently truncates at the first special char and fails with
Access denied. Then:
# on the VM, detached:
nohup sh -c 'nice -n 10 mysqldump --defaults-extra-file=/var/tmp/<db>.cnf \
--single-transaction --quick --routines --triggers --events \
--set-gtid-purged=OFF --no-tablespaces <db> 2>/var/tmp/<db>.err \
| gzip > /var/tmp/<db>_prod_<ts>.sql.gz; echo $? > /var/tmp/<db>.done' >/dev/null 2>&1 &Poll /var/tmp/<db>.done. When it reads 0 and <db>.err is empty:
gzip -t the file on the VM, check its tail decompresses to
-- Dump completed on ..., then scp it to
<BACKUP_DIR>\<db>_prod_<ts>.sql.gz. Confirm the downloaded byte size matches
the VM's exactly.
taskkill //F //IM ssh.exeThen clean up the VM: rm -f /var/tmp/<db>.cnf /var/tmp/<db>_prod_<ts>.sql.gz /var/tmp/<db>.err /var/tmp/<db>.done. Delete the local cnf too — it holds the
Azure admin password.
The downloaded <BACKUP_DIR>\<db>_prod_<ts>.sql.gz is now the --dump for that DB.
Run this immediately before touching local MySQL, in every path.
taskkill //F //IM ssh.exe 2>&1 || true # ssh-agent service is fine, leave it
# assert zero ssh.exe (excluding the ssh-agent Windows service):
tasklist | grep -i "ssh.exe" | grep -v "ssh-agent" # must produce NOTHING
# assert no forwarded DB / Payara-admin ports listening (the ~/.ssh/config
# new-shared* hosts forward 4305-4308 for the four DBs plus a 3x848 admin port):
netstat -ano | grep LISTENING | grep -E ":(430[5-9]|3[0-9]848)\b" # must produce NOTHINGIf any ssh.exe remains or any forwarded port is listening -> ABORT, tell
the user to close their tunnels first. (On the acquisition path this check runs
after A4 has already killed the tunnel this skill opened; a surviving tunnel
here means one the user opened separately.)
Get the local simple password from <CREDS>
(LOCAL DEVELOPMENT - MySQL section). Then:
mysql --host=127.0.0.1 --port=3306 --protocol=TCP -uroot -p<simple> -N \
-e "SELECT CONCAT(@@hostname,'|',@@version,'|',@@port,'|',@@datadir);"Assert ALL of:
@@version does NOT contain azure (Azure servers report 8.0.46-azure)@@port = 3306@@hostname is this machine (not a db*/Azure host)@@datadir is a local Windows pathAny mismatch -> ABORT.
Before running any DROP / import / mysqldump command, grep the command
string for forbidden tokens and abort on a match:
10.30. 20.24. 40.83. 57.158. carecode.orgplus any Azure admin-password fragment you loaded in A1. Every restore command
must use --host=127.0.0.1 --port=3306 --protocol=TCP with the simple local
password only. A complex password anywhere in a restore command = wrong target.
Confirm the local DB is stale test data, not something real:
mysql --host=127.0.0.1 --port=3306 --protocol=TCP -uroot -p<simple> <db> -N \
-e "SELECT COUNT(*) FROM bill WHERE createdAt >= NOW() - INTERVAL <D> DAY;"< <N> -> PASS, safe to drop & restore.>= <N> -> STOP this DB. Do not drop. Report the count and the
latest MAX(createdAt) and ask the user to investigate.bill table -> fall back to COUNT(*) of the largest table and require
explicit user confirmation before proceeding.Also print, for the report: SELECT COUNT(*) FROM bill; and
SELECT MAX(createdAt) FROM bill; (the "before" numbers).
gzip -t <dump> # integrity (skip for plain .sql)
gzip -dc <dump> | head -40 | grep -E "^-- Host:|Database:" # identity
gzip -dc <dump> | grep -c -E "^(CREATE DATABASE|USE )" || true # MUST print 0
gzip -dc <dump> | grep -c "^CREATE TABLE " # expected table count
gzip -dc <dump> | tail -3 # MUST end "-- Dump completed on ..."-- Host: / Database: should name the expected prod server and DB.CREATE DATABASE / USE count must be 0 — if not, ABORT: those
statements override the target DB and defeat the mysql <db> argument safety.CREATE TABLE count — Phase 2.5 compares the restored DB's table
count against it to detect a truncated import.-- Dump completed on ..., it was itself
truncated (interrupted mysqldump, sleep, disk full) — ABORT, re-acquire.grep -c on a gzip -dc pipe may report a broken pipe / non-zero exit
because head/-m closed the reader early; that is harmless, judge on the
printed count.--skip-pre-backup)mkdir -p <BACKUP_DIR>/pre-restore
mysqldump --host=127.0.0.1 --port=3306 --protocol=TCP -uroot -p<simple> \
--single-transaction --quick --routines --triggers --events --no-tablespaces \
<db> 2><BACKUP_DIR>/pre-restore/<db>_local_before_<ts>.err \
| gzip > <BACKUP_DIR>/pre-restore/<db>_local_before_<ts>.sql.gz
gzip -t <BACKUP_DIR>/pre-restore/<db>_local_before_<ts>.sql.gz # verifyLarge DBs take minutes — run it in the background and wait. Keep this file until the user confirms the restored DB works in the app.
If --skip-pre-backup: print a clear warning that there is no rollback copy
and continue.
Re-run Phase 0.1 + 0.2 + 0.3 one more time, then:
mysql --host=127.0.0.1 --port=3306 --protocol=TCP -uroot -p<simple> \
-e "DROP DATABASE IF EXISTS <db>; CREATE DATABASE <db> CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"If CREATE DATABASE hangs on "Waiting for schema metadata lock", a stale local
Payara connection pool is holding the old schema. Options:
asadmin stop-domain) so
nothing holds the schema, restart it in Phase 3.Do not issue a second CREATE DATABASE while the first is waiting — it
queues behind the same metadata lock and looks stuck. Do not kill the import to
"fix" a stalled CREATE.
gzip -dc <dump> | mysql --host=127.0.0.1 --port=3306 --protocol=TCP \
-uroot -p<simple> <db> 2><SCRATCH>/<db>_restore.errRun this detached (see "Keep the machine awake") for anything over ~1 GB
uncompressed — an interrupted import leaves the DB half-loaded. mysql reports
only the first error; check the .err file (the "Using a password" line is a
warning, not an error).
If the import is interrupted (sleep, killed shell, power loss): the target
DB is now partial. Recovery is simply to redo Phase 2.3 + 2.4 — DROP the
half-loaded DB and re-import from the same dump. The dump is a full snapshot, so
replaying it from an empty DB is always correct; there is no "resume". The
Phase 2.2 rollback copy and the prod dump are both untouched by a failed import.
mysql --host=127.0.0.1 --port=3306 --protocol=TCP -uroot -p<simple> <db> -e "
SELECT COUNT(*) AS total_bills FROM bill;
SELECT MAX(createdAt) AS latest_bill FROM bill;
SELECT COUNT(*) AS table_count FROM information_schema.tables WHERE table_schema='<db>';"table_count must equal the CREATE TABLE count recorded in Phase 2.1. If it
is short, the import was truncated — redo Phase 2.3 + 2.4.total_bills should be production-scale and latest_bill recent (close to
when the dump was taken). A tiny count means the bill table did not finish..err file must contain nothing but the password warning.mysql --host=127.0.0.1 --port=3306 --protocol=TCP -uroot -p<simple> \
-e "SHOW VARIABLES LIKE 'lower_case_table_names';"1 (typical on the Windows dev laptop) -> names are already
case-folded, nothing to do.0 and the dump's CREATE TABLE names are lowercase and the app
expects uppercase -> generate and run the rename script:SELECT CONCAT('RENAME TABLE `', table_name, '` TO `tmp_', table_name, '`; ',
'RENAME TABLE `tmp_', table_name, '` TO `', UPPER(table_name), '`;')
FROM information_schema.tables
WHERE table_schema='<db>' AND table_name <> UPPER(table_name);Pipe its output back into mysql <db>.
One block per DB:
<db>
restored from : <dump path> (source: <-- Host line> / <Database line>)
bills before : <n> (latest <date>)
bills after : <n> (latest <date>)
tables : <n>
rollback copy : <BACKUP_DIR>\pre-restore\<db>_local_before_<ts>.sql.gz [or: SKIPPED]Then:
asadmin restart-domain) so its connection pool
reconnects to the fresh schema.| Guardrail | Prevents |
|---|---|
Kill + assert no ssh.exe, no tunnel ports (Phase 0.1, every path) | A restore command resolving through a live tunnel to an Azure DB |
@@version not *-azure, @@port 3306, local @@datadir (0.2) | Being connected to a production server at all |
| Command self-scan for Azure IPs / complex passwords (0.3) | A copy-paste of a prod host/credential into a destructive command |
| Acquisition tunnel killed before Phase 0 (A4) | The restore ever running while a tunnel is open |
| Sanity gate on recent local bill count (Phase 1) | Dropping a local DB that actually holds real/unsaved work |
Dump must have no CREATE DATABASE / USE (2.1) | The dump redirecting the write to a different DB than the mysql <db> arg |
| Pre-restore rollback dump (2.2) | An unrecoverable mistake |
© hmislk, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .codex/skills/restore-local-db of hmislk/hmis.
Open the folder on GitHubat commit d5d2020
Restore Local DB 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 |
|---|---|---|---|---|---|---|
| Restore Local DB this skillhmislk/hmis | 236 | — | ~4.1k | Automated safety check: Warn | GPL-3.0 | |
| Database Observabilitygrafana/skills | 279 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Database ObservabilityKilo-Org/kilo-marketplace | 190 | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Azure Storagemicrosoft/GitHub-Copilot-for-Azure | 255 | 2 repos | ~1.3k | Automated safety check: Pass | MIT | |
| GCP Cloud SQLsickn33/agentic-awesome-skills | 47k | 2 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Azure Resource Manager SQL Dotnetmicrosoft/skills | 3.1k | 6 repos | ~2.6k | Automated safety check: Pass | MIT |
grafana/skills
Set up Grafana Cloud Database Observability for MySQL and PostgreSQL — enables pgstatstatements / Performance Schema, creates a least-privilege monitoring user, configures the…
Kilo-Org/kilo-marketplace
Grafana Cloud Database Observability — query-level performance insights for MySQL and PostgreSQL.
microsoft/GitHub-Copilot-for-Azure
Azure Storage Services including Blob Storage, File Shares, Queue Storage, Table Storage, and Data Lake.
sickn33/agentic-awesome-skills
Provision Cloud SQL and Spanner databases. An agent skill from sickn33/agentic-awesome-skills.
microsoft/skills
Azure Resource Manager SDK for Azure SQL in .NET. An agent skill from microsoft/skills.
microsoft/skills
Azure MySQL Flexible Server SDK for .NET. An agent skill from microsoft/skills.
hmislk/hmis
Reference for calling existing HMIS REST APIs. An agent skill from hmislk/hmis.
hmislk/hmis
Application configuration options reference for the HMIS project.
hmislk/hmis
Ultra-compressed communication mode. An agent skill from hmislk/hmis.
hmislk/hmis
MySQL database development guide for the HMIS project. An agent skill from hmislk/hmis.
hmislk/hmis
A skill your agent uses when asked to make a demo, training, how-to or tutorial video with sound or voice-over showing an HMIS function or configuration (e.g.
hmislk/hmis
Sync development into QA/testing environment branches (QA1-QA4, local RH staging) via PR + merge on GitHub.
Works with
Refresh a LOCAL MySQL database from a PRODUCTION dump, safely. Restore Local DB is an agent skill from hmislk/hmis. Refresh a LOCAL MySQL database from a PRODUCTION dump, safely.
Restore Local DB fits situations like: asked to restore <db locally from prod; get a fresh copy of coop/ruhunu for testing; load this dump into my local database; back up prod and restore it locally.
Run `npx skills add hmislk/hmis --skill restore-local-db -a claude-code`. Or copy the skill folder (.codex/skills/restore-local-db in hmislk/hmis) into .claude/skills/restore-local-db in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hmislk/hmis --skill restore-local-db -a codex`. Or copy the skill folder (.codex/skills/restore-local-db in hmislk/hmis) into .agents/skills/restore-local-db 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 hmislk/hmis --skill restore-local-db -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/restore-local-db, .gemini/skills/restore-local-db, .github/skills/restore-local-db and .opencode/skills/restore-local-db in your project.
Going by SKILL.md and its folder, Restore Local DB needs the command-line tools its instructions call (mysql, ssh and sh) and credentials named DB_ADMIN_PASSWORD. Its frontmatter pre-approves these tools: Bash.
SKILL.md contains no URLs. Its commands use ssh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 2 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way.
Restore Local DB is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Restore Local DB: Database Observability (grafana/skills, 279 stars), Database Observability (Kilo-Org/kilo-marketplace, 190 stars), Azure Storage (microsoft/GitHub-Copilot-for-Azure, 255 stars) and GCP Cloud SQL (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hmislk (a GitHub organization) maintains it in hmislk/hmis, which has 236 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 8, 2026.
Source: hmislk/hmis on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.