Individual skill
adversarial-reactor
Use this skill to gate Elixir code built on the Reactor orchestration library (~> 1.0) with a pass/fail adversarial review — a single blind reviewer subagent judges a diff or file set against 28 decidable rules covering saga compensation and undo (side effects without undo, cleanup in the wrong callback, compensate returns that roll back vs continue, non-idempotent undo), retry discipline (uncapped retries under the max_retries infinity default, retrying business failures, missing backoff), dependency and data flow (lexical-order assumptions, context smuggling, missing return), step contracts (invalid run/3 returns, halt misused as failure, guard/where confusion, side effects in inline fns), composition (Reactor.run inside steps instead of compose, Enum loops over map steps, case over switch, unbounded recurse), concurrency (serial-by-default map, sandbox tests left async, process-context loss), and middleware contracts. Verdicts only, never fixes.
skills/.experimental/adversarial-reactor/SKILL.md
Source commit cf93c57cac89d6fc3e4194686000411567f5caf3
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Not checked yet
- Last checked
- Nov 5, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 222
- Repository last updated
- Aug 15, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- operations Derived category
- data Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 9,363 bytesSKILL.mdcore · 9,363 bytesassets/templates/verdict.mddoc · 1,485 bytesgotchas.mddoc · 4,223 bytesmetadata.jsonasset · 1,748 bytesreferences/_sections.mddoc · 5,419 bytesreferences/comp-compose-over-nested-run.mddoc · 1,843 bytesreferences/comp-map-over-enum-in-step.mddoc · 1,686 bytesreferences/comp-recurse-needs-both-terminators.mddoc · 1,716 bytesreferences/comp-stream-map-sources.mddoc · 1,814 bytesreferences/comp-switch-over-case-side-effects.mddoc · 1,707 bytesreferences/conc-map-async-explicit.mddoc · 1,815 bytesreferences/conc-max-concurrency-over-scattered-sync.mddoc · 1,706 bytesreferences/conc-process-context-propagation.mddoc · 1,765 bytesreferences/conc-sandbox-tests-sync.mddoc · 1,582 bytesreferences/dep-args-not-context.mddoc · 1,939 bytesreferences/dep-declare-ordering.mddoc · 1,857 bytesreferences/dep-return-designates-output.mddoc · 1,515 bytesreferences/dep-wait-for-over-fake-argument.mddoc · 1,403 bytesreferences/obs-cheap-event-callbacks.mddoc · 1,505 bytesreferences/obs-middleware-return-shapes.mddoc · 1,609 bytesreferences/obs-telemetry-middleware-over-logging.mddoc · 1,788 bytesreferences/retry-backoff-for-network.mddoc · 1,968 bytesreferences/retry-cap-max-retries.mddoc · 1,503 bytesreferences/retry-transient-only.mddoc · 2,192 bytesreferences/reviewer-prompt.mddoc · 7,748 bytesreferences/saga-cleanup-in-undo-not-compensate.mddoc · 2,348 bytesreferences/saga-continue-to-absorb-errors.mddoc · 2,123 bytesreferences/saga-idempotent-undo.mddoc · 1,657 bytesreferences/saga-undo-for-side-effects.mddoc · 2,096 bytesreferences/step-guard-cont-halt-contract.mddoc · 1,640 bytesreferences/step-halt-is-pause-not-failure.mddoc · 2,155 bytesreferences/step-modules-for-side-effects.mddoc · 1,842 bytesreferences/step-run-return-shapes.mddoc · 1,604 bytesreferences/step-where-guard-over-inline-skip.mddoc · 1,775 bytes
Read excerpt
# Adversarial Reactor Gate
A saga/dataflow-orchestration review gate for Elixir code built on Reactor — pass/fail: a single blind reviewer subagent judges the work against this gate's rules with an adversarial mandate, and the work passes only when every rule is PASS or N/A. This skill renders verdicts; it never fixes the work.
The rules target one failure mode: **code that assumes guarantees Reactor never made** — that rollback is automatic, that cleanup in `compensate` fires on downstream failure, that `:ok` absorbs an error, that steps run in the order they were written, that `:retry` is bounded by default, that `{:halt, reason}` aborts, that map steps parallelize, that process-local state follows a step into its task process. These bugs compile cleanly, pass happy-path tests, and surface as orphaned payments, infinite retry loops, and races. Each rule carries an **Evidence of violation** paragraph so a reviewer can decide PASS/FAIL/N/A from artifact evidence alone. The sibling gates judge different layers: `adversarial-elixir` paradigm fit, `adversarial-beam` runtime semantics — run them alongside for full coverage of OTP-shaped work.
## When to Apply
- An Elixir feature that defines or modifies Reactor workflows (`use Reactor` modules, `Reactor.Step` implementations, `Reactor.run` call sites) is about to merge and needs an objective PASS/FAIL on its orchestration semantics.
- An agent (Claude, Codex) authored a Reactor saga and you want an independent check that it did not park cleanup in the wrong callback, leave side effects irreversible, or assume lexical step order.
- A workflow is being promoted from happy-path prototype to production (payments, provisioning, imports) and its failure/rollback/retry paths need to be surfaced as verdicts.
- An incident postmortem fixed one orphaned-side-effect or retry-storm bug and you want the same class hunted across the reactors in the affected area.
Do not apply to targets with no Reactor usage (the reviewer prompt's precondition aborts with "GATE NOT APPLICABLE"), or when the user wants explanations and refactors rather than a verdict. General OTP/BEAM concerns (supervision, PubSub, ETS) belong to `adversarial-beam`; Elixir paradigm fit belongs to `adversarial-elixir`.