Agent skill

AI Regression Testing

by affaan-m in affaan-m/ECC

AI 支援開発のためのリグレッションテスト戦略。データベース依存なしのサンドボックスモード API テスト、自動化されたバグチェックワークフロー、同じモデルがコードを書いてレビューする AI のブラインドスポットを捕捉するパターン。

MITAuto-check passedTesting & QA

Install AI Regression Testing

skills CLI
$ npx skills add affaan-m/ECC --skill ai-regression-testing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install affaan-m/ECC ai-regression-testing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .claude/skills && cp -r skills-src/docs/ja-JP/skills/ai-regression-testing .claude/skills/ai-regression-testing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ai-regression-testing
GitHub stars
276k
Token cost
~2.2k tokens
SKILL.md length
145 words
Files
1
Skills in repo
683
Repo updated
First seen
Licence
MIT

At a glance

AI 支援開発のためのリグレッションテスト戦略。データベース依存なしのサンドボックスモード API テスト、自動化されたバグチェックワークフロー、同じモデルがコードを書いてレビューする AI のブラインドスポットを捕捉するパターン。

  • Works in 4 steps: AI は同じカテゴリのミスを繰り返す傾向がある → バグは複雑な領域(認証、マルチパスロジック、状態管理)にクラスタリングする → 一度テストされると、その正確なリグレッションは再び発生できない → …
  • Tasks that involve QA and bug reports
  • SKILL.md covers 起動タイミング, コアの問題, サンドボックスモード API テスト and バグチェックワークフローへのテスト統合, plus 4 more sections
  • Needs NEXT_PUBLIC_SUPABASE_ANON_KEY

What it does

AI Regression Testing is an agent skill from affaan-m/ECC. AI 支援開発のためのリグレッションテスト戦略。データベース依存なしのサンドボックスモード API テスト、自動化されたバグチェックワークフロー、同じモデルがコードを書いてレビューする AI のブラインドスポットを捕捉するパターン。

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering QA and bug reports. The repository describes itself as: The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond. The licence is MIT.

When your agent uses it

  • Tasks that involve QA and bug reports

Example prompts

  • “/ai-regression-testing”

Requirements

  • A credential in NEXT_PUBLIC_SUPABASE_ANON_KEY

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. AI は同じカテゴリのミスを繰り返す傾向がある
  2. バグは複雑な領域(認証、マルチパスロジック、状態管理)にクラスタリングする
  3. 一度テストされると、その正確なリグレッションは再び発生できない
  4. テスト数はバグ修正とともに有機的に増加する — 無駄な努力なし

What it can do on your machine

Read from SKILL.md and the folder at commit 4eb71d9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • NEXT_PUBLIC_SUPABASE_ANON_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

AI Regression Testing loads about 2.2k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 145 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~35
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from affaan-m/ECC at commit 4eb71d9, republished under its MIT licence (© affaan-m). 145 words, ~2,227 tokens.

Download SKILL.mdSave it as .claude/skills/ai-regression-testing/SKILL.md (or your agent's skills folder).
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>;
    headers?: Record<string, string>;
    sandboxUserId?: string;
  },
): NextRequest {
  const { method = "GET", body, headers = {}, sandboxUserId } = options || {};
  const fullUrl = url.startsWith("http") ? url : `http://localhost:3000${url}`;
  const reqHeaders: Record<string, string> = { ...headers };

  if (sandboxUserId) {
    reqHeaders["x-sandbox-user-id"] = sandboxUserId;
  }

  const init: { method: string; headers: Record<string, string>; body?: string } = {
    method,
    headers: reqHeaders,
  };

  if (body) {
    init.body = JSON.stringify(body);
    reqHeaders["content-type"] = "application/json";
  }

  return new NextRequest(fullUrl, init);
}

export async function parseResponse(response: Response) {
  const json = await response.json();
  return { status: response.status, json };
}
リグレッションテストの作成

重要な原則:機能するコードのためではなく、見つかったバグのためにテストを書く。

typescript
// __tests__/api/user/profile.test.ts
import { describe, it, expect } from "vitest";
import { createTestRequest, parseResponse } from "../../helpers";
import { GET, PATCH } from "@/app/api/user/profile/route";

// コントラクトを定義 — レスポンスに必ず存在すべきフィールド
const REQUIRED_FIELDS = [
  "id",
  "email",
  "full_name",
  "phone",
  "role",
  "created_at",
  "avatar_url",
  "notification_settings",  // ← バグで欠落が判明した後に追加
];

describe("GET /api/user/profile", () => {
  it("すべての必須フィールドを返す", async () => {
    const req = createTestRequest("/api/user/profile");
    const res = await GET(req);
    const { status, json } = await parseResponse(res);

    expect(status).toBe(200);
    for (const field of REQUIRED_FIELDS) {
      expect(json.data).toHaveProperty(field);
    }
  });

  // リグレッションテスト — この正確なバグが AI によって 4 回導入された
  it("notification_settings が undefined でない(BUG-R1 リグレッション)", async () => {
    const req = createTestRequest("/api/user/profile");
    const res = await GET(req);
    const { json } = await parseResponse(res);

    expect("notification_settings" in json.data).toBe(true);
    const ns = json.data.notification_settings;
    expect(ns === null || typeof ns === "object").toBe(true);
  });
});
サンドボックス/本番のパリティテスト

最も一般的な AI リグレッション:本番パスを修正してサンドボックスパスを忘れる(またはその逆)。

typescript
// サンドボックスレスポンスが期待されるコントラクトと一致することをテスト
describe("GET /api/user/messages(会話リスト)", () => {
  it("サンドボックスモードで partner_name を含む", async () => {
    const req = createTestRequest("/api/user/messages", {
      sandboxUserId: "user-001",
    });
    const res = await GET(req);
    const { json } = await parseResponse(res);

    // これは partner_name が本番パスに追加されたが
    // サンドボックスパスに追加されなかったバグを捕捉した
    if (json.data.length > 0) {
      for (const conv of json.data) {
        expect("partner_name" in conv).toBe(true);
      }
    }
  });
});

バグチェックワークフローへのテスト統合

カスタムコマンド定義
markdown
<!-- .claude/commands/bug-check.md -->
# バグチェック

## ステップ 1: 自動テスト(必須、スキップ不可)

コードレビューの前に必ずこれらのコマンドを先に実行する:

    npm run test       # Vitest テストスイート
    npm run build      # TypeScript 型チェック + ビルド

- テストが失敗した場合 → 最高優先度のバグとして報告する
- ビルドが失敗した場合 → 型エラーを最高優先度として報告する
- 両方がパスした場合のみステップ 2 に進む

## ステップ 2: コードレビュー(AI レビュー)

1. サンドボックス / 本番パスの一貫性
2. API レスポンスの形状がフロントエンドの期待と一致するか
3. SELECT 句の完全性
4. ロールバック付きのエラー処理
5. オプティミスティックアップデートのレース条件

## ステップ 3: 修正されたバグごとにリグレッションテストを提案する
ワークフロー
ユーザー: "バグチェックして" (or "/bug-check")
  │
  ├─ ステップ 1: npm run test
  │   ├─ FAIL → バグが機械的に発見された(AI の判断不要)
  │   └─ PASS → 続行
  │
  ├─ ステップ 2: npm run build
  │   ├─ FAIL → 型エラーが機械的に発見された
  │   └─ PASS → 続行
  │
  ├─ ステップ 3: AI コードレビュー(既知のブラインドスポットを念頭に)
  │   └─ 発見事項が報告される
  │
  └─ ステップ 4: 各修正に対してリグレッションテストを書く
      └─ 次のバグチェックで修正が壊れるか捕捉する

一般的な AI リグレッションパターン

パターン 1: サンドボックス/本番パスの不一致

頻度: 最も一般的(4 つのリグレッションのうち 3 つで観察)

typescript
// 失敗: AI が本番パスのみにフィールドを追加する
if (isSandboxMode()) {
  return { data: { id, email, name } };  // 新しいフィールドが欠落
}
// 本番パス
return { data: { id, email, name, notification_settings } };

// 成功: 両方のパスが同じ形状を返す必要がある
if (isSandboxMode()) {
  return { data: { id, email, name, notification_settings: null } };
}
return { data: { id, email, name, notification_settings } };

捕捉するためのテスト:

typescript
it("サンドボックスと本番が同じフィールドを返す", async () => {
  // テスト環境では、サンドボックスモードが強制的に ON になる
  const res = await GET(createTestRequest("/api/user/profile"));
  const { json } = await parseResponse(res);

  for (const field of REQUIRED_FIELDS) {
    expect(json.data).toHaveProperty(field);
  }
});
パターン 2: SELECT 句の省略

頻度: 新しい列を追加する際の Supabase/Prisma で一般的

typescript
// 失敗: 新しい列がレスポンスに追加されたが SELECT に含まれていない
const { data } = await supabase
  .from("users")
  .select("id, email, name")  // notification_settings がここにない
  .single();

return { data: { ...data, notification_settings: data.notification_settings } };
// → notification_settings は常に undefined

// 成功: SELECT * を使用するか明示的に新しい列を含める
const { data } = await supabase
  .from("users")
  .select("*")
  .single();
パターン 3: エラー状態の漏洩

頻度: 既存のコンポーネントにエラー処理を追加する場合に中程度

typescript
// 失敗: エラー状態が設定されたが古いデータがクリアされていない
catch (err) {
  setError("Failed to load");
  // reservations は前のタブのデータをまだ表示している!
}

// 成功: エラー時に関連する状態をクリアする
catch (err) {
  setReservations([]);  // 古いデータをクリア
  setError("Failed to load");
}
パターン 4: 適切なロールバックなしのオプティミスティックアップデート
typescript
// 失敗: 失敗時のロールバックなし
const handleRemove = async (id: string) => {
  setItems(prev => prev.filter(i => i.id !== id));
  await fetch(`/api/items/${id}`, { method: "DELETE" });
  // API が失敗した場合、アイテムは UI から消えるが DB にはまだある
};

// 成功: 前の状態をキャプチャして失敗時にロールバックする
const handleRemove = async (id: string) => {
  const prevItems = [...items];
  setItems(prev => prev.filter(i => i.id !== id));
  try {
    const res = await fetch(`/api/items/${id}`, { method: "DELETE" });
    if (!res.ok) throw new Error("API error");
  } catch {
    setItems(prevItems);  // ロールバック
    alert("削除に失敗しました");
  }
};

戦略: バグが見つかった場所でテストする

100% カバレッジを目指さない。代わりに:

/api/user/profile でバグ発見     → プロファイル API のテストを書く
/api/user/messages でバグ発見    → メッセージ API のテストを書く
/api/user/favorites でバグ発見   → お気に入り API のテストを書く
/api/user/notifications でバグなし → テストを書かない(まだ)

AI 開発でこれが機能する理由:

  1. AI は同じカテゴリのミスを繰り返す傾向がある
  2. バグは複雑な領域(認証、マルチパスロジック、状態管理)にクラスタリングする
  3. 一度テストされると、その正確なリグレッションは再び発生できない
  4. テスト数はバグ修正とともに有機的に増加する — 無駄な努力なし

クイックリファレンス

AI リグレッションパターンテスト戦略優先度
サンドボックス/本番の不一致サンドボックスモードで同じレスポンス形状をアサート高
SELECT 句の省略レスポンス内のすべての必須フィールドをアサート高
エラー状態の漏洩エラー時の状態クリーンアップをアサート中
ロールバック欠如API 失敗時に状態が復元されることをアサート中
型キャストが null をマスクフィールドが undefined でないことをアサート中

DO / DON'T

DO:

  • バグを見つけた後すぐにテストを書く(可能であれば修正前に)
  • 実装ではなく API レスポンスの形状をテストする
  • すべてのバグチェックの最初のステップとしてテストを実行する
  • テストを高速に保つ(サンドボックスモードで合計 1 秒未満)
  • 防ぐバグにちなんでテストに名前を付ける(例:「BUG-R1 リグレッション」)

DON'T:

  • バグが一度もなかったコードのテストを書く
  • 自動化されたテストの代替として AI の自己レビューを信頼する
  • 「モックデータだから」という理由でサンドボックスパステストをスキップする
  • ユニットテストで十分な時に統合テストを書く
  • カバレッジのパーセンテージを目指す — リグレッション防止を目指す

© affaan-m, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in docs/ja-JP/skills/ai-regression-testing of affaan-m/ECC.

Open the folder on GitHubat commit 4eb71d9

Compare with similar skills

AI Regression Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

AI Regression Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
AI Regression Testing this skillaffaan-m/ECC276k—~2.2kAutomated safety check: PassMIT
Reproduce Chat Statesdifferent-ai/openwork24k—~673Automated safety check: PassCustom licence
Dynamo Jira TicketDynamoDS/Dynamo2k—~1.1kAutomated safety check: PassApache-2.0
Moav E2EMotherofallVPNs/MoaV449—~1.9kAutomated safety check: NotesMIT
Creating A Coral TaskHuman-Agent-Society/CORAL1.1k—~2.2kAutomated safety check: PassApache-2.0
Launch Rlmarin-community/marin3.9k—~894Automated safety check: PassApache-2.0

Similar skills

  • Reproduce Chat States

    different-ai/openwork

    Fires known chat states in the running OpenWork desktop app, such as provider errors, retries and tool steps, so you can check how each renders.

    24k GitHub stars~673 tokensUpdated today
    Testing & QAAuto-check passed
  • Dynamo Jira Ticket

    DynamoDS/Dynamo

    Create structured Jira tickets for Dynamo from bug reports, failing tests, or feature requests.

    2k GitHub stars~1.1k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Moav E2E

    MotherofallVPNs/MoaV

    Run and debug MoaV's end-to-end tests — real protocol connectivity (client-test.sh) and the moav CLI smoke test — against a LIVE server, via the self-hosted e2e workflow or a local test VPS.

    449 GitHub stars~1.9k tokensUpdated 3 days ago
    Testing & QAAuto-check: notes
  • Creating A Coral Task

    Human-Agent-Society/CORAL

    Author a new CORAL task — the three pieces that must line up (task.yaml, seed/, a packaged grader/), the coral init → coral validate → smoke-test loop, and how to pick a grader pattern (stdout…

    1.1k GitHub stars~2.2k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Launch Rl

    marin-community/marin

    Define, validate, submit, or restart a Marin SkyRL experiment through its artifact main.

    3.9k GitHub stars~894 tokensUpdated today
    Testing & QAAuto-check passed
  • Actionbook Web Test

    actionbook/actionbook

    Run browser-based web tests against websites using Actionbook CLI.

    1.6k GitHub stars~9.7k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed

More from affaan-m/ECC

All 683 skills in this repo
  • Skill Stocktake

    affaan-m/ECC

    Audits your installed Claude skills and commands for quality, with a quick mode for recently changed skills and a full mode that evaluates all of them through subagents.

    276k GitHub starsUsed in 5 repos~3.1k tokens
    Auto-check passed
  • Ingests, indexes, searches, edits and monitors video, audio and live streams through the VideoDB Python SDK, returning stream links, clips and timestamps.

    276k GitHub starsUsed in 3 repos~3.5k tokens
    Auto-check: notes
  • Docs Governance

    affaan-m/ECC

    Route broad documentation-governance requests to existing ECC skills and run an opt-in, read-only audit of mapped documentation roles, links, ADR indexes, and evidence references.

    276k GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Rules Distillation

    affaan-m/ECC

    Scans installed skills for principles that recur across them and proposes rule-file changes: append, revise, add a section, create a file or leave as covered.

    276k GitHub starsUsed in 2 repos~2.3k tokens
    Auto-check passed
  • Builds DRAFT counterparty agreements from one markdown template and a small JSON spec per party, with clauses picked by the party's role.

    276k GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed
  • Measures whether agents actually follow a skill, rule or agent definition by generating scenarios at three strictness levels and scoring tool-call traces.

    276k GitHub starsUsed in 1 repo~623 tokens
    Auto-check passed

Categories

Questions about AI Regression Testing

What does AI Regression Testing do?

AI 支援開発のためのリグレッションテスト戦略。データベース依存なしのサンドボックスモード API テスト、自動化されたバグチェックワークフロー、同じモデルがコードを書いてレビューする AI のブラインドスポットを捕捉するパターン。. AI Regression Testing is an agent skill from affaan-m/ECC.

When should I use AI Regression Testing?

AI Regression Testing fits situations like: tasks that involve QA and bug reports.

How do I install AI Regression Testing in Claude Code?

Run `npx skills add affaan-m/ECC --skill ai-regression-testing -a claude-code`. Or copy the skill folder (docs/ja-JP/skills/ai-regression-testing in affaan-m/ECC) into .claude/skills/ai-regression-testing in your project. Claude Code loads it when a task matches its description.

How do I install AI Regression Testing in Codex?

Run `npx skills add affaan-m/ECC --skill ai-regression-testing -a codex`. Or copy the skill folder (docs/ja-JP/skills/ai-regression-testing in affaan-m/ECC) into .agents/skills/ai-regression-testing in your project. Codex loads it when a task matches its description.

Can I use AI Regression Testing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add affaan-m/ECC --skill ai-regression-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ai-regression-testing, .gemini/skills/ai-regression-testing, .github/skills/ai-regression-testing and .opencode/skills/ai-regression-testing in your project.

What does AI Regression Testing need to run?

Going by SKILL.md and its folder, AI Regression Testing needs credentials named NEXT_PUBLIC_SUPABASE_ANON_KEY. Our summary lists: A credential in NEXT_PUBLIC_SUPABASE_ANON_KEY.

Does AI Regression Testing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is AI Regression Testing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does AI Regression Testing use?

AI Regression Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does AI Regression Testing use?

About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to AI Regression Testing?

Skills that share tags, products or a category with AI Regression Testing: Reproduce Chat States (different-ai/openwork, 24k stars), Dynamo Jira Ticket (DynamoDS/Dynamo, 2k stars), Moav E2E (MotherofallVPNs/MoaV, 449 stars) and Creating A Coral Task (Human-Agent-Society/CORAL, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains AI Regression Testing?

affaan-m (a GitHub user) maintains it in affaan-m/ECC, which has 276,111 GitHub stars. The repository holds 683 skills in this directory. The repository was last updated on October 10, 2026.

Source: affaan-m/ECC on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.