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 skills add fellipeutaka/leon --skill drizzle-ormgit clone --depth 1 https://github.com/fellipeutaka/leonWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/fellipeutaka/leon/drizzle-orm)<a href="https://agentmods.dev/skills/fellipeutaka/leon/drizzle-orm"><img src="https://agentmods.dev/badge/skills/fellipeutaka/leon/drizzle-orm/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/fellipeutaka/leon/drizzle-orm"><img src="https://agentmods.dev/badge/skills/fellipeutaka/leon/drizzle-orm.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00128 | $0.02746 |
| Opus 5.5 | $0.00051 | $0.01098 |
| Sonnet 5.5 | $0.00026 | $0.00549 |
| Haiku 4.5 | $0.00013 | $0.00275 |
Grade A, and why
drizzle-orm 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 1mo 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.
How it starts
The opening of the file, as written. The whole thing — 343 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Drizzle ORM
~7.4kb minified+gzipped, zero dependencies, serverless-ready.
Quick Start
Install
# PostgreSQL
npm i drizzle-orm pg
npm i -D drizzle-kit @types/pg
# MySQL
npm i drizzle-orm mysql2
npm i -D drizzle-kit
# SQLite
npm i drizzle-orm better-sqlite3
npm i -D drizzle-kit @types/better-sqlite3
# Turso / LibSQL
npm i drizzle-orm @libsql/client
npm i -D drizzle-kit
# Bun SQL (PostgreSQL — zero extra deps)
bun add drizzle-orm
bun add -D drizzle-kit
# Bun SQLite (zero extra deps, sync APIs)
bun add drizzle-orm
bun add -D drizzle-kit
Config
// drizzle.config.ts
import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "postgresql", // "postgresql" | "mysql" | "sqlite" | "turso" | "singlestore"
schema: "./src/db/schema.ts",
out: "./drizzle",
dbCredentials: {
url: process.env.DATABASE_URL!,
},
});
Schema
// src/db/schema.ts
import { pgTable, serial, text, integer, timestamp } from "drizzle-orm/pg-core";
export const users = pgTable("users", {
id: serial().primaryKey(),
name: text().notNull(),
email: text().unique(),
createdAt: timestamp().defaultNow(),
});
export const posts = pgTable("posts", {
id: serial().primaryKey(),
title: text().notNull(),
content: text(),
authorId: integer("author_id").references(() => users.id),
});
Connect & Query
import { drizzle } from "drizzle-orm/node-postgres";
import { eq } from "drizzle-orm";
import * as schema from "./schema";
const db = drizzle(process.env.DATABASE_URL!, { schema });
// select
const allUsers = await db.select().from(schema.users);
// insert
const [user] = await db.insert(schema.users)
.values({ name: "Dan", email: "[email protected]" })
.returning();
// update
await db.update(schema.users)
.set({ name: "Daniel" })
.where(eq(schema.users.id, 1));
// delete
await db.delete(schema.users).where(eq(schema.users.id, 1));
See references/connections.md for all provider setups (Neon, Turso, Supabase, D1, etc.).
What ships with it
13 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/openai.yaml 203 B
- references/advanced-patterns.md 7.5 KB
- references/column-types-minor-dialects.md 5.6 KB
- references/connections.md 15 KB
- references/drizzle-seed.md 5.4 KB
- references/migrations.md 6.7 KB
- references/queries.md 11 KB
- references/relations.md 9.6 KB
- references/schema-mysql.md 8.0 KB
- references/schema-postgresql.md 13 KB
- references/schema-sqlite.md 5.7 KB
- references/schema-validation.md 5.1 KB
- references/transactions-and-batch.md 3.9 KB
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.
- 1mo ago First seen · 343 lines · 128 tokens per session scan A d793f3abaca2
drizzle-orm is a skill published in the GitHub repository fellipeutaka/leon (5 stars, last pushed 24d ago), licensed MIT. It adds 128 tokens to every session and 2,746 once invoked, about $0.0005 per session on Opus 5.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 skills, from other repositories
psl-ast-layers
How to use the PSL syntax tree layers (green tree, red tree, strongly-typed AST classes) correctly. Use for any PSL-related work: PSL interpreters (contract-psl), helpers inside the psl-parser package, the language server, formatters, or anything else that consumes parse() output from @internal/psl-parser.
ast-visitor-pattern
Use the frozen-class/visitor pattern for discriminated unions that have multiple dispatch sites. Use when creating a new set of variants (commands, IR nodes, factory calls) that will be switched over in 2+ places, or when refactoring an existing union type that has grown multiple switch sites.
no-bare-casts
Writing as in TypeScript or TSX production code, modifying a file that contains a bare as cast, silencing a type error with a cast, encountering as unknown as, or reviewing a cast site.
bumping-biome
Bumps biome package versions (e.g. @biomejs/biome) using pnpm, aligns biome.jsonc files with the new version/s across the repository and runs biome-related checks. Use when required to update biome to a newer version - explicitly or implicitly (e.g. after running pnpm up, pnpm update, pnpm upgrade without specific…
qdrant-clients-sdk
Qdrant provides client SDKs for various programming languages, allowing easy integration with Qdrant deployments.
azure-cosmos-ts
Data plane SDK for Azure Cosmos DB NoSQL API operations — CRUD on documents, queries, bulk operations.