Setup Dev
relytcloud/pg_ducklake
Dev environment setup for build tools, PostgreSQL, submodules, and worktrees.
Find latent bugs in a local PostgreSQL source tree (RELxxSTABLE branch or HEAD) the way a core hacker does: build a heavily-poisoned debug instance (cassert + cache-discard + -O0/-ggdb3 + core…
$ npx skills add digoal/blog --skill find-postgres-bug -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install digoal/blog find-postgres-bug --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/digoal/blog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/find-postgres-bug .claude/skills/find-postgres-bug && 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 "find-postgres-bug" agent skill from https://github.com/digoal/blog/tree/master/skills/find-postgres-bug into .claude/skills/find-postgres-bug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "find-postgres-bug", 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/digoal/blog/tree/master/skills/find-postgres-bugType 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 digoal/blog --skill find-postgres-bug -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install digoal/blog find-postgres-bug --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digoal/blog.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/find-postgres-bug .agents/skills/find-postgres-bug && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "find-postgres-bug" agent skill from https://github.com/digoal/blog/tree/master/skills/find-postgres-bug into .agents/skills/find-postgres-bug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "find-postgres-bug", 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 digoal/blog --skill find-postgres-bug -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install digoal/blog find-postgres-bug --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digoal/blog.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/find-postgres-bug .cursor/skills/find-postgres-bug && 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 "find-postgres-bug" agent skill from https://github.com/digoal/blog/tree/master/skills/find-postgres-bug into .cursor/skills/find-postgres-bug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "find-postgres-bug", 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/digoal/blog.git --path skills/find-postgres-bug--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 digoal/blog --skill find-postgres-bug -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install digoal/blog find-postgres-bug --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digoal/blog.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/find-postgres-bug .gemini/skills/find-postgres-bug && 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 "find-postgres-bug" agent skill from https://github.com/digoal/blog/tree/master/skills/find-postgres-bug into .gemini/skills/find-postgres-bug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "find-postgres-bug", 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 digoal/blog find-postgres-bugInstalls 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 digoal/blog --skill find-postgres-bug -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/digoal/blog.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/find-postgres-bug .github/skills/find-postgres-bug && 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 "find-postgres-bug" agent skill from https://github.com/digoal/blog/tree/master/skills/find-postgres-bug into .github/skills/find-postgres-bug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "find-postgres-bug", 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 digoal/blog --skill find-postgres-bug -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install digoal/blog find-postgres-bug --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digoal/blog.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/find-postgres-bug .opencode/skills/find-postgres-bug && 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 "find-postgres-bug" agent skill from https://github.com/digoal/blog/tree/master/skills/find-postgres-bug into .opencode/skills/find-postgres-bug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "find-postgres-bug", 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.
find-postgres-bugFind latent bugs in a local PostgreSQL source tree (RELxxSTABLE branch or HEAD) the way a core hacker does: build a heavily-poisoned debug instance (cassert + cache-discard + -O0/-ggdb3 + core…
Find Postgres Bug is an agent skill from digoal/blog. Find latent bugs in a local PostgreSQL source tree (RELxxSTABLE branch or HEAD) the way a core hacker does: build a heavily-poisoned debug instance (cassert + cache-discard + -O0/-ggdb3 + core dumps), fuzz it (sqlsmith) until the backend crashes, triage the core into a minimal reproducer (MRE), git-bisect the introducing commit, and render a community-style pgsql-bugs markdown report. The instance never auto-shuts-down. Use when the user says "find a bug in postgres", "fuzz postgres", "hunt for a crash", "test a…
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 27 other files, including scripts, reference files and assets (for example `agents/openai.yaml`, `references/already_fixed.md` and `references/bug_report_template.md`).
It sits in Databases, covering Fuzzing. It works with PostgreSQL and Git. The repository describes itself as: AI,Opensource,Database,Business,Finance,Minds. git clone --depth 1 https://github.com/digoal/blog. The licence is GPL-2.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 69fb793. 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 5 files in scripts/ (Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
gitpsqlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Find Postgres Bug loads about 4k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 183 tokens; SKILL.md has 1,496 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 digoal/blog at commit 69fb793, republished under its GPL-2.0 licence (© digoal). 1,496 words, ~4,000 tokens.
.claude/skills/find-postgres-bug/SKILL.md (or your agent's skills folder). This skill also uses 23 other files; get the full folder from GitHub.Crash-first bug-hunting pipeline for a local PostgreSQL source tree. The order matters and is the whole point:
poison the build → fuzz it → triage the core → minimise to an MRE
→ bisect the commit → report (do NOT self-patch)The leverage is front-loaded. A poisoned build does ~90% of the work by turning latent bugs into immediate crashes; the fuzzer then finds inputs no human would hand-write. Reading commits by eye is a secondary, targeted probe — used to aim the fuzzer, not as the primary search.
Source layout assumed: the standard PG tree (src/backend/,
src/include/, contrib/, src/test/, …) at $PG_SRC_DIR.
Three hard rules:
scripts/stop_pg.sh
explicitly when done.export PG_SRC_DIR=/path/to/postgres
# 1. POISON: configure+build+initdb+start with cassert, cache-discard,
# -O0 -ggdb3, core dumps enabled. The 90% lever.
./scripts/build_and_start_pg.sh
# 2. SEED + FUZZ: load some tables, then let sqlsmith run (overnight is best)
psql -h /tmp -p 55432 -d postgres -f your_schema.sql # populate the catalog
./scripts/fuzz_sqlsmith.sh 3600 postgres # 1h; use 28800 overnight
# 3. TRIAGE: a crash leaves a core under $PGDATA
./scripts/triage_core.sh /path/to/$PGDATA/core.NNNN
# 4. MINIMISE: cut the failing query down, confirm it crashes on demand
$EDITOR repro/mybug.sql
./scripts/run_repro.sh repro/mybug.sql mybug # "SERVER IS DOWN" = good
# 5. BISECT: find the commit that introduced it
./scripts/bisect_run.sh repro/mybug.sql REL_17_STABLE HEAD
# 6. REPORT: render markdown for pgsql-bugs (no patch)
$EDITOR /tmp/bug.yaml
./scripts/gen_bug_report.sh /tmp/bug.yaml
# when finished:
./scripts/stop_pg.shIf a real crash surfaces, the markdown is ready for [pgsql-bugs]. If the fuzzer runs clean, broaden the seed schema / run longer / switch branch.
Each step has a success criterion to verify before moving on.
Before building or investing in any candidate, rule out the two biggest time-wasters: a dirty working tree, and a "bug" that HEAD already fixed.
cd "$PG_SRC_DIR"
git status --short # any M/MM/A? the tree is NOT as-committed
git stash list # stashed reverts hide here toogit commit
could re-introduce a fixed bug. Surface this to the user and do not
build on top of it. Never git commit, git checkout, git restore,
or git stash away the user's changes without explicit permission.When the target is a specific commit (the user said "test this commit" or you picked one in Step 6), check it is not already superseded:
./scripts/check_already_fixed.sh <hash> # is it in HEAD? any later "Fix"/revert touching the same files?Success: git status is clean (or the user has explicitly accepted a
dirty tree), and the candidate commit is confirmed not already fixed or
reverted upstream. Only then proceed to Step 1. Details and edge cases:
references/already_fixed.md.
export PG_SRC_DIR=/path/to/postgres
./scripts/build_and_start_pg.shRuns ./configure --enable-debug --enable-cassert --enable-debug-symbols --enable-tap-tests with CFLAGS="-O0 -ggdb3",
auto-detects the cache-poison mechanism by grepping the tree (PG14+:
debug_discard_caches=1 GUC; older: -DCLOBBER_CACHE_ALWAYS), enables
core dumps, and starts on port ${PG_PORT:-55432}. Idempotent.
Read references/pg_build_options.md for
what each flag buys and how to add valgrind / ASan / RELCACHE_FORCE_RELEASE
when chasing memory bugs.
Success: pg_isready -p $PG_PORT returns 0; the start banner shows
Cache poison: guc (or macro), not none. If it says none,
poisoning was disabled — you'll find far fewer bugs.
# populate the catalog first — sqlsmith is far better against real tables
psql -h /tmp -p $PG_PORT -d postgres -f some_schema.sql
./scripts/fuzz_sqlsmith.sh 3600 postgresThe fuzzer generates valid random SQL until the backend crashes. Read references/fuzzing.md for seeding strategy, targeted fuzzing (aim it at a specific commit's new objects/GUC), and alternatives (SQLancer for logic bugs, amcheck for corruption).
Success: either a new core* appears under $PGDATA (→ Step 3), or
the run is clean — in which case broaden the seed schema, run longer, or
switch to a riskier branch/area (see Step 6).
./scripts/triage_core.sh <core-file>Produces a full backtrace (lldb on macOS, gdb on Linux). Read the top
non-library frames for the failing function + line. If there's no core,
the crash was likely an Assert trip — find TRAP: and the last
STATEMENT in the server log. See
references/triage_and_bisect.md.
Success: you can name the failing function and the query that triggered it.
Reduce the fuzzer's giant query to the fewest self-contained lines that
crash a fresh backend every time. Save as repro/<name>.sql.
./scripts/run_repro.sh repro/<name>.sql <name>run_repro.sh now detects a crash (server gone / PANIC / TRAP), not just
SQL ERRORs — it prints SERVER IS DOWN and exits non-zero when the MRE
works. Patterns by subsystem are in
references/repro_patterns.md; log reading
in references/log_indicators.md.
Success: a 3–10 line .sql crashes the backend deterministically
from a clean database. Until this holds, do not theorise about root
cause — it's a guess.
./scripts/bisect_run.sh repro/<name>.sql <good-ref> <bad-ref>Drives git bisect run: each step rebuilds, re-initdbs, runs the MRE,
and reports crash-vs-clean. Confirm <good-ref> is genuinely clean
first, or bisect will blame an innocent commit. Details + decision tree
in references/triage_and_bisect.md.
Success: git bisect names a first-bad commit; the MRE crashes at
that commit and not at its parent.
If overnight fuzzing finds nothing, aim it. List recent risky commits:
./scripts/find_suspicious_commits.sh 30 HEADRead references/commit_risk_indicators.md:
bias toward parser/planner/executor/storage/replication paths and toward
repeatedly-fixed areas (Fix/Undo thinko/back-patch). Then
pre-create the objects that commit cares about and re-fuzz, or
hand-write a focused repro for its new code path.
./scripts/analyze_commit.sh <hash> 600 # message + diff sliceBefore spending any time on a candidate, screen it (Step 0 rule 3):
./scripts/check_already_fixed.sh <hash>Fix/Revert/Undo is itself the
fix — the bug it describes is already gone at HEAD. Don't try to
reproduce that bug; the repro will pass and you'll have proven nothing.Success: you reproduced a crash on the unmodified HEAD build, or confirmed the candidate path is clean for the inputs you exercised. A crash that needs a reverted fix does not count.
Fill references/bug_report_template.md into YAML, then:
./scripts/gen_bug_report.sh /tmp/<name>.yamlWrites ./markdown/find_postgres_bug-<slug>-<date>.md with environment,
MRE, actual/expected, backtrace/log tail, why-it's-a-bug, and bisect
result. Leave "suggested fix" as an explicitly-unverified direction at
most.
Success: the markdown has all required blocks (Environment / Summary
/ Repro / Actual / Why / Fix) and a log/backtrace snippet containing the
TRAP:/PANIC/ERROR: line.
Only render a bug report for a crash that reproduces on the unmodified
HEAD build. If the investigation ended in "already fixed", "already
reverted", or "only crashes after I undid a committed fix", do not
produce a pgsql-bugs report — write a short findings note instead
(markdown/find_postgres_bug-no-new-bug-<slug>-<date>.md) stating what was
ruled out and why. Reporting an already-fixed bug upstream wastes
maintainers' time.
./scripts/stop_pg.shThe only script that stops the instance. Nothing else will.
One markdown file per bug:
markdown/find_postgres_bug-<slug>-<YYYY-MM-DD>.md. Template in
assets/bug_report.md.template; field
reference in
references/bug_report_template.md.
Required sections (pgsql-bugs expectations):
.sql.| Script | Purpose |
|---|---|
scripts/pg_env.sh | Sourceable env (paths, port, PG_CFLAGS, PG_POISON_CACHE) |
scripts/build_and_start_pg.sh | Poisoned configure+make+install+initdb+start; idempotent, never auto-stops |
scripts/fuzz_sqlsmith.sh | Drive sqlsmith at the instance; detect new cores + crash markers |
scripts/triage_core.sh | Backtrace a core (lldb/gdb) |
scripts/run_repro.sh | Run a .sql; detect crash (server-down/PANIC/TRAP), capture log slice |
scripts/bisect_run.sh | git bisect run an MRE across good..bad, rebuilding each step |
scripts/find_suspicious_commits.sh | List recent risky commits (targeted probe) |
scripts/check_already_fixed.sh | Screen a commit: is it in HEAD / itself a Fix / later reverted-or-refixed? |
scripts/analyze_commit.sh | Show stat + diff slice for one commit |
scripts/capture_log.sh | Grep $PG_LOG (tail / errors / full) |
scripts/gen_bug_report.sh | Render markdown from a YAML inputs file |
scripts/stop_pg.sh | Explicit teardown |
Override any default by exporting before running:
PG_PORT=55433 PG_POISON_CACHE=1 ./scripts/build_and_start_pg.shLoad only what you need; each file is self-contained.
git bisect run, the
"report don't patch" rule, triage decision tree.fuzz_sqlsmith.sh prints install hints and exits.PG source dir?
├─ NO → ask for it; suggest $HOME/postgres
└─ YES → git status --short (Step 0 pre-flight)
├─ dirty / staged revert? → STOP, ask the user; never commit it
└─ clean → build_and_start_pg.sh (poisoned: cassert+cache-discard+-O0)
├─ banner says "Cache poison: none"? → re-enable PG_POISON_CACHE=1
└─ up → seed schema → fuzz_sqlsmith.sh (long run)
├─ crash (new core / PANIC)?
│ ├─ reproduces on UNMODIFIED HEAD? ── no ─→ not a finding
│ ├─ triage_core.sh → backtrace
│ ├─ minimise → MRE (run_repro.sh: "SERVER IS DOWN")
│ ├─ bisect_run.sh good..bad → first-bad commit
│ └─ gen_bug_report.sh → post upstream (NO patch)
└─ clean → targeted probe:
find_suspicious_commits → check_already_fixed.sh (skip if fixed)
→ seed those objects → re-fuzz / focused repro on HEAD
(NEVER revert a fix to reproduce); or run longer / switch branch© digoal, GPL-2.0. 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 23 other files (scripts, references, assets) in skills/find-postgres-bug of digoal/blog.
Open the folder on GitHubat commit 69fb793
Find Postgres Bug 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 |
|---|---|---|---|---|---|---|
| Find Postgres Bug this skilldigoal/blog | 8.6k | — | ~4k | Automated safety check: Pass | GPL-2.0 | |
| Setup Devrelytcloud/pg_ducklake | 143 | — | ~2k | Automated safety check: Notes | MIT | |
| Blueprintaffaan-m/ECC | 274k | — | ~421 | Automated safety check: Pass | MIT | |
| Git PR Flowwgzhao/Addax | 1.4k | — | ~216 | Automated safety check: Pass | Apache-2.0 | |
| ReleaseShape-Machine/tusk-macos | 126 | — | ~944 | Automated safety check: Notes | Custom licence | |
| Version Managementrelytcloud/pg_ducklake | 143 | — | ~455 | Automated safety check: Pass | MIT |
relytcloud/pg_ducklake
Dev environment setup for build tools, PostgreSQL, submodules, and worktrees.
affaan-m/ECC
1行の目的を複数セッション、複数エージェントエンジニアリングプロジェクト向けのステップバイステップ構築計画に変換します。各ステップには自己完結型コンテキストブリーフがあり、新しいエージェントがそれをコールドで実行できます。
wgzhao/Addax
Standard branch, commit, and pull-request workflow for this repo.
Shape-Machine/tusk-macos
Full Tusk release — bump version, build DMG, publish GitHub release, update README
relytcloud/pg_ducklake
Versioning, branch, and release policy (semantic versioning, branch-per-minor, tag-per-patch).
affaan-m/ECC
将单行目标转化为多会话、多代理工程项目的分步构建计划。每个步骤包含独立的上下文简介,以便新代理能直接执行。包括对抗性审查门、依赖图、并行步骤检测、反模式目录和计划突变协议。触发条件:当用户请求复杂多PR任务的计划、蓝图或路线图,或描述需要多个会话的工作时。不触发条件:任务可在单个PR或少于3个工具调用中完成,或用户说“直接执行”时。
digoal/blog
三层审查模型,逐段逐句验证文章真伪、证据链与逻辑结构。Use when the user asks to fact-check, verify, audit, or evaluate the credibility of an article, essay, report, opinion piece, social-media post, or any written claim —…
digoal/blog
Portable digital employee distilled from digoal's personal blog for PostgreSQL, PolarDB, DuckDB, AI+database, vector/RAG, database operations, source-code reading, technical content creation…
digoal/blog
从论文 PDF 文件或论文 PDF URL 生成通俗易懂、图文并茂、带批判性评估的中文 Markdown 解读,并保存到当前项目的 markdown 目录。Use when the user asks to interpret,精读,解读,summarize,explain,analyze, or write an article from an academic paper PDF…
digoal/blog
Analyze a product from documentation, websites, PDFs, articles, release notes, pricing pages, app listings, reviews, filings, or related links; save separate intermediate analyses from seven roles…
digoal/blog
Turn a blog post, article, notes, or any source material into a set of vertical poster images — one cover plus several coherent content slides that explain the core points.
digoal/blog
Convert a Markdown article into a natural first-person podcast script for 1 to 4 speakers and save it as a .txt file under the current project's markdown directory.
Works with
Categories
Find latent bugs in a local PostgreSQL source tree (RELxxSTABLE branch or HEAD) the way a core hacker does: build a heavily-poisoned debug instance (cassert + cache-discard + -O0/-ggdb3 + core…. Find Postgres Bug is an agent skill from digoal/blog. Find latent bugs in a local PostgreSQL source tree (RELxxSTABLE branch or HEAD) the way a core hacker does: build a heavily-poisoned debug instance (cassert + cache-discard + -O0/-ggdb3 + core dumps), fuzz it (sqlsmith) until the backend crashes, triage the core into a minimal reproducer (MRE), git-bisect the introducing commit, and render a community-style pgsql-bugs markdown report.
Find Postgres Bug fits situations like: the user says find a bug in postgres; hunt for a crash; test a recent commit; bisect this crash.
Run `npx skills add digoal/blog --skill find-postgres-bug -a claude-code`. Or copy the skill folder (skills/find-postgres-bug in digoal/blog) into .claude/skills/find-postgres-bug in your project. Claude Code loads it when a task matches its description.
Run `npx skills add digoal/blog --skill find-postgres-bug -a codex`. Or copy the skill folder (skills/find-postgres-bug in digoal/blog) into .agents/skills/find-postgres-bug 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 digoal/blog --skill find-postgres-bug -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/find-postgres-bug, .gemini/skills/find-postgres-bug, .github/skills/find-postgres-bug and .opencode/skills/find-postgres-bug in your project.
Going by SKILL.md and its folder, Find Postgres Bug needs a shell for the scripts in its folder and the command-line tools its instructions call (git and psql). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Its commands use git, 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 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.
Find Postgres Bug is published under the GPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k 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. Its references folder adds about 8.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Find Postgres Bug: Setup Dev (relytcloud/pg_ducklake, 143 stars), Blueprint (affaan-m/ECC, 274k stars), Git PR Flow (wgzhao/Addax, 1.4k stars) and Release (Shape-Machine/tusk-macos, 126 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
digoal (a GitHub user) maintains it in digoal/blog, which has 8,587 GitHub stars. The repository holds 98 skills in this directory. The repository was last updated on September 28, 2026.
Source: digoal/blog on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.