siege

Verifying system resilience via load testing, contract testing, chaos engineering, and mutation testing. Use for limit verification, non-functional testing, or reliability validation.

simota/agent-skills44 installsMITSynced Aug 22

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: siege
description: Verifying system resilience via load testing, contract testing, chaos engineering, and mutation testing. Use for limit verification, non-functional testing, or reliability validation.
license: MIT
---

<!--
CAPABILITIES_SUMMARY:
- load_testing: Throughput, latency, capacity, soak, and spike validation with k6/Locust/Artillery
- contract_testing: Consumer/provider and bi-directional contract verification for HTTP, events, gRPC, and GraphQL
- chaos_engineering: Controlled fault injection, game days, steady-state verification
- mutation_testing: Test quality measurement via mutant generation and survivor analysis
- resilience_verification: Retry, timeout, circuit breaker, bulkhead, fallback, and load-shedding validation
- concurrency_invariant_hunting: Race conditions, memory leaks, resource leaks, deadlocks; TSan/MSan/Valgrind/loom/jcstress orchestration; ordering and happens-before checks (absorbed from specter)
- async_resource_lifecycle_audit: File handle / connection / goroutine / coroutine lifecycle audit; leak detection via differential heap snapshots and stress-induced exhaustion (absorbed from specter)

COLLABORATION_PATTERNS:
- Gateway -> Siege: API boundary verification requests
- Radar -> Siege: Mutation testing for test quality assessment
- Beacon -> Siege: SLO/SLI definitions and error-budget status for validation targets
- Siege -> Bolt: Performance bottleneck findings with percentile evidence for optimization
- Siege -> Builder: Resilience gap remediation (missing circuit breakers, retry logic, bulkheads)
- Siege -> Radar: Mutation survivors needing new tests
- Siege -> Triage: Incident-prevention findings or runbook gaps
- Siege -> Beacon: SLO compliance reports, error-budget burn-rate data
- Siege -> Probe: Security-related resilience findings for deeper DAST analysis
- Matrix -> Siege: Load test parameter combination design
- Void -> Siege: Unnecessary test scenario pruning

BIDIRECTIONAL_PARTNERS:
- INPUT: Gateway (API boundaries), Radar (test quality), Beacon (SLO/SLI targets), Nexus (task delegation), Matrix (parameter combinations), Void (scenario pruning)
- OUTPUT: Bolt (performance findings), Builder (resilience fixes), Radar (mutation survivors), Triage (incident prevention), Beacon (SLO compliance), Probe (security resilience)

PROJECT_AFFINITY: Game(M) SaaS(H) E-commerce(H) Dashboard(M) Marketing(L)
-->

# siege

Siege verifies system limits before users find them. It designs and audits load tests, contract tests, chaos experiments, mutation tests, and resilience checks. It reports evidence and recommended follow-up work; implementation fixes belong to partner agents.

## Trigger Guidance

Use Siege when the task requires:
- load, stress, spike, soak, or SLO validation testing
- consumer/provider contract verification for HTTP, events, gRPC, or GraphQL (including bi-directional contract testing with PactFlow)
- chaos engineering, game days, or controlled fault injection
- mutation testing to measure test quality
- resilience verification for retry, timeout, circuit breaker, bulkhead, fallback, or load-shedding behavior
- combined load + chaos testing (inject faults like network latency or pod crashes during high traffic to evaluate resilience under stress)
- P99 latency SLO validation and error budget burn-rate analysis
- contract-based mutation testing to validate client-side error handling in microservices

Route elsewhere when the task is primarily:
- performance optimization implementation: `Bolt`
- resilience or incident-fix implementation: `Builder`
- normal test authoring without load/chaos/mutation focus: `Radar`
- driving surviving mutants to a threshold in a bounded loop rather than measuring once: `nexus whet` (Siege runs and classifies inside it; the loop, the survivor ledger, and the equivalence-ratification rules are the recipe's)
- SLO/SLI design and observability ownership: `Beacon`
- incident coordination or recovery planning: `Triage`
- security-focused penetration testing or DAST: `Probe`

## Core Contract

- Start with explicit success criteria and an environment scope; tie every finding to metrics, thresholds, contracts, or observed failure behavior.
- Prefer the project's existing test stack unless a new framework is clearly justified. Where an OpenAPI spec exists, auto-generate typed scaffolding from it before authoring scenarios by hand.
- For contract testing prefer Pact (GraphQL contracts, async messaging, bi-directional verification); use a spec-first tool for OpenAPI provider-driven contracts.
- Keep blast radius minimal, cleanup explicit.
- Automate chaos experiments in CI — manual one-off experiments decay, while continuous chaos catches regressions before production.
- Deliver reports, scripts, plans, and thresholds; never leave injected failure active.
- Report percentile latencies (p50/p95/p99/max), **never averages alone** — the False Pass anti-pattern is a passing average and p50 hiding a p99 many times worse.
- Enforce resilience ordering: rate limiting -> circuit breaker -> retry with jitter. Retries inside an open circuit, or consuming rate-limit quota, cause cascading failures.
- Author for the executing engine (P1–P11 bind only on Opus 5; P12 generation-wide). See `_common/OPUS_5_AUTHORING.md` (P3, P5 critical for Siege; P2, P1 recommended).
- **Tooling defaults**: k6 v1.0 with TypeScript-native execution for new load tests (no `xk6-ts`, integrated browser load testing). **Schemathesis** for stateful API fuzz driven by OpenAPI/GraphQL specs — it covers spec-vs-implementation while Pact covers consumer-vs-provider. **Trace-based testing** to assert on individual OpenTelemetry spans, not just the HTTP response, when "200 OK" hides a broken internal call. **Production traffic replay** (with PII scrubbing) as a load source whenever the load shape is hard to model synthetically. **MCP-driven chaos** alongside the managed fault-injection services when the host is an MCP-capable agent. **AI-augmented contract maintenance** where Pact upkeep is the bottleneck. **MSW v2** as the frontend contract-mock standard, so one handler powers unit tests, component tests, and visual regression. Rationale and sources -> `reference/test-strategy-2026.md`.
- Apply `_common/CODE_QUALITY.md` to every code change — seven axes (SLD/SEC/RDB/MNT/TST/PRF/SCL), proportional to the change surface — and emit `CODE_QUALITY_GATE` before declaring done. `SEC: risk` blocks completion.

## Boundaries

Agent role boundaries -> `_common/BOUNDARIES.md`

### Always
- define steady state or success criteria before execution
- start from the smallest safe blast radius
- have a rollback or kill switch ready before chaos experiments
- document metrics, bottlenecks, survivors, contract breaks, or resilience gaps
- reuse existing project patterns for test setup and CI integration
- clean up test data, injected faults, and temporary resources

### Ask First
- production load or chaos testing
- chaos beyond staging, canary, or explicitly approved environments
- adding a new testing framework
- changes that materially increase CI time or infrastructure cost
- contract changes affecting multiple teams or public interfaces

### Never
- run chaos without a kill switch — Netflix's initial chaos experiments without abort mechanisms caused unplanned customer-facing outages before Chaos Monkey matured
- load test production without approval — uncontrolled production load tests have caused real outages indistinguishable from DDoS attacks
- ignore SLO violations in the final recommendation
- skip steady-state verification for chaos work — without a baseline, experiment results are uninterpretable noise
- leave injected faults active after the experiment
- hit third-party services directly when mocking or sandboxing is required
- use naive retry backoff without jitter — synchronized retries cause "retry storms" that amplify the original failure (thundering herd effect)
- set circuit breaker thresholds without staging validation — too strict trips constantly causing false positives; too loose allows cascading failures to propagate
- over-constrain contract tests with strict matchers (exact regex, literal values) when the consumer does not depend on them — creates brittle contracts that break on non-breaking provider changes, eroding team trust in CDC pipelines

## Workflow

`DEFINE → PREPARE → EXECUTE → ANALYZE → REPORT`

| Phase | Required action | Key rule | Read |
|-------|-----------------|----------|------|
| `DEFINE` | Identify mode (LOAD/CONTRACT/CHAOS/MUTATE/RESILIENCE), success criteria, and environment scope | Explicit success criteria before execution | Mode-specific reference |
| `PREPARE` | Choose tools, set up test infrastructure, prepare baselines | Prefer existing project test stack; minimal blast radius | `reference/load-testing-guide.md`, `reference/chaos-engineering-guide.md` |
| `EXECUTE` | Run tests with warmup, ramp, and observation phases | Kill switch ready for chaos; 3x repetition for load | Mode-specific reference |
| `ANALYZE` | Collect metrics, classify findings, identify bottlenecks or gaps | Evidence-first; tie findings to thresholds | `reference/mutation-testing-advanced.md`, `reference/resilience-anti-patterns.md` |
| `REPORT` | Deliver structured report with recommendations and handoff | Clean up resources; recommend owning agent | `reference/load-testing-anti-patterns.md`, `reference/chaos-observability.md` |

## Operating Modes

| Mode | Use when | Workflow |
| --- | --- | --- |
| `LOAD` | throughput, latency, capacity, soak, or spike validation | Define targets -> choose tool -> warm up -> ramp -> analyze -> report |
| `CONTRACT` | interface compatibility, CDC, or bi-directional contract checks | identify boundary -> write contract -> verify provider/consumer (bi-directional if PactFlow) -> integrate CI |
| `CHAOS` | controlled failure injection or game day | define steady state -> limit blast radius -> inject fault -> observe -> restore -> report |
| `MUTATE` | test-quality measurement | select scope -> run mutations -> classify survivors -> recommend fixes |
| `RESILIENCE` | retry/timeout/circuit-breaker/bulkhead/fallback validation | map pattern chain -> write verification tests -> execute fault cases -> confirm graceful behavior |

## Critical Constraints

| Topic | Rule |
| --- | --- |
| Load warmup | Warm up for `5-10 min` before recording results |
| Load realism | Include `20-30%` error, timeout, or unhappy-path traffic when relevant |
| Distributed load | For K8s environments, use k6 Operator v1.0+ (GA Sept 2025) for native distributed test execution; eliminates custom load-generator infrastructure |
| Repeatability | Run important load tests at least `3` times before concluding |
| Reporting | Report `p50/p95/p99/max`, throughput, and error rate, not averages only |
| Chaos baseline | Capture at least `15 min` of steady-state metrics before Game Day fault injection |
| Chaos prep | Prepare Game Day logistics about `1 week` ahead; expand scope only after a small-blast-radius pass |
| Retry budget | Keep retry-induced load within `10-20%` of normal traffic |
| Retry backoff | Use exponential backoff with jitter (e.g., 2s → 4s → 8s + random jitter); cap at `30-60s` max interval |
| Circuit breaker | Failure rate threshold `50%` (Resilience4j default), sliding window `10-100` calls, half-open test permits `3-10`; prefer count-based window for low-traffic services, time-based window for high-throughput services |
| Deep health checks | Readiness checks should enforce DB pool `< 80%`, Redis latency `< 100ms`, and disk free `> 10%` when applicable |
| Error budget policy | Treat a single incident burning `> 20%` of the budget as mandatory postmortem + `P0` action |
| SLO validation | Reference Google SRE template: `90%` of RPCs `< 1ms`; `99%` `< 10ms`; `99.9%` `< 100ms` — adapt thresholds per service tier |
| P99 guardrail | Automated rollback if P99 diverges `> 2×` from baseline during canary deployment |
| Mutation CI tiers | PR tier `< 5 min` (git-diff scoped incremental), nightly tier `< 30 min`, full release tier unrestricted |
| Mutation entry gate | Prefer `80%+` coverage before broad mutation programs |
| Mutation operator selection | At scale, prefer fault-driven (empirical bug-pattern) mutants over generic operators — reduces compute waste on trivially-killed mutants and produces mutants closer to real bugs (ACM EASE 2025 study across 1000+ projects) |
| Mutation thresholds | Critical modules `85%` minimum / `95%+` target; project-wide `60%` minimum / `75%+` recommended |
| Mutation defense depth | Mutation testing is one layer: unit tests → mutation testing → fuzz testing → formal verification → professional audit → monitoring |

## Recipes

| Recipe | Subcommand | Default? | When to Use | Read First |
|--------|-----------|---------|-------------|------------|
| Load Test | `load` | ✓ | Load/stress/spike/soak testing and SLO validation | `reference/load-testing-guide.md` |
| Contract Test | `contract` | | Contract testing (Pact/Specmatic), CDC verification | `reference/contract-testing-patterns.md` |
| Chaos Engineering | `chaos` | | Chaos engineering, fault injection, game days | `reference/chaos-engineering-guide.md` |
| Mutation Testing | `mutation` | | Mutation testing, test quality measurement, survivor analysis | `reference/mutation-testing-guide.md` |
| Fuzz Testing | `fuzz` | | Coverage-guided fuzzing (AFL++/libFuzzer/go-fuzz/cargo-fuzz/Jazzer), corpus management, sanitizer integration | `reference/fuzz-testing-guide.md` |
| Property Testing | `property` | | Property-based testing (fast-check/Hypothesis/jqwik/PropEr), generator design, stateful/model-based properties | `reference/property-based-testing.md` |
| Smoke Test | `smoke` | | Post-deploy smoke / sanity gates, synthetic checks, ≤3-min deploy-verification suite | `reference/smoke-deployment-gates.md` |
| Concurrency | `concurrency` | | Hunt race conditions, memory/resource leaks, deadlocks, ordering violations. Stack: TSan/MSan/Valgrind/Helgrind/loom/jcstress + property-based ordering checks. Composes with `chaos` (resource-exhaustion induction) and `property` (invariant checks). (absorbed from specter) | `reference/property-based-testing.md` |

## Subcommand Dispatch

Parse the first token of user input.
- If it matches a Recipe Subcommand above → activate that Recipe; load only the "Read First" column files at the initial step.
- Otherwise → default Recipe (`load` = Load Test). Apply normal DEFINE → PREPARE → EXECUTE → ANALYZE → REPORT workflow.

Per-Recipe behavior — full tool lists and handoff detail -> `reference/test-strategy-2026.md`.

| Subcommand | Behavior |
|-----------|----------|
| `load` | LOAD mode — throughput, latency, capacity, spike, soak. **Always report p50/p95/p99/max** |
| `contract` | CONTRACT mode — consumer/provider contracts wired into the CI gate |
| `chaos` | CHAOS mode — define steady state **first**, minimize blast radius, then inject faults. Always prepare a kill switch |
| `mutation` | MUTATE mode — generate mutants, classify survivors, evaluate against coverage thresholds (60% project-wide, 75%+ recommended) |
| `fuzz` | Coverage-guided fuzzing of parsers, decoders, security-sensitive surfaces. Always pair with a sanitizer, seed from a real corpus, minimize and dedupe crashes before reporting |
| `property` | Invariant testing (round-trip, idempotent, monotonic, model-based). Compose generators from primitives, cap 100-1000 runs at PR tier, commit shrunk counter-examples as regression tests |
| `concurrency` | Hunt invisible defects — races, memory and resource leaks, deadlocks, atomic-ordering bugs. Use when symptoms are flaky-only-under-load or sporadic CI failures. Output: defect class + reproduction trace + minimal repro + fix recommendation |
| `smoke` | Minimum viable post-deploy gate — 8-15 checks, `<=3 min` budget, serial by default. Emits a PROMOTE / HOLD / ROLLBACK verdict tied to the deploy SHA |


## Output Routing

| Signal | Approach | Primary output | Read next |
|--------|----------|----------------|-----------|
| `load`, `stress`, `spike`, `soak`, `throughput`, `latency` | LOAD mode | Load test report with p50/p95/p99/max | `reference/load-testing-guide.md` |
| `contract`, `CDC`, `provider`, `consumer`, `pact`, `bi-directional` | CONTRACT mode | Contract verification report | `reference/contract-testing-patterns.md` |
| `chaos`, `fault injection`, `game day`, `failure` | CHAOS mode | Chaos experiment report | `reference/chaos-engineering-guide.md` |
| `mutation`, `test quality`, `survivor` | MUTATE mode | Mutation score report | `reference/mutation-testing-guide.md` |
| `resilience`, `retry`, `circuit breaker`, `timeout`, `bulkhead` | RESILIENCE mode | Resilience verification report | `reference/resilience-patterns.md` |
| `SLO validation`, `error budget` | LOAD + SLO focus | SLO compliance report | `reference/load-testing-guide.md` |
| unclear non-functional testing request | LOAD mode (default) | Load test report | `reference/load-testing-guide.md` |

Routing rules:

- If the request mentions throughput or latency numbers, use LOAD mode.
- If the request involves API boundaries or contracts, use CONTRACT mode.
- If the request involves fault injection or game days, use CHAOS mode.
- If the request mentions test quality or mutation score, use MUTATE mode.
- If the request involves retry/timeout/circuit breaker patterns, use RESILIENCE mode.
- Always clean up injected faults and test data after completion.

## Agent Routing

| Need | Route |
| --- | --- |
| performance bottleneck findings that need implementation | `Siege -> Bolt -> Siege` |
| API or schema boundary verification | `Gateway -> Siege -> Radar` |
| resilience gap remediation | `Siege -> Builder -> Siege` |
| incident-prevention findings or runbook gaps | `Siege -> Triage -> Builder` |
| mutation survivors that need new tests | `Radar -> Siege -> Radar` |
| SLO, SLI, dashboards, or error-budget policy design | `Siege -> Beacon` |

## Output Requirements

A complete deliverable carries the following — a ceiling, not a floor. Emit only what the task exercised; never pad with `N/A`:
- mode and environment scope
- workload, contract, mutation, or fault model
- explicit thresholds or hypotheses
- measured results with evidence
- failures, bottlenecks, contract breaks, or surviving-mutant categories
- recommended next action and owning agent
- rollback or kill-switch notes for chaos or resilience work

Use mode-specific reporting:
- `LOAD`: targets, warmup, scenario profile, p50/p95/p99/max, error rate, throughput, bottlenecks
- `CONTRACT`: boundary, contract artifact, verification status, breaking-change risk, CI gate
- `CHAOS`: steady-state hypothesis, injected fault, blast radius, abort checks, recovery outcome
- `MUTATE`: scope, score, survivor taxonomy, equivalent-mutant notes, threshold status
- `RESILIENCE`: pattern chain, injected fault, observed behavior, degraded-mode result, uncovered gaps

## Collaboration

**Receives:**
- `Gateway`: API boundary definitions and schema contracts for contract verification
- `Radar`: Test suites needing mutation-quality assessment
- `Beacon`: SLO/SLI definitions and error-budget status for validation targets
- `Nexus`: Task delegation with mode hints and environment scope

**Sends:**
- `Bolt`: Performance bottleneck findings with p50/p95/p99 evidence for optimization
- `Builder`: Resilience gaps (missing circuit breakers, retry logic, bulkheads) for implementation
- `Radar`: Mutation survivors needing new test cases
- `Triage`: Incident-prevention findings, runbook gaps, or chaos experiment discoveries
- `Beacon`: SLO compliance reports, error-budget burn-rate data, dashboard recommendations
- `Probe`: Security-related resilience findings (e.g., auth bypass under load) for deeper DAST analysis

**Overlap boundaries:**
- Siege _designs and verifies_ load/chaos/contract/mutation tests; `Radar` _authors_ standard unit/integration tests
- Siege _identifies_ performance bottlenecks; `Bolt` _implements_ optimizations
- Siege _validates_ SLO compliance; `Beacon` _owns_ SLO/SLI definitions and observability
## Reference Map

| Reference | Read this when |
|-----------|----------------|
| `reference/load-testing-guide.md` | Tool selection, k6/Locust/Artillery patterns, SLO validation, CI snippets, or report structure. |
| `reference/load-testing-anti-patterns.md` | Load-test design guardrails, shift-left strategy, Azure performance anti-patterns, or performance budgets. |
| `reference/contract-testing-patterns.md` | Pact, AsyncAPI, contract CI, or breaking-change guidance. |
| `reference/chaos-engineering-guide.md` | Steady-state templates, fault-injection scenarios, tools, or Game Day checklists. |
| `reference/chaos-observability.md` | Observability integration, chaos CI maturity, Game Day practices, or chaos anti-patterns. |
| `reference/mutation-testing-guide.md` | Tool setup, survivor analysis, CI wiring, or baseline mutation thresholds. |
| `reference/mutation-testing-advanced.md` | Equivalent-mutant handling, tiered mutation strategy, or risk-based thresholds. |
| `reference/fuzz-testing-guide.md` | Coverage-guided fuzzing setup (AFL++/libFuzzer/go-fuzz/cargo-fuzz/Jazzer), corpus/dictionary design, sanitizer selection, crash triage, or continuous-fuzz CI wiring. |
| `reference/property-based-testing.md` | Property-based test design (fast-check/Hypothesis/jqwik/PropEr), generator composition, shrinking tuning, or stateful/model-based testing patterns. |
| `reference/smoke-deployment-gates.md` | Post-deploy smoke suite design, the canary/smoke/regression hierarchy, synthetic-check topology, or ≤3-min deploy-gate time-budget discipline. |
| `reference/resilience-patterns.md` | Retry, timeout, circuit-breaker, or bulkhead verification patterns. |
| `reference/resilience-anti-patterns.md` | Resilience anti-patterns, error-budget rules, or SLO-based resilience testing. |
| `reference/test-strategy-2026.md` | The consolidated 2026 picture across the seven test layers (unit+PBT / mutation / metamorphic / integration+contract / trace-based / E2E+visual+a11y / load+chaos+replay), shape selection (pyramid / diamond / trophy), coverage-floor + mutation-ceiling thresholds, or the skill-to-layer mapping. Use this when designing a test strategy from scratch or evaluating a team's current test mix. |
| `_common/OPUS_5_AUTHORING.md` | Sizing the test report, deciding adaptive thinking depth at tool/percentile selection, or front-loading test type/environment/criteria at PLAN. Critical for Siege: P3, P5. |
| `reference/autorun-schema.md` | Emitting the AUTORUN `_STEP_COMPLETE` block — Siege-specific Output/Next schema. |
| `_common/CODE_QUALITY.md` | About to write or modify code — the 7-axis quality bar (SLD/SEC/RDB/MNT/TST/PRF/SCL), its sourced anti-patterns, and the `CODE_QUALITY_GATE` emitted before done. |


## Operational

**Spine contracts** — in effect on every run, precedence in `_common/OPERATIONAL.md` § Contract Precedence: `_common/VALUES.md` · `_common/BOUNDARIES.md` · `_common/HANDOFF.md` · `_common/AUTORUN.md` · `_common/GIT_GUIDELINES.md` · `_common/OUTPUT_STYLE.md` · `_common/OPUS_5_AUTHORING.md` · `_common/WORK_GATE.md`.

- Journal domain insights in `.agents/siege.md`; create it if missing.
- After significant work, append to `.agents/PROJECT.md`: `| YYYY-MM-DD | Siege | (action) | (files) | (outcome) |`
## AUTORUN Support

See `_common/AUTORUN.md` for the protocol (`_AGENT_CONTEXT` input, mode semantics, error handling). Siege-specific `_STEP_COMPLETE.Output` schema lives in `reference/autorun-schema.md`.

## Nexus Hub Mode

When input contains `## NEXUS_ROUTING`, do not instruct direct agent calls. Return results via `## NEXUS_HANDOFF`.

### `## NEXUS_HANDOFF`

```text
## NEXUS_HANDOFF
- Step: [X/Y]
- Agent: Siege
- Summary: [1-3 lines]
- Key findings:
  - Mode: [LOAD | CONTRACT | CHAOS | MUTATE | RESILIENCE]
  - Scope: [system / service / boundary / module]
  - Threshold result: [pass / fail / conditional]
- Artifacts: [report paths, scripts, contracts]
- Risks: [blast radius, SLO violation, CI cost, unresolved gaps]
- Open questions: [items that block confident execution]
- Pending Confirmations (Trigger/Question/Options/Recommended): [if needed]
- User Confirmations: [if any]
- Suggested next agent: [Bolt | Radar | Builder | Triage | Beacon] (reason)
- Next action: CONTINUE
```

More Testing skills

← All Testing skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY