test-generator
Automatically creates basic test structures when you add new code or components.
Install
mkdir -p .claude/skills/test-generator && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4986" && unzip -o skill.zip -d .claude/skills/test-generator && rm skill.zipInstalls to .claude/skills/test-generator
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Automatically suggest tests for new functions and components. Use when new code is written, functions added, or user mentions testing. Creates test scaffolding with Jest, Vitest, Pytest patterns. Triggers on new functions, components, test requests, testing mentions.Key capabilities
- →Generate basic test scaffolding for new functions
- →Identify edge cases for input validation
- →Produce syntax-compliant boilerplate (Jest/Vitest/Pytest)
- →Create standard happy-path test cases
- →Map test requests to specialized sub-agents
How it works
Uses pattern-matching on code structures to generate and inject minimal test coverage logic.
Inputs & outputs
When to use test-generator
- →Generating boilerplate test files
- →Creating tests for new functions
- →Scaffolding component tests
- →Adding edge case coverage to tests
About this skill
Test Generator Skill
Auto-suggest tests when you write new code.
When I Activate
- ✅ New function created
- ✅ New component added
- ✅ User mentions testing or tests
- ✅ Test file missing for implementation
- ✅ User asks "can you test this?"
What I Generate
Quick Test Scaffolding
- Basic happy path tests
- Null/undefined edge cases
- Simple error scenarios
- Framework-appropriate syntax (Jest/Vitest/Pytest)
What I Don't Do
- Comprehensive test suites → Use @test-engineer sub-agent
- Integration tests → Use @test-engineer sub-agent
- E2E test design → Use @test-engineer sub-agent
- Test strategy planning → Use @test-engineer sub-agent
Relationship with @test-engineer Sub-Agent
Me (Skill): Quick test scaffolding @test-engineer (Sub-Agent): Comprehensive testing strategy
Workflow
- You write a function
- I auto-generate basic test structure
- You want full suite → Invoke @test-engineer sub-agent
- Sub-agent creates comprehensive tests
Examples
JavaScript Function
// You write:
function calculateDiscount(price, percentage) {
if (price <= 0) throw new Error('Invalid price');
return price * (percentage / 100);
}
// I auto-generate:
describe('calculateDiscount', () => {
it('calculates discount correctly', () => {
expect(calculateDiscount(100, 10)).toBe(10);
});
it('throws error for invalid price', () => {
expect(() => calculateDiscount(0, 10)).toThrow('Invalid price');
});
it('handles zero percentage', () => {
expect(calculateDiscount(100, 0)).toBe(0);
});
// TODO: Add more edge cases
// Consider: negative percentages, decimal values, very large numbers
});
React Component
// You write:
function UserCard({ user, onEdit }) {
return (
<div className="user-card">
<h2>{user.name}</h2>
<button onClick={() => onEdit(user.id)}>Edit</button>
</div>
);
}
// I auto-generate:
import { render, screen, fireEvent } from '@testing-library/react';
describe('UserCard', () => {
const mockUser = { id: 1, name: 'John Doe' };
const mockOnEdit = jest.fn();
it('renders user name', () => {
render(<UserCard user={mockUser} onEdit={mockOnEdit} />);
expect(screen.getByText('John Doe')).toBeInTheDocument();
});
it('calls onEdit with user id when button clicked', () => {
render(<UserCard user={mockUser} onEdit={mockOnEdit} />);
fireEvent.click(screen.getByText('Edit'));
expect(mockOnEdit).toHaveBeenCalledWith(1);
});
// TODO: Add tests for edge cases
// - Missing user data
// - Undefined onEdit
// - Long names (UI testing)
});
Python Function
# You write:
def fetch_user_data(user_id: int) -> dict:
if user_id <= 0:
raise ValueError("Invalid user ID")
return db.query("SELECT * FROM users WHERE id = ?", [user_id])
# I auto-generate:
import pytest
def test_fetch_user_data_success():
"""Test successful user data retrieval"""
result = fetch_user_data(1)
assert isinstance(result, dict)
assert 'id' in result
def test_fetch_user_data_invalid_id():
"""Test with invalid user ID"""
with pytest.raises(ValueError, match="Invalid user ID"):
fetch_user_data(0)
def test_fetch_user_data_negative_id():
"""Test with negative ID"""
with pytest.raises(ValueError):
fetch_user_data(-1)
# TODO: Add integration tests with database
# TODO: Test database connection failures
Framework Detection
I automatically detect your testing framework:
- JavaScript/TypeScript: Jest, Vitest, Mocha
- Python: pytest, unittest
- Java: JUnit
- Go: testing package
Detection based on:
- package.json dependencies
- requirements.txt
- Existing test files
- Import statements
Test Patterns
Unit Tests
// Function testing
test('adds numbers correctly', () => {
expect(add(2, 3)).toBe(5);
});
Component Tests
// React component testing
test('button click triggers callback', () => {
const onClick = jest.fn();
render(<Button onClick={onClick} />);
fireEvent.click(screen.getByRole('button'));
expect(onClick).toHaveBeenCalled();
});
Edge Cases
// Boundary testing
test('handles empty input', () => {
expect(processData([])).toEqual([]);
});
test('handles null input', () => {
expect(processData(null)).toBeNull();
});
When to Use Sub-Agent
Invoke @test-engineer for:
- Complete test suites (20+ tests)
- Integration test strategy
- E2E test planning
- Test coverage goals
- Complex mocking scenarios
Example:
Me: "Generated 3 basic tests for calculateDiscount()"
You: "@test-engineer create comprehensive test suite with all edge cases"
Sub-agent: [Creates 25+ tests covering all scenarios]
Sandboxing Compatibility
Works without sandboxing: ✅ Yes Works with sandboxing: ✅ Yes
- Filesystem: Writes test files to project
- Network: None required
- Configuration: None required
Customization
Edit test templates:
cp -r ~/.claude/skills/development/test-generator \
~/.claude/skills/development/my-test-generator
# Edit SKILL.md to customize:
# - Test patterns
# - Framework preferences
# - Coverage expectations
Integration with Commands
/test-gen Command
/test-gen --file utils.js --framework jest --coverage 90
# Combines:
# 1. My quick scaffolding
# 2. @test-engineer comprehensive tests
# 3. Full test file generation
Tips
- Let me scaffold first - Review before invoking sub-agent
- Add TODOs - I include TODO comments for complex cases
- Framework consistency - I match your project's testing style
- Quick iteration - Regenerate if not satisfied
Related Tools
- @test-engineer: Comprehensive test suite creation
- code-reviewer skill: Flags code that needs testing
- /test-gen command: Full test generation workflow
When not to use it
- →Complex multi-module integration testing
- →Designing test strategy and planning
- →Generating exhaustive E2E suites
Limitations
- →Lacks capability for logic testing
- →Cannot infer complex domain-specific business rules
How it compares
It focuses on instant, superficial coverage for new code rather than architectural test suite design.
Compared to similar skills
test-generator side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| test-generator (this skill) | 1 | 9mo | Review | Beginner |
| unit-testing-test-generate | 2 | 4mo | Review | Intermediate |
| designing-tests | 1 | 6mo | Review | Beginner |
| checking-changes | 1 | 5mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by alirezarezvani
View all by alirezarezvani →You might also like
unit-testing-test-generate
sickn33
Generate comprehensive, maintainable unit tests across languages with strong coverage and edge case focus.
designing-tests
CloudAI-X
Designs and implements testing strategies for any codebase. Use when adding tests, improving coverage, setting up testing infrastructure, debugging test failures, or when asked about unit tests, integration tests, or E2E testing.
checking-changes
streamlit
Validates all code changes before committing by running format, lint, type, and unit test checks. Use after making backend (Python) or frontend (TypeScript) changes, before committing or finishing a work session.
migrate
alirezarezvani
Migrate from Cypress or Selenium to Playwright. Use when user mentions "cypress", "selenium", "migrate tests", "convert tests", "switch to playwright", "move from cypress", or "replace selenium".
moai-foundation-quality
modu-ai
Enterprise code quality orchestrator with TRUST 5 validation, proactive analysis, and automated best practices enforcement
add-new-setting-field
tsukumijima
【設定追加時は必ず参照】KonomiTV に新しい設定 (v-switch/v-select など) を追加する際の必須手順。SettingsStore.ts / Settings.ts / config.py / Settings/*.vue への追加が必要