{"slug":"api-idempotency-testing","title":"api-idempotency-testing","summary":"Use this skill when you need to assess API retry and duplicate-request behavior against sourced side-effect evidence; triggers include API 幂等性测试 and API idempotency testing.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-24T14:54:54.906614Z","repo":{"url":"https://github.com/naodeng/awesome-qa-skills","stars":230,"forks":31,"license":null,"updatedAt":"2026-09-22T13:51:34Z"},"bodyHtml":"<hr>\n<h2>name: api-idempotency-testing\ndescription: Use this skill when you need to assess API retry and duplicate-request behavior against sourced side-effect evidence; triggers include API 幂等性测试 and API idempotency testing.</h2>\n<h1>API Idempotency Testing</h1>\n<p>design verifiable candidates for duplicate requests, retries, idempotency keys, timeouts, and side effects. Produce AIT-## findings. This Skill organizes traceable API-quality candidates only; it does not execute tests or turn a design inventory into coverage, pass, or release evidence.</p>\n<h2>When to Use</h2>\n<ul>\n<li>When you need API idempotency testing candidates from API contracts, idempotency-key rules, retry policies, timeout evidence, business side effects, message records, and database observations.</li>\n<li>When you need selection rationale, applicability constraints, evidence gaps, and the smallest validation action.</li>\n<li>When inputs are incomplete but a bounded first pass can preserve blocked or unassessed boundaries.</li>\n</ul>\n<p>Do not use it to execute tests, invent contract or behavior, replace a complete strategy, or accept risk for a Human.</p>\n<h2>Output Format Options</h2>\n<ul>\n<li>Use Markdown by default; use tables, JSON, or CSV only when explicitly requested or required by the delivery format.</li>\n<li>Separate static analysis, unexecuted work, evidence states, and Human decisions; keep items unassessed, blocked, or NOT_RUN when runtime evidence is absent.</li>\n</ul>\n<h2>How to Use</h2>\n<ol>\n<li>Read prompts/api-idempotency-testing.md and provide the objective, scope, material, environment, and evidence.</li>\n<li>Complete the known, missing, conflicting, stale, out_of_scope, and assumptions input audit before findings.</li>\n<li>Record AIT-## with the subject, preconditions, behavior of concern, source evidence, and validation, plus impact/priority, owner role, close condition, and evidence state.</li>\n<li>Preserve conflicts, unknown constraints, and open questions when evidence is incomplete.</li>\n</ol>\n<h2>Core Constraints</h2>\n<ul>\n<li>Do not execute tests, assume missing rules, versions, thresholds, data, or responses, or treat candidate counts as coverage proof.</li>\n<li>File presence, names, design declarations, and Eval configuration are not runtime evidence.</li>\n<li>Mark unknowns unassessed, blocked, or pending clarification instead of filling them with convention.</li>\n<li>Do not edit requirements, code, test assets, or target systems.</li>\n</ul>\n<h2>Pre-delivery Check</h2>\n<ul>\n<li><input disabled=\"disabled\" type=\"checkbox\"> Recorded the known, missing, conflicting, stale, out_of_scope, and assumptions input audit.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> Every AIT-## has source, evidence state, impact/priority, owner role, close condition, and validation.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> Facts, inferences, recommendations, unexecuted work, and Human decisions remain separate.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> Findings are not execution results, coverage proof, or release claims.</li>\n</ul>\n<h2>Reference Files</h2>\n<ul>\n<li>Read evals/eval.yaml and matching cases for regression; configuration does not prove project results.</li>\n<li>Use evals/trigger-prompts.csv and evals/local-rules.json for trigger checks; missing skill.selection evidence is BLOCKED.</li>\n</ul>\n<h2>Common Pitfalls</h2>\n<ul>\n<li>Do not turn a method name, file presence, or candidate count into test execution, coverage, pass, or release evidence when scope or evidence is incomplete.</li>\n<li>Do not fill in missing rules, thresholds, data, environments, or results from convention; preserve unassessed, blocked, and pending items.</li>\n<li>Do not expand this specialist design or review into a complete strategy, full test cases, runtime execution, or a release decision.</li>\n</ul>\n<h2>Best Practices</h2>\n<ul>\n<li>Complete the six-part input audit before selecting the smallest traceable and verifiable finding scope.</li>\n<li>Keep the source, evidence state, impact/priority, owner role, close condition, validation method, and residual risk for every finding.</li>\n<li>Write validation suggestions as next actions; do not upgrade package structure, candidate counts, or local Eval configuration into real quality conclusions.</li>\n</ul>\n","files":[{"path":"agents/openai.yaml","sizeBytes":347,"isText":true},{"path":"evals/cases/basic-success.yaml","sizeBytes":895,"isText":true},{"path":"evals/cases/edge-incomplete-input.yaml","sizeBytes":652,"isText":true},{"path":"evals/cases/edge-scope-boundary.yaml","sizeBytes":725,"isText":true},{"path":"evals/eval.yaml","sizeBytes":441,"isText":true},{"path":"evals/local-rules.json","sizeBytes":142,"isText":true},{"path":"evals/trigger-prompts.csv","sizeBytes":565,"isText":false},{"path":"prompts/api-idempotency-testing.md","sizeBytes":3496,"isText":true},{"path":"SKILL.md","sizeBytes":3858,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-24T14:56:55.96832Z","sha256":"5AC7DF72BE15F0E0B39E211FF72C2FC200A9F8D4470EC72CE0A6182CD1D179DB","sizeBytes":6200},"review":null,"source":{"repositoryUrl":"https://github.com/naodeng/awesome-qa-skills","path":"skills/en/testing-types/api-idempotency-testing","license":null,"commit":"c44b8922085e01bafc804d1ffa3f21d4cec1d1c5","subtreeSha":"EFC602B0B2F16A3628D2A62413E6F5B01B88F6724188671035648B6C9CBF0E79","lastSyncedAt":"2026-09-24T14:54:50.849933Z"},"reviewedAt":"2026-09-24T15:04:19.327859Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/naodeng/awesome-qa-skills/tree/main/skills/en/testing-types/api-idempotency-testing"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install naodeng-awesome-qa-skills@llmmart"},{"target":"git","command":"git clone https://github.com/naodeng/awesome-qa-skills.git"}]}