Agent skill · Testing & QA

designing-distributed-system-tests

Use when designing a test plan for a distributed or stateful system — anything with persistence, replication, consensus, retries, idempotency, async messaging, multi-tenancy, or partial failure. Plans are claim-driven: investigate the product's claimed guarantees first, then design hypotheses and scenarios that try to falsify those claims under fault. Handles change-scoped plans (a commit / PR / feature) and project-wide plans (holistic, with existing-test inventory and gap analysis). Also use when asked to write a stability plan, fault matrix, release-validation plan, durability / partition /

shenligithub.com/shenliGitHub ↗
claude-codeMIT
Install
npx skills add shenli/distributed-system-testing --skill designing-distributed-system-tests --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 14
SKILL.md size: 27 KB
Bundled scripts: none
Path: skills/designing-distributed-system-tests/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 225

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

Review
written from the skill's own SKILL.md · Aug 5, 2026

What it does

This skill prescribes designing test plans for distributed or stateful systems. It instructs you to focus on product claims, generate hypotheses to falsify those claims, and produce a structured plan with change-scoped or project-wide scope. It requires extracting guarantees from multiple sources, enumerating claims, and then selecting techniques and designing executable scenarios with concrete workloads, faults, and checkable oracles. It also mandates documenting environment requirements, mapping coverage, and providing an executable target test file path and a skeleton for tests, all tied to a plan path and scenario identifier.

How it works

  • Determine plan scope: choose between Change-scoped (specific change) or Project-wide (system-wide). If ambiguous, ask the user.
  • Scope the system by reading project entry points and capturing tenancy, persistence, replication, ordering, retry, observability, and surface boundaries.
  • Extract claims and categorize them (Safety, Liveness, Durability, Performance/SLO, Operational, Idempotency/Dedup, Isolation, Ordering, Membership, Boundary, Fairness).
  • List missing claims as needed.
  • Scope the change or project: identify touched files or enumerate surfaces for project-wide scope.
  • Inventory existing tests (project-wide).
  • Generate failure-mode hypotheses for each claim, guided by a pitfall catalog and surface categories.
  • Select techniques from a catalog and, for serious scenarios, fill the §7.M block with checker patterns from oracle references.
  • Map coverage: build a claims-to-hypotheses matrix, identify gaps, and declare environment requirements.
  • Design concrete scenarios: specify Workload, Faults, Oracle, Observability, budget tiers, and provide Target test file and Skeleton with AUTO-GENERATED header including plan path and scenario id.
  • Ensure scenarios that are serious include §7.M blocks and, if decomposed, §7.M.S arms for boundary or fairness.

When to use it

Applicable when designing a test plan for distributed or stateful systems, especially for persistence, replication, consensus, retries, idempotency, async messaging, multi-tenancy, or partial failure. Use for stability plans, fault matrices, release-validation plans, durability/partition/upgrade/crash-recovery/linearizability/deterministic-simulation plans, tenant isolation plans, namespace isolation plans, fairness/noisy-neighbor plans, or holistic test plans. Trigger even on questions like “what should we be testing” or “are my tenants actually isolated.”

What it can touch

The skill references a curated catalog of techniques and oracle patterns, plus environment requirements. It requires outputs that include a Target test file path and a Skeleton for the test, with an AUTO-GENERATED header identifying the plan path and scenario id. It also expects sections for Workload, Faults, Oracle, Observability, and three budget tiers, plus the plan’s claims and gap mappings.

Caveats

The plan relies on identifying explicit claims from sources such as README guarantees, API docs, architecture/design docs, code comments, and existing tests. Inferred claims may be noted but remain tied to the plan. The workflow emphasizes structured, executable scenarios and traceability between plan and test, including an explicit plan path in the AUTO-GENERATED header.

From the SKILL.md

# Designing Distributed-System Tests The default for testing distributed and stateful systems — write a few integration tests and call it done — finds a small fraction of the bugs that actually break these systems in production. This skill enforces an opinionated workflow: scope the change, generate failure-mode hypotheses that cover the categories the literature says matter most, pick techniques from a curated catalog, and emit a structured plan file that the executing-distributed-system-tests skill (or a human) can run. ## Plan modes This skill produces two shapes of plan. Decide which one applies before you start; the steps below branch on it. - **Change-scoped** — the default. Use when the caller names a commit, PR, branch-diff, or feature. The plan covers what *this change* could regress, scoped by its blast radius. - **Project-wide** — use when the caller asks for a "release-validation plan", "stability plan for the whole system", "test plan to enough coverage", "what should we be testing", or otherwise frames the request without a specific change. The plan covers what *the system* should be tested for, with an explicit inventory of existing tests and a gap analysis driving t

What's inside
Steps it walks through
  1. Plan modes
  2. Process
  3. 1. Scope the system
  4. 1b. Extract claims and guarantees
  5. 2. Scope the change OR the project
  6. 2b. Inventory existing tests (project-wide only)
  7. 3. Generate failure-mode hypotheses
  8. 4. Select techniques
  9. 4b. Map coverage and identify gaps (project-wide only)
  10. 4c. Declare environment requirements
  11. 5. Design scenarios
  12. 5b. Argue coverage adequacy
  13. 6. Write the plan file
  14. 7. Self-check
Ships with 13 files
  • assets/plan-template.md
  • references/boundary-and-isolation-testing.md
  • references/catalog-index.md
  • references/chaos-and-fault-injection.md
  • references/common-distributed-systems-pitfalls.md
  • references/crash-recovery-and-upgrade.md
  • references/deterministic-simulation.md
  • references/formal-methods-tla.md
  • references/fuzzing.md
  • references/history-discipline.md
  • references/jepsen-and-elle.md
  • references/performance-and-benchmarking.md
  • references/property-and-metamorphic.md
More from distributed-system-testing
All skills →
About this skill
What does the designing-distributed-system-tests skill do?

Use when designing a test plan for a distributed or stateful system — anything with persistence, replication, consensus, retries, idempotency, async messaging, multi-tenancy, or partial failure. Plans are claim-driven: investigate the product's claimed guarantees first, then design hypotheses and scenarios that try to falsify those claims under fault. Handles change-scoped plans (a commit / PR / feature) and project-wide plans (holistic, with existing-test inventory and gap analysis). Also use when asked to write a stability plan, fault matrix, release-validation plan, durability / partition /

How do I install it?

Run `npx skills add shenli/distributed-system-testing --skill designing-distributed-system-tests --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From shenli/distributed-system-testing, a repository with 225 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going