testgen

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "testgen" with this command: npx skills add 0xdarkmatter/claude-mods/0xdarkmatter-claude-mods-testgen

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 PatternPrimary ExpertSecondary
*.tstypescript-expert-
*.tsx, *.jsxreact-experttypescript-expert
*.vuevue-experttypescript-expert
*.pypython-expert-
*.gogo-expert-
*.rsrust-expert-
*.phplaravel-expert-
*.cy.ts, cypress/*cypress-expert-
*.spec.ts (Playwright)typescript-expert-
playwright/*, e2e/*typescript-expert-
*.sh, *.bashbash-expert-
(--visual flag)Chrome DevTools MCPtypescript-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:

FocusWhat to Generate
happyNormal input, expected output
edgeBoundary values, empty inputs, nulls
errorInvalid inputs, exceptions, error handling
allAll of the above (default)

Depth levels:

DepthCoverage
quickHappy path only, 1-2 tests per function
normalHappy + common edge cases (default)
thoroughComprehensive: 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

ToolPurposeFallback
jqParse package.jsonRead tool
rgFind existing testsGrep tool
ast-grepParse function signaturesripgrep patterns
fdFind test filesGlob tool
Chrome DevTools MCPVisual 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

CommandRelationship
/reviewReview generated tests before committing
/explainUnderstand complex code before testing
/saveTrack test coverage goals

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

file-search

No summary provided by upstream source.

Repository SourceNeeds Review
General

container-orchestration

No summary provided by upstream source.

Repository SourceNeeds Review
General

find-replace

No summary provided by upstream source.

Repository SourceNeeds Review
General

task-runner

No summary provided by upstream source.

Repository SourceNeeds Review