Capture RViz/GUI screenshots via MCP to close the loop while debugging ROS. Use when you need visual verification in RViz or other windows.
Install
npx skillscat add idate96/codex-skills/rviz-screenshot-loop Install via the SkillsCat registry.
SKILL.md
RViz Screenshot Loop
If the task is not RViz-specific, use gui-screenshot-loop instead.
When To Use
- You need to see RViz or other GUI state while debugging ROS.
- You want to verify fixed frame, display status, or visual artifacts after running ROS commands.
Prereqs
- X11 session.
- MCP server
screenshotis configured in~/.codex/config.tomland points to~/.codex/mcp-servers/screenshot/server.py.
Quick Discovery
- List monitors:
xrandr --listmonitors - List windows:
wmctrl -l - Find RViz windows:
xdotool search --name '.*RViz.*'
Tool Calls (MCP)
Use the MCP tool screenshot.screenshot:
- Full screen:
{"mode":"full"}
- Monitor by index:
{"mode":"monitor","monitor":1}
- Monitor by name:
{"mode":"monitor","monitor_name":"DP-2"}
- Window by title (if multiple matches, provide index):
{"mode":"window","window_title":"RViz","window_index":0}
- Window by id (most reliable):
{"mode":"window","window_id":"0x064001f6"}
- Region:
{"mode":"region","x":2600,"y":50,"width":1800,"height":1000}
Optional:
max_width=0to keep full resolution.
Workflow
- Run your ROS or sim command.
- Capture RViz with
mode="window"(preferwindow_id). - Read the RViz text/status (Global Status, TF, fixed frame, PointCloud status).
- If the user asked for sim bringup, use
sim-startupskill first, then capture RViz. - If debugging TF or topics, use
ros2-debuggingskill first, then capture RViz to confirm.
Failure Handling
- If window title matches multiple IDs, pick the correct one from
wmctrl -land usewindow_id.