Pi iteration workflow
Skill ralvarezdev/ralvaskills/skills/personal/pi-iteration-workflow
Edit-test workflow for the voldemorbot robot codebase — Windows-to-Pi SSH deploy loop, pixi/ROS2 rebuild triggers, flaky-WiFi survival via screen, PowerShell SSH quoting pitfalls, sudo caching on the Pi Zero. Use when pushing platform/robot changes to hardware, restarting the robot service, or a Pi SSH session misbehaves.From its SKILL.md
npx -y skills add ralvarezdev/ralvaskills --skill pi-iteration-workflowAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.0 KB, 959 tokens by cl100k_base, as published. Nobody here has run it
Pi Iteration Workflow
Fast loop for editing platform/robot code on Windows and testing it live on real hardware over SSH. Companion to ros2-architect for the ROS2/Pixi workspace conventions this loop deploys — this skill owns the deploy mechanics, not the workspace architecture. Full host table and command sequences in RECIPES.md.
1. Access
- Prefer
rpi-5-direct(192.168.250.2, direct Ethernet) over WiFi aliases or the Cloudflare tunnel — the tunnel is often broken/unauthenticated and shouldn't be relied on. Full alias table in RECIPES.md. - Account is
ralvarezdev, notpi, on both boards. Identity file:D:\Secrets\ssh\raspberrypi\id_ed25519_ralvarezdev. - Pi 5 has passwordless sudo; the Pi Zero does not. Any
sudocommand touching the Pi Zero needs an interactive password — run those in the user's own terminal, never through a non-interactive tool call. - mDNS (
.local) resolution flakes on this network. Fall back to the raw IP with an explicit-i— the raw IP doesn't match the~/.ssh/configHostpattern, so the identity file isn't picked up automatically.
2. The edit-test loop
- Edit
platform/robot/...locally on Windows. - Commit + push to
master. cd ~/voldemorbot && git pullon the target Pi.pixi.toml/pixi.lockchanged →~/.pixi/bin/pixi install -e dev.- Any
ros2_ws/srcsource changed →~/.pixi/bin/pixi run -e dev build-ws. Editing source alone does nothing — this step is what actually installs launch files andconsole_scripts. - Restart the service:
sudo systemctl restart voldemorbot-pi-zero.service(or-pi5). - Verify it stuck with
systemctl status ... --no-pager -l, thenjournalctl -u ... --since 'HH:MM:SS' --no-pager -lfor the actual node output — status alone truncates it.
3. Regenerating pixi.lock
Always lock on the Pi 5, never Windows — Windows can't cross-build several aarch64 conda-forge sdists (e.g. netifaces) and pixi lock just hangs. The Pi 5 has 16GB RAM and is the real target arch, so it resolves cleanly and fast. Full lock-and-sync-back sequence in RECIPES.md.
4. Surviving a flaky connection
WiFi/mDNS on this network drops mid-session often enough that anything long-running (pixi install fetching packages, a colcon build) must run inside screen, not foreground SSH — the process then survives the disconnect independent of the SSH session. Detach with Ctrl+A D (not Ctrl+C); reattach with screen -d -r work (the -d force-detaches a stale "Attached" state a plain -r would refuse). /tmp is wiped on every reboot, so anything staged there needs re-copying after one. Command sequence in RECIPES.md.
5. PowerShell SSH gotcha
Don't build one SSH command string with nested double-quotes and | for PowerShell to parse — pipe characters get read as PowerShell's own pipeline operator mid-string, and \" escaping doesn't survive it. Instead, ssh -t into the box with no trailing command, then run the actual multi-line command block directly in the resulting Pi shell.
6. Sudo credential caching
A successful interactive sudo on the Pi Zero caches for ~15 minutes (/run/sudo/ts/<uid>), so a sudo systemctl restart ... issued non-interactively shortly after will succeed silently. Don't assume the window is still open, though — if sudo reports "a password is required," hand the command back to the user to run interactively rather than retrying it yourself.
What ships with it: 1 file
1.4 KB alongside SKILL.md
- RECIPES.md1.4 KB
Gives 0 of the 12 instructions most test skills give in 959 tokens
Counted across 964 of the 1,571 authors here whose files we hold, read 2026-08-07
- Close the browser when donein 55 of 964, across 12 files
- Wait for network idle statein 51 of 964, across 6 files
- Launch Chromium in headless modein 49 of 964, across 6 files
- Use descriptive selectors for elementsin 49 of 964, across 6 files
- Run provided scripts with help flag firstin 49 of 964, across 6 files
- Add appropriate explicit waitsin 48 of 964, across 5 files
- Use bundled scripts as black boxesin 46 of 964, across 3 files
- Do not read script source codein 46 of 964, across 3 files
- Use sync playwright for scriptsin 46 of 964, across 3 files
- Inspect dom before executing actionsin 46 of 964, across 3 files
- Run the full test suitein 37 of 964
- Write the failing test firstin 29 of 964, across 23 files
Said here and by no other author read
- prefer the direct ethernet host alias
- pull the repository after pushing changes
- run pixi install when the lockfile changes
- run the workspace build when source changes
- restart the systemd service after building
- verify deployment using service status and logs
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.