Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -59% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 82% | 0% |
Auto-suggest tests when you write new code.
Me (Skill): Quick test scaffolding @test-engineer (Sub-Agent): Comprehensive testing strategy
javascript// 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 });
jsx// 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# 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
I automatically detect your testing framework:
Detection based on:
javascript// Function testing test('adds numbers correctly', () => { expect(add(2, 3)).toBe(5); });
jsx// React component testing test('button click triggers callback', () => { const onClick = jest.fn(); render(<Button onClick={onClick} />); fireEvent.click(screen.getByRole('button')); expect(onClick).toHaveBeenCalled(); });
javascript// Boundary testing test('handles empty input', () => { expect(processData([])).toEqual([]); }); test('handles null input', () => { expect(processData(null)).toBeNull(); });
Invoke @test-engineer for:
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]Works without sandboxing: ✅ Yes Works with sandboxing: ✅ Yes
Edit test templates:
bashcp -r ~/.claude/skills/development/test-generator \ ~/.claude/skills/development/my-test-generator # Edit SKILL.md to customize: # - Test patterns # - Framework preferences # - Coverage expectations
bash/test-gen --file utils.js --framework jest --coverage 90 # Combines: # 1. My quick scaffolding # 2. @test-engineer comprehensive tests # 3. Full test file generation
Other measured skills in the registry, with their headline benchmark lift.