CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

supabase-nextjs

Next.js with Supabase and Drizzle ORM

50

Quality

63%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/supabase-nextjs/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

72%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.

This is a strong, highly actionable pattern library: complete, executable code for the full Supabase + Next.js + Drizzle stack with minimal padding. Its two weaknesses are the absence of validation/ownership checks in the destructive server actions and the monolithic single-file structure with no progressive disclosure into reference files.

Suggestions

Add ownership checks and error handling to the mutation actions (e.g., .where(and(eq(posts.id, id), eq(posts.authorId, user.id))) and checking the returned row count) so destructive operations have validation.

Move the secondary example sections (Storage, Realtime, OAuth Providers) into references/ files (e.g., references/storage.md, references/realtime.md) and keep SKILL.md as a lean overview with one-level-deep pointers.

Add a brief numbered build sequence (install → env → schema → clients → middleware → auth pages) so a fresh project has an explicit order of operations.

DimensionReasoningScore

Conciseness

The body is almost entirely executable code with terse framing ("Drizzle for queries, Supabase for auth/storage, server components by default") and no explanations of concepts Claude already knows; only minor bulk (full login form, OAuth buttons, sign-out button) could be trimmed or externalized. This matches 'Efficient; minor instances of over-explanation that could be trimmed' rather than 5, since some complete UI components pad the token cost.

4 / 5

Actionability

Every section provides copy-paste-ready, complete TypeScript: install commands, env vars, drizzle.config.ts, all three Supabase clients, middleware, auth helpers, server actions, queries, storage, and realtime — matching 'Fully executable; copy-paste ready code or commands; specific examples cover the common cases'.

5 / 5

Workflow Clarity

Sections are ordered sensibly (setup → clients → middleware → auth → data), but the destructive/batch database operations have no validation or feedback loops: updatePost and deletePost perform no ownership check (they filter only on posts.id, not authorId) and no verify step after mutation. Per the rubric's cap, destructive operations without validation cannot score above 3.

3 / 5

Progressive Disclosure

The body has clear, well-labeled sections and cites upstream docs, but ~700 lines are entirely inlined in SKILL.md with no bundle files at all — storage, realtime, and OAuth content clearly belongs in separate reference files, matching 'Some structure but could be better organized; content that should be separate is inline'. It is not a 2 because section headers make navigation easy.

3 / 5

Total

15

/

20

Passed

Description

40%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.

The description names a precise, distinctive tech stack but stops there — it says nothing about what the skill does or when to use it. It functions as a label rather than a capability description, leaving both completeness and specificity weak. Expanding it into a one-sentence action list with a 'Use when' clause would move it into the good-example range.

Suggestions

State concrete capabilities in the description, e.g., "Sets up Supabase auth (middleware, server actions, OAuth), Drizzle schemas and migrations, and server-component data fetching for Next.js App Router."

Add an explicit trigger clause to the description, e.g., "Use when building a Next.js App Router app backed by Supabase (Postgres, auth, storage, realtime) with Drizzle ORM."

Include natural trigger variations users would say — "Supabase auth", "Drizzle schema", "SSR session refresh", ".env.local setup" — to improve keyword coverage beyond the three product names.

DimensionReasoningScore

Specificity

The description "Next.js with Supabase and Drizzle ORM" names a specific domain but lists no actions or capabilities whatsoever, matching the anchor 'Names the domain but actions are minimal or generic'. It is not a 1 because it is concrete about the stack, and not a 3 because no concrete actions (e.g., 'sets up auth', 'defines schemas') are stated.

2 / 5

Completeness

The 'what' is vague (a stack name, not a stated capability) and there is no 'when' clause in the description, matching anchor 2 'Has a vague what and no when'. The frontmatter's separate when-to-use field ('When building a Next.js app with Supabase backend') does not remedy the description itself, and the missing 'Use when...' clause caps completeness at 3 per the judging guidelines.

2 / 5

Trigger Term Quality

"Next.js", "Supabase", and "Drizzle ORM" are natural terms a user of this stack would say, but the description includes no variations, synonyms, or task-oriented phrases (auth, database queries, migrations), matching 'Some relevant keywords but missing common variations or synonyms'.

3 / 5

Distinctiveness Conflict Risk

The three-technology combination (Next.js + Supabase + Drizzle) carves a fairly distinct niche with only minor overlap risk against generic Next.js or Supabase-only skills, matching 'Mostly distinct; minor overlap risk with closely related skills'.

4 / 5

Total

11

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (733 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository

alinaqi/maggy

Path

skills/supabase-nextjs/SKILL.md

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.