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/luxvil/ai-coding-rules/92-databasegit clone --depth 1 https://github.com/Luxvil/ai-coding-rulesWhat 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.00000 | $0.00899 |
| Opus 5 | $0.00000 | $0.00449 |
| Sonnet 5 | $0.00000 | $0.00180 |
| Haiku 4.5 | $0.00000 | $0.00090 |
Grade A, and why
92-database 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 yesterday.
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.
This is a copy
100% identical to 92-database — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 150 lines — stays where its author put it; the contents beside it link to each section on GitHub.
🗃️ Database Rules
Auto-activated for Prisma, Drizzle, and SQL files.
Schema Design
1. Naming Conventions
// ✅ GOOD
model User {
id String @id @default(cuid())
email String @unique
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("users") // snake_case table name
}
// ✅ Relations: explicit names
model Post {
author User @relation("PostAuthor", fields: [authorId], references: [id])
authorId String @map("author_id")
}
2. Required Fields (STRICT)
Every table MUST have:
id— Primary key (cuid or uuid preferred)created_at— Creation timestampupdated_at— Last update timestamp
For multi-tenant apps:
tenant_id— Tenant isolation (CRITICAL)
3. Indexes
// ✅ Index frequently queried fields
model Order {
id String @id
userId String
status String
createdAt DateTime
@@index([userId]) // FK queries
@@index([status, createdAt]) // Filtered queries
}
Migration Rules (STRICT)
1. Never Edit Existing Migrations
# ❌ NEVER modify deployed migrations
# ✅ Create new migration for changes
npx prisma migrate dev --name fix_user_email
2. Reversible Migrations
-- ✅ Always provide rollback
-- Migration: add_status_column
ALTER TABLE orders ADD COLUMN status VARCHAR(20) DEFAULT 'pending';
-- Rollback:
-- ALTER TABLE orders DROP COLUMN status;
3. Data Migrations Separate
migrations/
├── 001_add_status_column.sql # Schema only
└── 001_backfill_status.ts # Data migration (separate)
Query Patterns
1. Parameterized Queries (STRICT)
// ✅ ALWAYS use parameterized queries
const user = await prisma.user.findUnique({
where: { email: sanitizedEmail }
});
// ❌ NEVER concatenate SQL
const query = `SELECT * FROM users WHERE email = '${email}'`; // SQL INJECTION!
2. Select Only Needed Fields
// ✅ GOOD: Select specific fields
const users = await prisma.user.findMany({
select: { id: true, email: true, name: true }
});
// ❌ BAD: Select all (may include sensitive data)
const users = await prisma.user.findMany();
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.
- yesterday First seen · 150 lines · 0 tokens per session scan A 371b5cbab0da
92-database is a cursor rule published in the GitHub repository Luxvil/ai-coding-rules (3 stars, last pushed 2d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 899 tokens. A static security scan graded it A with 0 findings. It is 100% identical to 92-database, differing in 0 lines, and is treated as a copy.
Other cursor rules, from other repositories
exam-answer-format
Guidelines for writing exam-style answers in a practical, conversational style with definitions first followed by real-world examples.
lecture-reference-linking
Guidelines for including course materials lists and inline references when writing exam answers or documentation that references course materials.
short-answer-version
Guidelines for creating short/concise versions of detailed answers.
documentation-formatting
Guidelines for formatting markdown documentation to improve readability and scannability.
mermaid-diagrams
Guidelines for adding Mermaid diagrams to exam answers and documentation with automatic SVG generation support.
human-writing-style
Rules for writing naturally and authentically - avoid robotic AI tone in documentation, code comments, error messages, and explanations. Write like a human colleague, not a customer service bot.