Automated summary
Queries the live CARLA world and turns an entity description (type, role, colour, proximity) into a concrete actor id that other skills can act on, while also exposing the world snapshot, level bounding boxes, raycasts and ground projection of a point.
Strengths
- Identifies actors by stable attributes (blueprint, role, colour) instead of a rank or index that does not exist among peer actors
- Filter composition plus the --nearest predicate with --near/--near-id isolates a single actor among several identical models
- The --full dump exposes colour, role, size and yaw so you can spot the distinguishing field before filtering
- Output is directly reusable: the returned id feeds telemetry, bounding-boxes, vehicle-control or spectator skills
Limitations
- Requires an already-running, reachable CARLA server and the PythonAPI installed for the active interpreter; only validated against CARLA 0.9.16
- --nearest reflects a single-frame distance: the id stays stable but proximity must be re-queried as actors move
- scripts/ and references/ paths are relative to the SKILL.md directory and must be prefixed as absolute paths; negative coordinates need the --near=-24,-57,0.6 form
Use it whenever a description of an actor ("the red prius", "the nearest pedestrian") must become a concrete id, or when you need world-level data such as the snapshot, level bounding boxes or a semantic raycast.
Avoid it when no CARLA server is running or the PythonAPI is missing for the interpreter, and for lane-ordered queries (queues of vehicles) or junction queries, which belong to the map-waypoints skill.
Security analysis
CautionThe document is an instruction/reference file for querying a running CARLA simulator; described operations (actors, snapshot, level-bbox, raycast, ground, ros-topics) are read-only and explicitly state no world change. Risk is limited to executing local helper scripts and talking to a local server, which warrants 'caution' rather than 'safe' because the referenced scripts are opaque in this artifact and should be inspected before listing.
- •Skill directs the agent to execute bundled shell and Python entry points (bash scripts/check_env.sh, python3 scripts/world_data.py) that are not included in the supplied content, so their actual behavior cannot be audited here; only the documentation's description (read-only world queries) can be assessed.
- •Requires sourcing scripts/env.sh and opening an RPC connection to a CARLA server (CARLA_HOST/CARLA_PORT), i.e., network access to a local service — legitimate but a privileged capability.
- •No prompt-injection or role-manipulation attempts, no obfuscated payloads, no curl|sh, no destructive filesystem commands, and no instructions to transmit credentials or tokens were observed.
- •References bundled scripts (scripts/check_env.sh, scripts/env.sh, scripts/world_data.py) that are not included in the submitted skill content, so their behavior cannot be verified; `source scripts/env.sh` executes that file with no integrity check.
- •Uses bash and Python execution plus a network connection to a CARLA server whose address comes from CARLA_HOST/CARLA_PORT, so it can be pointed at non-local hosts.
- •The 'Paths' note tells the agent to prefix relative paths with an absolute path, which in practice can resolve `source`/`bash` targets inside the user's project directory — an untrusted location — rather than the skill directory.
- •All described operations are read-only queries (actors, snapshot, level-bbox, raycast, ground, ros-topics) with no destructive, exfiltration, or obfuscated behavior seen.
Examples
List all the priuses in the CARLA world, then narrow it down to the red one and give me its actor id.Which pedestrian is currently closest to the ego vehicle? Resolve it to one actor id using --nearest.There are three identical vehicles near the intersection — dump their full attributes (colour, role, yaw) so I can tell them apart and pick the right id.name: world-data description: Queries the live CARLA world and resolves an entity description into a concrete actor id — find actors by type, role, or colour, or the single one nearest a point/actor; read the world snapshot; get static level bounding boxes by label; cast rays for semantic points; project a point to the ground; or (ros-topics) list the native ROS 2 topics each actor should be publishing and why any is silent. Identifies by stable attributes, not by any rank/order. Use when the user asks "what actors are here", "find the red prius", "the vehicle nearest the ego", "list the pedestrians", or needs a specific actor id for another skill. license: MIT compatibility: Any OS with the CARLA PythonAPI installed for the active interpreter and a reachable, already-running CARLA server. Does NOT need UE4_ROOT. Tested against CARLA 0.9.16. metadata: group: python-api prerequisites: scripts/check_env.sh reference: references/world-data.md
Query the world (and resolve entities)
Paths.
scripts/…andreferences/…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.
The resolver skill. Other skills act on one entity by id; this one finds that id when the request is a description — "a prius" (but there are three), "the nearest walker", "the 3rd vehicle". It also reads world-level data: snapshot, level bounding boxes, raycasts, ground projection.
Identifying a specific actor (the core use)
There is no ordering / rank — peer actors have no meaningful order, so "the 3rd one" is not a thing. Identify by a stable attribute or a spatial predicate, narrowing until one remains, then use its id:
- by type/blueprint:
--filter '*prius*',--filter walker.pedestrian.* - by role:
--role hero - by colour (tells identical models apart):
--color 255,0,0 - the single closest to a point/actor:
--near X,Y,Z/--near-id Nwith--nearest(a predicate — "the closest" — not an index) --fulldumps every attribute (colour, role, size, yaw), so you can spot the distinguishing field and filter by it (or just read the id)
So "the red prius" → actors --filter '*prius*' --color 255,0,0; "the prius
nearest the ego" → actors --filter '*prius*' --near-id <ego> --nearest. Either
yields an id to hand to telemetry / bounding-boxes / control-vehicle /
control-spectator. For junctions ("3-way intersections") use the map-waypoints
skill's junctions --arms 3.
Moving objects: a distance is a single-frame snapshot and changes as actors
move, so --nearest is only "closest right now". The id is the stable handle
— resolve once, then act on the id; re-query for a fresh distance. (An inherent
order only exists in special cases like a queue of vehicles along a lane — that is
a lane query, not this generic actor list.)
Instructions
Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: actors --filter/--role/--color [--nearest] until one remains → its id
- [ ] Step 3: hand the id to the action skill; or use snapshot/level-bbox/raycast/ground
Commands need CARLA_HOST/CARLA_PORT from scripts/env.sh. Negative
coordinates: use the = form (--near=-24,-57,0.6).
Step 1: Check prerequisites
bash scripts/check_env.sh
Step 2-3: Query
source scripts/env.sh
python3 scripts/world_data.py actors # everything (non-traffic)
python3 scripts/world_data.py actors --filter '*prius*' # all priuses (ids + locations)
python3 scripts/world_data.py actors --filter '*prius*' --full # + color/role/size to tell them apart
python3 scripts/world_data.py actors --filter '*prius*' --color 255,0,0 # the red one
python3 scripts/world_data.py actors --filter '*prius*' --near-id 100 --nearest # closest to actor 100
python3 scripts/world_data.py snapshot # frame / time / count
python3 scripts/world_data.py level-bbox --label TrafficSigns # static boxes by label
python3 scripts/world_data.py raycast --from=0,0,1 --to=50,0,1 # semantic hits along a ray
python3 scripts/world_data.py ground --at=20,20,50 # drop to the ground
python3 scripts/world_data.py ros-topics # ROS 2 topic tree per actor
Resolving ROS 2 topics (ros-topics)
The same resolver job, one level up: it maps live actors to the topics the server
should be publishing, and names the reason for each silent one. It needs no
ROS 2 installation — it derives the names the way the server does, so it answers
the half ros2 topic list cannot ("the topic is missing — why?").
world topics (exist whenever the server runs with --ros2):
rt/clock [rosgraph_msgs/Clock] every tick
rt/carla/map [std_msgs/String] OpenDRIVE, LATCHED, re-sent on map load
rt/tf [tf2_msgs/TFMessage] per registered actor, unless ros_publish_tf=false
hero vehicle(s): 1
id=112 vehicle.lincoln.mkz_2017 ros_name=hero
<- rt/carla/hero/vehicle_control_cmd [carla_msgs/CarlaEgoVehicleControl]
<- rt/carla/hero/ackermann_control_cmd [ackermann_msgs/AckermannDriveStamped]
sensors: 2
id=113 sensor.camera.rgb ros_name=front [NOT enabled_for_ros -> SILENT]
-> rt/carla/hero/front/image [sensor_msgs/Image]
-> rt/carla/hero/front/camera_info [sensor_msgs/CameraInfo]
id=114 sensor.other.obstacle ros_name=actor114
(no native publisher for sensor.other.obstacle)
Three reasons an expected topic is absent, all visible above: the sensor is not
enable_for_ros()-ed ([[create-sensor]] ros --id N), the sensor type has no
publisher at all, or the vehicle is not role_name = hero (only the hero is
registered). If even rt/clock is missing, the problem is upstream — the build
or the launch flag ([[run-carla-server]] ROS2=1).
On CARLA 0.10.0 (the UE5 line: 5.5 and 5.8)
ros-topics is the only mode that changes. rt/carla/map does not exist on
0.10.0: CarlaMapPublisher is present in 0.9.x and absent from
LibCarla/source/carla/ros2/publishers/ in 0.10.0, so nothing ever advertises
the OpenDRIVE topic. The mode detects the server version and says so rather than
listing a topic you would then hunt for; read the map with map.to_opendrive()
over RPC instead.
rt/clock and rt/tf behave the same on both. On 0.10.0, rt/tf publishing is
additionally gated globally by World.set_publish_tf(), which is new.
The actor-query modes are unchanged, and 0.10.0 adds a few worth knowing:
world.get_traffic_sign(), world.get_names_of_all_objects() and
world.set_imu_sensor_gravity() — plus world.get_ego_spawn_points() and
world.spawn_custom_mesh(), which are UE 5.8 only
([[check-ue5-limitations]]). CityObjectLabel gained Rock, which matters
for level-bbox if you hard-code label integers.
Examples
Example 1: 1 vehicle among many
User says: "get the prius closest to me" (ego = id 100)
actors --filter '*prius*' --near-id 100 --nearest → e.g. id=137. Then
telemetry show --id 137. (Or "the red prius" → --color 255,0,0.)
Example 2: survey the scene
User says: "what's around?"
actors for the movable actors, snapshot for the frame/count.
Example 3: where's the ground here
User says: "what's the ground height at (20, 20)?"
ground --at=20,20,50 → projects down to the road surface + its semantic label.
Troubleshooting
Problem: too many actors match
Cause: broad filter.
Solution: narrow by --role/--color, or take --nearest --near-id N; use
--full to find a distinguishing attribute, then the id.
Problem: expected actor not listed
Cause: it's a traffic light/sign/spectator (hidden by default).
Solution: add --all.
Problem: raycast/ground returns nothing
Cause: the ray misses geometry, or no ground within --search.
Solution: widen the ray / raise --search; check the start point is above ground.
Outputs
Text listings (actors, boxes, points) — no world change. The actor ids it prints are inputs for the action skills.
Detail (attribute/nearest selection, level bbox labels, cast_ray/project_point, snapshot fields) in references/world-data.md.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/carla-world-queries-entity-resolver-mtz9jr2n/download' --output '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md.part' && mv '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md.part' '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Environment declared by the author: Any OS with the CARLA PythonAPI installed for the active interpreter and a reachable, already-running CARLA server. Does NOT need UE4_ROOT. Tested against CARLA 0.9.16.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md' && test -s '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/world-data' && cp -R '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n' '.claude/skills/world-data'Cursor
test -f '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md' && test -s '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/world-data' && cp -R '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n' '.cursor/skills/world-data'Codex
test -f '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md' && test -s '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/world-data' && cp -R '.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n' '.agents/skills/world-data'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n'openskills read 'carla-world-queries-entity-resolver-mtz9jr2n'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/carla-world-queries-entity-resolver-mtz9jr2n/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
Create Interactive Maps with kepler.gl
Data & AI
Create interactive map visualizations and export standalone HTML using the keplergl Python package. Use to plot geospatial data from DataFrames, GeoJSON, or CSV.
Agent-Driven Parameter Optimization
Data & AI
Guide for optimizing configurable systems with a measurable objective, using bounded trials and evidence-based recommendations.
ICP Visitor Outreach
Data & AI
Identify signed-up users matching the ideal customer profile but stalled, and draft personalized outreach to re-engage them.