Skip to main content
不想手动配置?将本页链接粘贴到 Devin 会话中,让它为你完成所有设置。
1

创建迁移核对清单技能

仓库技能是一个 markdown 文件,你需要将其提交到任意仓库中的 .agents/skills/<your-skill>/ 目录下。Devin 能看到所有已连接仓库中的所有技能——你可以手动触发它们,或者当 Devin 检测到相关情况时自动触发。这个技能会精确告知 Devin 在打开或更新 PR 之前应该如何审查数据库迁移,从而捕捉到常规代码审查通常会遗漏的错误。在你的代码仓库中提交 .agents/skills/migration-checklist/migration-checklist.md 文件:
一旦这个文件被提交,Devin 就会将其视为一项可用技能。每当当前会话涉及此代码库中的迁移文件时,Devin 都可以自动触发该检查清单,或者你也可以在任何时候手动执行它。
2

在实际迁移中查看该技能的触发方式

当 Devin 处理会添加或修改迁移文件的任务时,它会读取 diff,匹配迁移检查清单技能,并在打开 PR 之前按照检查清单执行操作。实际执行过程如下:
  1. 扫描 diff — Devin 看到 db/migrate/ 中有新文件,并激活迁移检查清单技能
  2. 标记破坏性操作 — 该迁移移除了 legacy_email 列。Devin 添加了一条 PR 评论:
    remove_column :users, :legacy_email 是一个破坏性操作。 已验证:迁移包含数据备份步骤,会在删除前将值复制到 user_archives 中。
  3. 补充缺失索引 — 该迁移向 invoices 表添加了 account_id 列,但没有索引。Devin 将 add_index :invoices, :account_id 追加到迁移文件中
  4. 执行回滚 — Devin 在测试数据库上执行 bin/rails db:migrate:rollback STEP=1。回滚执行成功
  5. 重新生成 schema — Devin 运行 bin/rails db:schema:dump,检测到 db/schema.rb 中的 diff,并在提交中包含更新后的文件
  6. 运行模型测试 — 所有模型测试均通过。Devin 打开 PR,并附上每项检查结果的摘要
PR 描述中包含一个检查清单,展示哪些检查通过了、哪些是 Devin 修复的,这样审阅者就可以将精力集中在业务逻辑上,而不是迁移实现细节上。
3

将该技能适配到你的 ORM 和技术栈

上面的检查清单主要针对 Rails,但同样的结构适用于任何 ORM。请让 Devin 按你的技术栈重写这个技能:
4

逐步扩展检查清单

每一次迁移事故都能暴露出清单未覆盖的空白。每发生一次事故,就补充一条规则——只需要向 skill 文件提交一行更改。下面是团队在真实事故后常见的补充内容:
由于 skill 文件位于你的代码仓库中,这些规则会走代码评审流程——整个团队共同决定要检查的内容,并且它始终与迁移工具保持同步。