ai-regression-testing
OfficialAI 支援開発のためのリグレッションテスト戦略。データベース依存なしのサンドボックスモード API テスト、自動化されたバグチェックワークフロー、同じモデルがコードを書いてレビューする AI のブラインドスポットを捕捉するパターン。
What this skill does
When applied, it prepends a system prompt before your request is sent — no extra calls and no change to how you are billed beyond the added tokens.
---
name: ai-regression-testing
description: AI 支援開発のためのリグレッションテスト戦略。データベース依存なしのサンドボックスモード API テスト、自動化されたバグチェックワークフロー、同じモデルがコードを書いてレビューする AI のブラインドスポットを捕捉するパターン。
origin: ECC
---
# AI リグレッションテスト
AI 支援開発のために特別に設計されたテストパターン。同じモデルがコードを書いてレビューする場合、自動化されたテストのみが捕捉できる体系的なブラインドスポットが生まれます。
## 起動タイミング
- AI エージェント(Claude Code、Cursor、Codex)が API ルートまたはバックエンドロジックを修正した場合
- バグが見つかり修正された — 再発を防ぐ必要がある
- プロジェクトに DB フリーテストに活用できるサンドボックス/モックモードがある場合
- コード変更後に `/bug-check` または同様のレビューコマンドを実行する場合
- 複数のコードパスが存在する場合(サンドボックス対本番、機能フラグなど)
## コアの問題
AI がコードを書いてその後自分の作業をレビューする場合、両方のステップに同じ前提を持ち込みます。これにより予測可能な障害パターンが生まれます:
```
AI が修正を書く → AI が修正をレビューする → AI が「正しく見える」と言う → バグはまだ存在する
```
**実際の例**(本番で観察された):
```
修正 1: API レスポンスに notification_settings を追加
→ SELECT クエリに追加するのを忘れた
→ AI がレビューして見逃した(同じブラインドスポット)
修正 2: SELECT クエリに追加
→ TypeScript ビルドエラー(生成された型に列がない)
→ AI が修正 1 をレビューしたが SELECT の問題を捕捉できなかった
修正 3: SELECT * に変更
→ 本番パスを修正、サンドボックスパスを忘れた
→ AI がレビューして再び見逃した(4 回目の発生)
修正 4: テストが最初の実行で即座に捕捉 PASS:
```
パターン:**サンドボックス/本番パスの不一致**が AI が導入するリグレッションの第 1 位。
## サンドボックスモード API テスト
AI フレンドリーなアーキテクチャを持つほとんどのプロジェクトにはサンドボックス/モックモードがあります。これが高速な DB フリー API テストの鍵です。
### セットアップ(Vitest + Next.js App Router)
```typescript
// vitest.config.ts
import { defineConfig } from "vitest/config";
import path from "path";
export default defineConfig({
test: {
environment: "node",
globals: true,
include: ["__tests__/**/*.test.ts"],
setupFiles: ["__tests__/setup.ts"],
},
resolve: {
alias: {
"@": path.resolve(__dirname, "."),
},
},
});
```
```typescript
// __tests__/setup.ts
// サンドボックスモードを強制 — データベース不要
process.env.SANDBOX_MODE = "true";
process.env.NEXT_PUBLIC_SUPABASE_URL = "";
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY = "";
```
### Next.js API ルート用テストヘルパー
```typescript
// __tests__/helpers.ts
import { NextRequest } from "next/server";
export function createTestRequest(
url: string,
options?: {
method?: string;
body?: Record<string, unknown>;
headersUse this skill
Add a "skill" field with the skill’s ID to your chat completion request. It is applied server-side before your prompt is sent — no extra calls.
{
"model": "gpt-4o-mini",
"skill": "imp-7ca23844-4782-4d24-ae2c-5b828e8dcd95",
"messages": [{ "role": "user", "content": "…" }]
}Install the skill, enable it in your dashboard and (optionally) limit it to specific models. It then applies automatically to every matching request — with no "skill" field to send each time.
Set it up in your dashboardMore skills
Delegate coding work to Codex, Claude Code, or OpenCode as background workers; not simple edits or read-only code lookup.
Create, edit, audit, tidy, validate, or restructure AgentSkills and SKILL.md files.
Search and analyze your own session logs (older/parent conversations) using jq.
Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.
Diagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.
List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.
Create, search, and manage Bear notes via grizzly CLI.