optimize-a-query

A workflow for finding and fixing slow PostgreSQL database queries by examining how the database executes them and checking for ORM queries that repeat unnecessarily.

In plain words
What is it for?
Investigating slow pages, timed-out queries, and queries reported as heavy users of database resources, then confirming the fix.
Why use it?
It helps identify whether slowness comes from a missing index, inaccurate database statistics, or many repeated queries instead of guessing at a rewrite.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/lonormaly/builders-stack/optimize-a-query
Any agent
npx skills add lonormaly/builders-stack --skill optimize-a-query
Clone the repo
git clone --depth 1 https://github.com/lonormaly/builders-stack

Made for: Claude Code, Codex.

Per session 77 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 847 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00077 $0.00847
Opus 5 $0.00039 $0.00424
Sonnet 5 $0.00015 $0.00169
Haiku 4.5 $0.00008 $0.00085

Measured 2d ago against content hash ef471645a4ed, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

optimize-a-query scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/skills/optimize-a-query/SKILL.md · 73 lines

How it starts

The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Optimize a query

Measure, don't guess. A slow query is almost always a sequential scan that should be an index scan, or an ORM that fired N queries where one would do. Both are visible — you just have to look.

When to use

  • An endpoint/page is slow and you've traced it to a specific query.
  • A query times out or pg_stat_statements shows it as a top consumer.
  • Fixing the query needs a new/changed index → do the index work in design-a-schema.

1. Read the plan

Run the actual query with a plan (via psql against your DATABASE_URL, or Drizzle's logger):

EXPLAIN (ANALYZE, BUFFERS) SELECT ... ;

What to look for:

  • Seq Scan on a big table where you filter/join → missing index. The fix is an index (usually on the FK or the filtered column), not a query rewrite.
  • Rows Removed by Filter ≫ rows returned → the index isn't selective, or a partial index would help.
  • Estimated rows wildly off actual → stale stats: ANALYZE <table>; (autovacuum usually handles this).
  • Nested Loop over many rows → often the ORM N+1 below, not a single bad query.

2. Catch the ORM N+1

The most common "slow page" in this stack isn't one slow query — it's many fast ones. Loading a list and then fetching each row's relation in a loop fires 1 + N queries.

  • Symptom: the same short query in the logs, repeated with different ids.
  • Fix: use Drizzle's relational query with with (one join-backed query), or a single inArray(...) batch — never a for loop of db.query.
// ❌ N+1
for (const p of posts) p.author = await db.query.user.findFirst({ where: eq(user.id, p.authorId) });
// ✅ one query
const rows = await db.query.posts.findMany({ with: { author: true } });

3. Find the hot queries you didn't know about

pg_stat_statements ranks queries by total time (Neon supports it — CREATE EXTENSION IF NOT EXISTS pg_stat_statements;):

SELECT query, calls, mean_exec_time, total_exec_time
FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;

Read the full file on GitHub · 73 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 73 lines · 77 tokens per session scan A ef471645a4ed

Subscribe to this mod's changes

optimize-a-query is a skill published in the GitHub repository lonormaly/builders-stack (41 stars, last pushed 16d ago), licensed MIT. It adds 77 tokens to every session and 847 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

openspec-explore

Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.

AmanVarshney01/create-better-t-stack · 39 tokens

openspec-propose

Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.

AmanVarshney01/create-better-t-stack · 47 tokens

openspec-sync-specs

Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.

AmanVarshney01/create-better-t-stack · 38 tokens

openspec-archive-change

Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.

AmanVarshney01/create-better-t-stack · 31 tokens

scaffold-project

Scaffold a new app, API, backend, fullstack project, monorepo, or starter with Better-T-Stack — including new projects built on a specific framework like Hono, Express, Fastify, Elysia, Next.js, TanStack Router/Start, Nuxt, Svelte, Solid, Astro, or React Native (native-bare, native-uniwind, native-unistyles). Use…

AmanVarshney01/create-better-t-stack · 169 tokens

add-to-project

Add addons or features (PWA, Tauri, Starlight/Fumadocs docs, Biome/Oxlint, Husky/Lefthook, Turborepo/Nx, the MCP addon, etc.) to an existing Better-T-Stack project. Use when the user wants to extend, enhance, or add tooling to a project that was created with Better-T-Stack.

AmanVarshney01/create-better-t-stack · 84 tokens