Phx Investigate
oliver-kriska/claude-elixir-phoenix
Investigate Elixir/Phoenix bugs root-cause first. An agent skill from oliver-kriska/claude-elixir-phoenix.
A skill your agent uses 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…
$ npx skills add pproenca/dot-skills --skill adversarial-reactor -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pproenca/dot-skills adversarial-reactor --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.experimental/adversarial-reactor .claude/skills/adversarial-reactor && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "adversarial-reactor" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/adversarial-reactor into .claude/skills/adversarial-reactor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adversarial-reactor", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/adversarial-reactorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pproenca/dot-skills --skill adversarial-reactor -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pproenca/dot-skills adversarial-reactor --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.experimental/adversarial-reactor .agents/skills/adversarial-reactor && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "adversarial-reactor" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/adversarial-reactor into .agents/skills/adversarial-reactor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adversarial-reactor", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pproenca/dot-skills --skill adversarial-reactor -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pproenca/dot-skills adversarial-reactor --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.experimental/adversarial-reactor .cursor/skills/adversarial-reactor && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "adversarial-reactor" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/adversarial-reactor into .cursor/skills/adversarial-reactor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adversarial-reactor", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pproenca/dot-skills.git --path skills/.experimental/adversarial-reactor--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pproenca/dot-skills --skill adversarial-reactor -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pproenca/dot-skills adversarial-reactor --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.experimental/adversarial-reactor .gemini/skills/adversarial-reactor && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "adversarial-reactor" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/adversarial-reactor into .gemini/skills/adversarial-reactor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adversarial-reactor", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pproenca/dot-skills adversarial-reactorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pproenca/dot-skills --skill adversarial-reactor -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.experimental/adversarial-reactor .github/skills/adversarial-reactor && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "adversarial-reactor" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/adversarial-reactor into .github/skills/adversarial-reactor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adversarial-reactor", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pproenca/dot-skills --skill adversarial-reactor -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pproenca/dot-skills adversarial-reactor --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.experimental/adversarial-reactor .opencode/skills/adversarial-reactor && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "adversarial-reactor" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/adversarial-reactor into .opencode/skills/adversarial-reactor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adversarial-reactor", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
adversarial-reactorA skill your agent uses 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…
Adversarial Reactor is an agent skill from pproenca/dot-skills. 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 maxretries infinity default, retrying business failures, missing backoff), dependency and data flow…
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 36 other files, including reference files and assets (for example `assets/templates/verdict.md`, `gotchas.md` and `metadata.json`).
It sits in Agent Workflows, covering Subagents. It works with Elixir. The repository describes itself as: A collection of AI agent skills following the Agent Skills open format. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit cf93c57. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Adversarial Reactor loads about 2.3k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 246 tokens; SKILL.md has 1,102 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pproenca/dot-skills at commit cf93c57, republished under its MIT licence (© pproenca). 1,102 words, ~2,329 tokens.
.claude/skills/adversarial-reactor/SKILL.md (or your agent's skills folder). This skill also uses 33 other files; get the full folder from GitHub.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.
use Reactor modules, Reactor.Step implementations, Reactor.run call sites) is about to merge and needs an objective PASS/FAIL on its orchestration semantics.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.
Follow these steps exactly — the gate's value is that every review runs the same way.
mix.exs, mix.lock, test_helper.exs) — Reactor version, Ecto/sandbox presence, mocking library, telemetry consumers. Include the repo root in the target description — several rules must search beyond the diff for mounted step modules' callbacks, Reactor.run call sites, and middleware modules (the reviewer prompt lists them).references/ (all saga-*.md, retry-*.md, dep-*.md, step-*.md, comp-*.md, conc-*.md, obs-*.md files).If the same rule flips verdicts across re-reviews of an unchanged target, or a human reads the evidence and overrides the verdict, that is a decidability bug in the rule — record it in gotchas.md and sharpen the rule; do not override the gate.
The reviewer returns, per rule: PASS | FAIL | N/A, evidence (file:line or a quote — required for PASS as well as FAIL), and for every FAIL, the fix that flips the rule to PASS once applied — the named change plus its location, never a restatement of the violation. The final report follows assets/templates/verdict.md.
| # | Category | Prefix | The wrong assumption it gates |
|---|---|---|---|
| 1 | Saga Compensation & Undo | saga- | "Rollback is automatic" — side effects without undo/4, cleanup in compensate (fires on the step's own failure, receives the error), :ok believed to absorb errors (only {:continue, value} does), undo that breaks on re-execution |
| 2 | Retry Discipline | retry- | ":retry is safe" — catch-all retries under the max_retries :infinity DSL default, retrying deterministic business failures, immediate-retry hot loops with no backoff/4 |
| 3 | Dependency & Data Flow | dep- | "Steps run in the order I wrote them" — ordered side effects without argument/wait_for edges, inter-step data smuggled through context (no edge, races), fake unused arguments, multi-step reactors without return |
| 4 | Step Contracts | step- | Wrong callback shapes — non-documented run/3 returns treated as failure, {:halt, reason} as an error signal (it pauses, skips rollback), boolean guards / :cont from where, skip-conditionals inlined in run, side effects in unmockable inline fns |
| 5 | Composition & Iteration | comp- | Hand-rolling what the DSL plans — Reactor.run inside steps (child escapes parent rollback), Enum loops over map steps, case side-effect branching over switch, recurse without max_iterations, materialized datasets as map sources |
| 6 | Concurrency & Process Context | conc- | "Async just works" — map's allow_async? defaults false (serial), sandbox tests without async?: false, process-local state lost across the task boundary, async? false scattering instead of run-level max_concurrency |
| 7 | Observability & Middleware | obs- | Lifecycle logging hand-rolled in steps when Reactor.Middleware.Telemetry emits it all, middleware callbacks returning bare values, I/O inside event/3 on the executor's critical path |
Read gotchas.md before dispatching the reviewer — it pre-records scope guards (shapes-not-brands, what counts as a side effect, the diff-vs-repo search obligations) so the reviewer does not judge outside the rules.
adversarial-beam — the runtime-semantics sibling gate: supervision, backpressure, event delivery, shared state, distribution. A Reactor workflow lives inside an OTP app; run both on substantial work.adversarial-elixir — the paradigm-fit sibling gate: OO/enterprise habits ported onto the BEAM. Same protocol, complementary rules.staff-level-elixir — the advisory sibling: greenfield "which tool, which convention" guidance and judgment calls the gates deliberately exclude. Use it to write or fix code; use the gates to verdict it.| File | Description |
|---|---|
| references/reviewer-prompt.md | Self-contained prompt template for each blind reviewer |
| assets/templates/verdict.md | Verdict report template |
| references/_sections.md | Category definitions and ordering |
| metadata.json | Version and source references |
© pproenca, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 33 other files (references, assets) in skills/.experimental/adversarial-reactor of pproenca/dot-skills.
Open the folder on GitHubat commit cf93c57
Adversarial Reactor next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Adversarial Reactor this skillpproenca/dot-skills | 214 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Phx Investigateoliver-kriska/claude-elixir-phoenix | 564 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Phx Investigateoliver-kriska/claude-elixir-phoenix | 564 | — | ~1k | Automated safety check: Pass | MIT | |
| Phx Investigateoliver-kriska/claude-elixir-phoenix | 564 | — | ~1k | Automated safety check: Pass | MIT | |
| Phx Investigateoliver-kriska/claude-elixir-phoenix | 564 | — | ~1k | Automated safety check: Pass | MIT | |
| Claude Code Agent Developmentanthropics/claude-plugins-official | 37k | 8 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 |
oliver-kriska/claude-elixir-phoenix
Investigate Elixir/Phoenix bugs root-cause first. An agent skill from oliver-kriska/claude-elixir-phoenix.
oliver-kriska/claude-elixir-phoenix
Investigate Elixir/Phoenix bugs root-cause first. An agent skill from oliver-kriska/claude-elixir-phoenix.
oliver-kriska/claude-elixir-phoenix
Investigate Elixir/Phoenix bugs root-cause first. An agent skill from oliver-kriska/claude-elixir-phoenix.
oliver-kriska/claude-elixir-phoenix
Investigate Elixir/Phoenix bugs root-cause first. An agent skill from oliver-kriska/claude-elixir-phoenix.
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
Asvarox/allkaraoke
A skill your agent uses when executing implementation plans with independent tasks in the current session
pproenca/dot-skills
Audio forensics and voice recovery guidelines for CSI-level audio analysis.
pproenca/dot-skills
Guided, scripted pipeline for running JSX/TSX/React codemods safely across large legacy codebases.
pproenca/dot-skills
Create well-structured RFCs and technical proposals for software projects.
pproenca/dot-skills
Developer-experience friction auditing and fixing — slow onboarding, repeated manual setup steps, missing bootstrap/reset/seed scripts, undiscoverable conventions.
pproenca/dot-skills
Turn a rough idea for a language into a complete, implementable specification — a DSL, query, config/data, template, or protocol language — by interviewing the author dimension by dimension until…
pproenca/dot-skills
Drafting Python Enhancement Proposals (PEPs) — proposing a Python language feature, a standard library change, an interoperability standard, or an informational/process document for the Python…
Works with
Categories
A skill your agent uses 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…. Adversarial Reactor is an agent skill from pproenca/dot-skills.
Adversarial Reactor fits situations like: gate Elixir code built on the Reactor orchestration library (~ 1; with a pass/fail adversarial review — a single blind reviewer subagent judges a diff; file set against 28 decidable rules covering saga compensation and undo (side effects without undo; cleanup in the wrong callback.
Run `npx skills add pproenca/dot-skills --skill adversarial-reactor -a claude-code`. Or copy the skill folder (skills/.experimental/adversarial-reactor in pproenca/dot-skills) into .claude/skills/adversarial-reactor in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pproenca/dot-skills --skill adversarial-reactor -a codex`. Or copy the skill folder (skills/.experimental/adversarial-reactor in pproenca/dot-skills) into .agents/skills/adversarial-reactor in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pproenca/dot-skills --skill adversarial-reactor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adversarial-reactor, .gemini/skills/adversarial-reactor, .github/skills/adversarial-reactor and .opencode/skills/adversarial-reactor in your project.
SKILL.md names no scripts, command-line tools or credentials: Adversarial Reactor is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Adversarial Reactor is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 16k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Adversarial Reactor: Phx Investigate (oliver-kriska/claude-elixir-phoenix, 564 stars), Phx Investigate (oliver-kriska/claude-elixir-phoenix, 564 stars), Phx Investigate (oliver-kriska/claude-elixir-phoenix, 564 stars) and Phx Investigate (oliver-kriska/claude-elixir-phoenix, 564 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pproenca (a GitHub user) maintains it in pproenca/dot-skills, which has 214 GitHub stars. The repository holds 182 skills in this directory. The repository was last updated on August 15, 2026.
Source: pproenca/dot-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.