testing-best-practices — Claude Code skill: test rules
A rule set for unit and integration tests and TDD: 34 rules in 7 categories, TypeScript with Jest and Vitest. Useful while writing tests or reviewing someone else's.
npx skills add AsyrafHussin/agent-skills --skill testing-best-practices -a claude-codeWhat testing-best-practices does
The skill splits testing into 7 categories by priority. Test structure and isolation are marked CRITICAL, assertions and test data HIGH, mocking and coverage MEDIUM, performance LOW. Inside are 34 rules with prefixes like struct-, iso-, assert-, mock-, cov-. Each rule sits in its own file under rules/, for example rules/struct-aaa-pattern.md or rules/mock-boundaries.md.
What the rules cover: the Arrange, Act, Assert pattern, descriptive test names, tests that run independently, no shared mutable state, specific assertions, factories and builders for test data, mocks only at boundaries. Code samples are TypeScript with Jest and Vitest, and there is a section on MSW for realistic mock behaviour.
100% coverage is not the goal here — edge cases and error paths matter more. Unit tests are advised to stay fast, under 50ms each, and to run in parallel. The full compiled guide lives in AGENTS.md, so you do not have to read rule files one by one. When a specific test is flaky or slow, though, opening the matching rule is faster.
What it helps with
- shape tests around Arrange, Act, Assert
- stop tests from depending on run order
- replace vague assertions with specific ones
- build test data through factories and builders
- track down a slow or flaky test run
Example prompts for the agent
- write tests for this module following the skill's rules
- review my tests and point out where isolation breaks
- help me cover edge cases for the orders service
How to install testing-best-practices
1Skills CLI (Vercel)
npx skills add AsyrafHussin/agent-skills --skill testing-best-practices -a claude-code2Manually: put the files in place
~/.claude/skills/testing-best-practices/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/testing-best-practices/
1Skills CLI (Vercel)
npx skills add AsyrafHussin/agent-skills --skill testing-best-practices -a codex2Manually: put the files in place
.agents/skills/testing-best-practices/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add AsyrafHussin/agent-skills --skill testing-best-practices -a cursor2Manually: put the files in place
.cursor/skills/testing-best-practices/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install AsyrafHussin/agent-skills testing-best-practices2Manually: put the files in place
.github/skills/testing-best-practices/SKILL.md1Skills CLI (Vercel)
npx skills add AsyrafHussin/agent-skills --skill testing-best-practices -a gemini-cli2Platform CLI
gemini skills install https://github.com/AsyrafHussin/agent-skills --path skills/testing-best-practicesManually: put the files in place
.devin/skills/testing-best-practices/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add AsyrafHussin/agent-skills --skill testing-best-practices -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about testing-best-practices
How do I install testing-best-practices in Claude?
Run npx skills add AsyrafHussin/agent-skills --skill testing-best-practices -a claude-code. The skill file then lands at ~/.claude/skills/testing-best-practices/SKILL.md.
What does testing-best-practices do?
It gives the agent 34 rules on unit testing, integration testing and TDD, grouped into 7 categories. The agent leans on them when writing tests, reviewing test code or planning coverage.
What are the code samples written in?
TypeScript, with Jest and Vitest, plus MSW for boundary mocks. The rules themselves describe general principles rather than one framework.
Source text
SKILL.md · MIT
---
name: testing-best-practices
description: Unit testing, integration testing, and test-driven development principles. Use when writing tests, reviewing test code, improving test coverage, or setting up testing strategy. Triggers on "write tests", "review tests", "testing best practices", or "TDD".
license: MIT
metadata:
author: agent-skills
version: "2.0.0"
---
# Testing Best Practices
Unit testing, integration testing, and TDD principles for reliable, maintainable test suites. Contains 34 rules across 7 categories using TypeScript with Jest/Vitest.
## Metadata
- **Version:** 2.0.0
- **Rule Count:** 34 rules across 7 categories
- **License:** MIT
## When to Apply
Reference these guidelines when:
- Writing unit or integration tests
- Reviewing test code quality
- Improving test coverage strategy
- Setting up testing infrastructure
- Debugging flaky or slow tests
## Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Test Structure | CRITICAL | `struct-` |
| 2 | Test Isolation | CRITICAL | `iso-` |
| 3 | Assertions | HIGH | `assert-` |
| 4 | Test Data | HIGH | `data-` |
| 5 | Mocking | MEDIUM | `mock-` |
| 6 | Coverage | MEDIUM | `cov-` |
| 7 | Performance | LOW | `perf-` |
## Quick Reference
### 1. Test Structure (CRITICAL)
- `struct-aaa-pattern` - Arrange, Act, Assert pattern
- `struct-descriptive-names` - Descriptive test names
- `struct-one-assertion` - One logical assertion per test
- `struct-describe-it` - Organized test suites with describe/it
- `struct-given-when-then` - BDD style when appropriate
- `struct-setup-teardown` - Proper setup and teardown
### 2. Test Isolation (CRITICAL)
- `iso-independent-tests` - Tests run independently
- `iso-no-shared-state` - No shared mutable state
- `iso-deterministic` - Same result every run
- `iso-no-order-dependency` - Run in any order
- `iso-cleanup` - Clean up after tests
- `iso-test-doubles` - Strategic use of test doubles
### 3. Assertions (HIGH)
- `assert-specific` - Use specific assertions
- `assert-meaningful-messages` - Helpful failure messages
- `assert-expected-actual` - Expected value first
- `assert-no-magic-numbers` - Use named constants
- `assert-custom-matchers` - Custom matchers for domain logic
### 4. Test Data (HIGH)
- `data-factories` - Use factories for test data
- `data-builders` - Builder pattern for complex objects
- `data-faker` - Generate realistic fake data
- `data-minimal` - Minimal test data
- `data-realistic` - Realistic edge cases
- `data-fixtures` - Manage test fixtures
### 5. Mocking (MEDIUM)
- `mock-boundaries` - Mock only at boundaries
- `mock-verify-interactions` - Verify important mock calls
- `mock-minimal` - Don't over-mock
- `mock-realistic` - Realistic mock behavior with MSW
### 6. Coverage (MEDIUM)
- `cov-meaningful` - Focus on meaningful coverage
- `cov-edge-cases` - Cover edge cases and boundary values
- `cov-unhappy-paths` - Test error scenarios
- `cov-not-100-percent` - 100% coverage isn't the goal
### 7. Performance (LOW)
- `perf-fast-unit` - Keep unit tests fast (<50ms each)
- `perf-parallel` - Run tests in parallel
- `perf-test-organization` - Organize tests for fast feedback
## Essential Guidelines
### AAA Pattern (Arrange, Act, Assert)
```typescript
it('calculates total with discount', () => {
// Arrange
const cart = new ShoppingCart();
cart.addItem({ name: 'Book', price: 20 });
cart.applyDiscount(0.1);
// Act
const total = cart.getTotal();
// Assert
expect(total).toBe(18);
});
```
### Descriptive Test Names
```typescript
// ✅ Describes behavior and scenario
describe('UserService.register', () => {
it('creates user with hashed password', () => {});
it('throws ValidationError when email is invalid', () => {});
it('sends welcome email after successful registration', () => {});
});
```
### Test Isolation
```typescript
// ✅ Each test sets up its own data
beforeEach(() => {
mockRepository = { save: vi.fn(), find: vi.fn() };
service = new OrderService(mockRepository);
});
```
## How to Use
Read individual rule files for detailed explanations:
```
rules/struct-aaa-pattern.md
rules/iso-independent-tests.md
rules/mock-boundaries.md
rules/cov-meaningful.md
```
## References
- [Vitest Documentation](https://vitest.dev)
- [Jest Documentation](https://jestjs.io)
- [Testing Library](https://testing-library.com)
- [MSW (Mock Service Worker)](https://mswjs.io)
## Full Compiled Document
For the complete guide with all rules expanded: `AGENTS.md`
© agent-skills · MIT · AsyrafHussin/agent-skills