[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CDFC47GSJNB744ABBTECQS":3,"skill-same:01M6CDFC47GSJNB744ABBTECQS":69},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6CDFC47GSJNB744ABBTECQS","handoff",null,"Write a compact, decision-ready handoff so the next session (or the user) can continue without reconstructing the current one. Use when the session is ending, context is running low, the user asks for a handoff \u002F 'pass the baton' \u002F 'hand off', or a long-running operation needs a durable state checkpoint.","codewhale-hq\u002FCodewhale","codewhale-hq","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F326694313?v=4","01M6CDD9D70AD3631SMRJ7REW4","Codewhale","01M6CDD9H0VAXYCB2NGGPZC16K",41175,"MIT","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fcrates\u002Fskills\u002Fassets\u002Fskills\u002Fhandoff\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"use","running","when","for","hand","can","operation","long","next","compact","ready","session","user","context","write","decision","model","continue","checkpoint","state","2026-11-10 10:12:30",false,"---\nname: handoff\ndescription: \"Write a compact, decision-ready handoff so the next session (or the user) can continue without reconstructing the current one. Use when the session is ending, context is running low, the user asks for a handoff \u002F 'pass the baton' \u002F 'hand off', or a long-running operation needs a durable state checkpoint.\"\ninvocation: model+user\n---\n\n# Handoff\n\n> Write a compact, decision-ready handoff so the next session (or the user)\n> can continue without reconstructing the current one. Use when the session is\n> ending, context is running low, the user asks for a handoff \u002F \"pass the\n> baton\" \u002F \"hand off\", or a long-running operation needs a durable state\n> checkpoint. The goal: the durable artifact survives, the context does not\n> need to.\n\nInvocation: `model+user`\n\n## When to use\n\n- The user says \"handoff\", \"hand off\", \"pass the baton\", \"takeover prompt\",\n  \"write me a handoff\", or the session is about to end \u002F compact.\n- A long operation (multi-turn, multi-workstream) has state that must survive\n  context loss: commits, branches, PRs, CI, blockers, decisions.\n- You are switching to a fresh session and want the new session to start from\n  evidence instead of reconstructing the old one.\n\n## What to do\n\n1. **Gather the truth from tools, not memory.** Run\u002Fcollect:\n   - `git branch --show-current`, `git status --short`, `git log --oneline\n     origin\u002F\u003Cdefault>..HEAD` (what is local-only), `git log --oneline -5`\n     (recent context).\n   - Live remote state where relevant (`gh pr list --state open`,\n     `gh pr checks \u003Cn>`, `gh run list`) — only what the user's operation\n     actually depends on; do not pad the handoff with a full GitHub dump.\n   - Any in-flight work: dirty files, uncommitted slices, partial worktrees,\n     running background jobs\u002Fworkers, queued CI.\n2. **Write a compact markdown handoff** (aim under ~60 lines; the user may\n   also ask for a \"short text-only\" variant — then aim under ~15 lines):\n\n   ```markdown\n   # Handoff — \u003Coperation\u002Fsession name> — \u003Cdate>\n   - **State:** \u003Cone-line: what is done vs in-flight vs blocked>\n   - **Landed\u002Fcommitted:** \u003Cexact SHAs + one-line what>\n   - **Branches\u002FPRs:** \u003Cnames + states; which are ours vs community>\n   - **CI:** \u003Cwhat is green, what is waiting, what is broken>\n   - **Blockers:** \u003Cexact blocker + what would unblock>\n   - **Decisions made:** \u003Cthe WHY that a fresh session must not re-litigate>\n   - **Next step:** \u003Cthe single next action, one line>\n   - **Continuation records:** \u003Cpointers to partial work that must be\n     preserved (worktrees, uncommitted files, receipts)>\n   ```\n\n3. **Persist it.** Always write `.codewhale\u002Fhandoff.md` in the workspace — that\n   is the only path the runtime reads back. On the next session's first turn it\n   is injected as the \"## Previous Session Relay\" block\n   (`HANDOFF_RELATIVE_PATH`, `crates\u002Fengine\u002Fsrc\u002Fprompts.rs:85`; loader at\n   `prompts.rs:301-315`). A handoff written anywhere else is never picked up,\n   so the next session starts cold no matter how good the note is.\n\n   Optionally also write a human-discoverable copy:\n   - If the workspace has an ops\u002Fnotes convention (e.g. `codewhale-ops\u002Fnotes\u002F`\n     with a living handoff file), update the living handoff's dated facts and\n     snapshot, or create `\u003Ctopic>-handoff-\u003Cdate>.md` next to it.\n   - Otherwise the repo root as `HANDOFF.md` or\n     `docs\u002Fhandoff\u002F\u003Ctopic>-\u003Cdate>.md`. These are for people; nothing in the\n     runtime reads them. Never overwrite someone else's uncommitted handoff\n     without reading it first.\n4. **Clear the way for the new session (\"clears context\").** A skill cannot\n   delete the current context, but it can make the context disposable:\n   - Ensure nothing is left only in memory: dirty work is either committed\n     (WIP is fine with a real body), stashed with a note, or recorded in the\n     handoff with its exact location.\n   - Kill or record background work that would outlive the session\n     (background jobs, sub-agents) — record what is still running and its\n     task id.\n   - Close with the one-line \"next step\" so the fresh session has an\n     unambiguous first action.\n5. **Deliver.** Give the user the compact handoff text in your reply\n   (the persisted file is the durable copy; the reply is the readable one).\n\n## Constraints\n\n- Facts only from tool output; never invent SHAs, check states, or blockers.\n- Keep claims narrower than evidence: distinguish landed\u002Fcommitted, verified\n  locally, CI-verified, and pending.\n- Preserve other people's uncommitted work: read before touching, archive\n  before overwriting.\n- The handoff is orientation, not law: tell the next session to refresh\n  live state before acting on it.\n- If the user asks for a \"short text-only\" handoff, give exactly that in the\n  reply and skip the full markdown file unless asked.\n","# Handoff\n\n> Write a compact, decision-ready handoff so the next session (or the user)\n> can continue without reconstructing the current one. Use when the session is\n> ending, context is running low, the user asks for a handoff \u002F \"pass the\n> baton\" \u002F \"hand off\", or a long-running operation needs a durable state\n> checkpoint. The goal: the durable artifact survives, the context does not\n> need to.\n\nInvocation: `model+user`\n\n## When to use\n\n- The user says \"handoff\", \"hand off\", \"pass the baton\", \"takeover prompt\",\n  \"write me a handoff\", or the session is about to end \u002F compact.\n- A long operation (multi-turn, multi-workstream) has state that must survive\n  context loss: commits, branches, PRs, CI, blockers, decisions.\n- You are switching to a fresh session and want the new session to start from\n  evidence instead of reconstructing the old one.\n\n## What to do\n\n1. **Gather the truth from tools, not memory.** Run\u002Fcollect:\n   - `git branch --show-current`, `git status --short`, `git log --oneline\n     origin\u002F\u003Cdefault>..HEAD` (what is local-only), `git log --oneline -5`\n     (recent context).\n   - Live remote state where relevant (`gh pr list --state open`,\n     `gh pr checks \u003Cn>`, `gh run list`) — only what the user's operation\n     actually depends on; do not pad the handoff with a full GitHub dump.\n   - Any in-flight work: dirty files, uncommitted slices, partial worktrees,\n     running background jobs\u002Fworkers, queued CI.\n2. **Write a compact markdown handoff** (aim under ~60 lines; the user may\n   also ask for a \"short text-only\" variant — then aim under ~15 lines):\n\n   ```markdown\n   # Handoff — \u003Coperation\u002Fsession name> — \u003Cdate>\n   - **State:** \u003Cone-line: what is done vs in-flight vs blocked>\n   - **Landed\u002Fcommitted:** \u003Cexact SHAs + one-line what>\n   - **Branches\u002FPRs:** \u003Cnames + states; which are ours vs community>\n   - **CI:** \u003Cwhat is green, what is waiting, what is broken>\n   - **Blockers:** \u003Cexact blocker + what would unblock>\n   - **Decisions made:** \u003Cthe WHY that a fresh session must not re-litigate>\n   - **Next step:** \u003Cthe single next action, one line>\n   - **Continuation records:** \u003Cpointers to partial work that must be\n     preserved (worktrees, uncommitted files, receipts)>\n   ```\n\n3. **Persist it.** Always write `.codewhale\u002Fhandoff.md` in the workspace — that\n   is the only path the runtime reads back. On the next session's first turn it\n   is injected as the \"## Previous Session Relay\" block\n   (`HANDOFF_RELATIVE_PATH`, `crates\u002Fengine\u002Fsrc\u002Fprompts.rs:85`; loader at\n   `prompts.rs:301-315`). A handoff written anywhere else is never picked up,\n   so the next session starts cold no matter how good the note is.\n\n   Optionally also write a human-discoverable copy:\n   - If the workspace has an ops\u002Fnotes convention (e.g. `codewhale-ops\u002Fnotes\u002F`\n     with a living handoff file), update the living handoff's dated facts and\n     snapshot, or create `\u003Ctopic>-handoff-\u003Cdate>.md` next to it.\n   - Otherwise the repo root as `HANDOFF.md` or\n     `docs\u002Fhandoff\u002F\u003Ctopic>-\u003Cdate>.md`. These are for people; nothing in the\n     runtime reads them. Never overwrite someone else's uncommitted handoff\n     without reading it first.\n4. **Clear the way for the new session (\"clears context\").** A skill cannot\n   delete the current context, but it can make the context disposable:\n   - Ensure nothing is left only in memory: dirty work is either committed\n     (WIP is fine with a real body), stashed with a note, or recorded in the\n     handoff with its exact location.\n   - Kill or record background work that would outlive the session\n     (background jobs, sub-agents) — record what is still running and its\n     task id.\n   - Close with the one-line \"next step\" so the fresh session has an\n     unambiguous first action.\n5. **Deliver.** Give the user the compact handoff text in your reply\n   (the persisted file is the durable copy; the reply is the readable one).\n\n## Constraints\n\n- Facts only from tool output; never invent SHAs, check states, or blockers.\n- Keep claims narrower than evidence: distinguish landed\u002Fcommitted, verified\n  locally, CI-verified, and pending.\n- Preserve other people's uncommitted work: read before touching, archive\n  before overwriting.\n- The handoff is orientation, not law: tell the next session to refresh\n  live state before acting on it.\n- If the user asks for a \"short text-only\" handoff, give exactly that in the\n  reply and skip the full markdown file unless asked.\n",{"name":5,"invocation":44,"description":7},"model+user","main","654aa776d6bcb98292d4c7c5841fed871e1ba5bd","crates\u002Fskills\u002Fassets\u002Fskills\u002Fhandoff",3570,"https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale","https:\u002F\u002Fcodewhale.net\u002F","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq","https:\u002F\u002Fcodewhale.net","Open-source coding agent for your terminal. Works with the model provider you choose.","2026-11-11 08:59:54",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add codewhale-hq\u002FCodewhale --skill handoff",{"tool":61,"command":62},"bunx","bunx skills add codewhale-hq\u002FCodewhale --skill handoff",{"tool":64,"command":65},"pnpm","pnpm dlx skills add codewhale-hq\u002FCodewhale --skill handoff","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fcrates\u002Fskills\u002Fassets\u002Fskills\u002Fhandoff\u002FSKILL.md",true,[],[70,98,125,145,158,165],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":39},"01M6CDJRMPR8FX1WVFP94PGDMD","gh-find-prs","Survey the open Codewhale PR and issue queue read-only: fetch each item, check it against current code, and produce one coverage and disposition matrix with cited evidence and credit owed.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-find-prs\u002FSKILL.md",[],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],"find","gh find prs","gh","prs","produce","with","read-only","matrix","codewhale","queue","issue","read","check","code","only","open","survey","pr","evidence","fetch","coverage",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":109,"publishedAt":39},"01M6CDJP0ZYMQNA6AN028X7A96","gh-file-issue","Use when filing a new Codewhale GitHub issue: turn a bug or idea into a well-formed, actionable issue with repro, acceptance criteria, labels, and milestone.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-file-issue\u002FSKILL.md",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[110,79,111,112,87,113,114,115,21,116,117,118,119,85,120,121,122,82,123,124,19],"file issue","file","gh file issue","milestone","idea","filing","new","labels","acceptance","actionable","bug","github issue","github","acceptance criteria","repro",{"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":132,"publishedAt":39},"01M6CDJJZB0G4XHWWBD12S990C","gh-close-issues","Close resolved Codewhale issues only after verifying the landed behavior: Refs #N per landing, Fixes #N only when the reporter's scenario was reproduced, closure at the release step or on the reporter's confirmation, always with a crediting comment.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-close-issues\u002FSKILL.md",[131],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},[133,134,135,79,136,137,138,139,82,21,140,141,85,142,143,91,144],"gh close issues","close","issues","at","release","reporter","scenario","closure","fixes","behavior","confirmation","landing",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":39},"01M6CDJGR688JJVTG0A1ETBJGQ","gh-assign-issues","Use to assign GitHub issues to a milestone and\u002For owners in bulk, verifying each.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-assign-issues\u002FSKILL.md",[151],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},[153,79,135,154,19,122,113,155,156,157],"gh assign issues","assign","bulk","github issues","owners",{"skillNo":159,"name":160,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":39},"01M6CDJEBMKBAGTBG18N5YJNSE","feedback","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Ffeedback\u002FSKILL.md",[163],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},[160],{"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},"01M6CDJBRQ86PP9XNXQMRB1CGX","cw-slice","Use before writing code for any Codewhale feature, upgrade, or refactor: find the existing owner of the behavior, bound the change to one reviewable slice, and fix the evidence bar before you start.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fcw-slice\u002FSKILL.md",[171],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},[173,174,175,176,177,178,179,22,180,85,181,142,77,182,90,19,183,184,95],"slice","cw slice","start","bar","you","Existing","upgrade","feature","refactor","change","writing","fix"]