ros2-engineering-skills

Provides API reference patterns and code templates for ROS 2 development.

Updated Aug 16, 2026
One-click install
npx skills add https://github.com/three1324/yeonjinautomotive --skill ros2-engineering-skills-three1324
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ros2-engineering-skills
Source: https://github.com/three1324/yeonjinautomotive/tree/main/.claude/skills/ros2-engineering-skills
Command: npx skills add https://github.com/three1324/yeonjinautomotive --skill ros2-engineering-skills-three1324

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? ROS 2 development involves distro-specific APIs, QoS compatibility rules, executor threading models, and lifecycle conventions that are easy to get wrong, and AI-generated ROS 2 code frequently repeats known mistakes like deadlocking executors or mixing deprecated CMake macros. This Skill supplies verified reference material and templates so generated ROS 2 code is correct for the target distro and use case. ## Core Features & Use Cases - Decision-router reference library: 25+ topic-specific reference files covering nodes, executors, QoS, launch files, tf2/URDF, ros2_control, Nav2, MoveIt 2, perception, simulation, security, micro-ROS, and ROS 1 migration. - Distro-aware guidance: A feature matrix across Humble, Jazzy, Kilted, Lyrical, and Rolling prevents generating API that the installed stack does not support. - Scaffolding and validation scripts: create_package.py scaffolds C++, Python, interfaces, and hardware-interface packages, while hook scripts validate edits and log session runs. - Use Case: When asked to write a lifecycle node with a QoS-compatible publisher on Jazzy, the Skill routes to the relevant reference file and produces code with correct QoS settings, callback groups, and CMake for that distro. ## Quick Start Ask the agent to create a ROS 2 package or review a node, launch file, or QoS configuration and it will load the matching reference before writing code.

Frequently Asked Questions about ros2-engineering-skills

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a ROS 2 package with correct structure?

Run the included create_package.py script with a package name and type flag (cpp, python, interfaces, or hardware_interface). It generates CMakeLists.txt, package.xml, lifecycle node templates, launch files, tests, and parameter configs following standard conventions.

How do I choose QoS settings for ROS 2 topics?

Match QoS to the data path: BEST_EFFORT with depth 5 for high-rate sensor streams, RELIABLE with depth 1 for commands, and TRANSIENT_LOCAL durability for latched data like maps. Verify compatibility with ros2 topic info -v, since mismatched QoS silently blocks delivery.

Does ROS 2 Humble support the same APIs as Jazzy or Kilted?

No. Humble lacks service introspection, type description support, and content-filtered topics, and uses ros2_control 2.x while Jazzy uses 4.x and Kilted 5.x. Detect the distro from the environment or workspace pin before generating code.

Why does my ROS 2 service call deadlock inside a callback?

Waiting synchronously on a service future inside a callback blocks the executor thread that would deliver the response. Register a response callback with async_send_request and return, or use a separate callback group with a MultiThreadedExecutor.

When should I use lifecycle nodes in ROS 2?

Use lifecycle nodes for anything owning resources such as hardware drivers, sensor pipelines, planners, and controllers, since the managed state machine gives explicit control over allocation and shutdown. Plain nodes suit leaf compute nodes with no external resources.