Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Api Contract Verification

ASecurity

Prove an API integration actually works by executing it — success path, documented failure paths, auth failure — and leave behind a contract test that catches the next break. Use before reporting any endpoint, client or third-party integration as working, when asked whether an integration is verified, or when checking someone else's integration work. Not for load or performance testing, not for rendered UI verification, and not a substitute for reading the provider's own documentation.

46 stars
0 votes
0 copies
0 views
Added 9/22/2026
ai-agentsrustshelltestinggitapiperformancedocumentation

Works with

cliapi

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add nahid-sparktales/agent-dispatcher --skill api-contract-verification --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Api Contract Verification?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Api Contract Verification
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nahid-sparktales-api-contract-verification/badge)](https://www.skillsdirectory.com/skills/nahid-sparktales-api-contract-verification)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: api-contract-verification
description: Prove an API integration actually works by executing it — success path, documented failure paths, auth failure — and leave behind a contract test that catches the next break. Use before reporting any endpoint, client or third-party integration as working, when asked whether an integration is verified, or when checking someone else's integration work. Not for load or performance testing, not for rendered UI verification, and not a substitute for reading the provider's own documentation.
---

# API contract verification

Code that compiles against an API is not an integration. A client that type-checks, matches the
docs and reads correctly in the diff can still 404, send the wrong content type, retry a 401
forever, or pass every test against a stub nobody replaced.

Keep the verbs apart, because this procedure exists to stop them merging: **created** is the code
written; **executed** is a request actually sent and a response actually read; **tested** is a
check that will run again without you; **reviewed** is a human or agent reading it; **deployed** is
running somewhere real; **verified** is the conclusion, and it is available only after execution.

## When this fires

Before any endpoint, API client or third-party integration is reported as working — your own or
someone else's — and whenever a claim of "the integration works" needs backing.

## Procedure

1. **Write the contract down before calling anything:** environment and base URL, method and path,
   auth scheme, request shape, the success status and the fields you depend on, and the documented
   failure statuses. Take it from the provider's specification or current documentation, not from
   memory. If you cannot write it, you do not yet know what you are verifying.
2. **Choose the environment deliberately and name it.** Local stub, sandbox, staging. A call
   against production can charge money, send mail or mutate records — that is an outward-facing
   action: **stop and ask** before executing one, and prefer a disposable record over real data.
   The same applies to any write verb, even in staging, when the data is shared.
3. **Execute the success path.** Capture the request line, the status, the headers that matter
   (content type, rate limit, pagination), and the body or the fields you assert on. A 200 with an
   error object inside it is a failure — read the body, never the status alone.
4. **Assert on the parsed value your code uses**, not on the transport. "It returned 200" proves
   reachability. The contract is proven when the deserialized field arrives with the type, units
   and shape the calling code expects.
5. **Execute the documented failure paths:** invalid input, a resource that does not exist, and at
   least one transport-level failure — timeout, connection refused, or a 5xx — forced by pointing
   the client at an unroutable or stubbed endpoint. What is being verified is your side: does it
   retry, surface a typed error, or take the whole request down.
6. **Execute the auth failure path separately:** no credential, then an invalid or expired one.
   Confirm the status is a refusal, that the client does not loop retrying it, and that the
   credential appears in no log line or error message. An integration exercised only with a valid
   key has not been verified.
7. **Exercise the boring cases that break in production:** the second page of a paginated result,
   an empty result set, a legitimately null field, a date or amount where timezone or units are
   ambiguous, and the content type actually sent versus the one documented.
8. **Write the contract test, and say what it is worth.** Against a recorded or stubbed response it
   catches *your client* drifting and runs in CI. Against the live sandbox it catches *the
   provider* drifting, needs credentials, and will be flaky. Prefer both, kept separate, and assert
   the fields the code reads rather than the whole payload — a whole-payload snapshot fails on
   every unrelated provider change until someone stops reading it.
9. **Rerun from a clean state.** Fresh checkout or cleared fixtures, credentials from the
   documented source rather than whatever is already exported in your shell. A test that passes
   only in your session is not coverage.
10. **Report with the right verb**, and name the environment. "Verified in sandbox" and "verified"
    are different claims; do not print the second when you did the first.

## What this refuses to conclude

- **Without an executed call** — nothing at all. Reading the client against the specification is a
  review; say "reviewed", not "verified".
- **Without the failure paths** — only that the happy path works. Nothing about resilience,
  retries, or what a user sees when the provider is down.
- **Without the auth-failure call** — nothing about the integration's behaviour when credentials
  expire, which is how it will eventually fail.
- **From a passing stub test alone** — that your client parses that stub. It is silent on whether
  the provider still returns that shape.
- **From green CI over mocked transport** — that nothing changed on your side. It is not evidence
  the integration works.
- **From a sandbox pass** — nothing about production limits, data volumes, or permissions.

## Checklist

- [ ] Contract written from the provider's own source before execution
- [ ] Environment named; anything production-touching or destructive was asked about first
- [ ] Success path executed, body read, not just the status
- [ ] Assertions on parsed fields the code actually uses
- [ ] Invalid input, missing resource, and a timeout or 5xx executed
- [ ] Missing and invalid credential executed; no credential in logs; no retry loop
- [ ] Pagination, empty set, null field, and units or timezone checked
- [ ] Contract test committed, with its stub-versus-live value stated
- [ ] Suite rerun from a clean state
- [ ] The report's verb matches what was actually done

## Failure handling

- **The provider is unreachable or the sandbox is down** — that is the result. Report the
  integration as unverified with the error captured; do not fall back to reading the code and
  calling it verified.
- **The response differs from the documentation** — trust the observed response, record both, and
  raise the mismatch. Do not quietly widen your parser until it stops throwing.
- **The failure will not reproduce** — say so with what was tried and how often. An intermittent
  integration reported as fixed is worse than one reported as intermittent.
- **Only production credentials exist** — stop. Ask before executing, and say plainly that
  verification is blocked on a safe environment rather than executing anyway.

## Evidence to report

The environment and the exact requests executed, each with its status and the asserted fields; the
failure and auth-failure responses as they came back; the contract test's path and its command,
with its output; what the test is worth (stub or live); and every path left unexecuted, named. A
claim of "integration verified" carrying none of that is the thing this skill exists to refuse.

Attribution

nahid-sparktalesnahid-sparktales
View sourceMore from nahid-sparktales →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1066601 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

651 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →