Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
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
  • Authors
  • 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
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Map Waypoints

ASecurity

Explores a CARLA map's road network through the Map/Waypoint API — a natural-language rundown of the whole map ("give me the topology"), drawing the topology to confirm the modelled map matches the visible one, enumerating junctions to resolve phrases like "the 4-way junction in the middle", nearest-waypoint lane facts, and next/previous lane navigation. Use when the user asks about the map's layout, lanes, junctions, topology, or to locate/navigate specific map elements.

14,461 stars
0 votes
0 copies
0 views
Added 10/6/2026
ai-agentspythonbashapi

Works with

api

Security Analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned 10/6/2026

$npx -y skills add carla-simulator/carla --skill map-waypoints --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Map Waypoints?

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

Security grade badge for Map Waypoints
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/carla-simulator-map-waypoints-carla/badge)](https://www.skillsdirectory.com/skills/carla-simulator-map-waypoints-carla)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: map-waypoints
description: Explores a CARLA map's road network through the Map/Waypoint API — a natural-language rundown of the whole map ("give me the topology"), drawing the topology to confirm the modelled map matches the visible one, enumerating junctions to resolve phrases like "the 4-way junction in the middle", nearest-waypoint lane facts, and next/previous lane navigation. Use when the user asks about the map's layout, lanes, junctions, topology, or to locate/navigate specific map elements.
license: MIT
compatibility: Any OS with the CARLA PythonAPI installed for the active interpreter and a reachable, already-running CARLA server. Drawing needs a rendered view; text queries work headless. Tested against CARLA 0.9.16.
metadata:
  group: python-api
  prerequisites: scripts/check_env.sh
  reference: references/waypoints.md
---

# Explore a CARLA map

> **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.

Query and visualise the road network of the loaded map. Three headline uses:

1. **Rundown** — `summary` turns the map into stats *and* a one-paragraph
   description ("a dense, city-like map … mostly 2-lane roads … 12 junctions").
2. **Show the topology** — `topology --draw` overlays the modelled road graph so
   you can confirm it matches the map you see rendered.
3. **Resolve a described element** — `junctions` lists every junction with its
   centre, arm count, distance-to-map-centre and bearing, so a phrase like
   "the 4-way junction in the middle" resolves to a specific junction id.

Plus per-point queries: `waypoint` (lane facts) and `navigate` (next/previous).

## How natural language maps to elements

This skill emits **structured data**; the agent does the matching (like the
weather skill). "The 4-way junction in the middle" →
`junctions --arms 4`, then pick the smallest `dist ... of centre`. "The northern
junction" → the one whose bearing is `N`. Draw the chosen one with
`junctions --arms 4 --draw` (or by id) to confirm. See
[references/waypoints.md](references/waypoints.md) for the vocabulary
(centre/near/far, bearings, "biggest" = size).

## Instructions

```
Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: Rundown the map (summary) if asked about layout
- [ ] Step 3: For a described element, enumerate (junctions) then filter to one
- [ ] Step 4: Draw it (--draw) to confirm modelled == visible; navigate if needed
```

Commands need `CARLA_HOST`/`CARLA_PORT` from `scripts/env.sh`. **Negative
coordinates:** pass `--at` with an `=` (e.g. `--at=-24,-57,0.6`) so the leading
minus isn't parsed as a flag; the space form only works for all-positive coords.

### Step 1: Check prerequisites

```bash
bash scripts/check_env.sh
```

### Step 2-4: Explore

```bash
source scripts/env.sh

# a rundown of the map
python3 scripts/waypoints.py summary

# draw the whole road topology to compare with the visible map
python3 scripts/waypoints.py topology --draw --life 180

# every junction; or just the four-way ones, nearest the centre first
python3 scripts/waypoints.py junctions
python3 scripts/waypoints.py junctions --arms 4
python3 scripts/waypoints.py junctions --arms 4 --draw     # highlight + label them

# lane facts at a point, and a forward walk along the lane
python3 scripts/waypoints.py waypoint --at 30,20,0
python3 scripts/waypoints.py navigate --at 30,20,0 --dist 2 --steps 30 --draw
```

## On CARLA 0.10.0 (the UE5 line: 5.5 and 5.8)

**`Landmark.waypoint` is always `None` on 0.10.0.** Measured on Town10HD_Opt:
68 landmarks, 68 of them with `waypoint is None`. Every other landmark field
populates normally (`id`, `name`, `type`, `road_id`, `s`, `t`, `distance`,
`orientation`, `transform`, `country`, `unit`, `value`, `sub_type`, `text`,
`h_offset`, `z_offset`, `height`, `width`, `pitch`, `roll`, `is_dynamic`,
`get_lane_validities`).

So any code shaped `landmark.waypoint.transform` or
`landmark.waypoint.lane_id` raises `AttributeError: 'NoneType'` there. Get the
road position from the landmark itself instead — `map.get_waypoint_xodr(
landmark.road_id, lane_id, landmark.s)`, or `map.get_waypoint(
landmark.transform.location)` when you only need the nearest lane.

`get_all_landmarks`, `get_all_landmarks_of_type`, `get_all_landmarks_from_id` and
`get_landmark_group` all work on both versions. The rest of the Map/Waypoint API
this skill uses — `get_topology`, `generate_waypoints`, `get_waypoint`,
`get_spawn_points`, `get_crosswalks` — is unchanged.

## Examples

**Example 1: describe the map**

User says: "give me a rundown of the topology"

`summary`. Relay the RUNDOWN paragraph (extent, road/lane counts, dominant lane
count, junction breakdown, density).

**Example 2: confirm the model matches what's rendered**

User says: "show me the topology so I can check the map"

`topology --draw` on a rendered server; the green arrows trace every road segment
— they should sit on the visible roads.

**Example 3: resolve a described junction**

User says: "highlight the 4-way junction in the middle"

`junctions --arms 4` → pick the row with the smallest "of centre" distance → note
its id → `junctions --arms 4 --draw` (or read its centre and `debug-draw box`
there). Confirm the label lands on the central crossroads.

**Example 4: navigate a lane**

User says: "follow the lane forward from (30,20) for 60 m"

`navigate --at 30,20,0 --dist 2 --steps 30 --draw`.

## Troubleshooting

**Problem: `summary` is slow on a large map**
Cause: Town11/12/13 have huge road networks; stats sample every 3 m.
Solution: expected; it still completes. Increase `STAT_STEP` in the script for a
faster, coarser pass.

**Problem: drawn topology/junctions not visible**
Cause: headless `-nullrhi` server, or the spectator is far away.
Solution: use a rendered server (see debug-draw) and move to the map centre.

**Problem: a "junction" has an odd arm count**
Cause: arms are counted as distinct entry road ids — merges/ramps can skew it.
Solution: treat arm count as approximate; confirm visually with `--draw`.

**Problem: `waypoint --at` says no driving lane**
Cause: the point is off-road or on a non-driving lane.
Solution: move the point onto a road; the query projects to the nearest driving
lane within range.

## Outputs

Text reports (rundown, junction list, lane facts, navigation path) and optional
`world.debug` overlays. No file, no world change.

Detail (the Map/Waypoint/Junction API, arm counting, bearings/centre semantics,
lane topology) in [references/waypoints.md](references/waypoints.md).

Attribution

carla-simulatorcarla-simulator
View sourceSee grades on GitHubMore from carla-simulator →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698461 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →