Neon Postgres
smontlouis/bible-strong
Guides and best practices for working with Lakebase Postgres, the database behind Neon.
Diagnose and fix excessive Postgres egress (network data transfer) in a codebase.
$ npx skills add neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install neondatabase/agent-skills neon-postgres-egress-optimizer --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/neondatabase/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/neon-postgres-egress-optimizer .claude/skills/neon-postgres-egress-optimizer && 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 "neon-postgres-egress-optimizer" agent skill from https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer into .claude/skills/neon-postgres-egress-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neon-postgres-egress-optimizer", 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/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizerType 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 neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install neondatabase/agent-skills neon-postgres-egress-optimizer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neondatabase/agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/neon-postgres-egress-optimizer .agents/skills/neon-postgres-egress-optimizer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "neon-postgres-egress-optimizer" agent skill from https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer into .agents/skills/neon-postgres-egress-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neon-postgres-egress-optimizer", 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 neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install neondatabase/agent-skills neon-postgres-egress-optimizer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neondatabase/agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/neon-postgres-egress-optimizer .cursor/skills/neon-postgres-egress-optimizer && 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 "neon-postgres-egress-optimizer" agent skill from https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer into .cursor/skills/neon-postgres-egress-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neon-postgres-egress-optimizer", 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/neondatabase/agent-skills.git --path skills/neon-postgres-egress-optimizer--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 neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install neondatabase/agent-skills neon-postgres-egress-optimizer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neondatabase/agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/neon-postgres-egress-optimizer .gemini/skills/neon-postgres-egress-optimizer && 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 "neon-postgres-egress-optimizer" agent skill from https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer into .gemini/skills/neon-postgres-egress-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neon-postgres-egress-optimizer", 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 neondatabase/agent-skills neon-postgres-egress-optimizerInstalls 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 neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/neondatabase/agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/neon-postgres-egress-optimizer .github/skills/neon-postgres-egress-optimizer && 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 "neon-postgres-egress-optimizer" agent skill from https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer into .github/skills/neon-postgres-egress-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neon-postgres-egress-optimizer", 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 neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install neondatabase/agent-skills neon-postgres-egress-optimizer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neondatabase/agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/neon-postgres-egress-optimizer .opencode/skills/neon-postgres-egress-optimizer && 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 "neon-postgres-egress-optimizer" agent skill from https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer into .opencode/skills/neon-postgres-egress-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neon-postgres-egress-optimizer", 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.
neon-postgres-egress-optimizerDiagnose and fix excessive Postgres egress (network data transfer) in a codebase.
Neon Postgres Egress Optimizer is an agent skill from neondatabase/agent-skills, published by the product's own GitHub organization. Diagnose and fix excessive Postgres egress (network data transfer) in a codebase. Use when a user mentions high database bills, unexpected data transfer costs, network transfer charges, egress spikes, "why is my Neon bill so high", "database costs jumped", SELECT optimization, query overfetching, reduce Neon costs, optimize database usage, or wants to reduce data sent from their database to their application. Also use when reviewing query patterns for cost efficiency, even if the user doesn't explicitly mention…
Its SKILL.md is about 2.6k 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 Neon and PostgreSQL. The repository describes itself as: Agent Skills for Neon Severless Postgres. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit bfd013c. 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.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
neon.comFrom 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.
Neon Postgres Egress Optimizer loads about 2.6k tokens when it runs. Until then it costs about 144 tokens; SKILL.md has 1,074 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); files beside SKILL.md are not scanned.
The full file from neondatabase/agent-skills at commit bfd013c, republished under its Apache-2.0 licence (© neondatabase). 1,074 words, ~2,553 tokens.
.claude/skills/neon-postgres-egress-optimizer/SKILL.md (or your agent's skills folder).FIRST: Use the parent neon skill for a Neon overview, getting started with Neon, Neon development best practices, and more.
If the neon skill is not installed, fetch it from https://neon.com/docs/ai/skills/neon/SKILL.md or install it with:
neon skills -s neon -yGuide the user through diagnosing and fixing application-side query patterns that cause excessive data transfer (egress) from their Postgres database. Most high egress bills come from the application fetching more data than it uses.
Work the four steps in order: diagnose which queries transfer the most data, analyze the codebase behind them, fix the anti-patterns, then verify nothing broke and the transfer actually dropped.
Identify which queries transfer the most data. The primary tool is the pg_stat_statements extension.
SELECT 1 FROM pg_stat_statements LIMIT 1;If this errors, the extension needs to be created:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;On Neon the extension is available by default, but it may still need this CREATE EXTENSION step.
Stats are cleared when a Neon compute scales to zero and restarts. If the stats are empty or the compute recently woke up:
SELECT pg_stat_statements_reset();If the user has stats from a production database, use those. If they have no access to production stats, proceed to Step 2 and analyze the codebase directly — code-level patterns are often sufficient to identify the worst offenders.
Run these to identify the top egress contributors. Focus on queries that return many rows, return wide rows (JSONB, TEXT, BYTEA columns), or are called very frequently.
Queries returning the most total rows:
SELECT query, calls, rows AS total_rows, rows / calls AS avg_rows_per_call
FROM pg_stat_statements
WHERE calls > 0
ORDER BY rows DESC
LIMIT 10;Queries returning the most rows per execution (poorly scoped SELECTs, missing pagination):
SELECT query, calls, rows AS total_rows, rows / calls AS avg_rows_per_call
FROM pg_stat_statements
WHERE calls > 0
ORDER BY avg_rows_per_call DESC
LIMIT 10;Most frequently called queries (candidates for caching):
SELECT query, calls, rows AS total_rows, rows / calls AS avg_rows_per_call
FROM pg_stat_statements
WHERE calls > 0
ORDER BY calls DESC
LIMIT 10;Longest running queries (not a direct egress measure, but helps identify problem queries during a spike):
SELECT query, calls, rows AS total_rows,
round(total_exec_time::numeric, 2) AS total_exec_time_ms
FROM pg_stat_statements
WHERE calls > 0
ORDER BY total_exec_time DESC
LIMIT 10;Rank findings by estimated egress impact:
For each query identified in Step 1, or for each database query in the codebase if no stats are available, check:
Apply the appropriate fix for each problem found. Below are the most common egress anti-patterns and how to fix them.
Problem: The query fetches all columns but the application only uses a few. Large columns (JSONB blobs, TEXT fields) get transferred over the wire and discarded.
Fix: Name only the columns the response needs.
Before:
SELECT * FROM products;After:
SELECT id, name, price, image_urls FROM products;Problem: A list endpoint returns all rows with no LIMIT. This is an unbounded egress risk — every new row in the table increases data transfer on every request. Flag this regardless of current table size.
This is easy to miss because the application may work fine with small datasets. But at scale, an unpaginated endpoint returning 10,000 rows with even moderate column widths can transfer hundreds of megabytes per day.
Fix: Bound the result set with ORDER BY plus LIMIT/OFFSET.
Before:
SELECT id, name, price FROM products;After:
SELECT id, name, price FROM products
ORDER BY id
LIMIT 50 OFFSET 0;When adding pagination, check whether the consuming client already supports paginated responses. If not, pick sensible defaults and document the pagination parameters in the API.
Problem: A query is called thousands of times per day but returns data that rarely changes. Every call transfers the same rows from the database. This pattern is only visible from pg_stat_statements — the code itself looks normal.
Look for queries with extremely high call counts relative to other queries. Common examples: configuration tables, category lists, feature flags, user role definitions.
Fix: Add a caching layer between the application and the database so it avoids hitting the database on every request.
Problem: The application fetches all rows from a table and then computes aggregates (averages, counts, sums, groupings) in application code. The full dataset transfers over the wire even though the result is a small summary.
Fix: Push the aggregation into SQL.
Before: The application fetches entire tables and aggregates in code with loops or .reduce().
After:
SELECT p.category_id,
AVG(r.rating) AS avg_rating,
COUNT(r.id) AS review_count
FROM reviews r
INNER JOIN products p ON r.product_id = p.id
GROUP BY p.category_id;Problem: A JOIN between a wide parent table and a child table duplicates all parent columns across every child row. If a product has 200 reviews and the product row includes a 50KB JSONB column, the join sends that 50KB × 200 = ~10MB for a single request.
This is distinct from the SELECT * problem. Even if you select only needed columns, a JOIN still repeats the parent data for every child row. The fix is structural: avoid the join entirely.
Fix: Split the join into two queries, one per table.
Before:
SELECT * FROM products
LEFT JOIN reviews ON reviews.product_id = products.id
WHERE products.id = 1;After (two separate queries):
SELECT id, name, price, description, image_urls FROM products WHERE id = 1;
SELECT id, user_name, rating, body FROM reviews WHERE product_id = 1;Two queries instead of one JOIN. The product data is fetched once. The reviews are fetched once. No duplication.
After applying fixes:
SELECT pg_stat_statements_reset();), let traffic run, then re-run the diagnostic queries to compare before and after.neon.ts)The fixes above cut egress (data transferred out of Postgres). The other big non-prod cost lever is compute, and you can codify it durably in neon.ts — Neon's infrastructure-as-code file (see the neon skill for the full reference) — so dev, preview, and CI branches stay cheap by default instead of relying on per-branch flags:
npm i @neon/config// neon.ts
import { defineConfig } from "@neon/config/v1";
export default defineConfig({
branch: (branch) => {
if (branch.exists || branch.isDefault) return {}; // don't touch prod
return {
ttl: "7d", // ephemeral branches auto-expire instead of accruing storage
postgres: {
computeSettings: {
autoscalingLimitMinCu: 0.25, // scale to zero when idle
autoscalingLimitMaxCu: 1, // cap autoscaling on throwaway branches
suspendTimeout: "5m",
},
},
};
},
});neon config apply # apply to the current branch (neon deploy is an alias)This is complementary, not a substitute: query-pattern fixes are what actually reduce egress charges, while these settings keep non-production compute and storage from quietly inflating the same bill. Because neon checkout applies the policy when it creates a branch, new dev/preview branches inherit the cheap profile automatically.
© neondatabase, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/neon-postgres-egress-optimizer of neondatabase/agent-skills.
Open the folder on GitHubat commit bfd013c
Neon Postgres Egress Optimizer 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 |
|---|---|---|---|---|---|---|
| Neon Postgres Egress Optimizer this skillneondatabase/agent-skills | 100 | — | ~2.6k | Automated safety check: Pass | Apache-2.0 | |
| Neon Postgressmontlouis/bible-strong | 171 | 1 repos | ~2.3k | Automated safety check: Notes | GPL-3.0 | |
| Neon Postgresusenotra/notra | 256 | — | ~4.1k | Automated safety check: Notes | AGPL-3.0 | |
| Neon Postgresdavila7/claude-code-templates | 32k | 4 repos | ~396 | Automated safety check: Pass | MIT | |
| Neon Postgres Egress Optimizersickn33/agentic-awesome-skills | 47k | 1 repos | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| Neon Postgresaiskillstore/marketplace | 430 | 4 repos | ~4.2k | Automated safety check: Notes | Apache-2.0 |
smontlouis/bible-strong
Guides and best practices for working with Lakebase Postgres, the database behind Neon.
usenotra/notra
Guides and best practices for working with Lakebase Postgres, the database behind Neon.
davila7/claude-code-templates
Expert patterns for Neon serverless Postgres, branching, connection pooling, and Prisma/Drizzle integration Use when: neon database, serverless postgres, database branching, neon postgres, postgres…
sickn33/agentic-awesome-skills
Diagnose and fix excessive Postgres egress (network data transfer) in a codebase.
aiskillstore/marketplace
Guides and best practices for working with Neon Serverless Postgres.
Anil-matcha/awesome-muse-connectors
Inspect Neon serverless Postgres: projects, branches, databases.
neondatabase/agent-skills
Add authentication to a new app. An agent skill from neondatabase/agent-skills.
neondatabase/agent-skills
Guides and best practices for working with Lakebase Postgres on Neon: connections, pooled vs direct, schema migrations, branching, autoscaling, scale-to-zero, instant restore, read replicas, IP…
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, and the AI Gateway.
neondatabase/agent-skills
One API and one credential for frontier and open-source LLMs, built into your Neon branch and powered by Databricks.
neondatabase/agent-skills
Long-running, serverless Node.js HTTP functions deployed onto your Neon branch, with DATABASEURL injected automatically and compute that runs next to your data.
neondatabase/agent-skills
S3-compatible object storage that branches with your Neon project, so files and the database stay in sync across every branch.
Works with
Categories
Diagnose and fix excessive Postgres egress (network data transfer) in a codebase. Neon Postgres Egress Optimizer is an agent skill from neondatabase/agent-skills, published by the product's own GitHub organization. Diagnose and fix excessive Postgres egress (network data transfer) in a codebase.
Neon Postgres Egress Optimizer fits situations like: A user mentions high database bills; unexpected data transfer costs; network transfer charges; why is my Neon bill so high.
Run `npx skills add neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a claude-code`. Or copy the skill folder (skills/neon-postgres-egress-optimizer in neondatabase/agent-skills) into .claude/skills/neon-postgres-egress-optimizer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a codex`. Or copy the skill folder (skills/neon-postgres-egress-optimizer in neondatabase/agent-skills) into .agents/skills/neon-postgres-egress-optimizer 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 neondatabase/agent-skills --skill neon-postgres-egress-optimizer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/neon-postgres-egress-optimizer, .gemini/skills/neon-postgres-egress-optimizer, .github/skills/neon-postgres-egress-optimizer and .opencode/skills/neon-postgres-egress-optimizer in your project.
Going by SKILL.md and its folder, Neon Postgres Egress Optimizer needs the command-line tools its instructions call (npm). Our summary lists: Node.js.
SKILL.md names 1 domain. As links in the text: neon.com. 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. Review the folder before installing.
Neon Postgres Egress Optimizer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k 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 Neon Postgres Egress Optimizer: Neon Postgres (smontlouis/bible-strong, 171 stars), Neon Postgres (usenotra/notra, 256 stars), Neon Postgres (davila7/claude-code-templates, 32k stars) and Neon Postgres Egress Optimizer (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.
neondatabase (a GitHub organization, an official publisher) maintains it in neondatabase/agent-skills, which has 100 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.
Source: neondatabase/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.