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 fishzjp/qa-skills --skill api-testinggit clone --depth 1 https://github.com/fishzjp/qa-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/fishzjp/qa-skills/api-testing)<a href="https://agentmods.dev/skills/fishzjp/qa-skills/api-testing"><img src="https://agentmods.dev/badge/skills/fishzjp/qa-skills/api-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/fishzjp/qa-skills/api-testing"><img src="https://agentmods.dev/badge/skills/fishzjp/qa-skills/api-testing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, 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 Privilege Escalation · line 36 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
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.00102 | $0.03524 |
| Opus 5.5 | $0.00041 | $0.01410 |
| Sonnet 5.5 | $0.00020 | $0.00705 |
| Haiku 4.5 | $0.00010 | $0.00352 |
Grade A, and why
api-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 28d 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 — 168 lines — stays where its author put it; the contents beside it link to each section on GitHub.
API 测试(api-testing)
接口级测试——E2E 之外的另一条执行路径。
- 输入:API 文档(OpenAPI/Swagger)、用例 Schema 中
execution_model可自动化的接口用例、被测环境信息(base URL、账号/Token);性能轴(类型矩阵轴 1)移交包专项移交_性能_*.yaml - 输出(落盘):API 测试脚本(pytest + requests,或项目既定技术栈)+ 执行分报告
测试报告_api_{日期}.md(命名按../core/report-template.md头注,条目按其 §3 对齐;qa 断点判据按此文件名核收);性能承接时另产 k6 压测脚本与压测报告(references/k6-conventions.md) - 边界:Web UI 流程 →
automated-e2e-testing;接口手动用例设计 →test-case-writing
When to Use
- 给定 OpenAPI/Swagger 文档,需要产出并运行接口自动化测试
- 从用例 Schema 中筛出接口级可自动化用例,转换为 API 脚本执行
- 需要覆盖鉴权/越权、幂等、并发写、错误响应等接口层专项
- 给定性能移交包或接口清单,需要生成并运行压测脚本(k6)——按
references/k6-conventions.md
When NOT to Use
- Web UI 交互流程(点击 / 页面状态)→
automated-e2e-testing - 编写接口的手动测试用例 →
test-case-writing - 端到端流水线 →
qa编排 - 独立压测环境搭建与容量保障 → 运维/专项协作(agent 侧压测承接见
references/k6-conventions.md;外部执行场景按test-strategy的移交包) - Mock Server 搭建 → 开发协作事项,不在本 skill 范围
脚手架(默认 pytest + requests,可替换为项目既定栈)
api-tests/
├── conftest.py # fixture:base_url、会话/Token、环境配置(环境变量注入,可由 .env 加载,不硬编码)
├── common/
│ └── client.py # 统一请求封装:日志、超时、鉴权头、断言辅助
├── test_{模块}_{接口}.py # 一个接口一个文件,test 名沿用 TC 编号
└── requirements.txt
# common/client.py —— 统一请求封装(requests.Session 不支持 base_url,必须显式拼接)
import requests
class Client:
def __init__(self, base_url: str, token: str):
self.base_url = base_url.rstrip("/")
self.s = requests.Session()
self.s.headers.update({"Authorization": f"Bearer {token}"})
def request(self, method: str, path: str, **kwargs):
url = f"{self.base_url}/{path.lstrip('/')}"
kwargs.setdefault("timeout", 10)
return self.s.request(method, url, **kwargs)
def get(self, path, **kw): return self.request("GET", path, **kw)
def post(self, path, **kw): return self.request("POST", path, **kw)
# put / delete / patch 同理扩展
def login(user: str, password: str) -> str:
"""按项目实际登录接口实现(如 POST /login 换 token)——占位,勿直接照抄"""
raise NotImplementedError("按项目登录接口实现")
What ships with it
1 file 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.
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.
- 28d ago Changed 0c287b1b71c0
- 1mo ago Changed · -15 tokens per session bf3ce6c801f4
- 1mo ago Changed · +31 lines · +22 tokens per session 650b6cd52f03
- 1mo ago First seen · 137 lines · 95 tokens per session scan A f5305844cd5f
api-testing is a skill published in the GitHub repository fishzjp/qa-skills (48 stars, last pushed 9d ago), licensed MIT. It adds 102 tokens to every session and 3,524 once invoked, about $0.0004 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
qa-expert
Expert-level quality assurance, testing strategies, automation, and QA processes. Use when the user mentions testing, test automation, quality assurance, or Selenium, or when the task involves Testing Types, QA Processes, Test Strategy, or Defect Management.
postman-newman
When the user wants to design, organize, or run Postman collections — locally, in CI via Newman, or shared across a team. Use when the user mentions "Postman," "Postman collection," "Newman," "newman run," "pm.test," "pre-request script," "test script," "Postman environment," "collection variables," "Postman monitor,"…
supertest
When the user wants to design, implement, debug, or scale supertest-based API tests in Node.js. Use when the user mentions "supertest," "request(app)," "Express test," "Koa test," "Fastify test," "Jest + supertest," "Mocha + supertest," or "in-process HTTP testing." For Java API testing see rest-assured. For Python…
wiremock
When the user wants to virtualize HTTP services for testing — mocking downstream dependencies, simulating slow/error responses, recording-and-replay, or building a stub server for development. Use when the user mentions "WireMock," "stubFor," "mappings," "WireMockServer," "WireMock standalone," "request matching,"…
grpc-testing
When the user wants to design, implement, debug, or load-test gRPC services. Use when the user mentions "gRPC testing," "protobuf," ".proto," "grpcurl," "ghz," "buf," "server reflection," "grpc-go test," "grpc Java test," "grpc Python test," "interceptors," "streaming RPC," or "TLS for gRPC." For REST API testing see…
test-case-writer
Use when someone asks to generate test cases, write test cases from a user story, create test cases from a BRD, design test cases from a mockup or wireframe, or produce a test case table from requirements.