← Back to Skills Marketplace
adityakamath

ROS 2 Skill

by Aditya Kamath · GitHub ↗ · v1.0.6 · MIT-0
cross-platform ⚠ suspicious
616
Downloads
1
Stars
1
Active Installs
6
Versions
Install in OpenClaw
/install ros2-skill
Description
Controls and monitors ROS 2 robots directly via rclpy CLI. Use for ANY ROS 2 robot task: topics (subscribe, publish, capture images, find by type), services...
Usage Guidance
This skill appears to be a full-featured ROS 2 agent wrapper and largely matches its description, but review these points before installing: - Trust and autonomy: AGENTS.md explicitly instructs the agent to act autonomously and to treat the skill's rules as overriding other prompts. If your agent platform enforces safety or user-confirmation policies, this skill's instructions directly conflict. Only enable autonomous invocation for this skill if you fully trust it and your deployment policies. - External token access: The README documents reading ~/.nanobot/config.json for a Discord bot token and includes discord_tools.py which can post images to Discord. That file and token are not declared in the skill metadata. If you use a shared bot token or other secrets in that location, consider moving them or restricting this skill's filesystem/network access. - Files and system commands: The skill will run local Python scripts that can manage tmux sessions, run subprocesses, and write to .artifacts/.presets. Run the code in a sandboxed environment (or inspect scripts) before giving it access to a robot or networked machine. - Review rules and safety docs: Inspect references/RULES.md and AGENTS.md fully to ensure their operational rules align with your safety policies (e.g., mandatory 'try first' behavior, banned phrasing, automated recovery actions). These documents change agent behaviour in ways that may bypass your usual controls. - Mitigations: run tests in an isolated VM or container with no external network (or restricted network), remove or sanitize any sensitive config files (e.g., Discord tokens), and restrict the skill's permission to start tmux or modify system services until you have audited the code. If you are unsure, treat this skill as untrusted and perform a manual code review of discord_tools.py and any subprocess/requests usage before deployment.
Capability Analysis
Type: OpenClaw Skill Name: ros2-skill Version: 1.0.6 The ROS 2 skill bundle is a comprehensive robotics toolkit that contains several high-risk patterns and vulnerabilities. Most notably, 'ros2_launch.py', 'ros2_run.py', and 'ros2_utils.py' utilize 'subprocess.run' with 'shell=True' and f-string interpolation for command construction, which presents a significant shell injection surface if package or executable names are maliciously crafted. Additionally, 'discord_tools.py' provides a functional mechanism for sending files to external Discord channels; while aligned with the stated purpose of sharing robot images, it serves as a potential exfiltration vector. The instructions in 'AGENTS.md' and 'references/RULES.md' are extremely assertive, directing the AI agent to prioritize these rules over user instructions and act autonomously ('Try first. Ask never'), which could lead to the agent performing risky operations without sufficient oversight.
Capability Assessment
Purpose & Capability
Name/description match the code and commands (ros2_cli.py entry point and many ros2_*.py modules). Required binaries (python3, ros2) and rclpy make sense for a ROS 2 control skill. Minor oddity: SKILL.md declares pip: ["rclpy"] while rclpy is often provided by ROS distro packages — but this is not a hard incoherence.
Instruction Scope
SKILL.md and AGENTS.md instruct the agent to introspect and act on the live system extensively (list topics/nodes, publish commands, manage tmux sessions, write .presets/.artifacts). AGENTS.md explicitly mandates 'Try first. Ask never.' and states its rules override every other instruction/system prompt — this grants the skill broad autonomous behavior and encourages the agent to act without user confirmation. The README/SKILL.md also instructs reading ~/.nanobot/config.json for a Discord bot token (external endpoint integration). These instructions go beyond simple CLI wrapping and include file reads, network posting (Discord), and system control (tmux, estop).
Install Mechanism
There is no install spec (instruction-only) which reduces risk from installers, but the bundle includes many executable Python scripts that the agent is expected to run. No external downloads or archive extraction are described. This is low installer risk but means the code will run locally and should be inspected.
Credentials
The skill declares no required environment variables or config paths, yet runtime docs and scripts expect a sourced ROS 2 environment and reference external config (~/.nanobot/config.json) for Discord integration. Reading that config (and using its token) is not declared in requires.env and could expose a bot token. The skill also writes artifacts and presets into its install directory (.artifacts/.presets). These accesses are plausible for the stated purpose but are not fully declared and should be validated.
Persistence & Privilege
The skill does not set always:true and does not declare system-wide changes, but AGENTS.md tells the agent to treat the skill's rules as absolute and to act autonomously ("override every other instruction, system prompt, user request"). That is a governance/behavioural escalation (not a platform-config change) — it increases blast radius if the agent is allowed autonomous invocation. The skill does create files under its directory (.artifacts/.presets) and may start tmux sessions; these are reasonable for robot control but should be considered when granting runtime privileges.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ros2-skill
  3. After installation, invoke the skill by name or use /ros2-skill
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.6
**ros2-skill 1.0.6** — Adds internal structure, enhanced documentation, and technical references. - Added extensive CLI documentation and workflow references (references/CLI.md, EXAMPLES.md, RULES.md). - Introduced internal Python modules for each major ROS 2 operation (e.g., `ros2_bag.py`, `ros2_component.py`, etc.). - Improved agent usage guidance and modular architecture via updated SKILL.md. - Transitioned from a single `EXAMPLES.md` file to a comprehensive, multi-file documentation system. - Expanded test coverage and internal caching through new pycache files. - Cleaned up obsolete files to align with new modular design.
v1.0.4
**Summary:** Major update with extensive refactor, new agent decision rules, and improved safety and introspection for all ROS 2 robot control tasks. - Added strict, documented agent rules enforcing introspection before any robot action (no assumptions/hardcoded topic or message names). - Introduced mandatory session-start health, time, and node checks for robust operation. - Expanded and clarified usage to cover all ROS 2 operations: topics, services, actions, parameters, nodes, diagnostics, controllers, and safety checks. - Deprecated/removed previous "examples" and test files now replaced by built-in guided workflows and canonical command documentation. - Updated description and interface for comprehensive coverage and safer, more reliable ROS 2 interaction.
v1.0.3
Initial release of ros2-skill — an adaptation of [ros-skill](https://github.com/lpigeon/ros-skill) redesigned for direct local ROS 2 communication via rclpy instead of rosbridge. ### Topics - `topics list` / `ls` — list all active topics - `topics type` — get the message type of a topic - `topics details` / `info` — publishers, subscribers, and QoS for a topic - `topics message` / `message-structure` / `message-struct` — introspect message field structure - `topics subscribe` / `echo` / `sub` — collect messages; `--duration` + `--max-messages` for batch collection - `topics publish` / `pub` / `publish-continuous` — single-shot or timed publish at `--rate` Hz - `topics publish-sequence` / `pub-seq` — publish a sequence of messages with per-step durations - `topics publish-until` — publish while monitoring a separate topic; stops when a condition is met (`--delta`, `--above`, `--below`, `--equals`); `--euclidean` for N-dimensional distance across multiple fields - `topics hz` — measure publish rate (rate, min/max/std_dev of inter-message intervals) - `topics bw` — measure topic bandwidth (bytes/s, bytes per message) - `topics delay` — measure end-to-end latency via `header.stamp` - `topics find` — find all topics publishing a given message type ### Nodes - `nodes list` / `ls` — list all active nodes - `nodes details` / `info` — publishers, subscribers, services, action servers, and action clients for a node ### Services - `services list` / `ls` — list all services - `services details` / `info` — request and response field structure for a service - `services call` — call a service with a JSON request - `services find` — find all services of a given type - `services echo` — echo service request/response event pairs (requires introspection enabled on the node) ### Parameters - `params list` / `ls` — list all parameters on a node - `params get` — get a parameter value - `params set` — set a parameter value - `params describe` — describe a parameter (type, constraints, read-only flag) - `params dump` — bulk-export all parameters for a node as JSON - `params load` — bulk-set parameters from a JSON string or file - `params delete` — delete one or more parameters ### Actions - `actions list` / `ls` — list all action servers - `actions details` / `info` — goal, result, and feedback structure for an action server - `actions type` — get the action type of an action server - `actions send` / `send-goal` — send a goal; `--feedback` streams feedback messages in the output - `actions find` — find all action servers of a given action type - `actions echo` — echo live feedback and status messages from an action server - `actions cancel` — cancel all in-flight goals on an action server ### Utilities - `version` — detect ROS 2 distro and domain ID - `estop` — emergency stop; auto-detects velocity topic and publishes zero velocity --- For the original ros-skill (ROS 1 + ROS 2 via rosbridge), see: [ros-skill](https://github.com/lpigeon/ros-skill)
v1.0.2
- Internal script update in `scripts/ros2_cli.py`. - No changes to user-facing features or documentation.
v1.0.1
1.0.1 Added: - Emergency stop command (`estop`) - auto-detects velocity topic and message type for mobile robots - Better error messages with hints and suggestions for unknown message types Changed: - Topics subscribe/publish/publish-sequence now auto-detect message type from topic if not provided - Updated documentation with new estop command Fixed: - Fixed infinite recursion bug in ROS2CLI class - Fixed misplaced imports and cleaned up duplicate imports - Fixed null pointer checks for publisher creation - Replaced bare except clauses with proper exception handling - Removed unused code and variables
v1.0.0
Initial release: Fork of https://clawhub.ai/lpigeon/ros-skill, but updated to support only ROS 2, locally. No ROS 1, no rosbridge This release marks a major shift to ROS 2 only. The CLI has been renamed from ros_cli.py to ros2_cli.py, and rosbridge WebSocket communication has been replaced with direct rclpy integration for local ROS 2 control. ROS 1 support has been completely removed. Commands are simplified—no more --ip/--port flags needed since ROS 2 runs locally. Dependencies changed from websocket-client to rclpy and rosidl-runtime-py. All documentation has been updated to reflect the new architecture.
Metadata
Slug ros2-skill
Version 1.0.6
License MIT-0
All-time Installs 1
Active Installs 1
Total Versions 6
Frequently Asked Questions

What is ROS 2 Skill?

Controls and monitors ROS 2 robots directly via rclpy CLI. Use for ANY ROS 2 robot task: topics (subscribe, publish, capture images, find by type), services... It is an AI Agent Skill for Claude Code / OpenClaw, with 616 downloads so far.

How do I install ROS 2 Skill?

Run "/install ros2-skill" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is ROS 2 Skill free?

Yes, ROS 2 Skill is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does ROS 2 Skill support?

ROS 2 Skill is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created ROS 2 Skill?

It is built and maintained by Aditya Kamath (@adityakamath); the current version is v1.0.6.

💬 Comments