入门 📋 6 个步骤 第 620 / 620 篇

用 backendskills 给编码 Agent 装上后端防坑技能:npx skills add 三技能落地与 bench 验收实操

backendskills 是给 Claude Code、Codex 与 Cursor 准备的三份 Agent 技能,分别管接口、数据一致性与数据库迁移。本教程按官方 README 六步落地:审阅仓库与前置、一条 npx 命令安装、把 dist/AGENTS.md 追加给 Codex 类 Agent 并把 dist/cursor/ 复制进 Cursor rules、读懂三份技能并填写团队约定、用仓库 bench 做一次对照自测,最后验证技能生效并处理更新与卸载。主线不新增 API Key。

2026.11.13· 18 分钟阅读· 约 3629 字· 🧰 backendskills / 📐 AGENTS.md 规则

让编码 Agent 写一个下单接口,它往往能写出「演示能跑」的版本:没给登录加限流、读后写不加锁、改列名直接一把梭。backendskills 把这类后端约定写成三份技能文件,挂到 Agent 每次都会读的规则里。本教程按官方仓库 README,从安装、挂载、填写团队约定到用仓库自带的 bench 做对照自测,六步走完;作者公布的效果数字也会照原样标注口径,不当成通用承诺。

🧰 适合谁:用 Claude Code、Codex 或 Cursor 写后端接口与迁移脚本,希望少踩鉴权、并发与上线顺序坑的开发者。前置准备:Node.js 与 npx 可用、一个已装好并能正常对话的上述 Agent、一个可回滚的练习仓库、能打开 GitHub 仓库页面审阅内容。技能本身不新增 API Key;但 Agent 的登录态等同于账号凭据,跑批量任务会产生真实用量,别把 token 写进提交到仓库的规则文件。

先弄清:技能是提示词约束,不是静态检查

这一步先定预期。三份技能本质上是写进 SKILL.md 与规则文件的说明文字,靠 Agent 在生成代码时读进去起作用。它们不会在提交时拦截代码、不会跑类型检查、也不构成权限边界。官方 README 对每份技能的描述都是「让 Agent 默认怎么做」,而不是「保证不犯错」。

技能官方描述里 Agent 默认会做的事
api-endpoint每条查询按调用者限定范围、把坏输入转成 4xx、给登录与昂贵路由加限流
data-integrity读后写用锁或条件更新、加 UNIQUE 约束、给收费或发送类操作加幂等键
db-migrationexpand then contract、并发建索引、锁超时、分批回填、写 down migrations

关于效果数字:作者在 README 里给出一次自测:15 个后端任务、两个模型、每个任务跑 5 次,用 Agent 看不到的隐藏检查评分(例如 20 个买家同时抢 5 件库存、用户读别人的订单、部署中途旧版应用跑在新 schema 上)。带严重错误的运行从 150 次里的 25 次降到 2 次。这是作者在特定模型与任务上的单轮自测,不是通用性能承诺;README 也写明其中 10 个任务在两臂下都没有严重错误,差距主要来自登录限流与改列名两项。下面 Step 5 会把口径逐条拆开。

Step 1:审阅仓库与前置核对

1 先看清楚要装进项目的是什么

npx skills add 会从 GitHub 仓库拉内容并写进你的项目,动手前先把仓库结构、许可与构建方式看一遍。官方 README 标注许可为 MIT,仓库最后提交时间为 2026-11-09,包含 skills/(源)、dist/(生成物)、bench/(评测任务与原始运行记录)与 scripts/build-dist.mjs。

# 前置:确认 Node 与 npx 可用
node --version
npx --version

# 在线审阅仓库结构(浏览器打开也可以)
# https://github.com/globalmpc/backendskills
# 重点看:README.md、LICENSE、skills/、dist/、bench/

# 准备一个可回滚的练习仓库
git status --short
git log -1 --oneline

# 记下当前 Agent 的规则文件位置,避免待会被覆盖
# Claude Code 用 .claude/skills/,Codex 类看 AGENTS.md,Cursor 看 .cursor/rules/

建议先在练习仓库里跑完整条链路,确认技能确实改变了 Agent 的输出,再决定要不要挂到日常项目。挂载动作会改动项目内的规则文件,提前留好可回滚的状态。

💡 把「审阅来源」当成固定动作:技能文件是会被 Agent 当作指令读进去的文本,来源不明的内容等同于把提示词注入口子交出去。团队环境里请先过一遍合规要求。

Step 2:用一条命令安装,并确认落盘位置

2 npx skills add 装三份技能

官方 README 给的安装命令只有一行。装完检查项目里新增了哪些文件,尤其是技能目录与规则目录,别只看到命令成功就往下走。

# 安装(官方 README 原样)
npx skills add globalmpc/backendskills

# 安装后核对落盘位置
# Claude Code:.claude/skills/ 下出现三份技能
# 生成物:仓库 dist/AGENTS.md 与 dist/cursor/

# 用 git 看清楚这次改动了哪些文件
git status --short

# 若项目里已有同名技能,先备份再决定合并方式
cp -r .claude/skills .claude/skills.bak

README 还提供了两条手工路线,供不通过 npx skills add 的 Agent 使用:Codex 及其它读 AGENTS.md 的 Agent 追加仓库里的 dist/AGENTS.md;Cursor 把 dist/cursor/ 复制进 .cursor/rules/。这两步在下一步做。

别覆盖已有规则:官方说的是「追加」与「复制」,不是替换。项目里若已有 AGENTS.md 或 .cursor/rules/ 下的自定义规则,直接覆盖会把团队既有约定弄丢。另外,dist/ 是生成物:改了 skills/ 里的源文件后要跑 node scripts/build-dist.mjs 重新生成,否则挂载的还是旧文本。

Step 3:挂到 Codex 类 Agent 与 Cursor rules

3 让每个 Agent 都读得到这份约定

三条挂载路径互不相同,按你实际用的客户端选。重点是「追加」而不是覆盖,并在挂完后让 Agent 复述一次它读到的规则,确认文件真的生效。

# Claude Code:安装器已写入 .claude/skills/,核目录即可
# 三份技能分别是 api-endpoint、data-integrity、db-migration

# Codex 及其它 AGENTS.md 类 Agent:把生成物追加到项目规则
cat dist/AGENTS.md >> AGENTS.md

# Cursor:把生成物复制进规则目录
mkdir -p .cursor/rules
cp -r dist/cursor/* .cursor/rules/

# 验收:在对应客户端里问一句
# 「列出你当前读到的后端约定,包含哪些技能?」
# 预期:能说出上面三份技能各自的关注点

# 确认改动范围
git diff --stat

如果客户端支持按目录加载技能,也可以直接把 skills/ 下的三份 SKILL.md 指给它;但要注意 dist/ 与 skills/ 是两份文本,改了源不同步生成物就会出现「Agent 读到的和我改的不一致」。

💡 挂载完成后做一次极小的对照:同一个提示词(例如「给这个登录接口加一层保护」),在挂载前后各跑一次,比较输出里有没有出现限流与 4xx 处理。这比只看文件是否存在更能说明技能真的被读进去了。

Step 4:读懂三份技能,并填写团队约定

4 把 Make it yours 从 not set 改成自己的口径

官方说明每份技能末尾都有一段 Make it yours,用来写团队自己的选择,例如错误响应格式、API 文档要求。随包发布的版本里这些行写的是 not set;留空时 Agent 会跟随仓库里已有的做法。把这三段填实,技能才贴合你的项目。

# 逐份读源技能(三个文件)
# skills/api-endpoint/SKILL.md
# skills/data-integrity/SKILL.md
# skills/db-migration/SKILL.md

# 在每份末尾的 Make it yours 段写清团队约定,例如:
# 错误响应格式:统一用 RFC 7807 problem+json
# 接口文档:新增或修改路由时同步更新 docs/api.md
# 迁移回滚:每个 up 迁移必须配一个可执行的 down

# 改完源文件后重建生成物(官方 Contributing 说明)
node scripts/build-dist.mjs

# 重新挂载生成物,并确认 Agent 读到的是新文本
git diff --stat
cat dist/AGENTS.md | head -n 20

这一步有个容易忽略的口径差别:README 里「团队约定遗漏从 30 次降到 4 次」这组数字,用的是 bench/skills-overlay 里已经写好团队约定的技能版本,而且带技能那一臂整体都用的这个版本。直接装随包发布的 not set 版本,不等于复现这组数字。

填写约定要具体到可检查:「错误格式统一」「文档要全」这类话 Agent 没法判定;写清楚用哪个规范、改哪个文件、由谁验收才有用。同时记住这些是文本约定,不是 linter:提交前仍要靠自己的代码审查、测试与数据库迁移演练兜底。

Step 5:用仓库 bench 做一次对照自测

5 看清目录结构,再按自己的预算跑

仓库 bench/ 里放着任务、评测方式与每一次原始运行记录,作者明确说明数字可复现。先读目录与 runs.jsonl 的字段,再决定要不要按自己的模型与预算重跑一小部分,别一上来就照搬 150 次。

# 先看目录与说明(浏览器或本地克隆后查看)
# bench/ 下含任务定义、overlay 技能版本与 runs.jsonl

# 每条运行记录里关注这些字段
# task 名称、使用的模型、是否带技能、error_reason
# README 说明:被 usage_limit_reached 中止的运行,原因写在 error_reason

# 用项目里已有的一个真实任务做小样本对照(示意)
# A 臂:不带技能,让 Agent 实现「限量 5 件的秒杀下单」
# B 臂:带技能,同一提示词再跑一次
# 对照点:登录与昂贵路由是否限流、读后写是否加锁或条件更新、
#        是否有 UNIQUE 约束与幂等键、改列名是否走 expand then contract

# 自己写隐藏检查,别把检查内容放进提示词里
# 例如:并发 20 个买家抢 5 件库存,检查超卖与重复扣款

把作者的口径逐条对上,读结果时才不会误读:严重错误从 150 次里的 25 次降到 2 次,其中 Haiku 是 12/75 降到 2/75、Sonnet 是 13/75 降到 0/75;login-rate-limit 与 rename-column 两项就占了 25 次里的 20 次;10 个任务在两臂下都没有严重错误;Haiku 对乱序支付 webhook 事件仍未修好。另有 25 次运行因评测账号额度上限中止,21 个 Opus 运行属于未完成的局部运行,都没有计入结果。

💡 自测的价值不在于复现别人的数字,而在于确认「在你的仓库、你的模型、你的约定」下,技能有没有把该有的检查带进代码。把隐藏检查写成脚本,跑完留档,比手看一遍 diff 可靠。

成本会上升:README 写明带技能后 Agent 做得更多:每轮从 0.06 美元升到 0.11 美元、从 14 轮对话升到 23 轮(Sonnet 为 0.12 到 0.20 美元,Haiku 为 0.012 到 0.019 美元)。技能是让 Agent 多想多做,不是省钱手段;批量评测前先设好预算上限,并留意 usage_limit_reached 这类中止原因。

Step 6:验证生效、回归与更新收口

6 把技能纳入日常流程,而不是装完就忘

最后把「技能真的被读到」变成可重复的检查,并写清楚更新与回退方式。官方 Contributing 说明,改 skills/ 后要重建 dist/;README 也写明许可为 MIT,允许团队按自己的约定改造。

# 回归清单(每次更新规则后逐条过一遍)
# 1. 三个 Agent 各自能复述三份技能的关注点
# 2. 一段登录接口提示词的输出里含限流与 4xx 处理
# 3. 一段改列名的提示词走 expand then contract 并配 down 迁移
# 4. 自己写的隐藏检查脚本通过
# 5. git diff 里没有把团队原有规则覆盖掉

# 改过源文件后重新生成并重新挂载
node scripts/build-dist.mjs
git diff --stat

# 回退:删掉本次追加的规则段与复制的 cursor 规则
# 用 Step 1 记下的 git 状态对照,确认工作树干净
git status --short

# 更新前先看仓库 README 与提交历史,别直接覆盖本地已填的 Make it yours

更新时最容易被冲掉的是你已经填好的 Make it yours 段。把团队约定单独留一份可对比的文本,升级后先 diff 再合并,比直接重跑安装稳妥。

交付前自查:本教程的安装命令、三份技能职责、dist/ 生成方式与自测口径来自官方仓库 globalmpc/backendskills 的 README;仓库较新,技能清单、评测数据与生成脚本会变,请以你使用当天的 README 与 LICENSE 为准。作者数字是特定条件下的自测,不是对你项目的保证;技能是提示词约束,不替代代码审查、测试、迁移演练与数据库备份。任何落地改动都请自行审 diff 并复跑测试后再提交。

做到哪一步算成功

四条验收都过,才算这套技能真的落地了:① 你能说清三份技能各自管什么,以及它们只是提示词约束、不是静态检查;② Claude Code、Codex 类 Agent 与 Cursor 三处至少有一处能复述技能内容,且原有规则没有被覆盖;③ 用同一段后端提示词做挂载前后对照,输出里确实多出了限流、幂等键、并发更新或分阶段迁移之类的处理;④ 你用自己的隐藏检查脚本验过一次,并把 Make it yours 填成团队可判定的约定、重建了 dist/。做到这些,再把规则文件提交到仓库并写进新同事的上手清单。

常见问题速查

你遇到的现象大概率原因与处理
Agent 完全没提到技能内容规则文件没挂到它实际会读的路径,或会话在挂载前就开了;重开会话再问一次
装完把 AGENTS.md 原有内容冲掉了用了覆盖而不是追加;从 git 恢复后改用追加重做
改了 SKILL.md 但 Agent 读到的还是旧文本挂载的是 dist/ 生成物,改源后要跑 node scripts/build-dist.mjs 并重新挂载
照着 25 到 2 的数字复现不出来那是作者单轮自测;带技能臂用了写好团队约定的 overlay 版本,且样本与模型不同
团队约定那组 30 到 4 对不上随包发布的 Make it yours 是 not set,需要先填实再评
跑评测中途大批运行被中止评测账号撞到额度上限,检查 runs.jsonl 里的 error_reason 并缩小样本
带技能后费用与轮次变高符合 README 口径:Agent 做得更多,按预算设上限
代码看起来合规但线上仍出问题技能不替代审查与测试;补齐隐藏检查、迁移演练与回滚预案
← 返回教程中心