Auto-generated tile from GitHub (10 skills)
92
94%
Does it follow best practices?
Impact
92%
1.16xAverage score across 44 eval scenarios
Advisory
Suggest reviewing before use
{
"context": "Tests whether the agent uses env-schema for configuration validation, avoids forbidden patterns (config files, per-environment objects, NODE_ENV conditionals), and exposes typed config via a Fastify plugin with fastify-plugin.",
"type": "weighted_checklist",
"checklist": [
{
"name": "env-schema used",
"description": "The configuration code imports and calls envSchema() from the 'env-schema' package to parse and validate environment variables",
"max_score": 12
},
{
"name": "TypeBox schema for config",
"description": "The env-schema schema is defined using Type.Object() / Type.String() / Type.Number() etc. from '@sinclair/typebox' (not plain JSON Schema object literals)",
"max_score": 8
},
{
"name": "dotenv option used",
"description": "envSchema is called with dotenv: true to support loading from a .env file",
"max_score": 5
},
{
"name": "No config files",
"description": "There are no config/production.json, config/development.js, or similar per-environment config files anywhere in the project",
"max_score": 10
},
{
"name": "No per-env object",
"description": "There is no object or map keyed by environment name (e.g. { development: {...}, production: {...} }) used to select configuration",
"max_score": 10
},
{
"name": "No NODE_ENV conditionals",
"description": "No code path uses process.env.NODE_ENV to switch behavior (e.g. no if NODE_ENV === 'production' blocks outside of legitimate Pino setup)",
"max_score": 10
},
{
"name": "Config as fastify-plugin",
"description": "The config plugin is wrapped with fp() from 'fastify-plugin' so the config decorator is accessible throughout the application",
"max_score": 10
},
{
"name": "Config decorated on instance",
"description": "The validated config object is exposed via fastify.decorate('config', ...) on the Fastify instance",
"max_score": 10
},
{
"name": "TypeScript declaration merging",
"description": "The file declares module 'fastify' and extends FastifyInstance with a config property so routes get type-safe access to config",
"max_score": 8
},
{
"name": "Fail-fast on missing vars",
"description": "config-notes.md or code comments explain that envSchema throws at startup when a required variable is missing or fails type validation",
"max_score": 8
},
{
"name": "No process.env in routes/handlers",
"description": "Route handlers and plugins (other than the config plugin itself) do NOT read directly from process.env — they use the fastify.config decorator",
"max_score": 9
}
]
}evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
scenario-36
scenario-37
scenario-38
scenario-39
scenario-40
scenario-41
scenario-42
scenario-43
scenario-44
skills
documentation
fastify
init
linting-neostandard-eslint9
node
nodejs-core
rules
oauth
octocat
snipgrapher