Hermetic Python Unit Tests
dimensionalOS/dimos
Rules for writing, fixing and reviewing pytest unit tests that are hermetic: behavior-focused, deterministic, isolated and cheap to run.
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…
$ npx skills add google/adk-python --skill adk-verify-snippets -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install google/adk-python adk-verify-snippets --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/google/adk-python.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/adk-verify-snippets .claude/skills/adk-verify-snippets && 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 "adk-verify-snippets" agent skill from https://github.com/google/adk-python/tree/main/.agents/skills/adk-verify-snippets into .claude/skills/adk-verify-snippets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adk-verify-snippets", 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/google/adk-python/tree/main/.agents/skills/adk-verify-snippetsType 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 google/adk-python --skill adk-verify-snippets -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install google/adk-python adk-verify-snippets --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-python.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/adk-verify-snippets .agents/skills/adk-verify-snippets && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "adk-verify-snippets" agent skill from https://github.com/google/adk-python/tree/main/.agents/skills/adk-verify-snippets into .agents/skills/adk-verify-snippets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adk-verify-snippets", 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 google/adk-python --skill adk-verify-snippets -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install google/adk-python adk-verify-snippets --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-python.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/adk-verify-snippets .cursor/skills/adk-verify-snippets && 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 "adk-verify-snippets" agent skill from https://github.com/google/adk-python/tree/main/.agents/skills/adk-verify-snippets into .cursor/skills/adk-verify-snippets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adk-verify-snippets", 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/google/adk-python.git --path .agents/skills/adk-verify-snippets--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 google/adk-python --skill adk-verify-snippets -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install google/adk-python adk-verify-snippets --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-python.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/adk-verify-snippets .gemini/skills/adk-verify-snippets && 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 "adk-verify-snippets" agent skill from https://github.com/google/adk-python/tree/main/.agents/skills/adk-verify-snippets into .gemini/skills/adk-verify-snippets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adk-verify-snippets", 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 google/adk-python adk-verify-snippetsInstalls 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 google/adk-python --skill adk-verify-snippets -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/google/adk-python.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/adk-verify-snippets .github/skills/adk-verify-snippets && 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 "adk-verify-snippets" agent skill from https://github.com/google/adk-python/tree/main/.agents/skills/adk-verify-snippets into .github/skills/adk-verify-snippets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adk-verify-snippets", 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 google/adk-python --skill adk-verify-snippets -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install google/adk-python adk-verify-snippets --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/google/adk-python.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/adk-verify-snippets .opencode/skills/adk-verify-snippets && 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 "adk-verify-snippets" agent skill from https://github.com/google/adk-python/tree/main/.agents/skills/adk-verify-snippets into .opencode/skills/adk-verify-snippets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adk-verify-snippets", 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.
adk-verify-snippetsChecks 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…
Adk Verify Snippets is an agent skill from google/adk-python, published by the product's own GitHub organization. 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 report with per-snippet coverage. Use when the user asks to verify, test, or validate the code samples in a README, a guide, or a documentation page; wants to know which snippets in a Markdown file are broken or out of date; or asks for a snippet verification report. Don't use for running the project's test suite (run…
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/run.py` and `scripts/verify_md.py`).
It sits in Testing & QA, covering Unit testing, Test generation and Markdown. It works with Python, pytest and Google Gemini. The repository describes itself as: An open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 097ae1e. 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.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GOOGLE_API_KEYGEMINI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Adk Verify Snippets loads about 1.4k tokens when it runs. Until then it costs about 170 tokens; SKILL.md has 654 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); the scripts in this folder are not scanned.
The full file from google/adk-python at commit 097ae1e, republished under its Apache-2.0 licence (© google). 654 words, ~1,411 tokens.
.claude/skills/adk-verify-snippets/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Extracts every ```python block from a Markdown file, runs each one in its
own subprocess via the bundled run.py harness, and writes a report covering
load status, run status, and line coverage per snippet.
Verifying a doc must never change the doc. Do not create, modify, or delete any file in the repository — including the Markdown being verified, its code blocks, and this SKILL.md. Report the failures; do not fix them and do not offer patches.
The script performs the only two writes that happen: temporary .py files in a
system temp directory outside the repository (removed when it exits), and the
report beside the source Markdown file.
An ADK development environment — run from the repository root with the uv
virtual environment active (see the adk-setup skill).
coverage, optional. It is not a declared project dependency, so install it
explicitly; without it the Coverage column shows —.
uv pip install coverageA Gemini API key, needed only for snippets that build an Agent, App, or
Workflow — those are executed against the live API.
export GEMINI_API_KEY="{your_key}"
# or
export GOOGLE_API_KEY="{your_key}"If both are set the harness drops GOOGLE_API_KEY, so GEMINI_API_KEY wins.
uv run --no-sync python .agents/skills/adk-verify-snippets/scripts/verify_md.py {path_to_markdown_file}The script prints per-snippet progress, then writes the report beside the source file and prints its full path.
The report filename is the source file's stem lowercased with everything except
[a-z0-9_] stripped, plus _REPORT.md. Workflow-Guide.md therefore produces
workflowguide_REPORT.md, not Workflow-Guide_REPORT.md — read the path the
script prints rather than reconstructing it.
The report contains an Executive Summary table with one row per snippet, then a detailed section per snippet holding the code block, the execution logs (stdout plus stderr/traceback), and the coverage output.
If the snippet assigns a Workflow, Agent, or App to a module-level
variable, the harness executes it against the Gemini API.
vars(module).Workflow, then root Agent, then App. A Workflow
anywhere in the snippet wins over any agent in it.sub_agents, so multi-agent snippets resolve correctly whatever order the
agents are defined in.App must have been constructed with a root_agent or the run fails."Test input topic". Override it by defining a
module-level test_input string in the snippet.The harness confirms the snippet compiles and imports, and makes no API call.
The report shows ➖ NO ADK COMPONENT.
Put <!-- verify-snippets: ignore --> alone on a line immediately before the
opening ```python fence to exclude a block. Use it for pseudo-code,
illustrative fragments, and snippets that need external setup. The report shows
⏭️ SKIPPED.
<!-- verify-snippets: ignore -->
```python
# pseudo-code — not runnable as-is
my_agent = Agent(model="gemini-ultra-hypothetical", ...)
```Annotate with <!-- verify-snippets: ignore --> instead of editing the doc to
work around any of these.
NameError or ImportError.```python
fence. Blank lines between the two are fine; any prose line or heading
between them cancels it.``` closes the block.** The parser closes a Python block at the
first fence carrying no language tag, so a bare fence used as content inside
a snippet truncates it. A tagged fence (for example ```bash) is kept as
literal content and is safe.asyncio.run() collides with the harness's own event loop
and reports as a run failure. Snippets should keep top-level async calls
behind if __name__ == "__main__":.Read the generated report and copy the Executive Summary table across exactly as
written — same six columns, same order, nothing renamed or dropped:
Snippet | Preceding Heading | Load Phase | Run Phase | Coverage | Details.
Present it and stop.
© google, Apache-2.0. 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 2 other files (scripts) in .agents/skills/adk-verify-snippets of google/adk-python.
Open the folder on GitHubat commit 097ae1e
Adk Verify Snippets 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 |
|---|---|---|---|---|---|---|
| Adk Verify Snippets this skillgoogle/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 | |
| Test Coverage Reviewareed1192/finance-news-aggregator | 149 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Py Package Checkipea/geobr | 959 | — | ~1.4k | Automated safety check: Notes | None | |
| Testing Livekit Agentslivekit-examples/agent-starter-python | 264 | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Mutation Test Strength Auditbuildfastwithai/gen-ai-experiments | 785 | — | ~641 | Automated safety check: Pass | MIT |
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.
ipea/geobr
Run the Python package release gate for geobr — sync the locked environment, run the offline and network test suites, build the distribution, and review the source against the Python conventions.
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).
buildfastwithai/gen-ai-experiments
Measures how well a Python pytest suite catches behavior changes through diff-scoped mutation testing, then proposes and verifies tests for surviving mutants.
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…
google/adk-python
Creates a new sample agent in the ADK Python repository — the sample directory, its agent.py, and its README.md — following the conventions the existing samples already use.
google/adk-python
Writes a hands-on developer guide for one ADK code unit — a minimal runnable example, how it works, a configuration-option table, advanced uses, limitations, and links to related samples — to…
google/adk-python
Writes commit messages and pull request descriptions for the adk-python repository: Conventional Commits types and scopes, subject lines that say why a change was made, and the linked-issue and…
google/adk-python
Sets up a local ADK Python development environment in a git clone of the open-source adk-python repository: a uv virtual environment, all dependency extras, pre-commit hooks, and a first unit-test…
google/adk-python
Builds ADK (Agent Development Kit) Python agents: LLM agents with tools, graph workflows of function and agent nodes, conditional routing, fan-out and join, schema-validated delegation between…
google/adk-python
Explains how the ADK runtime fits together: the node and graph execution model, Context and Event flow, checkpoint and resume, tracing, and the rules governing the public API surface.
Works with
Categories
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…. Adk Verify Snippets is an agent skill from google/adk-python, published by the product's own GitHub organization. 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 report with per-snippet coverage.
Adk Verify Snippets fits situations like: the user asks to verify; validate the code samples in a README; A documentation page; wants to know which snippets in a Markdown file are broken.
Run `npx skills add google/adk-python --skill adk-verify-snippets -a claude-code`. Or copy the skill folder (.agents/skills/adk-verify-snippets in google/adk-python) into .claude/skills/adk-verify-snippets in your project. Claude Code loads it when a task matches its description.
Run `npx skills add google/adk-python --skill adk-verify-snippets -a codex`. Or copy the skill folder (.agents/skills/adk-verify-snippets in google/adk-python) into .agents/skills/adk-verify-snippets 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 google/adk-python --skill adk-verify-snippets -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adk-verify-snippets, .gemini/skills/adk-verify-snippets, .github/skills/adk-verify-snippets and .opencode/skills/adk-verify-snippets in your project.
Going by SKILL.md and its folder, Adk Verify Snippets needs Python for the scripts in its folder, the command-line tools its instructions call (uv) and credentials named GOOGLE_API_KEY and GEMINI_API_KEY. Our summary lists: Python 3; A credential in GEMINI_API_KEY; A credential in GOOGLE_API_KEY.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Adk Verify Snippets is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.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 Adk Verify Snippets: Hermetic Python Unit Tests (dimensionalOS/dimos, 4.6k stars), Test Coverage Review (areed1192/finance-news-aggregator, 149 stars), Py Package Check (ipea/geobr, 959 stars) and Testing Livekit Agents (livekit-examples/agent-starter-python, 264 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
google (a GitHub organization, an official publisher) maintains it in google/adk-python, which has 21,736 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 8, 2026.
Source: google/adk-python on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.