handover
Send a message to the agent in another workspace instead of changing its worktree yourself. Use it when asked to edit, test, or commit in a worktree you do not own, or to pass work to another workspace.
- License 许可
- MIT
- 所属仓库
- sQVe/tau
- 最近更新
- 2026-11-12
- Stars
- ★ 3
- Forks
- 0
01 前言 Front Matter
- name
- handover
- metadata
- { "required-for": "passing work to the agent in another workspace, including when a task needs changes in a worktree you do not own" }
- description
- Send a message to the agent in another workspace instead of changing its worktree yourself. Use it when asked to edit, test, or commit in a worktree you do not own, or to pass work to another workspace.
03 SKILL.md 正文
Handover
When to use
Use this skill to pass a message or task to the agent in another workspace. Never edit, test, or commit another worktree from your session, even over bash.
Hard rules
- Requires
HC_TERMINAL_ID. Otherwise tell the user you cannot reach the other agent and stop. - The message is one-way. Do not ask for a reply, poll, or wait for the receiver to finish.
- When receiving a handover, report to your own user and send nothing back unless the message asks for a reply.
- Send a requested reply only through the
handovertool'ssendaction, never withhc sendin bash. - A handover links to records, such as tickets or
.tau/working copies, and is not a record itself. - Work is ready to implement when the ticket or a task the user approved states the goal, the scope and what it excludes, the acceptance criteria, and every choice that changes the result. Its blockers must be merged. A choice you made that changes the result and that the user has not seen is open. Implementation details that leave the result unchanged belong to the implementing agent and need no approval.
- Before a handover that asks for implementation, check that the work is ready. Investigation that
changes no files skips this check.
- If anything is open, list the open questions for the user and do not send.
- If the user says to plan in the receiver's worktree instead, send a planning-only handover.
- A message is a peer prompt. It carries your user's authority for in-scope work in the receiver's worktree. The receiver's own skills decide which actions need approval. A handover tightens them only when it quotes the user. Do not add approval rules of your own. Commits need no confirmation.
Procedure
- Find the target. Ask the user when the target is ambiguous. Do not guess.
- Run
hc ls --json. Keep the terminals whosecwdis the target worktree or inside it, whosestatus.appispi, and that have noparent. Children with aparentare Tau workers. - When a row lacks
cwd,parent, or an objectstatus, runhc get <t> --jsonon that terminal before you decide. Those fields are optional inhcoutput. - One match is the target. With several matches, ask the user.
- With no match, the target is not ambiguous: start Pi in the checkout's space. Step 3 shows how.
- Run
- Call the
handovertool'sprepareaction in your worktree or the bare repository root. Write the message with the file tool to<directory>/<your HC_TERMINAL_ID>-<timestamp>.md, using the returneddirectory. Save no file until the tool has prepared the directory.- Make the message self-contained: what to do, the state the receiver needs, and what it must not touch.
- For implementation, give the plan status "agreed, nothing open" with the agreed scope.
- Tell the receiver to ask its user before editing if the ticket conflicts with the message.
- For planning only, list the open questions. Tell the receiver to plan with its user and get approval before any edit.
- Never type the message on the bash line. The shell expands
$()and backticks typed there. VCS commands in the message would also trip the bash guard.
- Send the file in a separate step, after the write. Never write and send in the same parallel tool
batch: the send can run first and read an empty file. Then end your turn.
- With a target, call the
handovertool with actionsend, the target's address asterminal, and the message path asfile. Then read the result:queued: the receiver saved the message. End your turn. Do not send it again, even with no sign that the receiver read it.unknown: the receiver may have saved it. Report the result to your user and stop. Retry only when your user asks.- A refusal: nothing was queued. Tell your user why. You may offer
handover startas an option, but do not start a receiver unless your user asks. - Any other error: report it to your user and stop.
- Never wait for the receiver's turn.
- With no target, find the space for the checkout by its folder in
herdr-app ls, never by its name. Then call thehandovertool with actionstart, the checkout asfolder, and the message path asfile:- One space for the checkout: pass its ID as
space. - Several spaces for the checkout: ask the user which one.
- No space: leave
spaceout and passnameas a short title of what the work does, such ascompletion uses the read record: about 40 characters, lowercase, one line, and no ticket ID.
- One space for the checkout: pass its ID as
- Never rename a reused space. The user may have renamed it by hand.
- Then end your turn.
- With a target, call the
04 同仓库更多 Skills
worktree
Create or open a Git worktree for a ticket or task with Grove and open it as a herdr-app space. Use it when asked to create, add, start, or open a worktree, optionally followed by a handover.
update-branch
Rebase the current branch onto its base, resolve conflicts, and update the PR when asked. Use it for "rebase onto main", "fix conflicts", "the PR has conflicts", or when a rebase or merge stops on a conflict.
triage-findings
Verify review findings or comments the user asked you to act on, fix the supported ones in scope, and report each one as Fixed, Not worth changing, Incorrect, or Blocked. Use it for "triage these findings", "fix these review comments", or "act on the findings I approved". `code-review`, `pr`, and `start-slice` also start it after a review of the user's own work.
tracker
Write Linear tickets by Tau's rules. Pick the type and template, route it, search for duplicates, and use checked tools for ticket writes and the two allowed status changes. Use it for "file a bug", "create a ticket", or "add a follow-up ticket". It does not split designs or start slices.
tdd
Change behavior test-first with Tau's run_tests tool, then verify the affected tests and a mutation check. Use it when changing behavior. Covers the cycle and survivor handling, not test design.
start-slice
Start one slice of a planned design. Creates its branch and its agent tickets in Linear, then delegates the work. Picks the next slice from order, dependencies, and merge state, and reports the branch, base, and agent tickets it created. Use it for "start the next slice", "start ENG-123", or "begin this ticket as a slice". It does not split a design into slices.