Agent skill

Find Postgres Bug

by digoal in 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…

GPL-2.0Auto-check passedDatabases

Install Find Postgres Bug

skills CLI
$ npx skills add digoal/blog --skill find-postgres-bug -a claude-code

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

GitHub CLI
$ gh skill install digoal/blog find-postgres-bug --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/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-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
find-postgres-bug
GitHub stars
8.6k
Token cost
~4k tokens
SKILL.md length
1,496 words
Files
24 (incl. scripts, references, assets)
Skills in repo
98
Repo updated
First seen
Licence
GPL-2.0

At a glance

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…

  • Works in 9 steps: Pre-flight: clean tree & live-at-HEAD… → Poison the build & start (the 90% lever) → Seed & fuzz (primary discovery) → …
  • The user says find a bug in postgres
  • SKILL.md covers Overview, Quick start, Workflow and Output format, plus 4 more sections
  • Runs Shell scripts from its folder; calls git and psql

What it does

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.

When your agent uses it

  • The user says find a bug in postgres
  • Hunt for a crash
  • Test a recent commit
  • Bisect this crash

Example prompts

  • “find a bug in postgres”
  • “fuzz postgres”
  • “hunt for a crash”
  • “/find-postgres-bug”

Requirements

  • A Bash shell

Workflow steps

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

  1. Pre-flight: clean tree & live-at-HEAD gate (do this first)
  2. Poison the build & start (the 90% lever)
  3. Seed & fuzz (primary discovery)
  4. Triage the core
  5. Minimise to an MRE
  6. Bisect the introducing commit
  7. Targeted commit probe (when fuzzing comes up dry)
  8. Render the bug report (no patch)
  9. Tear down (only when done)

What it can do on your machine

Read from SKILL.md and the folder at commit 69fb793. 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

    Ships 5 files in scripts/ (Shell, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • psql

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

  • Network

    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.

  • 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

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.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from digoal/blog at commit 69fb793, republished under its GPL-2.0 licence (© digoal). 1,496 words, ~4,000 tokens.

Download SKILL.mdSave it as .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.
name
find-postgres-bug
description
Find latent bugs in a local PostgreSQL source tree (REL_xx_STABLE 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 recent commit", "write a repro", "bisect this crash", "把 PG 跑起来找 bug", "fuzz 一下 postgres", "看看这个 commit 会不会出问题", etc. Triggers whenever the user points at a PG source dir and wants to hunt bugs.

Find Postgres Bug

Overview

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:

  1. The skill never auto-stops the instance. Run scripts/stop_pg.sh explicitly when done.
  2. Never write a patch. The deliverable is an MRE + backtrace + bisect result, posted upstream. A drive-by fix from someone who just met the code is worth less than a clean reproducer.
  3. A finding only counts if it crashes at HEAD, with the tree exactly as committed. Never revert a fix (or commit a staged revert) to make something crash and call it a bug — that just re-creates an already-fixed bug and is worthless. Before investing in any candidate, run the pre-flight in Step 0. See references/already_fixed.md.

Quick start

bash
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.sh

If a real crash surfaces, the markdown is ready for [pgsql-bugs]. If the fuzzer runs clean, broaden the seed schema / run longer / switch branch.


Workflow

Each step has a success criterion to verify before moving on.

Step 0 — Pre-flight: clean tree & live-at-HEAD gate (do this first)

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.

bash
cd "$PG_SRC_DIR"
git status --short            # any M/MM/A? the tree is NOT as-committed
git stash list               # stashed reverts hide here too
  • Dirty tree → stop and ask. Uncommitted edits (especially a staged revert of a fix) mean you are no longer testing HEAD. A git 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.
  • Always build and test the tree exactly as committed. Do not revert a fix to "reproduce" a bug. If you ever need to confirm a fix works, that is a fix-verification task, not a bug find — label it as such and do not report it as a new bug.

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:

bash
./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.

Step 1 — Poison the build & start (the 90% lever)
bash
export PG_SRC_DIR=/path/to/postgres
./scripts/build_and_start_pg.sh

Runs ./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.

Step 2 — Seed & fuzz (primary discovery)
bash
# 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 postgres

The 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).

Step 3 — Triage the core
bash
./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.

Step 4 — Minimise to an MRE

Reduce the fuzzer's giant query to the fewest self-contained lines that crash a fresh backend every time. Save as repro/<name>.sql.

bash
./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.

Step 5 — Bisect the introducing commit
bash
./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.

Step 6 — Targeted commit probe (when fuzzing comes up dry)

If overnight fuzzing finds nothing, aim it. List recent risky commits:

bash
./scripts/find_suspicious_commits.sh 30 HEAD

Read 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.

bash
./scripts/analyze_commit.sh <hash> 600   # message + diff slice

Before spending any time on a candidate, screen it (Step 0 rule 3):

bash
./scripts/check_already_fixed.sh <hash>
  • A commit whose message starts with 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.
  • The useful probe is the opposite: treat a recent fix as a hint that the surrounding code is fragile, and hunt for a new, still-live crash near it — one that still reproduces on the unmodified HEAD build.
  • Never revert the fix (or any commit) to make it crash. A crash that only appears after you undo a committed fix is not a finding.

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.

Show full SKILL.md (510 more words)Show less
Step 7 — Render the bug report (no patch)

Fill references/bug_report_template.md into YAML, then:

bash
./scripts/gen_bug_report.sh /tmp/<name>.yaml

Writes ./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.

Step 8 — Tear down (only when done)
bash
./scripts/stop_pg.sh

The only script that stops the instance. Nothing else will.


Output format

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):

  1. Environment — OS / kernel / compiler / PG version / branch / commit / build flags (incl. cache-poison mode).
  2. Summary — 1–3 factual sentences, no judgement.
  3. Reproduction — the MRE: file path + inline .sql.
  4. Actual vs expected — verbatim crash/output vs expected, plus a backtrace or server-log tail.
  5. Why is this a bug — the spec / docs / invariant it violates.
  6. Suggested fix — optional, flagged unverified. "I have a reliable reproducer but no fix" is a perfectly good report.

Script reference

ScriptPurpose
scripts/pg_env.shSourceable env (paths, port, PG_CFLAGS, PG_POISON_CACHE)
scripts/build_and_start_pg.shPoisoned configure+make+install+initdb+start; idempotent, never auto-stops
scripts/fuzz_sqlsmith.shDrive sqlsmith at the instance; detect new cores + crash markers
scripts/triage_core.shBacktrace a core (lldb/gdb)
scripts/run_repro.shRun a .sql; detect crash (server-down/PANIC/TRAP), capture log slice
scripts/bisect_run.shgit bisect run an MRE across good..bad, rebuilding each step
scripts/find_suspicious_commits.shList recent risky commits (targeted probe)
scripts/check_already_fixed.shScreen a commit: is it in HEAD / itself a Fix / later reverted-or-refixed?
scripts/analyze_commit.shShow stat + diff slice for one commit
scripts/capture_log.shGrep $PG_LOG (tail / errors / full)
scripts/gen_bug_report.shRender markdown from a YAML inputs file
scripts/stop_pg.shExplicit teardown

Override any default by exporting before running:

bash
PG_PORT=55433 PG_POISON_CACHE=1 ./scripts/build_and_start_pg.sh

Reference index

Load only what you need; each file is self-contained.


What this skill does not do

  • It does not write or submit a patch. MRE + backtrace + bisect, posted as a markdown draft for the human to send. This is deliberate.
  • It does not build sqlsmith for you — if it's missing, fuzz_sqlsmith.sh prints install hints and exits.
  • It does not shut the instance down. Explicit teardown only.
  • It does not guess the root cause before there's a deterministic MRE. Triage produces a backtrace; minimisation produces the proof.

Decision tree (TL;DR)

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

Files

SKILL.md and 23 other files (scripts, references, assets) in skills/find-postgres-bug of digoal/blog.

  • SKILL.md
  • agents/openai.yaml
  • assets/bug_report.md.template
  • references/already_fixed.md
  • references/bug_report_template.md
  • references/commit_risk_indicators.md
  • references/fuzzing.md
  • references/log_indicators.md
  • references/pg_build_options.md
  • references/pg_version_helpers.md
  • references/repro_patterns.md
  • references/triage_and_bisect.md
  • scripts/analyze_commit.sh
  • scripts/bisect_run.sh
  • scripts/build_and_start_pg.sh
  • scripts/capture_log.sh
  • scripts/check_already_fixed.sh
  • … and 7 more

Open the folder on GitHubat commit 69fb793

Compare with similar skills

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.

Find Postgres Bug compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Find Postgres Bug this skilldigoal/blog8.6k—~4kAutomated safety check: PassGPL-2.0
Setup Devrelytcloud/pg_ducklake143—~2kAutomated safety check: NotesMIT
Blueprintaffaan-m/ECC274k—~421Automated safety check: PassMIT
Git PR Flowwgzhao/Addax1.4k—~216Automated safety check: PassApache-2.0
ReleaseShape-Machine/tusk-macos126—~944Automated safety check: NotesCustom licence
Version Managementrelytcloud/pg_ducklake143—~455Automated safety check: PassMIT

Similar skills

  • Setup Dev

    relytcloud/pg_ducklake

    Dev environment setup for build tools, PostgreSQL, submodules, and worktrees.

    143 GitHub stars~2k tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes
  • Blueprint

    affaan-m/ECC

    1行の目的を複数セッション、複数エージェントエンジニアリングプロジェクト向けのステップバイステップ構築計画に変換します。各ステップには自己完結型コンテキストブリーフがあり、新しいエージェントがそれをコールドで実行できます。

    274k GitHub stars~421 tokensUpdated 2 days ago
    DatabasesAuto-check passed
  • Git PR Flow

    wgzhao/Addax

    Standard branch, commit, and pull-request workflow for this repo.

    1.4k GitHub stars~216 tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    Shape-Machine/tusk-macos

    Full Tusk release — bump version, build DMG, publish GitHub release, update README

    126 GitHub stars~944 tokensUpdated 4 mo ago
    DevelopmentAuto-check: notes
  • Version Management

    relytcloud/pg_ducklake

    Versioning, branch, and release policy (semantic versioning, branch-per-minor, tag-per-patch).

    143 GitHub stars~455 tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Blueprint

    affaan-m/ECC

    将单行目标转化为多会话、多代理工程项目的分步构建计划。每个步骤包含独立的上下文简介,以便新代理能直接执行。包括对抗性审查门、依赖图、并行步骤检测、反模式目录和计划突变协议。触发条件:当用户请求复杂多PR任务的计划、蓝图或路线图,或描述需要多个会话的工作时。不触发条件:任务可在单个PR或少于3个工具调用中完成,或用户说“直接执行”时。

    274k GitHub starsUsed in 2 repos~604 tokens
    DevelopmentAuto-check passed

More from digoal/blog

All 98 skills in this repo
  • 三层审查模型,逐段逐句验证文章真伪、证据链与逻辑结构。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 —…

    8.6k GitHub stars~939 tokensUpdated 9 days ago
    Auto-check passed
  • Digoal

    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…

    8.6k GitHub stars~2.2k tokensUpdated 9 days ago
    Auto-check passed
  • 从论文 PDF 文件或论文 PDF URL 生成通俗易懂、图文并茂、带批判性评估的中文 Markdown 解读,并保存到当前项目的 markdown 目录。Use when the user asks to interpret,精读,解读,summarize,explain,analyze, or write an article from an academic paper PDF…

    8.6k GitHub stars~1.5k tokensUpdated 9 days ago
    Auto-check passed
  • 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…

    8.6k GitHub stars~1.8k tokensUpdated 9 days ago
    Auto-check passed
  • 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.

    8.6k GitHub stars~1.4k tokensUpdated 9 days ago
    Auto-check passed
  • 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.

    8.6k GitHub stars~1.6k tokensUpdated 9 days ago
    Auto-check passed

Works with

Questions about Find Postgres Bug

What does Find Postgres Bug do?

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.

When should I use Find Postgres Bug?

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.

How do I install Find Postgres Bug in Claude Code?

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.

How do I install Find Postgres Bug in Codex?

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.

Can I use Find Postgres Bug 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 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.

What does Find Postgres Bug need to run?

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.

Does Find Postgres Bug access the network?

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.

Is Find Postgres Bug 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Find Postgres Bug use?

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.

How many tokens does Find Postgres Bug use?

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.

What are the alternatives to Find Postgres Bug?

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.

Who maintains Find Postgres Bug?

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.