en un clic
testing-skill
// Record, rewrite, and debug VCR cassettes for HTTP recordings. Use when running tests with --record-mode, verifying cassette playback, or inspecting request/response bodies in YAML cassettes.
// Record, rewrite, and debug VCR cassettes for HTTP recordings. Use when running tests with --record-mode, verifying cassette playback, or inspecting request/response bodies in YAML cassettes.
Evaluate and complete an issue or PR where the submitted patch fixes only a narrow symptom of the reported pain point. Use when a contribution may miss adjacent integration surfaces, provider/spec semantics, roundtrip behavior, tests, docs, or historical maintainer decisions.
Build AI agents with Pydantic AI — tools, capabilities, structured output, streaming, testing, and multi-agent patterns. Use when the user mentions Pydantic AI, imports pydantic_ai, or asks to build an AI agent, add tools/capabilities, stream output, define agents from YAML, or test agent behavior.
Find and address unresolved PR review comments for the current branch, then summarize the changes and help reply to and resolve threads after user approval.
| name | testing-skill |
| description | Record, rewrite, and debug VCR cassettes for HTTP recordings. Use when running tests with --record-mode, verifying cassette playback, or inspecting request/response bodies in YAML cassettes. |
| allowed-tools | Bash(uv run pytest *), Bash(uv run python .claude/skills/testing-skill/parse_cassette.py *), Bash(source .env && uv run pytest *), Bash(git diff *) |
Use this skill when recording or re-recording VCR cassettes for tests, or when debugging cassette contents.
.env exists: test -f .env && echo 'ok' || echo 'missing'--record-mode=rewrite : Record cassettes (works for both new and existing)--lf : Run only the last failed tests-vv : Verbose output--tb=line : Short traceback output-k="" : Run tests matching the given substring expressionsource .env && uv run pytest path/to/test.py::test_function_name -v --tb=line --record-mode=rewrite
Multiple tests can be specified:
source .env && uv run pytest path/to/test.py::test_one path/to/test.py::test_two -v --tb=line --record-mode=rewrite
Run the same tests WITHOUT --record-mode to verify cassettes play back correctly:
source .env && uv run pytest path/to/test.py::test_function_name -vv --tb=line
If tests use snapshot() assertions:
Parse VCR cassette YAML files to inspect request/response bodies without dealing with raw YAML.
uv run python .claude/skills/testing-skill/parse_cassette.py <cassette_path> [--interaction N]
# Parse all interactions in a cassette
uv run python .claude/skills/testing-skill/parse_cassette.py tests/models/cassettes/test_foo/test_bar.yaml
# Parse only interaction 1 (0-indexed)
uv run python .claude/skills/testing-skill/parse_cassette.py tests/models/cassettes/test_foo/test_bar.yaml --interaction 1
For each interaction, shows:
Base64 strings longer than 100 chars are truncated for readability.
# 1. Record cassette
source .env && uv run pytest tests/models/test_openai.py::test_chat_completion -v --tb=line --record-mode=rewrite
# 2. Verify playback and fill snapshots
source .env && uv run pytest tests/models/test_openai.py::test_chat_completion -vv --tb=line
# 3. Review test code diffs (excludes cassettes)
git diff tests/ -- ':!**/cassettes/**'
# 4. List new/changed cassettes (name only - use parse_cassette.py to inspect)
git diff --name-only tests/ -- '**/cassettes/**'
# 5. Inspect cassette contents if needed
uv run python .claude/skills/testing-skill/parse_cassette.py tests/models/cassettes/test_openai/test_chat_completion.yaml