# Queue Handoff

Use when ending a turn, finishing a slice, blocked on another agent's work, or...

- Repository: https://github.com/mvschwarz/openrig (8541 stars)
- Category: AI and agents
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add mvschwarz/openrig --skill queue-handoff -g -a claude-code -y`
Codex: `npx skills add mvschwarz/openrig --skill queue-handoff -g -a codex -y`
Cursor: `npx skills add mvschwarz/openrig --skill queue-handoff -g -a cursor -y`
Gemini CLI: `npx skills add mvschwarz/openrig --skill queue-handoff -g -a gemini-cli -y`

## Description

Use when ending a turn, finishing a slice, blocked on another agent's work, or escalating to a human, durable work handoff via queue items so the system keeps moving across compactions, missed messages, and interruptions. Covers the hot-potato terminal-turn-rule (active work ends by passing the ball, not by going idle), default-nudge semantics, and when `--no-nudge` is appropriate for intentional cold park or human gate.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Queue Handoff

Durable work handoff via queue items. Lets the system keep moving
through compactions, missed messages, and interruptions by passing the
ball forward instead of leaving work suspended in chat or in-flight
without an owner.

## Use this when

- **Ending a turn on substantive work.** Active work should end by
  passing the ball to an owner or to the human, never by going idle
  with the rig appearing dormant.
- **Finishing a slice that has a clear next step.** Default-nudge:
  receiver gets a wake-ping plus the durable queue item.
- **Blocked on another agent's work.** Use `rig queue block <id> --on <child>`
  (or `rig queue update <id> --state blocked --blocked-on <child>`). The item
  stays active and returns to pending when its blocker completes. Waiting on
  something outside the queue, such as CI or a long job? Park the row:
  `rig queue block <id> --on external:<what> --wake-after <duration>
  --continuation "<what resumes>"`. It stays yours and reads parked, not
  stalled, and the timer wakes you.
- **Escalating to the human.** Make the escalation a durable attention
  item, not just a chat message.

## Don't use this when

- The work is genuinely complete and there's no follow-on owner. Use
  `closure_reason: no-follow-on` (terminal completion) or
  `canceled`/`denied` as appropriate.
- The handoff would be too small and turn work into bureaucracy. Bundle
  the work into a coherent slice instead of decomposing every step.
- The handoff would be too broad and lose ownership/proof/closure
  criteria. Shape the qitem so the receiver knows the expected next
  action and closure evidence.

## The hot-potato terminal-turn-rule

Active work ends by passing the ball to a named next owner or to the
human. The qitem state machine enforces this:

`pending → in-progress → done` requires `closure_reason` from one of:

The rest: https://github.com/mvschwarz/openrig/blob/HEAD/packages/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md
