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-6/

{
  "context": "Tests whether the agent uses @fastify/error to define typed error classes, registers @fastify/sensible to use its reply helper methods, installs a global setErrorHandler for centralised formatting, and adds a plugin-scoped error handler for a route group.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "@fastify/error imported",
      "description": "The code imports `createError` from '@fastify/error' (not from any other package)",
      "max_score": 12
    },
    {
      "name": "Custom error types created",
      "description": "At least two error types are created using createError() with a unique error code string, a message template, and an HTTP status code (e.g. createError('NOT_FOUND', '%s not found', 404))",
      "max_score": 10
    },
    {
      "name": "@fastify/sensible registered",
      "description": "fastifySensible (or equivalent default export) from '@fastify/sensible' is registered with app.register()",
      "max_score": 12
    },
    {
      "name": "Sensible helper methods used",
      "description": "At least one of reply.notFound(), reply.badRequest(), reply.unauthorized(), reply.forbidden(), reply.conflict(), or reply.tooManyRequests() is called inside a route handler",
      "max_score": 10
    },
    {
      "name": "Global setErrorHandler registered",
      "description": "app.setErrorHandler() is called at the top-level Fastify instance (not only inside a sub-plugin) to install a global error handler",
      "max_score": 15
    },
    {
      "name": "Error handler logs with request.log",
      "description": "The global error handler calls request.log.error() (or request.log.warn()) to log the error before sending a response",
      "max_score": 8
    },
    {
      "name": "Structured error response shape",
      "description": "The global error handler sends a JSON body that includes at least `statusCode` and `message` fields derived from the error object",
      "max_score": 8
    },
    {
      "name": "Plugin-scoped error handler",
      "description": "At least one route group registered with app.register() has its own fastify.setErrorHandler() called inside that plugin scope",
      "max_score": 12
    },
    {
      "name": "setNotFoundHandler configured",
      "description": "app.setNotFoundHandler() is called to customize the 404 response when a route is not matched",
      "max_score": 8
    },
    {
      "name": "5xx details hidden in prod",
      "description": "The global or plugin error handler conditionally hides internal error details for status codes >= 500 (e.g. checks statusCode >= 500 or uses a generic 'Internal Server Error' message for those cases)",
      "max_score": 5
    }
  ]
}

evals

README.md

tile.json