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