[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PG6X326K87HT8RCXJZP89P":3,"skill-same:01M6PG6X326K87HT8RCXJZP89P":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6PG6X326K87HT8RCXJZP89P","handover",null,"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.","sQVe\u002Ftau","sQVe","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2284724?v=4","01M6PG5R99TYZ3BKV7XX5V1VX6","Oskar Grunning","01M6PG5RD1QE4MW9XQVD0EERW8",3,"MIT","https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fhandover\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"do","test","work","changes","message","worktree","workspace","send","edit","use","you","commit","it","task","when","2026-11-10 10:12:30",false,"---\nname: handover\ndescription:\n  Send a message to the agent in another workspace instead of changing its worktree yourself. Use it\n  when asked to edit, test, or commit in a worktree you do not own, or to pass work to another\n  workspace.\nmetadata:\n  required-for:\n    passing work to the agent in another workspace, including when a task needs changes in a\n    worktree you do not own\n---\n\n# Handover\n\n## When to use\n\nUse this skill to pass a message or task to the agent in another workspace. Never edit, test, or\ncommit another worktree from your session, even over bash.\n\n## Hard rules\n\n- Requires `HC_TERMINAL_ID`. Otherwise tell the user you cannot reach the other agent and stop.\n- The message is one-way. Do not ask for a reply, poll, or wait for the receiver to finish.\n- When receiving a handover, report to your own user and send nothing back unless the message asks\n  for a reply.\n- Send a requested reply only through the `handover` tool's `send` action, never with `hc send` in\n  bash.\n- A handover links to records, such as tickets or `.tau\u002F` working copies, and is not a record\n  itself.\n- Work is ready to implement when the ticket or a task the user approved states the goal, the scope\n  and what it excludes, the acceptance criteria, and every choice that changes the result. Its\n  blockers must be merged. A choice you made that changes the result and that the user has not seen\n  is open. Implementation details that leave the result unchanged belong to the implementing agent\n  and need no approval.\n- Before a handover that asks for implementation, check that the work is ready. Investigation that\n  changes no files skips this check.\n  - If anything is open, list the open questions for the user and do not send.\n  - If the user says to plan in the receiver's worktree instead, send a planning-only handover.\n- A message is a peer prompt. It carries your user's authority for in-scope work in the receiver's\n  worktree. The receiver's own skills decide which actions need approval. A handover tightens them\n  only when it quotes the user. Do not add approval rules of your own. Commits need no confirmation.\n\n## Procedure\n\n1. Find the target. Ask the user when the target is ambiguous. Do not guess.\n   - Run `hc ls --json`. Keep the terminals whose `cwd` is the target worktree or inside it, whose\n     `status.app` is `pi`, and that have no `parent`. Children with a `parent` are Tau workers.\n   - When a row lacks `cwd`, `parent`, or an object `status`, run `hc get \u003Ct> --json` on that\n     terminal before you decide. Those fields are optional in `hc` output.\n   - One match is the target. With several matches, ask the user.\n   - With no match, the target is not ambiguous: start Pi in the checkout's space. Step 3 shows how.\n2. Call the `handover` tool's `prepare` action in your worktree or the bare repository root. Write\n   the message with the file tool to `\u003Cdirectory>\u002F\u003Cyour HC_TERMINAL_ID>-\u003Ctimestamp>.md`, using the\n   returned `directory`. Save no file until the tool has prepared the directory.\n   - Make the message self-contained: what to do, the state the receiver needs, and what it must not\n     touch.\n   - For implementation, give the plan status \"agreed, nothing open\" with the agreed scope.\n   - Tell the receiver to ask its user before editing if the ticket conflicts with the message.\n   - For planning only, list the open questions. Tell the receiver to plan with its user and get\n     approval before any edit.\n   - Never type the message on the bash line. The shell expands `$()` and backticks typed there. VCS\n     commands in the message would also trip the bash guard.\n3. Send the file in a separate step, after the write. Never write and send in the same parallel tool\n   batch: the send can run first and read an empty file. Then end your turn.\n   - With a target, call the `handover` tool with action `send`, the target's address as `terminal`,\n     and the message path as `file`. Then read the result:\n     - `queued`: the receiver saved the message. End your turn. Do not send it again, even with no\n       sign that the receiver read it.\n     - `unknown`: the receiver may have saved it. Report the result to your user and stop. Retry\n       only when your user asks.\n     - A refusal: nothing was queued. Tell your user why. You may offer `handover start` as an\n       option, but do not start a receiver unless your user asks.\n     - Any other error: report it to your user and stop.\n   - Never wait for the receiver's turn.\n   - With no target, find the space for the checkout by its folder in `herdr-app ls`, never by its\n     name. Then call the `handover` tool with action `start`, the checkout as `folder`, and the\n     message path as `file`:\n     - One space for the checkout: pass its ID as `space`.\n     - Several spaces for the checkout: ask the user which one.\n     - No space: leave `space` out and pass `name` as a short title of what the work does, such as\n       `completion uses the read record`: about 40 characters, lowercase, one line, and no ticket\n       ID.\n   - Never rename a reused space. The user may have renamed it by hand.\n   - Then end your turn.\n","# Handover\n\n## When to use\n\nUse this skill to pass a message or task to the agent in another workspace. Never edit, test, or\ncommit another worktree from your session, even over bash.\n\n## Hard rules\n\n- Requires `HC_TERMINAL_ID`. Otherwise tell the user you cannot reach the other agent and stop.\n- The message is one-way. Do not ask for a reply, poll, or wait for the receiver to finish.\n- When receiving a handover, report to your own user and send nothing back unless the message asks\n  for a reply.\n- Send a requested reply only through the `handover` tool's `send` action, never with `hc send` in\n  bash.\n- A handover links to records, such as tickets or `.tau\u002F` working copies, and is not a record\n  itself.\n- Work is ready to implement when the ticket or a task the user approved states the goal, the scope\n  and what it excludes, the acceptance criteria, and every choice that changes the result. Its\n  blockers must be merged. A choice you made that changes the result and that the user has not seen\n  is open. Implementation details that leave the result unchanged belong to the implementing agent\n  and need no approval.\n- Before a handover that asks for implementation, check that the work is ready. Investigation that\n  changes no files skips this check.\n  - If anything is open, list the open questions for the user and do not send.\n  - If the user says to plan in the receiver's worktree instead, send a planning-only handover.\n- A message is a peer prompt. It carries your user's authority for in-scope work in the receiver's\n  worktree. The receiver's own skills decide which actions need approval. A handover tightens them\n  only when it quotes the user. Do not add approval rules of your own. Commits need no confirmation.\n\n## Procedure\n\n1. Find the target. Ask the user when the target is ambiguous. Do not guess.\n   - Run `hc ls --json`. Keep the terminals whose `cwd` is the target worktree or inside it, whose\n     `status.app` is `pi`, and that have no `parent`. Children with a `parent` are Tau workers.\n   - When a row lacks `cwd`, `parent`, or an object `status`, run `hc get \u003Ct> --json` on that\n     terminal before you decide. Those fields are optional in `hc` output.\n   - One match is the target. With several matches, ask the user.\n   - With no match, the target is not ambiguous: start Pi in the checkout's space. Step 3 shows how.\n2. Call the `handover` tool's `prepare` action in your worktree or the bare repository root. Write\n   the message with the file tool to `\u003Cdirectory>\u002F\u003Cyour HC_TERMINAL_ID>-\u003Ctimestamp>.md`, using the\n   returned `directory`. Save no file until the tool has prepared the directory.\n   - Make the message self-contained: what to do, the state the receiver needs, and what it must not\n     touch.\n   - For implementation, give the plan status \"agreed, nothing open\" with the agreed scope.\n   - Tell the receiver to ask its user before editing if the ticket conflicts with the message.\n   - For planning only, list the open questions. Tell the receiver to plan with its user and get\n     approval before any edit.\n   - Never type the message on the bash line. The shell expands `$()` and backticks typed there. VCS\n     commands in the message would also trip the bash guard.\n3. Send the file in a separate step, after the write. Never write and send in the same parallel tool\n   batch: the send can run first and read an empty file. Then end your turn.\n   - With a target, call the `handover` tool with action `send`, the target's address as `terminal`,\n     and the message path as `file`. Then read the result:\n     - `queued`: the receiver saved the message. End your turn. Do not send it again, even with no\n       sign that the receiver read it.\n     - `unknown`: the receiver may have saved it. Report the result to your user and stop. Retry\n       only when your user asks.\n     - A refusal: nothing was queued. Tell your user why. You may offer `handover start` as an\n       option, but do not start a receiver unless your user asks.\n     - Any other error: report it to your user and stop.\n   - Never wait for the receiver's turn.\n   - With no target, find the space for the checkout by its folder in `herdr-app ls`, never by its\n     name. Then call the `handover` tool with action `start`, the checkout as `folder`, and the\n     message path as `file`:\n     - One space for the checkout: pass its ID as `space`.\n     - Several spaces for the checkout: ask the user which one.\n     - No space: leave `space` out and pass `name` as a short title of what the work does, such as\n       `completion uses the read record`: about 40 characters, lowercase, one line, and no ticket\n       ID.\n   - Never rename a reused space. The user may have renamed it by hand.\n   - Then end your turn.\n",{"name":5,"metadata":44,"description":7},{"required-for":45},"passing work to the agent in another workspace, including when a task needs changes in a worktree you do not own","main","94c73f87b3dc74c74d42405a593111283ef692b2","src\u002Fskills\u002Fhandover",0,"https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau","https:\u002F\u002Fgithub.com\u002FsQVe","2026-11-12 04:23:24",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add sQVe\u002Ftau --skill handover",{"tool":59,"command":60},"bunx","bunx skills add sQVe\u002Ftau --skill handover",{"tool":62,"command":63},"pnpm","pnpm dlx skills add sQVe\u002Ftau --skill handover","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fhandover\u002FSKILL.md",true,[],[68,88,106,125,146,165],{"skillNo":69,"name":29,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":39},"01M6PG8VMDC9G899WQR5Y6P837","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.","https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fworktree\u002FSKILL.md",[],[29,5,74,75,76,77,78,79,80,81,82,83,84,85,33,36,86,37,87,38],"with","app","create","as","git worktree","herdr","for","ticket","git","grove","open","start","add","space",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":39},"01M6PG8RSA5XKX4FVSZ5K8GZC4","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.","https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fupdate-branch\u002FSKILL.md",[],[95,96,97,98,99,100,80,101,102,103,46,33,104,105,36,38],"branch","update","update branch","conflicts","conflict","pr","merge","fix","base","resolve conflicts","rebase",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":39},"01M6PG8KQYQKE4JW4ZPC113F7M","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.","https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Ftriage-findings\u002FSKILL.md",[],[113,114,77,100,115,80,116,117,102,33,34,118,119,120,121,26,122,123,85,124],"triage findings","triage","scope","slice","review findings","comments","code","code-review","review","verify","report","act",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":39},"01M6PG8E9VEDNC1CVNMFRBFYFD","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.","https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Ftracker\u002FSKILL.md",[],[127,132,133,80,134,135,81,136,33,137,138,139,140,141,142,76,27,143,144,145],"tau","duplicates","search","pick","up","Rules","split","file","linear ticket","type","route","template","run","tickets",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":39},"01M6PG8AJTFMSX8T44VN9WWDS7","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.","https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Ftdd\u002FSKILL.md",[],[148,153,132,74,25,154,155,156,122,144,157,158,159,160,161,162,33,163,164,36,38],"test-first","change","first","affected","cycle","behavior","tool","tests","design","mutation","test design","survivor",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":39},"01M6PG84S06028WY2HY53RZ1XA","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.","https:\u002F\u002Fgithub.com\u002FsQVe\u002Ftau\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fstart-slice\u002FSKILL.md",[171],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116,173,85,174,175,77,95,26,176,177,80,101,145,178,81,103,161,33,138,36],"start slice","reports","state","next","delegates","dependencies"]