CtrlK
BlogDocsLog inGet started
Tessl Logo

simon/skills

Auto-generated tile from GitHub (10 skills)

92

1.16x
Quality

94%

Does it follow best practices?

Impact

92%

1.16x

Average score across 44 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-15/

{
  "context": "Tests whether the agent uses the official @fastify/postgres adapter (not raw 'pg'), wraps the database plugin in fastify-plugin (fp()), implements a repository pattern to abstract data access, configures connection pool settings, and registers an onClose hook for cleanup.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "@fastify/postgres used",
      "description": "The database setup imports from '@fastify/postgres' and registers it with fastify.register(fastifyPostgres, ...) — NOT from the raw 'pg' package",
      "max_score": 15
    },
    {
      "name": "No raw pg in routes",
      "description": "Route handler files do NOT directly import from 'pg', 'postgres', or create database Client/Pool instances themselves",
      "max_score": 10
    },
    {
      "name": "Database plugin uses fp()",
      "description": "The database plugin file wraps its async function with fp() imported from 'fastify-plugin'",
      "max_score": 15
    },
    {
      "name": "Plugin name declared",
      "description": "The fp() call includes a second argument object with a `name` string property (e.g. { name: 'database' })",
      "max_score": 5
    },
    {
      "name": "Repository object per entity",
      "description": "At least one repository object or set of repository functions is defined for an entity (e.g. createOrderRepository or an orders object with findById, create, etc.)",
      "max_score": 12
    },
    {
      "name": "Repositories decorated on instance",
      "description": "The repository object(s) are exposed via fastify.decorate('repositories', ...) or similar, making them accessible to route handlers through the Fastify instance",
      "max_score": 10
    },
    {
      "name": "Pool max configured",
      "description": "The @fastify/postgres registration includes a numeric `max` option for pool size, OR the connection string includes pool configuration",
      "max_score": 8
    },
    {
      "name": "onClose cleanup hook",
      "description": "The database plugin registers an addHook('onClose', ...) or equivalent lifecycle hook that closes or disconnects the database connection",
      "max_score": 10
    },
    {
      "name": "DATABASE_URL from config/env",
      "description": "The database connection string is read from an environment variable or fastify.config.DATABASE_URL — NOT hardcoded as a literal string in the source file",
      "max_score": 10
    },
    {
      "name": "Parameterised queries only",
      "description": "All SQL queries use parameterised form ($1, $2, ...) — NO string interpolation or concatenation is used to construct SQL query strings",
      "max_score": 5
    }
  ]
}

evals

README.md

tile.json