Web Application Testing
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
Record, rewrite, and debug VCR cassettes for HTTP recordings.
$ npx skills add pydantic/pydantic-ai --skill testing-skill -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pydantic/pydantic-ai testing-skill --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pydantic/pydantic-ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/testing-skill .claude/skills/testing-skill && rm -rf skills-srcUse ~/.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/
Install the "testing-skill" agent skill from https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skill into .claude/skills/testing-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-skill", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skillType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pydantic/pydantic-ai --skill testing-skill -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pydantic/pydantic-ai testing-skill --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pydantic/pydantic-ai.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/testing-skill .agents/skills/testing-skill && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "testing-skill" agent skill from https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skill into .agents/skills/testing-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-skill", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pydantic/pydantic-ai --skill testing-skill -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pydantic/pydantic-ai testing-skill --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pydantic/pydantic-ai.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/testing-skill .cursor/skills/testing-skill && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "testing-skill" agent skill from https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skill into .cursor/skills/testing-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-skill", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pydantic/pydantic-ai.git --path .claude/skills/testing-skill--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pydantic/pydantic-ai --skill testing-skill -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pydantic/pydantic-ai testing-skill --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pydantic/pydantic-ai.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/testing-skill .gemini/skills/testing-skill && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "testing-skill" agent skill from https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skill into .gemini/skills/testing-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-skill", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pydantic/pydantic-ai testing-skillInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pydantic/pydantic-ai --skill testing-skill -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pydantic/pydantic-ai.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/testing-skill .github/skills/testing-skill && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "testing-skill" agent skill from https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skill into .github/skills/testing-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-skill", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pydantic/pydantic-ai --skill testing-skill -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pydantic/pydantic-ai testing-skill --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pydantic/pydantic-ai.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/testing-skill .opencode/skills/testing-skill && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "testing-skill" agent skill from https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skill into .opencode/skills/testing-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-skill", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
testing-skillRecord, rewrite, and debug VCR cassettes for HTTP recordings.
Testing Skill is an agent skill from pydantic/pydantic-ai, published by the product's own GitHub organization. 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.
Its SKILL.md is about 840 tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `parse_cassette.py`).
It sits in Testing & QA. The repository describes itself as: How Python does AI. Agents, realtime voice, image generation, embeddings. Every model, every interface, typed end to end. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 402a2ed. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(uv run pytest *)Bash(uv run python .claude/skills/testing-skill/parse_cassette.py *)Bash(source .env && uv run pytest *)Bash(git diff *)From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
uvgitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Testing Skill loads about 839 tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 198 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
-skill/parse_cassette.py *), Bash(source .env && uv run pytest *), Bash(git diff *)- Verify `.env` exists: `test -f .env && echo 'ok' || echo 'missing'`source .env && uv run pytest path/to/test.py::test_function_name -v --tb=line --record-mode=rewritesource .env && uv run pytest path/to/test.py::test_one path/to/test.py::test_two -v --tb=line --record-mode=rewritesource .env && uv run pytest path/to/test.py::test_function_name -vv --tb=linesource .env && uv run pytest tests/models/test_openai.py::test_chat_completion -v --tb=line --record-mode=rewritesource .env && uv run pytest tests/models/test_openai.py::test_chat_completion -vv --tb=lineAutomated 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.
The full file from pydantic/pydantic-ai at commit 402a2ed, republished under its MIT licence (© pydantic). 198 words, ~839 tokens.
.claude/skills/testing-skill/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.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=rewriteMultiple 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=rewriteRun 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=lineIf 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 1For 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© pydantic, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .claude/skills/testing-skill of pydantic/pydantic-ai.
Open the folder on GitHubat commit 402a2ed
Testing Skill 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Testing Skill this skillpydantic/pydantic-ai | 20k | — | ~839 | Automated safety check: Notes | MIT | |
| Web Application Testinganthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| Diagnosing Bugsfossasia/eventyay-interpretation | 1.6k | 31 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| TDDfossasia/eventyay-interpretation | 1.6k | 28 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| TDDsanity-io/sanity | 6.4k | 20 repos | ~1k | Automated safety check: Pass | MIT |
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
fossasia/eventyay-interpretation
Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.
fossasia/eventyay-interpretation
Test-driven development. An agent skill from fossasia/eventyay-interpretation.
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
sanity-io/sanity
Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.
Ibrahim-3d/orchestrator-supaconductor
A skill your agent uses when working with Conductor's context-driven development methodology, managing project context artifacts, or understanding the relationship between product.md, tech-stack.md…
pydantic/pydantic-ai
Adds optional capabilities to Pydantic AI agents from pydantic-ai-harness, led by Code Mode, which runs many tool calls as one sandboxed Python script.
pydantic/pydantic-ai
Build AI agents with Pydantic AI — tools, capabilities (including on-demand loading), workspaces, structured output, streaming, testing, and multi-agent patterns.
pydantic/pydantic-ai
Evaluate and complete an issue or PR where the submitted patch fixes only a narrow symptom of the reported pain point.
pydantic/pydantic-ai
Migrate Python Agno applications to Pydantic AI and, only when needed, Pydantic AI Harness.
pydantic/pydantic-ai
Migrate Python applications from the Claude Agent SDK to Pydantic AI and, only when needed, Pydantic AI Harness.
pydantic/pydantic-ai
Migrates Python LangChain Deep Agents applications to Pydantic AI and Pydantic AI Harness while preserving the application's observed behavior.
Categories
Record, rewrite, and debug VCR cassettes for HTTP recordings. Testing Skill is an agent skill from pydantic/pydantic-ai, published by the product's own GitHub organization. Record, rewrite, and debug VCR cassettes for HTTP recordings.
Testing Skill fits situations like: running tests with --record-mode; verifying cassette playback; inspecting request/response bodies in YAML cassettes.
Run `npx skills add pydantic/pydantic-ai --skill testing-skill -a claude-code`. Or copy the skill folder (.claude/skills/testing-skill in pydantic/pydantic-ai) into .claude/skills/testing-skill in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pydantic/pydantic-ai --skill testing-skill -a codex`. Or copy the skill folder (.claude/skills/testing-skill in pydantic/pydantic-ai) into .agents/skills/testing-skill in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pydantic/pydantic-ai --skill testing-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/testing-skill, .gemini/skills/testing-skill, .github/skills/testing-skill and .opencode/skills/testing-skill in your project.
Going by SKILL.md and its folder, Testing Skill needs Python for the scripts in its folder and the command-line tools its instructions call (uv and git). Our summary lists: Python 3. Its frontmatter pre-approves these 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 *).
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Testing Skill is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 839 tokens (SKILL.md is roughly 3.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Testing Skill: Web Application Testing (anthropics/skills, 180k stars), Diagnosing Bugs (fossasia/eventyay-interpretation, 1.6k stars), TDD (fossasia/eventyay-interpretation, 1.6k stars) and TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pydantic (a GitHub organization, an official publisher) maintains it in pydantic/pydantic-ai, which has 20,465 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.
Source: pydantic/pydantic-ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.