Agent Skills is a collection and marketplace of reusable instruction sets that teach AI agents specific workflows, tasks, or domain knowledge, with supporting files such as scripts, templates, and examples. It is for people who want to install, browse, create, or contribute portable skills for compatible agents. The catalogue entries are individual skills from this collection.
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 block/agent-skills --skill testing-strategygit clone --depth 1 https://github.com/block/agent-skillsWrote 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/block/agent-skills/testing-strategy)<a href="https://agentmods.dev/skills/block/agent-skills/testing-strategy"><img src="https://agentmods.dev/badge/skills/block/agent-skills/testing-strategy/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/block/agent-skills/testing-strategy"><img src="https://agentmods.dev/badge/skills/block/agent-skills/testing-strategy.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00013 | $0.00338 |
| Opus 5.5 | $0.00005 | $0.00135 |
| Sonnet 5.5 | $0.00003 | $0.00068 |
| Haiku 4.5 | $0.00001 | $0.00034 |
Grade A, and why
testing-strategy 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.
What it actually says
Testing Guidelines
Unit Tests
- Test one thing per test
- Use descriptive test names:
test_user_creation_fails_with_invalid_email - Mock external dependencies
- Keep tests fast and isolated
Integration Tests
- Test API endpoints with realistic data
- Verify database state changes
- Clean up test data after each test
- Use test fixtures for common scenarios
Running Tests
# Run all tests
npm test
# Run unit tests only
npm test:unit
# Run integration tests (requires database)
npm test:integration
# Run tests with coverage
npm test:coverage
Test Structure
tests/
├── unit/ # Fast, isolated unit tests
├── integration/ # Tests requiring external services
├── fixtures/ # Shared test data
└── helpers/ # Test utilities
Best Practices
- Arrange-Act-Assert: Structure tests clearly
- One assertion per test: When possible, test one behavior
- Descriptive names: Test names should describe the scenario
- No test interdependence: Tests should run in any order
- Clean state: Each test starts with a known state
Coverage Goals
- Aim for 80%+ line coverage
- Focus on critical paths first
- Don't sacrifice test quality for coverage numbers
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 · 67 lines · 13 tokens per session scan A a97f1f473fd1
testing-strategy is a skill published in the GitHub repository block/agent-skills (25 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 13 tokens to every session and 338 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
plugin-test
A testing guide for Zhin.js plugins using Vitest, a JavaScript and TypeScript testing framework. It focuses on checking command and tool behavior, ordinary business logic, and the plugin package’s required structure.
csharp-xunit
Your goal is to help me write effective unit tests with XUnit, covering both standard and data-driven testing approaches.
java-junit
JUnit 5 testing patterns and parameterized-test guidance. Use when writing or reviewing Java unit tests.
modernize-test-starter
Modernize QUnit unit tests and OPA5 integration tests to the UI5 Test Starter concept. Use this skill when: The linter reports prefer-test-starter for .qunit.html or .qunit.js files Test HTML files use manual sap-ui-core.js bootstrapping instead of Test Starter's runTest.js/createSuite.js Test JS files use…
test-patterns
Applies proven testing patterns — Arrange-Act-Assert (AAA), Given-When-Then, Test Data Builders, Object Mother, parameterized tests, fixtures, spies, and test doubles — to help write maintainable, reliable, and readable test suites. Use when the user asks about writing unit tests, integration tests, or end-to-end…
ui5-best-practices-qunit
Use when the user asks to "write a QUnit test", "fix a failing QUnit test", "add a QUnit module", "modernize QUnit tests", "migrate from QUnit 1", or mentions QUnit-specific constructs such as assert.async, nextUIUpdate, Core.applyChanges, sinon sandbox, asyncTest, or QUnit.module. Covers coding standards for…