What problem does it solve? After an RL environment integration is produced, there is no independent proof that the environment actually behaves the way its spec claims. This Skill acts as an acceptance gate: it re-constructs the environment through the adapter under test, checks every claim in env_spec.json against runtime behavior, and emits a verification_report.json with a nonzero exit code on failure so downstream training stages can be gated mechanically. ## Core Features & Use Cases - Tiered verification: Matches checks to the execution boundary — generate_only (deliverables and spec parsing), dry_run (construction, space matching, reset/step contracts, seed determinism), and runtime_allowed (multi-episode NaN/Inf sweeps, reward-bound consistency, construct/close leak cycles). - Three API conventions: Dispatches to dedicated verifier templates for gymnasium single-agent, pettingzoo_parallel multi-agent, and epymarl_multiagentenv (SMAC/SMACv2) integrations, each with convention-specific checks like agent-set monotonic shrink and declared-lossiness honesty. - Verifier self-testing: When the verifier script or check catalog changed, it sabotages one spec field, confirms the corresponding check fails with exit code 1, then regenerates the spec — a verifier that cannot fail is treated as decoration. - Use Case: After rl-env-integrator produces deliverables in runs/<task-id>/artifacts/integration/, run the verifier at the runtime_allowed boundary; on failure, route the failed checks with their smallest_fix entries back to the integrator before any algorithm implementation relies on the environment. ## Quick Start Use the rl-env-verifier skill to verify the integration in runs/<task-id> at the dry_run boundary and write verification_report.json before training relies on the environment.