Agent skill

Test Patterns

by rohitg00 in rohitg00/skillkit

Applies proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother, parameterized tests, fixtures, spies, and test doubles — to help write maintainable…

Apache-2.0Auto-check passedTesting & QA

Install Test Patterns

skills CLI
$ npx skills add rohitg00/skillkit --skill test-patterns -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rohitg00/skillkit test-patterns --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rohitg00/skillkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/core/src/methodology/packs/testing/test-patterns .claude/skills/test-patterns && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
test-patterns
GitHub stars
1.5k
Token cost
~1.8k tokens
SKILL.md length
414 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Applies proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother, parameterized tests, fixtures, spies, and test doubles — to help write maintainable…

  • Works in 4 steps: Fresh instances - Create new objects in… → Reset mocks - Clear mock state between… → Clean up - Remove side effects (files,… → …
  • The user asks about writing unit tests
  • SKILL.md covers Pattern Selection Guide, Pattern Combination Workflows, Core Pattern:… and Pattern: Given-When-Then (BDD…, plus 10 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Test Patterns is an agent skill from rohitg00/skillkit. Applies proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother, parameterized tests, fixtures, spies, and test doubles — to help write maintainable, reliable, and readable test suites. Use when the user asks about writing unit tests, integration tests, or end-to-end tests; structuring test cases or test suites; applying TDD or BDD practices; working with mocks, stubs, spies, or fakes; improving test coverage or reducing flakiness; or needs guidance on test…

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing, Test generation and Test data and fixtures. It works with Jest, pytest and Vitest. The repository describes itself as: Supercharge AI coding agents with portable skills. Install, translate & share skills across Claude Code, Cursor, Codex, Copilot & 40 more. The licence is Apache-2.0.

When your agent uses it

  • The user asks about writing unit tests
  • Integration tests
  • End-to-end tests
  • Structuring test cases

Example prompts

  • “Use the test-patterns skill to apply proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother…”
  • “/test-patterns”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Fresh instances - Create new objects in each test
  2. Reset mocks - Clear mock state between tests
  3. Clean up - Remove side effects (files, database rows)
  4. No shared mutable state - Avoid global variables

What it can do on your machine

Read from SKILL.md and the folder at commit d2e5c34. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Test Patterns loads about 1.8k tokens when it runs. Until then it costs about 156 tokens; SKILL.md has 414 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~156
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rohitg00/skillkit at commit d2e5c34, republished under its Apache-2.0 licence (© rohitg00). 414 words, ~1,762 tokens.

Download SKILL.mdSave it as .claude/skills/test-patterns/SKILL.md (or your agent's skills folder).
name
test-patterns
description
Applies proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother, parameterized tests, fixtures, spies, and test doubles — to help write maintainable, reliable, and readable test suites. Use when the user asks about writing unit tests, integration tests, or end-to-end tests; structuring test cases or test suites; applying TDD or BDD practices; working with mocks, stubs, spies, or fakes; improving test coverage or reducing flakiness; or needs guidance on test organization, naming conventions, or assertions in frameworks like Jest, Vitest, pytest, or similar.
version
1.0.0
triggers
test patterns, testing best practices, how to write tests, test structure, arrange act assert
tags
testing, patterns, quality, best-practices
difficulty
intermediate
estimatedTime
10
relatedSkills
testing/red-green-refactor, testing/anti-patterns

Test Patterns

You are applying proven testing patterns to write maintainable, reliable tests. These patterns help ensure tests are readable, focused, and trustworthy.

Pattern Selection Guide

Use this to choose the right pattern for your situation:

  • Structuring a single test? → Arrange-Act-Assert (AAA) or Given-When-Then
  • Writing behavior/feature specs? → Given-When-Then (BDD style)
  • Repeating test setup data? → Test Data Builders
  • Many variations of complex objects? → Object Mother
  • Testing same logic with many inputs? → Parameterized Tests
  • Shared setup/teardown across tests? → Test Fixtures
  • Verifying a dependency was called? → Spy
  • Replacing an external dependency? → Test Doubles (Stub / Mock / Fake)

Pattern Combination Workflows

Patterns rarely stand alone — here's how to combine them for common scenarios:

Unit tests (isolated logic): Fixtures for setup → AAA structure → Stubs/Mocks for dependencies → Parameterized Tests for multiple input cases

Integration tests (service + external dependencies): Fixtures for setup → AAA structure → Fakes for external services (e.g. in-memory DB) → Spies to verify interaction points

BDD / feature specs: Given-When-Then → Object Mother or Test Data Builders for scenario data → Fakes for infrastructure

High-variation logic (validators, calculators, formatters): Parameterized Tests → Test Data Builders to construct each case → AAA structure within each case


Core Pattern: Arrange-Act-Assert (AAA)

Structure every test with three distinct phases:

// Arrange - Set up test data and dependencies
const user = createTestUser({ role: 'admin' });
const service = new UserService(mockRepository);

// Act - Execute the code under test
const result = await service.updateRole(user.id, 'member');

// Assert - Verify the expected outcome
expect(result.role).toBe('member');
expect(mockRepository.save).toHaveBeenCalledWith(user);

Guidelines:

  • Keep sections visually separated (blank lines or comments)
  • Arrange should be minimal - only what's needed for this test
  • Act should be a single operation
  • Assert should verify one logical concept

Pattern: Given-When-Then (BDD Style)

For behavior-focused tests:

describe('Shopping Cart', () => {
  describe('when adding an item', () => {
    it('should increase the item count', () => {
      // Given
      const cart = new Cart();

      // When
      cart.add({ id: '1', quantity: 2 });

      // Then
      expect(cart.itemCount).toBe(2);
    });
  });
});

Pattern: Test Data Builders

Create flexible test data without repetition:

// Builder function
function createTestOrder(overrides = {}) {
  return {
    id: 'order-123',
    status: 'pending',
    items: [],
    total: 0,
    ...overrides
  };
}

// Usage
const completedOrder = createTestOrder({ status: 'completed', total: 99.99 });
const emptyOrder = createTestOrder({ items: [] });

Pattern: Object Mother

Factory for complex test objects:

class TestUserFactory {
  static admin() {
    return new User({ role: 'admin', permissions: ALL_PERMISSIONS });
  }

  static guest() {
    return new User({ role: 'guest', permissions: [] });
  }

  static withSubscription(tier) {
    return new User({ subscription: { tier, active: true } });
  }
}
Show full SKILL.md (164 more words)Show less

Pattern: Parameterized Tests

Test multiple cases efficiently:

describe('isValidEmail', () => {
  const validCases = [
    'user@example.com',
    'user.name@domain.co.uk',
    'user+tag@example.org'
  ];

  const invalidCases = [
    '',
    'not-an-email',
    '@no-local.com',
    'no-domain@'
  ];

  test.each(validCases)('should accept valid email: %s', (email) => {
    expect(isValidEmail(email)).toBe(true);
  });

  test.each(invalidCases)('should reject invalid email: %s', (email) => {
    expect(isValidEmail(email)).toBe(false);
  });
});

Pattern: Test Fixtures

Reusable test setup:

describe('OrderService', () => {
  let service;
  let mockPaymentGateway;
  let mockInventory;

  beforeEach(() => {
    mockPaymentGateway = createMockPaymentGateway();
    mockInventory = createMockInventory();
    service = new OrderService(mockPaymentGateway, mockInventory);
  });

  afterEach(() => {
    jest.clearAllMocks();
  });
});

Pattern: Spy on Dependencies

Verify interactions without implementation:

it('should send notification on order completion', async () => {
  const notifySpy = jest.spyOn(notificationService, 'send');

  await orderService.complete(orderId);

  expect(notifySpy).toHaveBeenCalledWith({
    type: 'order_completed',
    orderId: orderId
  });
});

Pattern: Test Doubles

Choose the right type:

TypeWhen to Use
StubNeed predictable, canned return values
MockNeed to assert a dependency was called correctly
SpyPartial mocking — observe calls on a real object
FakeNeed a working lightweight substitute (e.g. in-memory DB)

Pattern: Test Isolation

Ensure tests don't affect each other:

  1. Fresh instances - Create new objects in each test
  2. Reset mocks - Clear mock state between tests
  3. Clean up - Remove side effects (files, database rows)
  4. No shared mutable state - Avoid global variables

Naming Conventions

Test names should describe:

  • What is being tested
  • Under what conditions
  • What the expected outcome is

Good examples:

  • shouldReturnEmptyArrayWhenNoItemsExist
  • throwsErrorWhenUserNotAuthenticated
  • calculatesDiscountForPremiumMembers

Test Organization

src/
  services/
    UserService.ts
    UserService.test.ts    # Co-located tests

tests/
  integration/
    api.test.ts            # Integration tests
  e2e/
    checkout.spec.ts       # End-to-end tests

Verification Checklist

For each test:

  • Single responsibility (tests one thing)
  • Clear AAA or GWT structure
  • Descriptive name
  • Fast execution (< 100ms for unit tests)
  • Deterministic (no flakiness)
  • Independent (runs in any order)

© rohitg00, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in packages/core/src/methodology/packs/testing/test-patterns of rohitg00/skillkit.

Open the folder on GitHubat commit d2e5c34

Compare with similar skills

Test Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Test Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Test Patterns this skillrohitg00/skillkit1.5k—~1.8kAutomated safety check: PassApache-2.0
MoAI TDD Workflowmodu-ai/moai-adk1.2k—~3.1kAutomated safety check: PassApache-2.0
Test Generatoralirezarezvani/claude-code-tresor777—~1.6kAutomated safety check: PassMIT
Accurate Testingtheexperiencecompany/gaia308—~3.4kAutomated safety check: PassCustom licence
TDD Guidealirezarezvani/claude-skills28k—~3.4kAutomated safety check: PassMIT
Code Testing Agentmicrosoft/testfx1k—~2.7kAutomated safety check: PassMIT

Similar skills

  • MoAI TDD Workflow

    modu-ai/moai-adk

    Drives test-first development through the RED, GREEN, REFACTOR cycle, with a config switch that selects between TDD and a DDD workflow for existing code.

    1.2k GitHub stars~3.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Test Generator

    alirezarezvani/claude-code-tresor

    Automatically suggest tests for new functions and components.

    777 GitHub stars~1.6k tokensUpdated 3 mo ago
    Testing & QAAuto-check passed
  • Accurate Testing

    theexperiencecompany/gaia

    Write adversarial test cases that break production code instead of producing false confidence.

    308 GitHub stars~3.4k tokensUpdated today
    Testing & QAAuto-check passed
  • TDD Guide

    alirezarezvani/claude-skills

    Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…

    28k GitHub stars~3.4k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Code Testing Agent

    microsoft/testfx

    Official

    Generates and writes new unit tests for any programming language — scaffolds .NET test projects, pytest suites, Vitest/Jest suites, Go test files, and JUnit suites, and configures coverage tooling…

    1k GitHub stars~2.7k tokensUpdated today
    Testing & QAAuto-check passed
  • Test Tagging

    microsoft/testfx

    Official

    Analyzes test suites in any language and tags each test with a standardized set of traits (positive, negative, critical-path, boundary, smoke, regression, integration, performance, security).

    1k GitHub stars~4.3k tokensUpdated today
    Testing & QAAuto-check passed

More from rohitg00/skillkit

All 14 skills in this repo
  • Design First

    rohitg00/skillkit

    Guides the creation of technical design documents before writing code, producing architecture diagrams, data models, API interface definitions, implementation plans, and multi-option trade-off…

    1.5k GitHub stars~1.5k tokensUpdated 4 mo ago
    Auto-check passed
  • Find Skills

    rohitg00/skillkit

    Discovers, searches, and installs skills from multiple AI agent skill marketplaces (400K+ skills) using the SkillKit CLI.

    1.5k GitHub stars~1.2k tokensUpdated 4 mo ago
    Auto-check passed
  • Handoff Protocols

    rohitg00/skillkit

    Manages work transitions between team members or agents by creating structured handoff documents, summarizing project status, documenting key decisions, blockers, and open questions, and generating…

    1.5k GitHub stars~1.5k tokensUpdated 4 mo ago
    Auto-check passed
  • Hypothesis Testing

    rohitg00/skillkit

    Applies the scientific method to debugging by helping users form specific, testable hypotheses, design targeted experiments, and systematically confirm or reject theories to find root causes.

    1.5k GitHub stars~1.5k tokensUpdated 4 mo ago
    Auto-check passed
  • Parallel Investigation

    rohitg00/skillkit

    Coordinates parallel investigation threads to simultaneously explore multiple hypotheses or root causes across different system areas.

    1.5k GitHub stars~1.4k tokensUpdated 4 mo ago
    Auto-check passed
  • Red Green Refactor

    rohitg00/skillkit

    Guides the red-green-refactor TDD workflow: write a failing test first, implement the minimum code to make it pass, then refactor while keeping tests green.

    1.5k GitHub stars~1.3k tokensUpdated 4 mo ago
    Auto-check passed

Categories

Questions about Test Patterns

What does Test Patterns do?

Applies proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother, parameterized tests, fixtures, spies, and test doubles — to help write maintainable…. Test Patterns is an agent skill from rohitg00/skillkit. Applies proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother, parameterized tests, fixtures, spies, and test doubles — to help write maintainable, reliable, and readable test suites.

When should I use Test Patterns?

Test Patterns fits situations like: the user asks about writing unit tests; integration tests; end-to-end tests; structuring test cases.

How do I install Test Patterns in Claude Code?

Run `npx skills add rohitg00/skillkit --skill test-patterns -a claude-code`. Or copy the skill folder (packages/core/src/methodology/packs/testing/test-patterns in rohitg00/skillkit) into .claude/skills/test-patterns in your project. Claude Code loads it when a task matches its description.

How do I install Test Patterns in Codex?

Run `npx skills add rohitg00/skillkit --skill test-patterns -a codex`. Or copy the skill folder (packages/core/src/methodology/packs/testing/test-patterns in rohitg00/skillkit) into .agents/skills/test-patterns in your project. Codex loads it when a task matches its description.

Can I use Test Patterns in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rohitg00/skillkit --skill test-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-patterns, .gemini/skills/test-patterns, .github/skills/test-patterns and .opencode/skills/test-patterns in your project.

What does Test Patterns need to run?

SKILL.md names no scripts, command-line tools or credentials: Test Patterns is instructions for the agent only.

Does Test Patterns access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Test Patterns safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Test Patterns use?

Test Patterns is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Test Patterns use?

About 1.8k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Test Patterns?

Skills that share tags, products or a category with Test Patterns: MoAI TDD Workflow (modu-ai/moai-adk, 1.2k stars), Test Generator (alirezarezvani/claude-code-tresor, 777 stars), Accurate Testing (theexperiencecompany/gaia, 308 stars) and TDD Guide (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Test Patterns?

rohitg00 (a GitHub user) maintains it in rohitg00/skillkit, which has 1,546 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on June 2, 2026.

Source: rohitg00/skillkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.