Microsoft Agent Framework is a multi-language framework for building, coordinating, and running AI agents and workflows in Python and .NET. Teams use it for agent systems that need orchestration, collaboration, durability, observability, governance, or human involvement beyond a single prompt or chat loop. Catalogue add-ons provide skills and instructions for working with the framework.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add microsoft/agent-framework --skill python-testinggit clone --depth 1 https://github.com/microsoft/agent-frameworkWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/microsoft/agent-framework/python-testing)<a href="https://agentmods.dev/skills/microsoft/agent-framework/python-testing"><img src="https://agentmods.dev/badge/skills/microsoft/agent-framework/python-testing/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/microsoft/agent-framework/python-testing"><img src="https://agentmods.dev/badge/skills/microsoft/agent-framework/python-testing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- Snyk pass
- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00029 | $0.01639 |
| Opus 5.5 | $0.00012 | $0.00656 |
| Sonnet 5.5 | $0.00006 | $0.00328 |
| Haiku 4.5 | $0.00003 | $0.00164 |
Grade A, and why
python-testing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 165 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Python Testing
CI enforces at least 85% line coverage for every package classified Beta or Production/Stable.
Alpha packages are report-only, and the DevUI and experimental Lab packages are excluded from
aggregate coverage enforcement. Tests should be fast, reliable, and maintainable.
When adding new code, check that the relevant sections of the codebase are covered by tests, and add new tests as needed. When modifying existing code, update or add tests to cover the changes.
We run tests in two stages, for a PR each commit is tested with unit tests only (using -m "not integration"), and the full suite including integration tests is run when merging.
When an API is marked as deprecated, migrate ordinary tests to its replacement in the same change. Retain only focused tests that validate the deprecated behavior and warning; integration tests, samples, and unrelated unit tests should use the supported API.
Running Tests
# Run tests for all packages in parallel
uv run poe test
# Run tests for a specific workspace package
uv run poe test -P core
# Run all selected tests in a single pytest invocation
uv run poe test -A
# With coverage
uv run poe test -A -C
uv run poe test -P core -C
# Run only unit tests (exclude integration tests)
uv run poe test -A -m "not integration"
# Run only integration tests
uv run poe test -A -m integration
Direct package execution still works when you need it:
uv run --directory packages/core poe test
Test Configuration
- Async mode:
asyncio_mode = "auto"is enabled — do NOT use@pytest.mark.asyncio, but do mark tests withasync defand useawaitfor async calls - Timeout: Default 60 seconds per test
- Import mode:
importlibfor cross-package isolation - Parallelization: Large packages (core, ag-ui, orchestrations, anthropic) use
pytest-xdist(-n auto --dist worksteal) in theirpoe testtask. The aggregateuv run poe test -Asweep also uses xdist across the selected packages.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 165 lines · 29 tokens per session scan A a09eebff4277
python-testing is a skill published in the GitHub repository microsoft/agent-framework (14,148 stars, last pushed yesterday), licensed MIT. It adds 29 tokens to every session and 1,639 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
python-patterns
Python idioms — type hints, dataclasses, async/await, generators, pytest, common pitfalls. Activate when writing or reviewing Python code.
swarmauri-add-community-standalone
Add a second-class standalone Swarmauri package under pkgs/community. Use when Codex needs community package scaffolding, workspace membership, pyproject metadata, README branding, entry points, second-class citizenship rows, exports, tests, and validation.
temporal-python-testing
Test Temporal workflows with pytest, time-skipping, and mocking strategies. Covers unit testing, integration testing, replay testing, and local development setup. Use when implementing Temporal workflow tests or debugging test failures.
adk-verify-snippets
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…
adk-setup
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 run. Runs only when explicitly requested, never on its own. Use when asked to set up, bootstrap, or repair a development…
test-generator
Generate pytest test cases for Python functions and classes.