Express/Hono with Supabase and Drizzle ORM
35
32%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/supabase-node/SKILL.mdQuality
Discovery
22%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This description is essentially a technology stack label with no actionable information. It fails to describe what the skill does, when it should be used, or what specific tasks it enables. Claude would struggle to reliably select this skill from a list because there are no concrete actions or explicit trigger guidance.
Suggestions
Add concrete actions describing what the skill does, e.g., 'Sets up Express or Hono API servers with Supabase integration, defines Drizzle ORM schemas, generates migrations, and implements CRUD endpoints.'
Add an explicit 'Use when...' clause, e.g., 'Use when the user needs to build a backend API with Express or Hono, connect to Supabase, define database schemas with Drizzle, or generate migrations.'
Include natural trigger terms users would say, such as 'API', 'backend', 'REST endpoints', 'database schema', 'migrations', 'server setup', and file extensions like '.ts' or '.sql'.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | The description only names technologies (Express/Hono, Supabase, Drizzle ORM) without describing any concrete actions. There are no verbs or specific capabilities listed—it reads more like a tech stack label than a skill description. | 1 / 3 |
Completeness | The description answers neither 'what does this do' nor 'when should Claude use it'. There is no 'Use when...' clause and no explanation of capabilities—just a list of technology names. | 1 / 3 |
Trigger Term Quality | It includes some relevant technology keywords (Express, Hono, Supabase, Drizzle ORM) that users might mention, but lacks common variations or related terms like 'API', 'backend', 'database', 'REST', 'server', 'routes', 'schema', or 'migrations'. | 2 / 3 |
Distinctiveness Conflict Risk | The specific combination of Express/Hono + Supabase + Drizzle ORM is somewhat distinctive, but without describing what the skill actually does, it could overlap with any backend development, database, or ORM-related skill. | 2 / 3 |
Total | 6 / 12 Passed |
Implementation
42%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This skill is essentially a full project boilerplate/template rather than a concise skill document. While the code is high-quality, executable, and well-structured, it massively over-invests tokens on patterns Claude already knows (Express CRUD, Zod validation, error handling). The key value-add — the specific integration decisions between Supabase auth, Drizzle ORM, and Express/Hono — is buried in hundreds of lines of standard boilerplate.
Suggestions
Reduce to ~100 lines focusing on the unique integration patterns: Supabase JWT verification with Drizzle queries, when to use supabaseAdmin vs supabase client, and the `prepare: false` pooling requirement. Remove standard Express/CRUD boilerplate.
Split detailed code examples (full route files, test setup, storage patterns) into separate bundle files and reference them from the main SKILL.md with clear one-level-deep links.
Add explicit validation checkpoints: verify DB connection after setup, run `drizzle-kit push` and confirm schema, and add ownership checks in update/delete routes.
Remove the anti-patterns section or reduce to 2-3 items unique to this stack (e.g., 'Use Drizzle not Supabase client for queries', 'Never expose service key'). Items like 'use env vars' and 'use async' are universal knowledge.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | This is extremely verbose at ~500+ lines, essentially a full project boilerplate dump. Claude already knows Express, Hono, Drizzle, and Supabase patterns. Most of this content (CRUD routes, error handlers, multer uploads, test setup) is standard boilerplate that doesn't need to be spelled out in full. The skill could be reduced to ~100 lines of key patterns and decisions. | 1 / 3 |
Actionability | Every section provides fully executable, copy-paste ready TypeScript code with correct imports, proper typing, and realistic patterns. The code is complete and specific, covering setup commands, configuration, schemas, middleware, routes, and tests. | 3 / 3 |
Workflow Clarity | The project structure and setup steps are laid out in a logical sequence (install → config → db → auth → routes → app), but there are no explicit validation checkpoints. For example, there's no step to verify the database connection works, no migration workflow validation, and the update/delete routes don't verify ownership before modifying posts (a significant gap). | 2 / 3 |
Progressive Disclosure | Everything is inlined in a single monolithic file with no references to supporting documents. The full route implementations, query functions, test setup, storage endpoints, and Hono alternative could all be split into separate reference files. The skill reads as a complete project template rather than a navigable skill document. | 1 / 3 |
Total | 7 / 12 Passed |
Validation
81%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 9 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
skill_md_line_count | SKILL.md is long (837 lines); consider splitting into references/ and linking | Warning |
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 9 / 11 Passed | |
7e5f7a2
Table of Contents
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.