siege

SkillAI & models

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

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the siege skill

What this skill tells your AI

The instructions your AI receives, as published by simota/agent-skills in siege/SKILL.md and read by ahel’s review.

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

PhaseRequired actionKey ruleRead
DEFINEIdentify mode (LOAD/CONTRACT/CHAOS/MUTATE/RESILIENCE), success criteria, and environment scopeExplicit success criteria before executionMode-specific reference
PREPAREChoose tools, set up test infrastructure, prepare baselinesPrefer existing project test stack; minimal blast radiusreference/load-testing-guide.md, reference/chaos-engineering-guide.md
EXECUTERun tests with warmup, ramp, and observation phasesKill switch ready for chaos; 3x repetition for loadMode-specific reference
ANALYZECollect metrics, classify findings, identify bottlenecks or gapsEvidence-first; tie findings to thresholdsreference/mutation-testing-advanced.md, reference/resilience-anti-patterns.md
REPORTDeliver structured report with recommendations and handoffClean up resources; recommend owning agentreference/load-testing-anti-patterns.md, reference/chaos-observability.md

Operating Modes

ModeUse whenWorkflow
LOADthroughput, latency, capacity, soak, or spike validationDefine targets -> choose tool -> warm up -> ramp -> analyze -> report
CONTRACTinterface compatibility, CDC, or bi-directional contract checksidentify boundary -> write contract -> verify provider/consumer (bi-directional if PactFlow) -> integrate CI
CHAOScontrolled failure injection or game daydefine steady state -> limit blast radius -> inject fault -> observe -> restore -> report
MUTATEtest-quality measurementselect scope -> run mutations -> classify survivors -> recommend fixes
RESILIENCEretry/timeout/circuit-breaker/bulkhead/fallback validationmap pattern chain -> write verification tests -> execute fault cases -> confirm graceful behavior

Critical Constraints

TopicRule
Load warmupWarm up for 5-10 min before recording results
Load realismInclude 20-30% error, timeout, or unhappy-path traffic when relevant
Distributed loadFor K8s environments, use k6 Operator v1.0+ (GA Sept 2025) for native distributed test execution; eliminates custom load-generator infrastructure
RepeatabilityRun important load tests at least 3 times before concluding
ReportingReport p50/p95/p99/max, throughput, and error rate, not averages only
Chaos baselineCapture at least 15 min of steady-state metrics before Game Day fault injection
Chaos prepPrepare Game Day logistics about 1 week ahead; expand scope only after a small-blast-radius pass
Retry budgetKeep retry-induced load within 10-20% of normal traffic
Retry backoffUse exponential backoff with jitter (e.g., 2s → 4s → 8s + random jitter); cap at 30-60s max interval
Circuit breakerFailure 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 checksReadiness checks should enforce DB pool < 80%, Redis latency < 100ms, and disk free > 10% when applicable
Error budget policyTreat a single incident burning > 20% of the budget as mandatory postmortem + P0 action
SLO validationReference Google SRE template: 90% of RPCs < 1ms; 99% < 10ms; 99.9% < 100ms — adapt thresholds per service tier
P99 guardrailAutomated rollback if P99 diverges > 2× from baseline during canary deployment
Mutation CI tiersPR tier < 5 min (git-diff scoped incremental), nightly tier < 30 min, full release tier unrestricted
Mutation entry gatePrefer 80%+ coverage before broad mutation programs
Mutation operator selectionAt 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 thresholdsCritical modules 85% minimum / 95%+ target; project-wide 60% minimum / 75%+ recommended
Mutation defense depthMutation testing is one layer: unit tests → mutation testing → fuzz testing → formal verification → professional audit → monitoring

Recipes

RecipeSubcommandDefault?When to UseRead First
Load TestloadLoad/stress/spike/soak testing and SLO validationreference/load-testing-guide.md
Contract TestcontractContract testing (Pact/Specmatic), CDC verificationreference/contract-testing-patterns.md
Chaos EngineeringchaosChaos engineering, fault injection, game daysreference/chaos-engineering-guide.md
Mutation TestingmutationMutation testing, test quality measurement, survivor analysisreference/mutation-testing-guide.md
Fuzz TestingfuzzCoverage-guided fuzzing (AFL++/libFuzzer/go-fuzz/cargo-fuzz/Jazzer), corpus management, sanitizer integrationreference/fuzz-testing-guide.md
Property TestingpropertyProperty-based testing (fast-check/Hypothesis/jqwik/PropEr), generator design, stateful/model-based propertiesreference/property-based-testing.md
Smoke TestsmokePost-deploy smoke / sanity gates, synthetic checks, ≤3-min deploy-verification suitereference/smoke-deployment-gates.md
ConcurrencyconcurrencyHunt 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.

SubcommandBehavior
loadLOAD mode — throughput, latency, capacity, spike, soak. Always report p50/p95/p99/max
contractCONTRACT mode — consumer/provider contracts wired into the CI gate
chaosCHAOS mode — define steady state first, minimize blast radius, then inject faults. Always prepare a kill switch
mutationMUTATE mode — generate mutants, classify survivors, evaluate against coverage thresholds (60% project-wide, 75%+ recommended)
fuzzCoverage-guided fuzzing of parsers, decoders, security-sensitive surfaces. Always pair with a sanitizer, seed from a real corpus, minimize and dedupe crashes before reporting
propertyInvariant 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
concurrencyHunt 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
smokeMinimum 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

SignalApproachPrimary outputRead next
load, stress, spike, soak, throughput, latencyLOAD modeLoad test report with p50/p95/p99/maxreference/load-testing-guide.md
contract, CDC, provider, consumer, pact, bi-directionalCONTRACT modeContract verification reportreference/contract-testing-patterns.md
chaos, fault injection, game day, failureCHAOS modeChaos experiment reportreference/chaos-engineering-guide.md
mutation, test quality, survivorMUTATE modeMutation score reportreference/mutation-testing-guide.md
resilience, retry, circuit breaker, timeout, bulkheadRESILIENCE modeResilience verification reportreference/resilience-patterns.md
SLO validation, error budgetLOAD + SLO focusSLO compliance reportreference/load-testing-guide.md
unclear non-functional testing requestLOAD mode (default)Load test reportreference/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

NeedRoute
performance bottleneck findings that need implementationSiege -> Bolt -> Siege
API or schema boundary verificationGateway -> Siege -> Radar
resilience gap remediationSiege -> Builder -> Siege
incident-prevention findings or runbook gapsSiege -> Triage -> Builder
mutation survivors that need new testsRadar -> Siege -> Radar
SLO, SLI, dashboards, or error-budget policy designSiege -> 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

ReferenceRead this when
reference/load-testing-guide.mdTool selection, k6/Locust/Artillery patterns, SLO validation, CI snippets, or report structure.
reference/load-testing-anti-patterns.mdLoad-test design guardrails, shift-left strategy, Azure performance anti-patterns, or performance budgets.
reference/contract-testing-patterns.mdPact, AsyncAPI, contract CI, or breaking-change guidance.
reference/chaos-engineering-guide.mdSteady-state templates, fault-injection scenarios, tools, or Game Day checklists.
reference/chaos-observability.mdObservability integration, chaos CI maturity, Game Day practices, or chaos anti-patterns.
reference/mutation-testing-guide.mdTool setup, survivor analysis, CI wiring, or baseline mutation thresholds.
reference/mutation-testing-advanced.mdEquivalent-mutant handling, tiered mutation strategy, or risk-based thresholds.
reference/fuzz-testing-guide.mdCoverage-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.mdProperty-based test design (fast-check/Hypothesis/jqwik/PropEr), generator composition, shrinking tuning, or stateful/model-based testing patterns.
reference/smoke-deployment-gates.mdPost-deploy smoke suite design, the canary/smoke/regression hierarchy, synthetic-check topology, or ≤3-min deploy-gate time-budget discipline.
reference/resilience-patterns.mdRetry, timeout, circuit-breaker, or bulkhead verification patterns.
reference/resilience-anti-patterns.mdResilience anti-patterns, error-budget rules, or SLO-based resilience testing.
reference/test-strategy-2026.mdThe 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.mdSizing 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.mdEmitting the AUTORUN _STEP_COMPLETE block — Siege-specific Output/Next schema.
_common/CODE_QUALITY.mdAbout 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

Shortened here. Read the whole file on GitHub.

Signals

GitHub stars
77
Forks
13
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
siege
Source
github.com/simota/agent-skills