scenario-design
Skill1 starsChanged 16 days agoApache-2.0View on GitHub
Use when authoring Antioch scenarios, typed cases, measured checks, results, artifacts, or telemetry. Covers evaluation and recording; use antioch-platform for dispatch/history and the Isaac skills for native simulator code.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- WilliamEbong/CourseForgetheir own version, first seen Nov 8, 2026
- feixiaoxu2022/agent-evaluation-skillstheir own version, first seen Jan 13, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- feixiaoxu2022/agent-evaluation-skills★ 4same name
- WilliamEbong/CourseForge★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- agentic-simulationSkill
- antioch-platformSkill
- antioch-researchSkill
- isaac-lab-3Skill
- isaac-sim-6Skill
- ros2Skill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 37
Keep module imports free of simulation, network, or file-writing effects.
- Distinctive: line 82
Use one named check per task criterion, with measured detail.
- Distinctive: line 108
After execution, inspect the checks, results, and relevant artifacts through run history.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Scenario design
A scenario evaluates behavior with typed inputs, measured checks, and saved evidence. Dispatch captures its output and pins images and source; use research to ground native measurement APIs.
Author the unit
import antioch
logger = antioch.Logger("task")
@antioch.scenario(tags=["smoke"], cases=[antioch.case({"seed": 2}, id="seed-2")])
def evaluate(run: antioch.ScenarioRun, seed: int = 1) -> None:
"""Evaluate the requested behavior."""
# Build, step, and measure the task here.The first parameter is run: antioch.ScenarioRun. Remaining parameters need
scalar annotations (bool, int, float, str, or Literal) and
defaults; antioch.param(default, ge=..., le=..., description=...) adds bounds and documentation. Use Literal for a closed set of choices. The parameter names, types, defaults, bounds, and descriptions appear during collection so callers can inspect the contract before running it.
The runner starts Kit before the body. Declare startup with
config=antioch.SimulationConfig(...), not a startup call inside the
scenario; config=None skips runner-owned Kit but still uses remote compute
under CLI dispatch. Keep simulator imports inside functions; discovery runs
locally without Isaac.
Keep module imports free of simulation, network, or file-writing effects.
antioch scenario collect --json validates definitions, not the body;
scenario_paths in the manifest limits discovery; without it, discovery scans the project. antioch.scenarios() reads definitions already registered in the current process, whereas client collection discovers and expands project source.
Inputs and execution policy
antioch.case accepts parameter overrides, a Cartesian grid, or
correlated combinations; use helper objects, not bare dictionaries, in
cases=. IDs can format resolved parameters; omitted IDs are derived.
Expansion is capped at 2,000 cases per scenario. Use cases for independent
outcomes and comparisons, or an internal loop for one evaluation/dataset
lifecycle; suite selectors group
cases in YAML.
cases = [
antioch.case({"speed": 0.2}, id="slow", tags=["smoke"]),
antioch.case(grid={"speed": [0.2, 0.4], "seed": [1, 2]}, id="speed-{speed}-seed-{seed}"),
antioch.case(combinations=[{"speed": 0.2, "load_kg": 20.0}, {"speed": 0.4, "load_kg": 5.0}]),
]A grid crosses independent values; combinations preserve intentional pairs. Shared overrides can accompany either expansion, but a parameter cannot be set both in the shared overrides and the expansion. Case tags combine with scenario tags for selection. Keep IDs stable enough to compare the same case across revisions.
Decorator keywords: name, description, tags, cases, config,
blueprint, capture, service, profile, restart_services, and
kit_cache.
kit_cache names a folder, such as a workflow task's volume, that each run
loads Isaac Sim's Kit cache from before Isaac Sim starts and saves it to when
it passes, so its first frames skip compiling what an earlier run did. Plain
code calls antioch.load_kit_cache(path) before antioch.start_simulation()
and antioch.save_kit_cache(path) once it has rendered.
service selects an eligible active container; it does not activate a profile. Omit it only when the active graph has one eligible service. profile includes helper services in the dispatched revision; restart_services restarts their processes and waits for fresh health before each managed run. Direct calls apply neither policy. For development with those helpers, or to target a session explicitly, start the required graph with antioch session new --profile perception. A submitted bundle reaches every mapped service, but a service outside restart_services keeps its existing process. If its files differ from those that process started with, the run reports earlier service code. Restart that helper between runs or add it to this policy. See manifest services and restart behavior.
Measured verdicts
run.add_result("max_error_m", max_error_m)
run.add_result("error_limit_m", error_limit_m)
run.check("position", max_error_m <= error_limit_m, detail=f"{max_error_m:.4f} m")
run.add_artifact("outputs/measurements.json", description="Measured task trajectory")Use one named check per task criterion, with measured detail. Checks return the supplied boolean and do not stop execution; reusing a criterion replaces its verdict, so accumulate failures or worst-case values for conditions that must hold throughout motion. Geometric clearance is not measured contact, and a commanded grasp is not a measured lift; label proxies as proxies.
On normal completion, any failed check gives FAILED; all passing checks or
no checks give PASSED, so no checks proves only that execution completed.
run.fail and assertion failures stop the body with FAILED; run.skip
reports an unmet precondition; run.set_outcome overrides checks, but
unexpected exceptions still produce ERRORED.
Keep thresholds and summaries in JSON results and do not write the reserved checks key. run.add_results({...}) stores several results together; values must be finite, JSON-compatible values, so convert arrays and tensors before storing a small summary. Keep large arrays, tables, images, and files in artifacts instead. Artifact names are unique within a run; use name= when files share a basename. output and telemetry are reserved artifact names. An artifact uploads when add_artifact is called; keep many small files in one archive to avoid an upload for each.
run.params, case_id, tags, scenario_run_id, suite_run_id, suite, and suite_position describe the current evaluation. wall_s and sim_s distinguish elapsed wall time from simulation time; sim_s can be absent without a simulator, and a loop that steps Newton or MuJoCo-Warp without Kit sets it with run.set_sim_time(seconds) (telemetry). Long loops should call run.raise_if_cancelled() so a requested cancellation can stop useful work promptly; it reads a flag refreshed in the background and never waits on the network, so calling it every step is fine. In-session recording explains why a direct call cannot rely on the platform killing its parent process.
Telemetry and read-back
A module-scope antioch.Logger writes into whichever recording is active
when it is called, a scenario's or a script's antioch.Telemetry, beside
native rr.log calls. Use
scalar for metrics, image for raw RGB/RGBA review frames, and value
for Rerun archetypes; image calls take a path and then pixels:
logger.image("camera/front", rgb). Read telemetry
for image encoding, timelines, geometry, layouts, and diagnosing RRDs.
After execution, inspect the checks, results, and relevant artifacts through run history. Smooth video alone does not establish physical correctness.
For imported scenario calls or notebook recording inside a session, read in-session recording. Native simulator APIs belong to Isaac Sim, Isaac Lab, and research.
Choose the next reference
| Task | Load when needed |
| Choose typed inputs, cases, or a pass/fail criterion | This skill's authoring, input, and measured-verdict sections |
| Save camera images, metrics, geometry, and a useful viewer layout | Telemetry and viewer layouts |
| Stream or save telemetry from a script or notebook without a run | Scripts and notebooks |
| Record code in a script or notebook; handle offline work or cancellation | In-session recording |
| Run, compare, download, cancel, or repeat saved work | Scenario history and suites |
| Iterate on native code before making a recorded evaluation | Agentic simulation |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

