🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Perry Coding Agents

by @gricha

Dispatch coding tasks to OpenCode or Claude Code on Perry workspaces. Use for development work, PR reviews, or any coding task requiring an isolated environment.

Versionv1.5.0
Downloads4,415
Installs11
Stars⭐ 2
TERMINAL
clawhub install perry-coding-agents

πŸ“– About This Skill


name: perry-coding-agents description: Dispatch coding tasks to OpenCode or Claude Code on Perry workspaces. Use for development work, PR reviews, or any coding task requiring an isolated environment. metadata: {"clawdbot":{"emoji":"πŸ› οΈ"}}

Perry Coding Agents

Dispatch tasks to OpenCode/Claude Code on Perry workspaces.

Rules

  • Always create dex task FIRST β€” before any dispatch, no exceptions
  • No hard timeouts β€” background dispatch, let agent run
  • Use IPs β€” MagicDNS broken in containers (tailscale status for IPs)
  • One task per PR β€” same session continues until done
  • Reuse sessions β€” OpenCode keeps context in ~/.opencode/
  • Never code directly β€” always dispatch to agents
  • Commands

    # OpenCode (primary)
    ssh -o StrictHostKeyChecking=no workspace@ "cd ~/ && /home/workspace/.opencode/bin/opencode run 'task'" &

    Claude Code (needs TTY)

    ssh -t workspace@ "cd ~/ && /home/workspace/.local/bin/claude 'task'"

    Dispatch Pattern

    WAKE_IP=$(tailscale status --self --json | jq -r '.Self.TailscaleIPs[0]')

    ssh -o StrictHostKeyChecking=no workspace@ "cd ~/ && /home/workspace/.opencode/bin/opencode run 'Your task.

    When done: curl -X POST http://${WAKE_IP}:18789/hooks/wake -H \"Content-Type: application/json\" -H \"Authorization: Bearer \" -d \"{\\\"text\\\": \\\"Done: summary\\\", \\\"mode\\\": \\\"now\\\"}\" '" &

    Task Tracking

    Create task before dispatch with: workspace IP, branch, goal, done criteria. Same task until CI green. Complete with result summary.

    Example: Full PR Flow

    # 1. Create task
    

    Track: workspace feat1 (100.109.173.45), branch feat/auth, goal: add auth

    2. Get wake info

    WAKE_IP=$(tailscale status --self --json | jq -r '.Self.TailscaleIPs[0]')

    3. Dispatch (background, no timeout)

    ssh -o StrictHostKeyChecking=no workspace@100.109.173.45 "cd ~/perry && /home/workspace/.opencode/bin/opencode run 'Add bearer token auth to all API endpoints. Create PR when done.

    When finished: curl -X POST http://${WAKE_IP}:18789/hooks/wake -H \"Content-Type: application/json\" -H \"Authorization: Bearer \" -d \"{\\\"text\\\": \\\"Done: Auth PR created\\\", \\\"mode\\\": \\\"now\\\"}\" '" &

    4. Wake received β†’ check CI

    ssh workspace@100.109.173.45 "cd ~/perry && gh pr checks 145"

    5. CI fails β†’ dispatch follow-up (same task, agent has context)

    ssh -o StrictHostKeyChecking=no workspace@100.109.173.45 "cd ~/perry && /home/workspace/.opencode/bin/opencode run 'CI failing: test/auth.test.ts line 42. Fix and push.

    When fixed: curl -X POST http://${WAKE_IP}:18789/hooks/wake ...'" &

    6. CI green β†’ complete task with result

    Troubleshooting

  • Can't reach: tailscale status | grep
  • Commands not found: Use full paths (/home/workspace/.opencode/bin/opencode)
  • Wake not firing: Check IP/token, test with curl
  • πŸ“‹ Tips & Best Practices

  • Can't reach: tailscale status | grep
  • Commands not found: Use full paths (/home/workspace/.opencode/bin/opencode)
  • Wake not firing: Check IP/token, test with curl
  • πŸ”’ Constraints

  • Always create dex task FIRST β€” before any dispatch, no exceptions
  • No hard timeouts β€” background dispatch, let agent run
  • Use IPs β€” MagicDNS broken in containers (tailscale status for IPs)
  • One task per PR β€” same session continues until done
  • Reuse sessions β€” OpenCode keeps context in ~/.opencode/
  • Never code directly β€” always dispatch to agents