openclaw/skills/crosstown-roomba/SKILL.md
Control the iRobot Roombas at Crosstown (Boston — Crosstown residence). Two robots available. Use when asked to vacuum, mop, start/stop/dock the Roomba at Crosstown, clean the house, or anything about the Roombas at Crosstown. NOT for Cabin Roombas (use roomba skill for Floomba/Philly).
npx skillsauth add Dbochman/dotfiles crosstown-roombaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Control two iRobot Roombas at Crosstown (Boston — Crosstown residence) via local MQTT through the MacBook Pro.
| Name | Aliases | Model | Notes | |------|---------|-------|-------| | roomba | 10max, combo, max | Roomba Combo 10 Max | Vacuums + mops, has dock with auto-empty and tank | | scoomba | j5 | Roomba J5 | Vacuum only |
Use all to target both robots.
Robot names and aliases are exact (case-insensitive). Never guess from a partial name: if a requested name is not listed above, ask the user to clarify instead of substituting a robot.
crosstown-roomba status # both robots
crosstown-roomba status roomba # just 10 Max
crosstown-roomba status scoomba # just J5
crosstown-roomba start all # start both
crosstown-roomba start roomba # just 10 Max
crosstown-roomba stop roomba
crosstown-roomba pause scoomba
crosstown-roomba resume scoomba
crosstown-roomba dock all
The dock command automatically sends stop first, then dock. This is necessary because iRobot's MQTT dock command alone does not interrupt an active cleaning cycle — the robot ignores it while in run phase.
Before docking, the CLI must successfully read mission status. If the robot is
already charging (cleanMissionStatus.phase == "charge"), it safely skips that
robot. Otherwise it requires both the pre-dock stop command and stop-state
verification to succeed before sending dock; a failed stop is never ignored.
With dock all, the other robot is still processed normally.
crosstown-roomba find roomba
crosstown-roomba wifi roomba
crosstown-roomba state roomba # requires specific robot name
crosstown-roomba list
Action commands (start, stop, pause, resume, dock, and find) print
one JSON summary with a results entry for every targeted robot. Check both the
process exit status and each result's ok, verification, phase, and error
fields. When targeting all, the CLI attempts both robots and exits nonzero if
either one fails; a successful first robot never hides a failed second robot.
The CLI polls mission status a bounded number of times after stateful actions:
start / resume must reach runpause must reach pausestop must reach stop or chargedock must report a return-to-dock phase or chargefind has no persistent mission state, so only its command response is checkedA timeout or mismatched phase is a failure even when MQTT initially accepted
the action. dock success confirms that return-to-dock began (or the robot is
already charging); it does not wait indefinitely for physical docking.
Roomba 10 Max ←─MQTT:8883─→ roomba-cmd.js (MacBook Pro) ←─SSH─→ crosstown-roomba CLI (Mac Mini)
Roomba J5 ←─MQTT:8883─→ roomba-cmd.js (MacBook Pro) ←─SSH─→ (same CLI)
roomba-cmd.js on the MacBook Pro connects to the robot via dorita980 MQTT, runs the command, disconnectsIMPORTANT: During walk hours (8-10 AM, 11 AM-1 PM, 5-8 PM), ALWAYS use dog-walk-start instead of crosstown-roomba start. This starts Roombas AND activates return monitoring (Fi GPS + WiFi + Ring motion), so they auto-dock when Dylan/Julia return. Without this, Roombas run until battery dies.
dog-walk-start crosstown # Start Roombas + return monitoring
Use bare crosstown-roomba start ONLY for non-walk cleaning (cleaning day, routine, etc.) where you don't need auto-dock on return.
roomba skill (Google Assistant)This skill controls Roombas at Crosstown only (Combo 10 Max + J5 via MQTT through MacBook Pro).
For related tasks, switch to:
com.openclaw.vacancy-actions LaunchAgent) also starts Roombas when Crosstown becomes confirmed_vacant — this is independent of the dog walk systemMacBook Pro at Crosstown must be reachable via Tailscale:
ssh dylans-macbook-pro "echo ok"
crosstown-roomba wifi <name>"ok": falseerror.code, error.message, and last observed phaseall, inspect both entries; one robot may have succeededdock if pre_dock_stop_failed or
pre_dock_stop_verification_failed is reported; check status firstEach command needs ~5-10s for SSH + MQTT handshake. This is normal for the connect-per-request architecture.
tools
Use exact configured Reolink cameras through the local Home Hub for availability and power status, fresh stills, visual commentary, protected Dylan/Julia/household sharing, and reversible spotlight control. Supports trusted owner tasks and explicitly scoped proactive automations; not for Nest or Ring cameras, arbitrary recipients, recordings, account changes, or raw camera APIs.
data-ai
Privately manage Dylan and Julia's household plant inventory and care history by physical location, bed, and exact Flower Cam view. Use for confirmed plant onboarding from camera conversations, camera- or bed-filtered inventory, record corrections, individual or whole-bed care, and private filtered exports. Pair with reolink-camera when an owner asks about plants visible in Flower Cam images.
testing
Inspect and control the physically secured Reachy Mini at Crosstown through ClawBody. Use for requests to check Reachy, look around, express an emotion, play any official emotion or dance preset, speak proactively, mute or unmute its microphone, stop movement, or describe what its camera sees.
tools
Handle Reachy/iMessage handoffs, selective durable memory, forgetting, and diagnostics; automatic context comes from the gateway plugin.