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…
Writes turn-level tests for a LiveKit agent in the user's normal test suite: pytest (Python) or Vitest (Node.js).
$ npx skills add livekit-examples/agent-starter-python --skill testing-livekit-agents -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install livekit-examples/agent-starter-python testing-livekit-agents --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/livekit-examples/agent-starter-python.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/testing-livekit-agents .claude/skills/testing-livekit-agents && 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-livekit-agents" agent skill from https://github.com/livekit-examples/agent-starter-python/tree/main/.agents/skills/testing-livekit-agents into .claude/skills/testing-livekit-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-livekit-agents", 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/livekit-examples/agent-starter-python/tree/main/.agents/skills/testing-livekit-agentsType 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 livekit-examples/agent-starter-python --skill testing-livekit-agents -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install livekit-examples/agent-starter-python testing-livekit-agents --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/livekit-examples/agent-starter-python.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/testing-livekit-agents .agents/skills/testing-livekit-agents && 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-livekit-agents" agent skill from https://github.com/livekit-examples/agent-starter-python/tree/main/.agents/skills/testing-livekit-agents into .agents/skills/testing-livekit-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-livekit-agents", 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 livekit-examples/agent-starter-python --skill testing-livekit-agents -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install livekit-examples/agent-starter-python testing-livekit-agents --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/livekit-examples/agent-starter-python.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/testing-livekit-agents .cursor/skills/testing-livekit-agents && 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-livekit-agents" agent skill from https://github.com/livekit-examples/agent-starter-python/tree/main/.agents/skills/testing-livekit-agents into .cursor/skills/testing-livekit-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-livekit-agents", 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/livekit-examples/agent-starter-python.git --path .agents/skills/testing-livekit-agents--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 livekit-examples/agent-starter-python --skill testing-livekit-agents -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install livekit-examples/agent-starter-python testing-livekit-agents --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/livekit-examples/agent-starter-python.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/testing-livekit-agents .gemini/skills/testing-livekit-agents && 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-livekit-agents" agent skill from https://github.com/livekit-examples/agent-starter-python/tree/main/.agents/skills/testing-livekit-agents into .gemini/skills/testing-livekit-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-livekit-agents", 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 livekit-examples/agent-starter-python testing-livekit-agentsInstalls 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 livekit-examples/agent-starter-python --skill testing-livekit-agents -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/livekit-examples/agent-starter-python.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/testing-livekit-agents .github/skills/testing-livekit-agents && 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-livekit-agents" agent skill from https://github.com/livekit-examples/agent-starter-python/tree/main/.agents/skills/testing-livekit-agents into .github/skills/testing-livekit-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-livekit-agents", 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 livekit-examples/agent-starter-python --skill testing-livekit-agents -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install livekit-examples/agent-starter-python testing-livekit-agents --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/livekit-examples/agent-starter-python.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/testing-livekit-agents .opencode/skills/testing-livekit-agents && 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-livekit-agents" agent skill from https://github.com/livekit-examples/agent-starter-python/tree/main/.agents/skills/testing-livekit-agents into .opencode/skills/testing-livekit-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-livekit-agents", 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-livekit-agentsWrites turn-level tests for a LiveKit agent in the user's normal test suite: pytest (Python) or Vitest (Node.js).
Testing Livekit Agents is an agent skill from livekit-examples/agent-starter-python. Writes turn-level tests for a LiveKit agent in the user's normal test suite: pytest (Python) or Vitest (Node.js). Use when the user asks to "write tests for my agent", "add a test for this tool", "test the handoff", "pin this bug", "why does my agent test fail", or after building or changing agent behavior that needs regression coverage. Covers the SDK's test session harness, assertions on messages, tool calls and handoffs, LLM judging of a reply against an intent, mocking tools, multi-turn tests, and judging…
Its SKILL.md is about 1.9k 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 Agent evaluation and testing. It works with pytest, Vitest, Python and Node.js. The repository describes itself as: A complete voice AI starter for LiveKit Agents with Python. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 76ddabb. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From 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 Livekit Agents loads about 1.9k tokens when it runs. Until then it costs about 178 tokens; SKILL.md has 1,060 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 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.
The full file from livekit-examples/agent-starter-python at commit 76ddabb, republished under its MIT licence (© livekit-examples). 1,060 words, ~1,898 tokens.
.claude/skills/testing-livekit-agents/SKILL.md (or your agent's skills folder).Turn-level tests are the cheapest lasting verification an agent can have. They run in the user's
existing suite, in text mode, and they're fast enough for every commit. The framework's helper
names and signatures change, so look them up with reading-livekit-docs before writing, and use
the testing docs page for every API detail this skill leaves out.
Every test has the same shape: start a test session with the agent under test, run one user turn, and assert on the events that turn produced.
A turn produces a sequence of events. A simple turn is one message. A more typical one is a tool call, its output, maybe a handoff, and then a message. You write the test by walking that sequence in order, asserting on each event, and then asserting the turn has nothing more.
There are three kinds of assertion, and most of this skill is knowing which one to use.
Structural assertions check message roles, that a tool was called, its arguments, what it returned, and that a handoff to a specific agent happened. They're deterministic and fail for exactly one reason, so prefer them.
Judged assertions use an LLM-judge helper that gives one message and an intent string to a model and asks whether they match. Use them for the content of a reply, which you can't assert exactly. Describe the intent by outcome ("tells the user the booking is confirmed and gives the time"), not by wording.
Whole-conversation assertions use a judge-group helper that runs several built-in judges concurrently over the whole chat history and aggregates their verdicts. The built-in judges cover dimensions like grounding, relevance, safety, task completion, and tool use; the docs list the current set. Use this when the question spans several turns.
Rules of thumb:
Tests shouldn't hit real backends, since that makes a suite slow and nondeterministic. Override the tools for the agent under test and return fixed values.
Two things beyond the API:
run() calls, which is what
a test needs. A session-scoped form also exists for a session that runs on its own and needs
mocks active for its whole lifetime. Simulation entrypoints use that form, tests don't. See
writing-livekit-scenarios.Mocking only changes execution. The model still sees the real tool schemas, so tool selection is still under test.
There are two ways to test behavior that depends on earlier turns:
Roughly in order of value:
A test suite for an agent that does things — books, edits, confirms — needs three kinds of test, and confusing them is how a green suite ships a broken agent:
Shortcuts that look like tests and aren't: calling a helper or filling private state instead of driving the interaction; telling the test caller which tool to name; mocking the very mutation whose correctness is under test; comparing output only with the application's own exporter; retrying a failed turn until it passes; deleting the assertion that failed.
The most common bad agent test asserts that the agent does something it shouldn't: states data it can't know, gives a specific medical, legal, or financial recommendation, or completes a flow that should have been blocked. If the agent can only pass by misbehaving, fix the test.
For a guardrail, the pass is that the agent refuses, escalates, or declines to make something up. Write the assertion that way.
debugging-livekit-agents. Faster loop, no assertions kept.running-livekit-simulations.
More expensive, and catches emergent behavior that turn-level tests miss.When a simulation keeps failing the same way, the bug is usually turn-level. Write a test for it here, which pins down the cause more precisely and catches it earlier.
reading-livekit-docsdebugging-livekit-agentswriting-livekit-scenarios, running-livekit-simulations© livekit-examples, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/testing-livekit-agents of livekit-examples/agent-starter-python.
Open the folder on GitHubat commit 76ddabb
We found 4 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in livekit-examples/agent-starter-python, which our catalogue first saw on October 7, 2026.
Testing Livekit Agents 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 Livekit Agents this skilllivekit-examples/agent-starter-python | 264 | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| TDD Guidealirezarezvani/claude-skills | 28k | — | ~3.4k | Automated safety check: Pass | MIT | |
| TDD GuideLeoYeAI/openclaw-master-skills | 2.2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| TDD GuideaAAaqwq/AGI-Super-Team | 105 | 2 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Adk Verify Snippetsgoogle/adk-python | 22k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Hermetic Python Unit TestsdimensionalOS/dimos | 4.6k | — | ~1.4k | Automated safety check: Pass | Custom licence |
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…
LeoYeAI/openclaw-master-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…
aAAaqwq/AGI-Super-Team
Test-driven development workflow with test generation, coverage analysis, and multi-framework support
google/adk-python
Checks that every Python code block in a Markdown file actually compiles and runs, by extracting each block to a temporary file, executing it in an isolated subprocess, and writing a pass/fail…
dimensionalOS/dimos
Rules for writing, fixing and reviewing pytest unit tests that are hermetic: behavior-focused, deterministic, isolated and cheap to run.
areed1192/finance-news-aggregator
Audit, plan, write, and verify unit tests for Python projects using pytest.
livekit-examples/agent-starter-python
Creates and maintains the scenarios a LiveKit agent simulation runs, and wires the agent to consume them.
livekit-examples/agent-starter-python
Drives a multi-turn conversation with a LiveKit agent running locally to see what it does.
livekit-examples/agent-starter-python
Looks up current LiveKit facts (API signatures, CLI flags, config options, model and provider support, SDK changelogs, pricing) from the docs instead of answering from memory.
livekit-examples/agent-starter-python
Runs LiveKit agent simulations and acts on the results. An agent skill from livekit-examples/agent-starter-python.
livekit-examples/agent-starter-python
Builds voice and chat AI agents with LiveKit Agents and LiveKit Cloud.
livekit-examples/agent-starter-python
Deploys and operates a LiveKit agent in production: shipping a version to LiveKit Cloud and rolling it back, secrets and configuration, the worker process model and prewarming, safe async inside…
Categories
Writes turn-level tests for a LiveKit agent in the user's normal test suite: pytest (Python) or Vitest (Node.js). Testing Livekit Agents is an agent skill from livekit-examples/agent-starter-python.js).
Testing Livekit Agents fits situations like: the user asks to write tests for my agent; add a test for this tool; test the handoff; why does my agent test fail.
Run `npx skills add livekit-examples/agent-starter-python --skill testing-livekit-agents -a claude-code`. Or copy the skill folder (.agents/skills/testing-livekit-agents in livekit-examples/agent-starter-python) into .claude/skills/testing-livekit-agents in your project. Claude Code loads it when a task matches its description.
Run `npx skills add livekit-examples/agent-starter-python --skill testing-livekit-agents -a codex`. Or copy the skill folder (.agents/skills/testing-livekit-agents in livekit-examples/agent-starter-python) into .agents/skills/testing-livekit-agents 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 livekit-examples/agent-starter-python --skill testing-livekit-agents -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-livekit-agents, .gemini/skills/testing-livekit-agents, .github/skills/testing-livekit-agents and .opencode/skills/testing-livekit-agents in your project.
SKILL.md names no scripts, command-line tools or credentials: Testing Livekit Agents is instructions for the agent only. Our summary lists: Node.js.
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.
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.
Testing Livekit Agents is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k 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 Livekit Agents: TDD Guide (alirezarezvani/claude-skills, 28k stars), TDD Guide (LeoYeAI/openclaw-master-skills, 2.2k stars), TDD Guide (aAAaqwq/AGI-Super-Team, 105 stars) and Adk Verify Snippets (google/adk-python, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
livekit-examples (a GitHub organization) maintains it in livekit-examples/agent-starter-python, which has 264 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 6, 2026.
Source: livekit-examples/agent-starter-python on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.