testing-patterns

jezweb/claude-skills · updated Apr 8, 2026

MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.

$npx skills add https://github.com/jezweb/claude-skills --skill testing-patterns
0 commentsdiscussion
summary

A pragmatic approach to testing that emphasises:

skill.md

Testing Patterns

A pragmatic approach to testing that emphasises:

  • Live testing over mocks
  • Agent execution to preserve context
  • YAML specs as documentation and tests
  • Persistent results committed to git

Philosophy

This is not traditional TDD. Instead:

  1. Test in production/staging with good logging
  2. Use agents to run tests (keeps main context clean)
  3. Define tests declaratively in YAML (human-readable, version-controlled)
  4. Focus on integration (real servers, real data)

Why Agent-Based Testing?

Running 50 tests in the main conversation would consume your entire context window. By delegating to a sub-agent:

  • Main context stays clean for development
  • Agent can run many tests without context pressure
  • Results come back as a summary
  • Failed tests get detailed investigation

Commands

Command Purpose
/create-tests Discover project, generate test specs + testing agent
/run-tests Execute tests via agent(s), report results
/coverage Generate coverage report and identify uncovered code paths

Quick workflow:

/create-tests        → Generates tests/specs/*.yaml + .claude/agents/test-runner.md
/run-tests           → Spawns agent, runs all tests, saves results
/run-tests api       → Run only specs matching "api"
/run-tests --failed  → Re-run only failed tests
/coverage            → Run tests with coverage, analyse gaps
/coverage --threshold 80  → Fail if below 80%

Getting Started in a New Project

This skill provides the pattern and format. Claude designs the actual tests based on your project context.

What happens when you ask "Create tests for this project":

  1. Discovery - Claude examines the project:

    • What MCP servers are configured?
    • What APIs or tools exist?
    • What does the code do?
  2. Test Design - Claude creates project-specific tests:

    • Test cases for the actual tools/endpoints
    • Expected values based on real behavior
    • Edge cases relevant to this domain
  3. Structure - Using patterns from this skill:

    • YAML specs in tests/ directory
    • Optional testing agent in .claude/agents/
    • Results saved to tests/results/

Example:

You: "Create tests for this MCP server"

Claude: [Discovers this is a Google Calendar MCP]
        [Sees tools: calendar_events, calendar_create, calendar_delete]
        [Designs test cases:]

        tests/calendar-events.yaml:
        - list_upcoming_events (expect: array, count_gte 0)
        - search_by_keyword (expect: contains search term)
        - invalid_date_range (expect: error status)

        tests/calendar-mutations.yaml:
        - create_event (expect: success, returns event_id)
        - delete_nonexistent (expect: error, contains "not found")

The skill teaches Claude:

  • How to structure YAML test specs
  • What validation rules are available
  • How to create testing agents
  • When to use parallel execution

Your project provides:

  • What to actually test
  • Expected values and behaviors
  • Domain-specific edge cases

YAML Test Spec Format

name: Feature Tests
description: What these tests validate

# Optional: defaults applied to all tests
defaults:
  tool: my_tool_name
  timeout: 5000

tests:
  - name: test_case_name
    description: Human-readable purpose
    tool: tool_name  # Override default if needed
    params:
      action: search
      query: "test input"
    expect:
      contains: "expected substring"
      not_contains: "should not appear"
      status: success

Validation Rules

Rule Description Example
contains Response contains string contains: "from:john"
not_contains Response doesn't contain not_contains: "error"
matches Regex pattern match matches: "after:\\d{4}"
json_path Check value at JSON path json_path: "$.results[0].name"
equals Exact value match equals: "success"
status Check success/error status: success
count_gte Array length >= N count_gte: 1
count_eq Array length == N count_eq: 5
type Value type check type: array

See references/validation-rules.md for complete documentation.

Creating a Testing Agent

Testing agents inherit MCP tools from the session. Create an agent that:

  1. Reads YAML test specs
  2. Executes tool calls with params
  3. Validates responses against expectations
  4. Reports results

Agent Template

CRITICAL: Do NOT specify a tools field if you need MCP access. When you specify ANY tools, it becomes an allowlist and "*" is interpreted literally (not as a wildcard). Omit tools entirely to inherit ALL tools from the parent session.

---
name: my-tester
description: |
  Tests [domain] functionality. Reads YAML test specs and validates responses.
  Use when: testing after changes, running regression tests.
# tools field OMITTED - inherits ALL tools from parent (including MCP)
model: sonnet
---

# [Domain] Tester

## How It Works

1. Find test specs: `tests/*.yaml`
2. Parse and execute each test
3. Validate responses
4. Report pass/fail summary

## Test Spec Location

tests/
├── feature-a.yaml
├── feature-b.yaml
└── results/
    └── YYYY-MM-DD-HHMMSS.md

## Execution

For each test:
1. Call tool with params
2. Capture response
3. Apply validation rules
4. Record PASS/FAIL

## Reporting

Save results to `tests/results/YYYY-MM-DD-HHMMSS.md`

See templates/test-agent.md for complete template.

Results Format

Test results are saved as markdown for git history:

# Test Results: feature-name
**Date**: 2026-02-02 14:30
**Commit**: abc1234
**Summary**: 8/9 passed (89%)

## Results

- test_basic_search - PASSED (0.3s)
- test_with_filter - PASSED (0.4s)
- test_edge_case - FAILED

## Failed Test Details

### test_edge_case
- **Expected**: Contains "expected value"
- **Actual**: Response was empty
- **Params**: `{ action: search, query: "" }`

Save to: tests/results/YYYY-MM-DD-HHMMSS.md

Workflow

1. Create Test Specs

# tests/search.yaml
name: Search Tests
defaults:
  tool: my_search_tool

tests:
  - name: basic_search
    params: { query: "hello" }
    expect: { status: success, count_gte: 0 }

  - name: filtered_search
    params: { query: "hello", filter: "recent" }
    expect: { contains: "results" }

2. Create Testing Agent

Copy templates/test-agent.md and customise for your domain.

3. Run Tests

"Run the search tests"
"Test the API after my changes"
"Run regression tests for gmail-mcp"

4. Review Results

Results saved to tests/results/. Commit them for history:

git add tests/results/
git commit -m "Test results: 8/9 passed"

Parallel Test Execution

Run multiple test agents simultaneously to speed up large test suites:

"Run these test suites in parallel:
- Agent 1: tests/auth/*.yaml
- Agent 2: tests/search/*.yaml
- Agent 3: tests/api/*.yaml"

Each agent:

  • Has its own context (won't bloat main conversation)
  • Can run 10-50 tests independently
  • Returns a summary when done
  • Inherits MCP tools from parent session

Why parallel agents?

  • 50 tests in main context = context exhaustion
  • 50 tests across 5 agents = clean context + faster execution
  • Each agent reports pass/fail summary, not every test detail

Batching strategy:

  • Group tests by feature area or MCP server
  • 10-20 tests per agent is ideal
  • Too few = overhead of spawning not worth it
  • Too many = agent context fills up

MCP Testing

For MCP servers, the testing agent inherits configured MCPs:

# Configure MCP first
claude mcp add --transport http gmail https://gmail.mcp.example.com/mcp

# Then test
"Run tests for gmail MCP"

Example MCP test spec:

name: Gmail Search Tests
defaults:
  tool: gmail_messages

tests:
  - name: search_from_person
    params: { action: search, searchQuery: "from John" }
    expect: { contains: "from:john" }

  - name: search_with_date
    params: { action: search, searchQuery: "emails from January 2026" }
    expect: { matches: "after:2026" }

API Testing

For REST APIs, use Bash tool:

name: API Tests
defaults:
  timeout: 5000

tests:
  - name: health_check
how to use testing-patterns

How to use testing-patterns on Cursor

AI-first code editor with Composer

1

Prerequisites

Before installing skills in Cursor, ensure your development environment meets these requirements:

  • Cursor installed and configured on your development machine
  • Node.js version 16.0+ with npm package manager (verify with node --version)
  • Active project directory or workspace where you want to add testing-patterns
2

Execute installation command

Execute the skills CLI command in your project's root directory to begin installation:

$npx skills add https://github.com/jezweb/claude-skills --skill testing-patterns

The skills CLI fetches testing-patterns from GitHub repository jezweb/claude-skills and configures it for Cursor.

3

Select Cursor when prompted

The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:

◆ Which agents do you want to install to?
│ ── Universal (.agents/skills) ── always included ────
│ • Amp
│ • Antigravity
│ • Cline
│ • Codex
│ ●Cursor(selected)
│ • Cursor
│ • Windsurf
4

Verify installation

Confirm successful installation by checking the skill directory location:

.cursor/skills/testing-patterns

Reload or restart Cursor to activate testing-patterns. Access the skill through slash commands (e.g., /testing-patterns) or your agent's skill management interface.

Security & Verification Notice

We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.

Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.

List & Monetize Your Skill

Submit your Claude Code skill and start earning

GET_STARTED →

Use Cases

Task Automation & Efficiency

Automate repetitive workflows and reduce manual effort

Example

Generate reports, summarize documents, draft communications

Save 3-5 hours per week on routine tasks

Knowledge Enhancement

Learn new skills, understand complex topics, get expert guidance

Example

Explain concepts, provide examples, suggest learning resources

Accelerate learning and skill development by 2x

Quality Improvement

Enhance output quality through reviews, suggestions, and refinements

Example

Review drafts, suggest improvements, catch errors

Improve work quality by 30-40% with less effort

Implementation Guide

Prerequisites

  • Claude Desktop or compatible AI client with skill support
  • Clear understanding of task or problem to solve
  • Willingness to iterate and refine outputs

Time Estimate

15-45 minutes depending on use case complexity

Installation Steps

  1. 1.Install skill using provided installation command
  2. 2.Test with simple use case relevant to your work
  3. 3.Evaluate output quality and relevance
  4. 4.Iterate on prompts to improve results
  5. 5.Integrate into regular workflow if valuable

Common Pitfalls

  • Expecting perfect results without iteration
  • Not providing enough context in prompts
  • Using skill for tasks outside its intended scope
  • Accepting outputs without review and validation

Best Practices

✓ Do

  • +Start with clear, specific prompts
  • +Provide relevant context and constraints
  • +Review and refine all outputs before using
  • +Iterate to improve output quality
  • +Document successful prompt patterns

✗ Don't

  • Don't use without understanding skill limitations
  • Don't skip validation of outputs
  • Don't share sensitive information in prompts
  • Don't expect skill to replace human judgment

💡 Pro Tips

  • Be specific about desired format and style
  • Ask for multiple options to choose from
  • Request explanations to understand reasoning
  • Combine AI efficiency with human expertise

When to Use This

✓ Use When

Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.

✗ Avoid When

Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.

Learning Path

  1. 1Familiarize yourself with skill capabilities and limitations
  2. 2Start with low-risk, non-critical tasks
  3. 3Progress to more complex and valuable use cases
  4. 4Build expertise through regular use and experimentation

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.552 reviews
  • Omar Sharma· Dec 24, 2024

    testing-patterns is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Olivia Diallo· Dec 16, 2024

    Useful defaults in testing-patterns — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Pratham Ware· Dec 12, 2024

    I recommend testing-patterns for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Tariq Garcia· Dec 12, 2024

    Solid pick for teams standardizing on skills: testing-patterns is focused, and the summary matches what you get after install.

  • Zara Verma· Nov 19, 2024

    Keeps context tight: testing-patterns is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Lucas Harris· Nov 15, 2024

    Solid pick for teams standardizing on skills: testing-patterns is focused, and the summary matches what you get after install.

  • Mia Kim· Nov 7, 2024

    I recommend testing-patterns for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Sakshi Patil· Nov 3, 2024

    Useful defaults in testing-patterns — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Olivia Lopez· Nov 3, 2024

    testing-patterns is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Mia Mensah· Oct 26, 2024

    testing-patterns reduced setup friction for our internal harness; good balance of opinion and flexibility.

showing 1-10 of 52

1 / 6