fastify-best-practise

Apply Fastify best practices when creating servers, plugins, routes, schemas, hooks, configuration, decorators, error handling, testing, and TypeScript integration. Use when writing or reviewing Fastify code, setting up a new Fastify project, or asking "How should I structure my Fastify app?"

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "fastify-best-practise" with this command: npx skills add thecodepace/fastify-skills/thecodepace-fastify-skills-fastify-best-practise

Fastify Best Practices

A curated set of rules and patterns for building production-ready Fastify applications. Each rule includes incorrect and correct examples with explanations.

How It Works

  1. The agent identifies that the user is working with Fastify or asking about Fastify patterns
  2. The relevant rule file is loaded based on the topic (routes, validation, encapsulation, etc.)
  3. The agent applies the best practices from the rule when generating or reviewing code

Rules

The rules are organized by topic in the rules/ directory. Each rule follows a consistent format with impact rating, incorrect/correct examples, and references to official docs.

RuleFileImpactDescription
Configurationconfiguration.mdHIGHEnvironment config, logger setup, security options, and graceful shutdown
Create Servercreate-server.mdLOW-MEDIUMUse a buildServer() factory function for reusable, testable server setup
Create Plugincreate-plugin.mdLOW-MEDIUMEncapsulate reusable functionality in plugins with fastify-plugin
Autoloadautoload.mdHIGHAutomatically load plugins and routes from the filesystem with @fastify/autoload
Route Best Practicesroute-best-practices.mdMEDIUMOrganize routes with plugins/prefixes, use async handlers, full route options
Schema Validation (Zod)schema-validation-zod.mdHIGHType-safe validation with Zod + fastify-type-provider-zod
Encapsulationencapsulation.mdHIGHProper scope isolation and when to use fastify-plugin
Error Handlingerror-handling.mdHIGHCustom error handlers, @fastify/error, 404 handling, structured responses
Hooks & Lifecyclehooks-lifecycle.mdMEDIUMAll request/reply and application hooks: onRequest, preParsing, preValidation, preHandler, preSerialization, onError, onSend, onResponse, onTimeout, onRequestAbort, onReady, onListen, onClose, onRoute, onRegister
Logginglogging.mdHIGHBuilt-in Pino logger, request correlation, redaction, child loggers
Authenticationauthentication.mdHIGHJWT auth with @fastify/jwt, multi-strategy with @fastify/auth
Testingtesting.mdHIGHTest with inject(), buildServer pattern, vitest/node:test
TypeScripttypescript-integration.mdMEDIUMType providers, module augmentation, typed decorators
Decoratorsdecorators.mdMEDIUMExtend the Fastify instance, request, and reply with decorate / decorateRequest / decorateReply
Content Type Parsercontent-type-parser.mdHIGHCustom content type parsers, body limits, multipart uploads, catch-all and regex matching

Usage

When generating Fastify code, read the relevant rule file(s) for the topic and apply the patterns shown. For a new project, all rules are relevant. For specific tasks, load only what's needed:

  • New project setup: create-server.md, configuration.md, autoload.md, encapsulation.md, typescript-integration.md
  • Adding routes: route-best-practices.md, autoload.md, schema-validation-zod.md
  • Adding shared services: create-plugin.md, autoload.md, encapsulation.md
  • Configuration/environment: configuration.md
  • Error handling: error-handling.md
  • Auth/middleware: authentication.md, hooks-lifecycle.md, encapsulation.md
  • Custom decorators: decorators.md, typescript-integration.md
  • Logging: logging.md
  • Body parsing/file uploads: content-type-parser.md
  • Writing tests: testing.md, create-server.md

Recommended Project Structure

Using @fastify/autoload, plugins and routes are loaded automatically from their directories:

src/
  plugins/          # Autoloaded — shared plugins (use fastify-plugin)
    db.ts
    auth.ts
    config.ts
  routes/           # Autoloaded — encapsulated route plugins (NO fastify-plugin)
    _hooks.ts       # Global route hooks (with autoHooks: true)
    users/
      index.ts      # → /users
      _hooks.ts     # Hooks for /users scope only
      schema.ts
    posts/
      index.ts      # → /posts
      schema.ts
  server.ts         # buildServer() with autoload registration
  app.ts            # Entry point — calls buildServer() and listen()
test/
  routes/
    users.test.ts
    posts.test.ts
  helpers.ts        # createTestServer() helper

Present Results to User

When applying these best practices, mention which rule(s) you followed:

Applied Fastify best practices:

  • Route organization: Routes grouped by resource with prefixes
  • Zod validation: Request/response schemas with type inference
  • Encapsulation: Shared plugins use fastify-plugin, routes stay scoped
  • Error handling: Custom error handler with @fastify/error

Reference

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Cloud Sdk

The Go Cloud Development Kit (Go CDK): A library and tools for open cloud development in Go. go cloud, go, aws, azure, cloud, gcp, go. Use when you need go c...

Registry SourceRecently Updated
Coding

Xint Rs

Fast X Intelligence CLI (Rust) — search, analyze, and engage on X/Twitter from the terminal. Use when: (1) user says "x research", "search x for", "search tw...

Registry SourceRecently Updated
43900xNyk
Coding

Md Web

Publish markdown files as shareable web pages and return a clickable link.

Registry SourceRecently Updated
Coding

Homeassistant Toolkit

Deep integration with Home Assistant via REST API. Control devices, manage automations, query entity states, and manage scenes/scripts from the command line....

Registry SourceRecently Updated
1610Profile unavailable