CtrlK
BlogDocsLog inGet started
Tessl Logo

drizzle-orm

Apply Drizzle ORM patterns for schemas, migrations, queries, branded types, and Postgres or D1 boundaries. Use when working with Drizzle or typed SQL, not raw `bun:sqlite` or non-Drizzle engines.

67

Quality

84%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

68%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-organized, concrete guidelines body with strong executable code examples for the $type/customType decisions and genuinely non-obvious upstream grounding. Weaknesses are the absence of an explicit migration validation feedback loop and the lack of code examples in the schema/migration and query-builder rule sections.

Suggestions

Add an explicit migration feedback loop to lift workflow clarity: e.g., 1) generate migration with drizzle-kit, 2) review generated SQL against the snapshot diff, 3) fix schema and regenerate if wrong — only apply when the review passes.

Add a short code example under Schema And Migration Rules showing the single exported schema object wired into drizzle(...) and drizzle.config.ts, since that rule currently has no executable form.

Trim the duplicated statement of the serialization principle in Keep Data in Intermediate Representation (the intro sentence and '**The principle**' paragraph say the same thing).

DimensionReasoningScore

Conciseness

The body is largely lean and assumes competence (repo-specific Postgres-only context, upstream-source grounding, bad/good code pairs), but has minor trimmable redundancy — the "Keep Data in Intermediate Representation" intro sentence is restated almost verbatim in "**The principle**", and "$type<T>() is a compile-time-only type override" re-explains what the cited source already shows. This matches anchor 4 (efficient with minor over-explanation) rather than 5, where every token would earn its place.

4 / 5

Actionability

The $type<T>() and customType sections give executable, copy-paste-ready TypeScript with bad/good pairs and a concrete decision rule ("If `toDriver` and `fromDriver` would be identity functions, use `$type<T>()`"). However, the Schema/Migration and Query Builder rule sections state directives without any code examples (e.g., how to export the schema object or wire drizzle-zod), leaving minor gaps — anchor 4 rather than 5.

4 / 5

Workflow Clarity

Content is organized as rule lists rather than sequenced workflows; the only validation checkpoint is the implicit "Review generated SQL and snapshot changes together". Per the rubric's cap, database/migration operations without an explicit validate-then-fix feedback loop (generate → review snapshot/SQL → fix → regenerate) cannot score above 3, and there is no multi-step sequence that would warrant a higher anchor.

3 / 5

Progressive Disclosure

The single SKILL.md (no bundle files exist in references/, scripts/, or assets/) is well-sectioned with clear headers and one external upstream link, so navigation is easy. It is over 50 lines (~120) and the detailed $type/customType and intermediate-representation sections (~70 lines) could arguably live in a separate reference file, which keeps it at anchor 4 rather than 5.

4 / 5

Total

15

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: concrete capability list, explicit use-when guidance with negative triggers, third-person voice, and good distinctiveness. Only minor gap is a few natural trigger variations such as drizzle-kit or schema-generation phrasing.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "Apply Drizzle ORM patterns for schemas, migrations, queries, branded types, and Postgres or D1 boundaries" — covering the domain comprehensively. It matches the anchor for multiple specific concrete actions; a lower score would require dropped capability areas.

5 / 5

Completeness

It explicitly answers both "what" (apply Drizzle ORM patterns for schemas, migrations, queries, branded types, and DB boundaries) and "when" ("Use when working with Drizzle or typed SQL, not raw `bun:sqlite` or non-Drizzle engines"), including negative triggers. This is a clear match for the anchor-5 example structure.

5 / 5

Trigger Term Quality

Natural terms users would say are present ("Drizzle", "typed SQL", "Postgres", "D1", "bun:sqlite"), giving good coverage. It falls short of anchor 5 because common variations like "drizzle-kit", "schema push/generate", or file/config names (e.g., drizzle.config.ts) are missing.

4 / 5

Distinctiveness Conflict Risk

The niche is clearly staked (Drizzle ORM, Postgres/D1) and explicitly disambiguated from adjacent tools ("not raw `bun:sqlite` or non-Drizzle engines"), minimizing wrong-skill triggering. Voice is third person, so no penalty applies.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
EpicenterHQ/epicenter
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.