custom-interfaces

Define standard ROS 2 .msg, .srv, and .action interfaces for Jazzy and Rolling projects.

18|2|Updated Apr 20, 2026
One-click install
npx skills add https://github.com/wimblerobotics/ros2-copilot-skills --skill custom-interfaces
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: custom-interfaces
Source: https://github.com/wimblerobotics/ros2-copilot-skills/tree/main/custom-interfaces
Command: npx skills add https://github.com/wimblerobotics/ros2-copilot-skills --skill custom-interfaces

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Defines standard ROS 2 interfaces (.msg, .srv, .action) with guidance on proper package structure, naming, and build configuration to prevent integration gaps across Jazzy and Rolling.

Core Features & Use Cases

  • Guidance on correct interface design, dedicated _interfaces package usage (e.g., my_robot_interfaces) to avoid circular dependencies, and consistent naming conventions.
  • Step-by-step package setup including CMakeLists.txt and package.xml guidelines to ensure ROS 2 interface packages are standalone and reusable.
  • Real-world use cases showing how to design messages, services, and actions that scale with a project.

Quick Start

Create a dedicated _interfaces package (e.g., my_robot_interfaces) and define your first .msg/.srv/.action files following the naming conventions described.

Frequently Asked Questions about custom-interfaces

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

FAQPage Schema
How do I structure ROS 2 interface packages to avoid circular dependencies?

Use a dedicated _interfaces package, such as my_robot_interfaces, to isolate .msg, .srv, and .action definitions. This structure prevents circular dependencies and ensures interface packages remain standalone and reusable across ROS 2 projects.

What naming conventions should I follow for ROS 2 message, service, and action definitions?

ROS 2 interface naming conventions require consistent prefixes and clear descriptive names for .msg, .srv, and .action files. Following standard naming conventions ensures interfaces scale with your project and prevents integration gaps across Jazzy and Rolling distributions.

How do I configure CMakeLists.txt and package.xml for a ROS 2 interfaces package?

Configure CMakeLists.txt and package.xml with appropriate dependencies to make ROS 2 interface packages standalone. Step-by-step package setup guidelines ensure your .msg, .srv, and .action files build correctly and remain reusable across Jazzy and Rolling distributions.

Does this ROS 2 interface design guidance work for both Jazzy and Rolling distributions?

Yes, the interface design guidance applies to ROS 2 workflows across both Jazzy and Rolling distributions. It covers package layout, naming conventions, and build configuration to prevent integration gaps from initial setup through final deployment.

When do I need a dedicated _interfaces package in ROS 2?

You need a dedicated _interfaces package in ROS 2 when defining custom .msg, .srv, or .action files for a project. Isolating interfaces prevents circular dependencies, ensures standalone reusability, and maintains consistent naming conventions as the project scales.

What's the best way to design ROS 2 services and actions that scale with a project?

The best way to design scalable ROS 2 services and actions is to define them in a dedicated _interfaces package following standard naming conventions. Real-world use cases demonstrate how to structure .srv and .action files to prevent integration gaps across Jazzy and Rolling.