jpskill.com
📦 その他 コミュニティ

testgen

テスト生成を専門的にルーティングし、フレームワークを自動検出し、タスク作成も自動化するSkill。

📜 元の英語説明(参考)

Generate tests with expert routing, framework detection, and auto-TaskCreate. Triggers on: generate tests, write tests, testgen, create test file, add test coverage.

🇯🇵 日本人クリエイター向け解説

一言でいうと

テスト生成を専門的にルーティングし、フレームワークを自動検出し、タスク作成も自動化するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] testgen

TestGen Skill - AIテスト生成

自動フレームワーク検出、エキスパートエージェントルーティング、およびプロジェクト規約との照合により、包括的なテストを生成します。

アーキテクチャ

testgen <target> [--type] [--focus] [--depth]
    │
    ├─→ Step 1: Analyze Target
    │     ├─ File exists? → Read and parse
    │     ├─ Function specified? → Extract signature
    │     ├─ Directory? → List source files
    │     └─ Find existing tests (avoid duplicates)
    │
    ├─→ Step 2: Detect Framework (parallel)
    │     ├─ package.json → jest/vitest/mocha/cypress/playwright
    │     ├─ pyproject.toml → pytest/unittest
    │     ├─ go.mod → go test
    │     ├─ Cargo.toml → cargo test
    │     ├─ composer.json → phpunit/pest
    │     └─ Check existing test patterns
    │
    ├─→ Step 3: Load Project Standards
    │     ├─ AGENTS.md, CLAUDE.md conventions
    │     ├─ Existing test file structure
    │     └─ Naming conventions (*.test.ts vs *.spec.ts)
    │
    ├─→ Step 4: Route to Expert Agent
    │     ├─ .ts → typescript-expert
    │     ├─ .tsx/.jsx → react-expert
    │     ├─ .vue → vue-expert
    │     ├─ .py → python-expert
    │     ├─ .go → go-expert
    │     ├─ .rs → rust-expert
    │     ├─ .php → laravel-expert
    │     ├─ E2E/Cypress → cypress-expert
    │     ├─ Playwright → typescript-expert
    │     ├─ --visual → Chrome DevTools MCP
    │     └─ Multi-file → parallel expert dispatch
    │
    ├─→ Step 5: Generate Tests
    │     ├─ Create test file in correct location
    │     ├─ Follow detected conventions
    │     └─ Include: happy path, edge cases, error handling
    │
    └─→ Step 6: Integration
          ├─ Auto-create task (TaskCreate) for verification
          └─ Suggest: run tests, /review, /save

実行ステップ

ステップ1: ターゲットの分析

# Check if target exists
test -f "$TARGET" && echo "FILE" || test -d "$TARGET" && echo "DIRECTORY"

# For function-specific: extract signature
command -v ast-grep >/dev/null 2>&1 && ast-grep -p "function $FUNCTION_NAME" "$FILE"

# Fallback to ripgrep
rg "(?:function|const|def|public|private)\s+$FUNCTION_NAME" "$FILE" -A 10

既存のテストの確認:

fd -e test.ts -e spec.ts -e test.js -e spec.js | rg "$BASENAME"
fd "test_*.py" | rg "$BASENAME"

ステップ2: フレームワークの検出

JavaScript/TypeScript:

cat package.json 2>/dev/null | jq -r '.devDependencies | keys[]' | grep -E 'jest|vitest|mocha|cypress|playwright|@testing-library'

Python:

grep -E "pytest|unittest|nose" pyproject.toml setup.py requirements*.txt 2>/dev/null

Go:

test -f go.mod && echo "go test available"

Rust:

test -f Cargo.toml && echo "cargo test available"

PHP:

cat composer.json 2>/dev/null | jq -r '.["require-dev"] | keys[]' | grep -E 'phpunit|pest|codeception'

ステップ3: プロジェクト標準の読み込み

# Claude Code conventions
cat AGENTS.md 2>/dev/null | head -50
cat CLAUDE.md 2>/dev/null | head -50

# Test config files
cat jest.config.* vitest.config.* pytest.ini pyproject.toml 2>/dev/null | head -30

テスト配置規約:

# JavaScript
src/utils/helper.ts → src/utils/__tests__/helper.test.ts  # __tests__ folder
                    → src/utils/helper.test.ts            # co-located
                    → tests/utils/helper.test.ts          # separate tests/

# Python
app/utils/helper.py → tests/test_helper.py               # tests/ folder
                    → tests/utils/test_helper.py         # mirror structure

# Go
pkg/auth/token.go → pkg/auth/token_test.go               # co-located (required)

# Rust
src/auth.rs → src/auth.rs (mod tests { ... })            # inline tests
            → tests/auth_test.rs                          # integration tests

ステップ4: エキスパートエージェントへのルーティング

ファイルパターン プライマリエキスパート セカンダリ
*.ts typescript-expert -
*.tsx, *.jsx react-expert typescript-expert
*.vue vue-expert typescript-expert
*.py python-expert -
*.go go-expert -
*.rs rust-expert -
*.php laravel-expert -
*.cy.ts, cypress/* cypress-expert -
*.spec.ts (Playwright) typescript-expert -
playwright/*, e2e/* typescript-expert -
*.sh, *.bash bash-expert -
(--visual flag) Chrome DevTools MCP typescript-expert

Task ツールによる呼び出し:

Task tool with subagent_type: "[detected]-expert"
Prompt includes:
  - Source file content
  - Function signatures to test
  - Detected framework and conventions
  - Requested test type and focus

ステップ5: テストの生成

--focus に基づくテストカテゴリ:

フォーカス 生成内容
happy 正常な入力、期待される出力
edge 境界値、空の入力、null
error 無効な入力、例外、エラー処理
all 上記すべて (デフォルト)

深度レベル:

深度 カバレッジ
quick ハッピーパスのみ、関数あたり1-2テスト
normal ハッピーパス + 一般的なエッジケース (デフォルト)
thorough 包括的: すべてのパス、モック、非同期

ステップ6: 統合

タスクの自動作成:

TaskCreate:
  subject: "src/auth.ts の生成されたテストを実行"
  description: "生成されたテストがパスすることを確認し、エッジケースをレビュー"
  activeForm: "auth.ts の生成されたテストを実行中"

次のステップの提案:

生成されたテスト: src/auth.test.ts

次のステップ:
1. テストを実行: npm test src/auth.test.ts
2. エッジケースをレビューし、改善
3. /save を使用してセッション間でタスクを永続化

エキスパートルーティングの詳細

TypeScript/JavaScript → typescript-expert

  • 適切な型インポート
  • ジェネリック型の処理
  • Async/await パターン
  • モックの型付け

React/JSX → react-expert

  • React Testing Library パターン
  • コンポーネントのレンダリングテスト
  • フックのテスト (renderHook)
  • アクセシビリティクエリ (getByRole)

Vue → vue-expert

  • Vue Test Utils パターン
  • Compos
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

TestGen Skill - AI Test Generation

Generate comprehensive tests with automatic framework detection, expert agent routing, and project convention matching.

Architecture

testgen <target> [--type] [--focus] [--depth]
    │
    ├─→ Step 1: Analyze Target
    │     ├─ File exists? → Read and parse
    │     ├─ Function specified? → Extract signature
    │     ├─ Directory? → List source files
    │     └─ Find existing tests (avoid duplicates)
    │
    ├─→ Step 2: Detect Framework (parallel)
    │     ├─ package.json → jest/vitest/mocha/cypress/playwright
    │     ├─ pyproject.toml → pytest/unittest
    │     ├─ go.mod → go test
    │     ├─ Cargo.toml → cargo test
    │     ├─ composer.json → phpunit/pest
    │     └─ Check existing test patterns
    │
    ├─→ Step 3: Load Project Standards
    │     ├─ AGENTS.md, CLAUDE.md conventions
    │     ├─ Existing test file structure
    │     └─ Naming conventions (*.test.ts vs *.spec.ts)
    │
    ├─→ Step 4: Route to Expert Agent
    │     ├─ .ts → typescript-expert
    │     ├─ .tsx/.jsx → react-expert
    │     ├─ .vue → vue-expert
    │     ├─ .py → python-expert
    │     ├─ .go → go-expert
    │     ├─ .rs → rust-expert
    │     ├─ .php → laravel-expert
    │     ├─ E2E/Cypress → cypress-expert
    │     ├─ Playwright → typescript-expert
    │     ├─ --visual → Chrome DevTools MCP
    │     └─ Multi-file → parallel expert dispatch
    │
    ├─→ Step 5: Generate Tests
    │     ├─ Create test file in correct location
    │     ├─ Follow detected conventions
    │     └─ Include: happy path, edge cases, error handling
    │
    └─→ Step 6: Integration
          ├─ Auto-create task (TaskCreate) for verification
          └─ Suggest: run tests, /review, /save

Execution Steps

Step 1: Analyze Target

# Check if target exists
test -f "$TARGET" && echo "FILE" || test -d "$TARGET" && echo "DIRECTORY"

# For function-specific: extract signature
command -v ast-grep >/dev/null 2>&1 && ast-grep -p "function $FUNCTION_NAME" "$FILE"

# Fallback to ripgrep
rg "(?:function|const|def|public|private)\s+$FUNCTION_NAME" "$FILE" -A 10

Check for existing tests:

fd -e test.ts -e spec.ts -e test.js -e spec.js | rg "$BASENAME"
fd "test_*.py" | rg "$BASENAME"

Step 2: Detect Framework

JavaScript/TypeScript:

cat package.json 2>/dev/null | jq -r '.devDependencies | keys[]' | grep -E 'jest|vitest|mocha|cypress|playwright|@testing-library'

Python:

grep -E "pytest|unittest|nose" pyproject.toml setup.py requirements*.txt 2>/dev/null

Go:

test -f go.mod && echo "go test available"

Rust:

test -f Cargo.toml && echo "cargo test available"

PHP:

cat composer.json 2>/dev/null | jq -r '.["require-dev"] | keys[]' | grep -E 'phpunit|pest|codeception'

Step 3: Load Project Standards

# Claude Code conventions
cat AGENTS.md 2>/dev/null | head -50
cat CLAUDE.md 2>/dev/null | head -50

# Test config files
cat jest.config.* vitest.config.* pytest.ini pyproject.toml 2>/dev/null | head -30

Test location conventions:

# JavaScript
src/utils/helper.ts → src/utils/__tests__/helper.test.ts  # __tests__ folder
                    → src/utils/helper.test.ts            # co-located
                    → tests/utils/helper.test.ts          # separate tests/

# Python
app/utils/helper.py → tests/test_helper.py               # tests/ folder
                    → tests/utils/test_helper.py         # mirror structure

# Go
pkg/auth/token.go → pkg/auth/token_test.go               # co-located (required)

# Rust
src/auth.rs → src/auth.rs (mod tests { ... })            # inline tests
            → tests/auth_test.rs                          # integration tests

Step 4: Route to Expert Agent

File Pattern Primary Expert Secondary
*.ts typescript-expert -
*.tsx, *.jsx react-expert typescript-expert
*.vue vue-expert typescript-expert
*.py python-expert -
*.go go-expert -
*.rs rust-expert -
*.php laravel-expert -
*.cy.ts, cypress/* cypress-expert -
*.spec.ts (Playwright) typescript-expert -
playwright/*, e2e/* typescript-expert -
*.sh, *.bash bash-expert -
(--visual flag) Chrome DevTools MCP typescript-expert

Invoke via Task tool:

Task tool with subagent_type: "[detected]-expert"
Prompt includes:
  - Source file content
  - Function signatures to test
  - Detected framework and conventions
  - Requested test type and focus

Step 5: Generate Tests

Test categories based on --focus:

Focus What to Generate
happy Normal input, expected output
edge Boundary values, empty inputs, nulls
error Invalid inputs, exceptions, error handling
all All of the above (default)

Depth levels:

Depth Coverage
quick Happy path only, 1-2 tests per function
normal Happy + common edge cases (default)
thorough Comprehensive: all paths, mocking, async

Step 6: Integration

Auto-create task:

TaskCreate:
  subject: "Run generated tests for src/auth.ts"
  description: "Verify generated tests pass and review edge cases"
  activeForm: "Running generated tests for auth.ts"

Suggest next steps:

Tests generated: src/auth.test.ts

Next steps:
1. Run tests: npm test src/auth.test.ts
2. Review and refine edge cases
3. Use /save to persist tasks across sessions

Expert Routing Details

TypeScript/JavaScript → typescript-expert

  • Proper type imports
  • Generic type handling
  • Async/await patterns
  • Mock typing

React/JSX → react-expert

  • React Testing Library patterns
  • Component rendering tests
  • Hook testing (renderHook)
  • Accessibility queries (getByRole)

Vue → vue-expert

  • Vue Test Utils patterns
  • Composition API testing
  • Pinia store mocking

Python → python-expert

  • pytest fixtures
  • Parametrized tests
  • Mock/patch patterns
  • Async test handling

Go → go-expert

  • Table-driven tests ([]struct pattern)
  • testing.T and subtests (t.Run)
  • Testify assertions (when detected)
  • Benchmark functions (testing.B)
  • Parallel tests (t.Parallel())

Rust → rust-expert

  • #[test] attribute functions
  • #[cfg(test)] module organization
  • #[should_panic] for error testing
  • proptest/quickcheck for property testing

PHP/Laravel → laravel-expert

  • PHPUnit/Pest patterns
  • Database transactions
  • Factory usage

E2E → cypress-expert

  • Page object patterns
  • Custom commands
  • Network stubbing

Playwright → typescript-expert

  • Page object model patterns
  • Locator strategies
  • Visual regression testing

CLI Tool Integration

Tool Purpose Fallback
jq Parse package.json Read tool
rg Find existing tests Grep tool
ast-grep Parse function signatures ripgrep patterns
fd Find test files Glob tool
Chrome DevTools MCP Visual testing (--visual) Playwright/Cypress

Graceful degradation:

command -v jq >/dev/null 2>&1 && cat package.json | jq '.devDependencies' || cat package.json

Reference Files

For framework-specific code examples, see:

  • frameworks.md - Complete test examples for all supported languages
  • visual-testing.md - Chrome DevTools integration for --visual flag

Integration

Command Relationship
/review Review generated tests before committing
/explain Understand complex code before testing
/save Track test coverage goals