Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Run Scenic Scenario

ASecurity

Runs Scenic probabilistic scenarios against a running CARLA server with the `scenic FILE --simulate --2d` CLI — the carlaChallenge1-10 traffic scenarios shipped by ScenarioRunner (`model srunner.scenic.models.model`) and by Scenic itself (`model scenic.simulators.carla.model`) — bounding the run, sampling scenes headlessly first to tell a map problem from a syntax problem, and restoring the world afterwards. Use when the user asks to "run a Scenic scenario", "run carlaChallenge", "test a .sce...

3 stars
0 votes
0 copies
0 views
Added 9/20/2026
developmentpythongobash

Works with

cli

Security Analysis

A100/100

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add carla-simulator/carla-agentic-tools --skill run-scenic-scenario --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Run Scenic Scenario?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Run Scenic Scenario
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/carla-simulator-run-scenic-scenario/badge)](https://www.skillsdirectory.com/skills/carla-simulator-run-scenic-scenario)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: run-scenic-scenario
description: Runs Scenic probabilistic scenarios against a running CARLA server with the `scenic FILE --simulate --2d` CLI — the carlaChallenge1-10 traffic scenarios shipped by ScenarioRunner (`model srunner.scenic.models.model`) and by Scenic itself (`model scenic.simulators.carla.model`) — bounding the run, sampling scenes headlessly first to tell a map problem from a syntax problem, and restoring the world afterwards. Use when the user asks to "run a Scenic scenario", "run carlaChallenge", "test a .scenic file", "scenic --simulate", or reports a Scenic scenario that rejects every sample or cannot find blueprints.
license: MIT
compatibility: Any OS with Scenic and a matching CARLA client in ONE interpreter, plus a running CARLA server. No UE4/UE5 build needed. Scenic keys its blueprint tables off the client version, so client and server must match exactly.
metadata:
  group: scenic
  prerequisites: scripts/check_env.sh
  reference: references/scenic-cli.md
---

# Run a Scenic scenario

> **Paths.** `scripts/…` and `references/…` below are relative to the
> directory holding this SKILL.md. Your working directory is the user's
> project, not that directory, so prefix them with its absolute path or the
> command is not found.

A Scenic scenario is a `.scenic` file describing a *distribution* over scenes.
Running it has two distinct phases, and almost every confusing failure comes from
not knowing which one broke:

1. **sample** — Scenic reads the map's OpenDrive, then rejection-samples until a
   scene satisfies every `require`. No simulator involved.
2. **simulate** — the sampled scene is spawned in CARLA and behaviours tick.

A scenario that cannot sample will never reach CARLA, so a server-side
explanation for it is always wrong. [scripts/sample_scenic.py](scripts/sample_scenic.py)
separates the two in about a second per file.

Three things decide whether a run works:

- **the model** — `srunner.scenic.models.model` needs `SCENARIO_RUNNER_ROOT` on
  `PYTHONPATH`; `scenic.simulators.carla.model` ships in the wheel.
- **the map** — scenarios filter road features (`is4Way and not isSignalized`).
  A filter that matches nothing is an empty domain, not a bug.
- **the client version** — Scenic's blueprint table is keyed on it, so a
  client/server mismatch silently offers ids the server does not have.

## Instructions

```
Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: Inventory what is runnable, and on which map
- [ ] Step 3: Sample headlessly to separate map problems from syntax problems
- [ ] Step 4: Run it bounded, with --simulate --2d
- [ ] Step 5: Confirm a simulation actually terminated; leave the world async
```

### Step 1-2: What can I run

```bash
source scripts/env.sh
bash scripts/check_env.sh

python3 scripts/list_scenic.py                # every scenario, its model, its map
python3 scripts/list_scenic.py --check-maps   # + each road network's features
python3 scripts/list_scenic.py --map Town05   # only scenarios for one map
```

`list_scenic.py` parses the headers as text, so it needs neither Scenic nor a
server and cannot be broken by a failing model import.

### Step 3: Sample before you simulate

```bash
python3 scripts/sample_scenic.py "$SCENARIO_RUNNER_ROOT"/srunner/scenic/carlaChallenge*.scenic
```

Verdicts map to causes with no overlap:

| Verdict | Meaning | Where to look |
|---|---|---|
| `PASS` | scene constructible; only runtime issues remain | go to Step 4 |
| `COMPILE-FAIL` | syntax, model import, missing `.xodr`, or an empty blueprint category | `check_env.sh`, `PYTHONPATH` |
| `SAMPLE-FAIL` | `require`s unsatisfiable on this map | `--check-maps` |

### Step 4: Run

**Always bound the run.** `--count` and `--time` default to infinity, so a bare
`scenic --simulate` never returns.

```bash
source scripts/env.sh

# the canonical smoke test
bash scripts/run_scenic.sh carlaChallenge1

# reproducible: one simulation, fixed seed, 300 steps
COUNT=1 TIME=300 SEED=7 bash scripts/run_scenic.sh carlaChallenge7

# retarget a scenario at another map (both params, or the .xodr and the server disagree)
PARAMS="carla_map Town05" PARAMS2="map $SCENARIO_RUNNER_ROOT/srunner/scenic/assets/Town05.xodr" \
    bash scripts/run_scenic.sh carlaChallenge10
```

Or call the CLI directly — the wrapper only adds resolution, bounding, logging,
artifact confirmation and the async reset:

```bash
scenic "$SCENARIO_RUNNER_ROOT/srunner/scenic/carlaChallenge1.scenic" --simulate --2d --count 1 --time 300
```

| Var | Effect |
|---|---|
| `COUNT` | simulations to run, default 1; empty means unbounded |
| `TIME` | step bound per simulation, default 300; empty means unbounded |
| `SEED` | fixes the sampled scene, so a run is reproducible |
| `MODE2D=0` | drop `--2d`; 3D mode needs meshes the CARLA model does not define |
| `PARAMS`/`PARAMS2`/`PARAMS3` | `--param` pairs, e.g. `PARAMS="carla_map Town05"` |
| `VERBOSITY` | `scenic -v`, default 2 — 2 prints per-sample rejections |
| `LOG_DIR` | where the run log lands, default `./scenic-runs` |
| `EXTRA` | raw extra CLI arguments |

`--2d` is the mode these scenarios were written for. Drop it only deliberately:
in 3D mode Scenic wants real object meshes and the CARLA world model does not
supply them.

### Step 5: Aftermath

Scenic switches the world to synchronous mode for a run and restores async on a
clean exit. An interrupted run leaves it synchronous with nobody ticking, and
every other client then appears frozen. `run_scenic.sh` traps EXIT/INT/TERM and
restores it; if you called `scenic` yourself and killed it, reset with
[[set-world-settings]] `async`.

## Examples

**Example 1: "run a Scenic scenario to check my setup"**

`bash scripts/check_env.sh`, then `bash scripts/run_scenic.sh carlaChallenge1` —
control loss with debris, the least constrained of the set. Expect
`Simulation 1 ended successfully at time step 300 because: reached time limit`.

**Example 2: "carlaChallenge10 rejects everything"**

It filters for an unsignalized four-way. Run
`python3 scripts/list_scenic.py --check-maps` and read the `4way=N(uns M)`
column: where `uns` is 0 the scenario cannot sample on that map at all. Retarget
it with `PARAMS`/`PARAMS2` to a map that has one.

**Example 3: "run the whole challenge set and tell me what works"**

`python3 scripts/sample_scenic.py <dir>/*.scenic` first — one second per file —
then `run_scenic.sh` only the ones that sampled. Simulating a scenario that
cannot sample just spends a minute reaching the same conclusion.

## Troubleshooting

**Problem: `ModuleNotFoundError: No module named 'srunner'`**
Cause: the scenario says `model srunner.scenic.models.model` and the checkout is
not importable.
Solution: `source scripts/env.sh` with `SCENARIO_RUNNER_ROOT` set; it puts the
checkout first on `PYTHONPATH`.

**Problem: `InvalidScenarioError: tried to make discrete distribution over empty domain!`**
Cause: a `filter(...)`/`Uniform(*...)` over road features matched nothing on this
map. Not a syntax error and not a server problem.
Solution: `list_scenic.py --check-maps`, then retarget the map with `PARAMS`.

**Problem: `Scenic has no 'bicycle' blueprints recorded for CARLA <version>`**
Cause: Scenic's table for that client version has an empty category. The build
may well contain such vehicles — the table just does not list them.
Solution: `check_env.sh` prints the empty categories. Name a concrete blueprint
with `with blueprint "..."` instead of relying on the category.

**Problem: `RejectionException: failed to generate scenario in N iterations`**
Cause: the `require`s are jointly too tight for this map — often two distance
requirements that no road geometry satisfies.
Solution: raise `--max-sims-per-scene`, loosen a `require`, or move maps. Confirm
with `sample_scenic.py --iterations 5000` before blaming the simulator.

**Problem: the run never returns**
Cause: `--count`/`--time` default to infinity.
Solution: always pass both; `run_scenic.sh` defaults them to 1 and 300.

**Problem: every other client times out after a Scenic run**
Cause: an interrupted run left synchronous mode on.
Solution: `run_scenic.sh` restores it on exit; otherwise [[set-world-settings]] `async`.

**Problem: `RuntimeError: std::exception` from `createObjectInSimulator`**
Cause: a blueprint id that does not exist on this server, resolved at spawn time
long after sampling passed. `blueprintLib.find()` raises a bare `std::exception`
and never names the id, so the traceback is useless on its own. The upstream
scenarios still carrying `vehicle.lincoln.mkz_2017` fail exactly here.
Solution: `list_scenic.py` prints every hardcoded id per scenario; check each with
`python3 ../create-scenic-scenario/scripts/blueprint_table.py --check <id> ...`

**Problem: `CARLA could not load world 'X'` for a map that then appears loaded**
Cause: Scenic's `param timeout` defaults to 10 s. An editor loading a large map
takes minutes; the client gives up and the load completes anyway.
Solution: raise it — `TIMEOUT=180` on the wrapper, or `--param timeout 180`. A
re-run once the map is loaded also succeeds.

**Problem: `CARLA could not load world 'Town05'`**
Cause: on this build towns 1-9 ship as `TownXX_Opt`; the plain names do not exist.
The OpenDrive assets, however, are named *without* the suffix.
Solution: set them separately — `PARAMS="carla_map Town05_Opt"` with
`PARAMS2="map .../assets/Town05.xodr"`.

## Outputs

One or more simulations executed on the server, a per-run log under `LOG_DIR`
holding the sampling trace and the termination reason, and a verify block that
confirms a simulation actually terminated — a Scenic run can exit 0 having
simulated nothing.

CLI flags, the two world models, and the map/feature matrix are in
[references/scenic-cli.md](references/scenic-cli.md).

Attribution

carla-simulatorcarla-simulator
View sourceMore from carla-simulator →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

281612 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2132 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →