各PRを出す前にビジュアルリグレッションを検知する
影響を受けたすべてのページをDevinにスクリーンショットさせ、PRをオープンする前にレイアウト崩れを検知・フラグ付けするリポジトリスキルです。問題: CSSバグがユニットテストをすり抜ける
テストスイートはすべてパスし、CI もグリーンで、PR もマージされました——しかし、設定ページはモバイル表示でテキストが重なってしまい、チェックアウトボタンはフッターの裏に隠れて見えなくなっています。ユニットテストやリンターではこうした見た目の崩れを検出できないため、そのまま本番にリリースされ、顧客からの報告で発覚します。リポジトリスキルを使うと、この問題を解決できます。スキルは、任意のリポジトリ内の
.agents/skills/<your-skill>/ にコミットする Markdown ファイルです。Devin は接続されているすべてのリポジトリにまたがるすべてのスキルを把握しており、手動でトリガーすることも、関連する状況を検出したときに Devin が自動的にトリガーすることもできます。このスキルは、アプリの起動方法、差分の影響を受けるページへの遷移方法、そして複数のビューポート幅でのスクリーンショット取得手順を Devin に正確に指示します——毎回、すべての PR の前に必ず実行されます。「visual-regression」スキルをリポジトリに追加する
Devin が従える手順としてチームの手動 QA チェックリストを記述したファイルを、このファイルはコードと一緒に配布されます。コミットされると、Devin はこれを利用可能なスキルとして認識します。セッションでこのリポジトリ内の UI ファイルを扱うたびに、Devin はビジュアルリグレッションチェックを自動的に実行でき、任意のタイミングで手動実行することもできます。
.agents/skills/visual-regression/visual-regression.md にコミットしてください:チェック内容をページごとにカスタマイズする
「ページが正しく表示されていることを確認する」のような一般的な指示では、結果があいまいになります。このスキルで最も価値が高い点は、アプリの各領域について、どの状態が「正しい」のかをDevinに具体的に伝えることです。スキルにルートごとのセクションを追加します:Devin は diff を読み込み、どのルートが変更されたかを特定し、対応するセクションをたどります — その結果、チェックは汎用的なものではなく、変更箇所に焦点を絞ったものになります。
実際のリグレッションバグを捕捉するところをご覧ください
あるエンジニアが、ダッシュボードの CSS グリッドレイアウトをレスポンシブにするために
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 を作成 — ビフォー/アフターのスクリーンショットと修正内容を説明に含める
