fastify-best-practices: Aligning Fastify Backend Practices with Agent Skills

前言

用 Fastify 搭 REST API 时,路由怎么拆、插件怎么封装、请求校验和响应序列化怎么配,往往要对照官方文档和仓库里的示例来回翻。把 AI 助手拉进协作后,它给出的代码有时偏 Express 习惯,有时忽略 Fastify 的封装边界和 Schema-first 约定。下面介绍 fastify-best-practices 这套 Skill:在构建、配置或排查 Fastify 应用时,让助手按同一套规则文件给出建议与示例。

这是什么

fastify-best-practices 是一份面向 AI 辅助开发的说明文档(SKILL.md 及 rules/ 下的分主题规则),用于指导用 JavaScript 或 TypeScript 开发 Fastify 后端与 REST API。官方目录在 mcollina/skills 仓库的 skills/fastify;该仓库由 Matteo Collina 维护,其中 fastify Skill 在仓库索引里描述为「Comprehensive best practices for Fastify development」。Skill 元数据中的触发场景包括:定义路由、实现插件、JSON Schema 校验、错误处理、性能、认证、CORS 与安全头、数据库、WebSocket、生产部署,以及完整请求生命周期(hooks、序列化、Pino 日志)和通过 strip types 的 TypeScript 集成。

核心功能

Skill 把实践拆成可单独阅读的规则文件,助手在相关任务下按需加载对应章节。

规则主题(与官方列表一致)

文件 侧重
rules/plugins.md 插件开发与封装
rules/routes.md 路由组织与 handler
rules/schemas.md JSON Schema 校验
rules/error-handling.md 错误处理模式
rules/hooks.md Hooks 与请求生命周期
rules/authentication.md 认证与授权
rules/testing.md 使用 inject() 做测试
rules/performance.md 性能优化
rules/logging.md 使用 Pino 记录日志
rules/typescript.md TypeScript 集成
rules/decorators.md 装饰器与扩展
rules/content-type.md Content-Type 解析
rules/serialization.md 响应序列化
rules/cors-security.md CORS 与安全头
rules/websockets.md WebSocket
rules/database.md 数据库集成模式
rules/configuration.md 应用配置
rules/deployment.md 生产部署
rules/http-proxy.md HTTP 代理与 reply.from()

文档中强调的原则

  • Encapsulation:插件系统自动封装作用域。
  • Schema-first:用 Schema 做校验与序列化。
  • Performance:在正确使用内置能力的前提下发挥框架性能取向。
  • Async/await:handler 与 hook 均支持异步函数。
  • Minimal dependencies:优先 Fastify 内置能力与官方插件。

常见场景下的阅读顺序

官方在 Skill 里给出了分场景路径,便于助手或人工按任务跳转:

  • 刚接触 Fastify:plugins.md → routes.md → schemas.md
  • 加认证:plugins.md → hooks.md → authentication.md
  • 做性能:schemas.md → serialization.md → performance.md
  • 写测试:routes.md → testing.md
  • 上生产:logging.md → configuration.md → deployment.md

安装与启用

Agent Skill 本质是文本指令包,各平台加载方式不同;下列方式来自社区索引 awesome-agent-skills 的通用说明,安装对象指向 GitHub 上的 Skill 源(本 Skill 路径为 mcollina/skills 下的 skills/fastify)。

  1. npx skills CLI(见 vercel-labs/skills):
npx skills find fastify
npx skills add mcollina/skills
npx skills list
  1. Claude Code:在环境中执行 /skills add,参数为 Skill 的 GitHub 地址(例如仓库 URL 或指向 skills/fastify 的 raw 路径,以你当前 Claude Code 文档为准)。

  2. Claude.ai:在新对话中粘贴 SKILL.md 的 raw URL,让模型读取完整说明。

  3. Codex / GitHub Copilot 等:按各产品文档中的 Agent Skills 章节,将仓库或 Skill 目录加入技能列表;社区索引将 Cursor、Copilot、Gemini CLI 等列为兼容环境,具体菜单以对应文档为准。

启用后,在对话里描述 Fastify 相关任务(例如「用 TypeScript 加一个带 Schema 的 POST 路由」),助手应匹配 Skill 描述中的触发词(如 Fastify、REST API、server.ts)并读取对应 rules/*.md。

典型用法

Skill 自带的 Quick Start 是一段可直接运行的最小服务:开启 Pino 日志、注册 /health、监听 0.0.0.0:3000。

import Fastify from 'fastify'

const app = Fastify({ logger: true })

app.get('/health', async (request, reply) => {
  return { status: 'ok' }
})

const start = async () => {
  await app.listen({ port: 3000, host: '0.0.0.0' })
}
start()

实际项目里更常见的用法是让助手按规则文件组合能力,例如:在 plugins.md 的封装方式下注册路由模块;在 schemas.md 为 body/query 定义 JSON Schema;在 error-handling.md 统一错误响应;在 testing.md 用 inject() 做无端口 HTTP 测试。上述文件名与能力均来自官方 Skill 目录,不额外虚构业务案例。

适用场景与注意

适合谁

  • 正在用或打算用 Fastify 写 Node.js 后端、REST API 的团队,希望 AI 输出与框架惯例一致。
  • 需要覆盖从路由、插件到部署、WebSocket、数据库的一整条链路,而不是零散代码片段的开发者。

何时应激活 Skill(官方 When to use)

  • 开发 Fastify 后端、实现插件与路由 handler。
  • 需要架构与模式上的 Fastify 导向建议。
  • 使用 TypeScript(含 strip types)、inject() 测试,或配置校验、序列化与错误处理。

注意

  • Skill 是「怎么做」的说明,不包含替你安装 Node 依赖或选定云厂商;部署细节以 deployment.md 与你自己环境为准。
  • 同一仓库 mcollina/skills 还提供 node、oauth 等相邻 Skill,OAuth 与 Fastify 集成时可与 oauth Skill 配合,但本文仅核实 fastify 目录内容。
  • 助手是否每次都正确选中本 Skill,取决于平台的技能发现与描述匹配;任务描述里带上 Fastify、路由、Schema 等词更稳妥。

结尾

fastify-best-practices 把 Fastify 作者维护的实践拆成可检索的规则文件,覆盖请求生命周期、Schema、插件封装到生产部署。若你希望在 AI 协作里少踩「像 Express 但不是 Fastify」的坑,可以把该 Skill 加入常用技能列表。官方地址:https://github.com/mcollina/skills/tree/main/skills/fastify。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye