A pragmatic approach to testing that emphasises:
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versiontesting-patternsExecute the skills CLI command in your project's root directory to begin installation:
Fetches testing-patterns from jezweb/claude-skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate testing-patterns. Access via /testing-patterns in your agent's command palette.
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 environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
697
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
697
stars
A pragmatic approach to testing that emphasises:
This is not traditional TDD. Instead:
Running 50 tests in the main conversation would consume your entire context window. By delegating to a sub-agent:
| 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%
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":
Discovery - Claude examines the project:
Test Design - Claude creates project-specific tests:
Structure - Using patterns from this skill:
tests/ directory.claude/agents/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:
Your project provides:
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
| 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.
Testing agents inherit MCP tools from the session. Create an agent that:
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.
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
# 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" }
Copy templates/test-agent.md and customise for your domain.
"Run the search tests"
"Test the API after my changes"
"Run regression tests for gmail-mcp"
Results saved to tests/results/. Commit them for history:
git add tests/results/
git commit -m "Test results: 8/9 passed"
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:
Why parallel agents?
Batching strategy:
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" }
For REST APIs, use Bash tool:
name: API Tests
defaults:
timeout: 5000
tests:
- name: health_checkPrerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ 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.
jezweb/claude-skills
jezweb/claude-skills
jezweb/claude-skills
jezweb/claude-skills
github/awesome-copilot
aj-geddes/useful-ai-prompts
testing-patterns is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Useful defaults in testing-patterns — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
I recommend testing-patterns for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Solid pick for teams standardizing on skills: testing-patterns is focused, and the summary matches what you get after install.
Keeps context tight: testing-patterns is the kind of skill you can hand to a new teammate without a long onboarding doc.
Solid pick for teams standardizing on skills: testing-patterns is focused, and the summary matches what you get after install.
I recommend testing-patterns for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Useful defaults in testing-patterns — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
testing-patterns is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
testing-patterns reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 52