问题:CSS Bug 容易逃过单元测试
你的测试套件全部通过,CI 全绿,PR 也已经合并 —— 但现在设置页面在移动端出现文字重叠,结账按钮被页脚挡住了。单元测试和 linter 无法捕捉这类视觉问题,于是问题被带到生产环境,最后由客户来反馈。一个仓库级 skill 可以解决这个问题。Skills 是你提交到任意仓库中
.agents/skills/<your-skill>/ 路径下的 markdown 文件。Devin 能看到所有已连接仓库中的全部 skills —— 你可以手动触发它们,或者当 Devin 检测到相关场景时,由 Devin 自动选择触发。这个 skill 会精确告诉 Devin 如何启动你的应用、如何访问受 diff 影响的页面,并在多个视口宽度下为这些页面截图 —— 每一次、在每个 PR 之前都会执行。将 visual-regression 技能添加到你的代码库
在 此文件会随你的代码一起分发。一旦提交,Devin 就会将其视为一项可用技能——每当有会话涉及此仓库中的 UI 文件时,Devin 都可以自动触发视觉回归检查,或者你也可以在任意时间点手动执行这些检查。
.agents/skills/visual-regression/visual-regression.md 中提交一个文件,将你团队的手动 QA 检查清单编写为 Devin 可以遵循的步骤:使检查针对你的各个页面
像 “check the page looks right” 这样的笼统指令会产生模糊的结果。这个技能中最有价值的部分,是告诉 Devin 在你应用的每个部分中,什么才算是「正确」的表现。在你的技能中添加针对特定路由的单独小节:Devin 会读取 diff,识别哪些路由受到影响,并跟进对应部分——从而让检查更有针对性,而不是泛泛而为。
看看它如何发现实际的回归问题
假设一名工程师为了实现响应式布局,把仪表盘上的 CSS grid 从
grid-template-columns: repeat(3, 1fr) 改成了 repeat(auto-fit, minmax(200px, 1fr))。单元测试全部通过——逻辑没有任何改动。但在移动端,这些卡片现在会溢出视口。当 Devin 完成这次代码修改后,它会自动按该技能执行以下步骤:- 启动应用 —— 安装依赖、启动 Docker、运行数据库迁移、灌入数据、启动开发服务器
- 阅读 diff —— 发现
src/components/Dashboard.tsx被修改,将其映射到/dashboard路由 - 在 1280px 截图 —— 3 列网格渲染正确
- 在 375px 截图 —— 发现水平溢出:卡片在视口内放不下
- 标记问题 —— 报告 “Horizontal scroll detected on /dashboard at 375px width — metric cards overflow the viewport”
- 修复 CSS —— 添加
overflow-x: hidden,并把minmax的最小值调整为150px - 重新截图 —— 在两个宽度下都确认修复生效
- 打开 PR —— 在描述中附上修复前/修复后的截图和变更说明
