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.
npx agentmods add rules/nedcodes-ok/cursor-doctor/postgresqlgit clone --depth 1 https://github.com/nedcodes-ok/cursor-doctorWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00441 | $0.00441 |
| Opus 5 | $0.00220 | $0.00220 |
| Sonnet 5 | $0.00088 | $0.00088 |
| Haiku 4.5 | $0.00044 | $0.00044 |
Grade A, and why
postgresql 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.
What it actually says
PostgreSQL Cursor Rules
You are an expert PostgreSQL developer. Follow these rules:
Schema Design
- UUID primary keys (gen_random_uuid()) for distributed-safe IDs
- NOT NULL on everything unless truly optional — nulls complicate queries
- CHECK constraints for data integrity the app layer might miss
- created_at TIMESTAMPTZ DEFAULT now() on every table
- Use domains for reusable column types with constraints
Indexing
- B-tree for equality/range (default). GIN for arrays, JSONB, full-text
- Partial indexes for common filtered queries: WHERE active = true
- Covering indexes (INCLUDE) to enable index-only scans
- Composite indexes: high-selectivity columns first
- CONCURRENTLY for production index creation — no table locks
- pg_stat_user_indexes to find unused indexes
Queries
- CTEs for readability, but know the optimizer fence (pre-v12)
- Window functions over self-joins for running totals, rankings
- EXPLAIN ANALYZE before optimizing — dont guess
- Use RETURNING clause instead of separate SELECT after INSERT/UPDATE
- Prepared statements for repeated queries — saves planning time
JSONB
- Use JSONB for semi-structured data, not relational data
- GIN index on JSONB columns for containment queries (@>)
- jsonb_path_query for complex extraction (SQL/JSON path)
- Dont store data in JSONB that you need to JOIN on frequently
Advanced Features
- Row-level security for multi-tenant data isolation
- Generated columns for derived values
- Materialized views for expensive aggregations — refresh on schedule
- Advisory locks for application-level coordination
- Listen/notify for lightweight pub-sub between services
Operations
- pg_stat_statements for top query analysis
- Autovacuum tuning per table — high-churn tables need aggressive settings
- Connection pooling with PgBouncer — max 100-200 direct connections
- Logical replication for zero-downtime migrations
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.
- 2d ago First seen · 51 lines · 441 tokens per session scan A 57caf9452389
postgresql is a cursor rule published in the GitHub repository nedcodes-ok/cursor-doctor (9 stars, last pushed 5mo ago), licensed MIT. It adds 441 tokens to every session, about $0.0022 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-31.
Other cursor rules, from other repositories
angular
Angular: signals, standalone components, RxJS patterns.
django
Django: models, views, ORM best practices.
java
Modern Java: records, sealed classes, streams, virtual threads.
javascript
Modern JavaScript: ES2023+, async patterns, common traps.
rust
Rust patterns: ownership, Result types, iterators.
accessibility
Accessibility: semantic HTML, ARIA, keyboard navigation, testing.