Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/pactflow/pactflow-agent-skillsnpx agentmods add skills/pactflow/pactflow-agent-skills/drift-testingWrote 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/pactflow/pactflow-agent-skills/drift-testing)<a href="https://agentmods.dev/skills/pactflow/pactflow-agent-skills/drift-testing"><img src="https://agentmods.dev/badge/skills/pactflow/pactflow-agent-skills/drift-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/pactflow/pactflow-agent-skills/drift-testing"><img src="https://agentmods.dev/badge/skills/pactflow/pactflow-agent-skills/drift-testing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 12 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Tool Misuse · line 212 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
- medium MCP Rug Pull · line 58 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium Data Exfiltration · line 127 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 130 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 133 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 136 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 137 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 285 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 291 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 294 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 347 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Prompt Injection · line 307 Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.Fix: Remove the large whitespace padding (blank-line blocks or long space runs) and review any content hidden below or to the right of it. Keep skill files compact and reviewable so no instructions can be
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.00203 | $0.05340 |
| Opus 5.5 | $0.00081 | $0.02136 |
| Sonnet 5.5 | $0.00041 | $0.01068 |
| Haiku 4.5 | $0.00020 | $0.00534 |
Grade A, and why
drift-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 24d 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 — 527 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Drift Skill
Never modify the openapi spec that you are testing.
Reference Files
references/test-cases.md— Full test case YAML schema, all patterns, datasets, expressionsreferences/auth.md— Authentication config, dynamic tokens, non-standard schemes, 401/403 testingreferences/mock-server.md— Local testing with Prism: setup, Prefer header, spec quality issuesreferences/lua-api.md— Complete Lua API: lifecycle events,http(),dbg(), exported functionsreferences/cli-reference.md— All CLI commands/flags, configuration, parallel execution, exit codesreferences/pactflow-and-cicd.md— BDCT publishing workflow, GitHub Actions, GitLab CI
Scripts
scripts/extract_endpoints.py— Reads the spec and outputs all operations + response codes. Summary mode flags parameters with no spec example. Scaffold mode (--scaffold) emits a ready-to-filloperations:YAML block with correct auth patterns, nil UUIDs for 404s,ignore.schemafor 4xx, andFILL_INmarkers. Use--only-missing <drift.yaml>to generate only the gaps not yet covered by an existing test file. Requirespyyaml.scripts/extract_channels.py— AsyncAPI equivalent ofextract_endpoints.py. Reads an AsyncAPI 3.x spec and outputs all operations with their action type (send/receive), execution mode (async-observe / async-inject / async-request-reply), and channel address. Scaffold mode (--scaffold) emits ready-to-fill Driftoperations:YAML stubs with the correct trigger/probe structure per mode. Use--only-missing <drift.yaml>to scaffold only operations not yet covered. Requirespyyaml. AsyncAPI 3.x only.scripts/check_coverage.py— Coverage checker: diffs an OpenAPI or AsyncAPI spec against Drift test files. OpenAPI coverage tracks operations and response codes; AsyncAPI coverage tracks each operation/message target. Requirespyyaml.scripts/run_loop.sh/scripts/run_loop.ps1— Feedback loop runner: retriesdrift verify --faileduntil all tests pass, then runscheck_coverage.py. Both gates must pass for exit 0. Dependencies are installed automatically via uv. Use the.ps1version on Windows.scripts/start_mock.sh/scripts/start_mock.ps1— Starts a Prism mock server from an OpenAPI spec. Installs Prism if needed. Supports--portand--dynamicflags. Use the.ps1version on Windows.
What ships with it
20 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- evals/01-basic-get-endpoint.json 1.1 KB
- evals/02-stateful-delete-endpoint.json 1.2 KB
- evals/03-debug-failing-test.json 1.1 KB
- evals/fixtures/products-api-with-failures.md 576 B
- evals/fixtures/simple-products-api.yaml 1.2 KB
- references/auth.md 4.2 KB
- references/cli-reference.md 5.2 KB
- references/lua-api.md 6.1 KB
- references/mock-server.md 4.1 KB
- references/pactflow-and-cicd.md 8.2 KB
- references/test-cases.md 9.8 KB
- scripts/asyncapi_targets.py 1.3 KB runs code
- scripts/check_coverage.py 18 KB runs code
- scripts/extract_channels.py 18 KB runs code
- scripts/extract_endpoints.py 20 KB runs code
- scripts/run_loop.ps1 4.5 KB runs code
- scripts/run_loop.sh 4.7 KB runs code
- scripts/start_mock.ps1 1.9 KB runs code
- scripts/start_mock.sh 1.7 KB runs code
- scripts/tests/test_asyncapi_support.py 3.8 KB runs code
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.
- 24d ago Changed · +149 lines · +45 tokens per session 54569d272c7d
- 1mo ago First seen · 378 lines · 158 tokens per session scan A 0346ba7fae61
drift-testing is a skill published in the GitHub repository pactflow/pactflow-agent-skills (7 stars, last pushed today), licensed MIT. It adds 203 tokens to every session and 5,340 once invoked, about $0.0008 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-31.
Other skills, from other repositories
xdto-validate
A validator for XDTO packages in 1C:Enterprise. It checks the package model, its metadata object, and its connection to the configuration.
api-testing-patterns
Comprehensive API testing patterns including contract testing, REST/GraphQL testing, and integration testing. Use when testing APIs or designing API test strategies.
API Contract Validator
Validate API responses against OpenAPI/Swagger specifications, JSON Schema definitions, and consumer-driven contracts to prevent breaking changes.
Contract Test Generator
Generate consumer-driven contract tests using Pact framework to verify API provider-consumer compatibility and prevent integration breaking changes.
Contract Testing with Pact
Consumer-driven contract testing skill using Pact, covering consumer tests, provider verification, Pact Broker integration, and CI/CD workflows.
api-testing
HTTP API testing for TypeScript (Supertest) and Python (httpx, pytest). Test REST APIs, GraphQL, request/response validation, authentication, and error handling.