[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6NNGVXWW02JSNY19GP9AFG9":3,"skill-same:01M6NNGVXWW02JSNY19GP9AFG9":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6NNGVXWW02JSNY19GP9AFG9","revealui-pickup",null,"Consume the rolling CURRENT-HANDOFF and continue agent-doable work. Use when the user runs \u002Fpickup, asks to continue from checkpoint, pick up the last session, or resume fleet handoff work in a new session. Not \u002Fnext (TRACKER free surfaces). Not \u002Fresume (vendor transcript). Not \u002Frecover (crash inventory).","revealui-studio\u002Frevskills","revealui-studio","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F338824821?v=4","01M6NNBRBPN7P6MK70FZQZ5RAQ","01M6NNBRG527YFDFHNYKTCDA4Y",2,"MIT","https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Fskills\u002Frevealui-pickup\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"revealui pickup","revealui","pickup","up","last","studio","free","next","tracker","resume","cleanup","use","session","work","pick","continue","Bash","checkpoint","inventory","transcript","2026-11-10 10:12:30",false,"---\nname: revealui-pickup\ndescription: >\n  Consume the rolling CURRENT-HANDOFF and continue agent-doable work.\n  Use when the user runs \u002Fpickup, asks to continue from checkpoint, pick up\n  the last session, or resume fleet handoff work in a new session.\n  Not \u002Fnext (TRACKER free surfaces). Not \u002Fresume (vendor transcript).\n  Not \u002Frecover (crash inventory).\nlicense: MIT\nallowed-tools: Bash, Read, Grep\nmetadata:\n  author: RevealUI Studio\n  version: \"0.2.0\"\n  website: https:\u002F\u002Frevealui.com\n  related:\n    - revealui-checkpoint\n    - revealui-tracker\n    - revealui-recover\n    - revealui-cleanup\n    - revealui-rollup\n---\n\n# Pickup (`\u002Fpickup`) — consume CURRENT-HANDOFF\n\nClean continue after `\u002Fcheckpoint`. Read the rolling handoff, re-verify live\ngit\u002Fgh, then do remaining **agent** work. Do not invent a second board.\n\n`\u002Fnext` stays TRACKER free surfaces. `\u002Frecover` stays crash diagnostics.\nGrok `\u002Fresume` and `grok --continue` reload a transcript, not this file.\n\nDo **not** run this on SessionStart. Opening a session is not consent to\ncontinue last night's PR.\n\nLoad helpers:\n```bash\n. \"$REVEALFLEET_ROOT\u002Frevskills\u002Fscripts\u002Flib\u002Fsession-state.sh\"\n```\n\n## Step 1 — Render + read\n\n```bash\nCURRENT_HANDOFF=\"$(cd \"$JV_REPO\" && node scripts\u002Fhandoff-render.js)\"\n```\n\nStdout is the path to read. On the shared primary checkout the renderer\nwrites gitignored `docs\u002Fhandoffs\u002F.CURRENT-HANDOFF.local.md` so `.jv` stays\nclean. In a worktree it writes `CURRENT-HANDOFF.md` in that tree. Do not\ncommit the render. Then read `$CURRENT_HANDOFF` sections **Launch**,\n**Ordered next actions**, **Owner-gated**, **In-flight**, and the newest\nrolling fragment under `docs\u002Fhandoffs\u002Frolling\u002F`.\n\nIf the file is missing: say so, run Step 6 (TRACKER print), stop.\nIf **Launch** is missing: fail closed — name that the fragment predates\nADR 2026-08-26-session-launch-record. Do not guess a product.\n\n## Step 2 — Re-verify (mandatory)\n\nFragments go stale the moment the owner merges. Do not trust prose.\nClassification is `handoff-status.js`, the same script the \"what now?\"\nstatus line uses. Do not re-implement `gh pr view` in the session.\n\n```bash\nnode \"$JV_REPO\u002Fscripts\u002Fhandoff-status.js\"\n```\n\n`done` is merged or closed. `owner-gated` is an open pull request whose\nremaining line is an owner merge, or a pull request named only under\nOwner-gated. `agent-doable` is an open pull request whose ordered-next\nline still says to clear, fix, push, or re-run CI.\n\nAlso confirm named worktrees\u002Fbranches still exist:\n\n```bash\ncd \"$REVEALFLEET_ROOT\u002Frevealui\" && git worktree list\n```\n\n## Step 3 — Classify\n\n| Class | Meaning | This session |\n|-------|---------|--------------|\n| `done` | Live git\u002Fgh matches the tail (merged, deleted, already applied) | Note and skip |\n| `owner-gated` | Merge, vault, prod, promote, machine UAC, stranded checkout | List the one-line owner command. Do not do it |\n| `agent-doable` | Spec, PR, tests, docs, conflict fix, follow-up an agent can do | Continue it |\n\nPrint a short live board. Stale fragment lines stay in the file; live state\nwins.\n\n## Step 4 — Continue\n\nFirst action is CURRENT-HANDOFF **## Launch** row 1 (exact `rfg`\u002F`rfc`\ncommand, including `--worktree=`). That is Ordered next item 1. Then:\n\n1. If any `agent-doable` remains after Launch: do it this session. Worktree\n   from `origin\u002Ftest` in the product named by Launch. Do not dirty-switch a\n   shared checkout.\n2. Else if only `owner-gated` remains: list the script's `gh pr merge`\n   lines, then run Step 6. Do not merge. When the owner says \"merged\",\n   re-run `handoff-status.js` and continue Step 4.\n3. Else (checkpoint exhausted): Step 6.\n\nNever merge, force-push, add gate labels, or edit a stranded `.jv` checkout\n(`docs\u002Fgap-381-yml-with-render` or any `chore\u002Fcheckpoint-*` main HEAD).\n\n## Step 5 — Report\n\n```\n=== PICKUP ===\nHandoff:     $CURRENT_HANDOFF\nLive:        \u003Cone line: what is still true after gh>\nDoing:       \u003Cagent-doable item 1 | owner-gated wait | tracker fallthrough>\nOwner-gated: \u003Ccommands or none>\n```\n\nThen execute the **Doing** line. On owner-gated, print the merge lines and Step 6. Do not merge.\n\n## Step 6 — Board under the handoff\n\nSame entry as `\u002Fnext`. `sync` refreshes the board and the goals overlay.\n`tracker.js next` does not.\n\n```bash\nnode \"$JV_REPO\u002Fscripts\u002Ftracker.js\" sync\n```\n\nPrint free surfaces under the handoff board. Do **not** auto-claim a gap.\nWait for the owner to pick.\n\n## Do not\n\n- Do not steal `\u002Fnext` or print TRACKER before finishing Steps 1–4.\n- Do not paste a next-agent prompt back at the owner; this skill *is* the consume path.\n- Do not start `\u002Frecover` unless git is corrupt or the owner asked.\n- Do not auto-run on SessionStart.\n- Do not guess a product when **Launch** is missing.\n- Do not rewrite tracked `CURRENT-HANDOFF.md` on the shared primary `.jv`.\n- Residue after consume is `\u002Fcleanup` (report) or `\u002Fcleanup --fix` (gated). Stale MASTER_HANDOFF is `\u002Frollup`. Do not invent a second sweep.\n","# Pickup (`\u002Fpickup`) — consume CURRENT-HANDOFF\n\nClean continue after `\u002Fcheckpoint`. Read the rolling handoff, re-verify live\ngit\u002Fgh, then do remaining **agent** work. Do not invent a second board.\n\n`\u002Fnext` stays TRACKER free surfaces. `\u002Frecover` stays crash diagnostics.\nGrok `\u002Fresume` and `grok --continue` reload a transcript, not this file.\n\nDo **not** run this on SessionStart. Opening a session is not consent to\ncontinue last night's PR.\n\nLoad helpers:\n```bash\n. \"$REVEALFLEET_ROOT\u002Frevskills\u002Fscripts\u002Flib\u002Fsession-state.sh\"\n```\n\n## Step 1 — Render + read\n\n```bash\nCURRENT_HANDOFF=\"$(cd \"$JV_REPO\" && node scripts\u002Fhandoff-render.js)\"\n```\n\nStdout is the path to read. On the shared primary checkout the renderer\nwrites gitignored `docs\u002Fhandoffs\u002F.CURRENT-HANDOFF.local.md` so `.jv` stays\nclean. In a worktree it writes `CURRENT-HANDOFF.md` in that tree. Do not\ncommit the render. Then read `$CURRENT_HANDOFF` sections **Launch**,\n**Ordered next actions**, **Owner-gated**, **In-flight**, and the newest\nrolling fragment under `docs\u002Fhandoffs\u002Frolling\u002F`.\n\nIf the file is missing: say so, run Step 6 (TRACKER print), stop.\nIf **Launch** is missing: fail closed — name that the fragment predates\nADR 2026-08-26-session-launch-record. Do not guess a product.\n\n## Step 2 — Re-verify (mandatory)\n\nFragments go stale the moment the owner merges. Do not trust prose.\nClassification is `handoff-status.js`, the same script the \"what now?\"\nstatus line uses. Do not re-implement `gh pr view` in the session.\n\n```bash\nnode \"$JV_REPO\u002Fscripts\u002Fhandoff-status.js\"\n```\n\n`done` is merged or closed. `owner-gated` is an open pull request whose\nremaining line is an owner merge, or a pull request named only under\nOwner-gated. `agent-doable` is an open pull request whose ordered-next\nline still says to clear, fix, push, or re-run CI.\n\nAlso confirm named worktrees\u002Fbranches still exist:\n\n```bash\ncd \"$REVEALFLEET_ROOT\u002Frevealui\" && git worktree list\n```\n\n## Step 3 — Classify\n\n| Class | Meaning | This session |\n|-------|---------|--------------|\n| `done` | Live git\u002Fgh matches the tail (merged, deleted, already applied) | Note and skip |\n| `owner-gated` | Merge, vault, prod, promote, machine UAC, stranded checkout | List the one-line owner command. Do not do it |\n| `agent-doable` | Spec, PR, tests, docs, conflict fix, follow-up an agent can do | Continue it |\n\nPrint a short live board. Stale fragment lines stay in the file; live state\nwins.\n\n## Step 4 — Continue\n\nFirst action is CURRENT-HANDOFF **## Launch** row 1 (exact `rfg`\u002F`rfc`\ncommand, including `--worktree=`). That is Ordered next item 1. Then:\n\n1. If any `agent-doable` remains after Launch: do it this session. Worktree\n   from `origin\u002Ftest` in the product named by Launch. Do not dirty-switch a\n   shared checkout.\n2. Else if only `owner-gated` remains: list the script's `gh pr merge`\n   lines, then run Step 6. Do not merge. When the owner says \"merged\",\n   re-run `handoff-status.js` and continue Step 4.\n3. Else (checkpoint exhausted): Step 6.\n\nNever merge, force-push, add gate labels, or edit a stranded `.jv` checkout\n(`docs\u002Fgap-381-yml-with-render` or any `chore\u002Fcheckpoint-*` main HEAD).\n\n## Step 5 — Report\n\n```\n=== PICKUP ===\nHandoff:     $CURRENT_HANDOFF\nLive:        \u003Cone line: what is still true after gh>\nDoing:       \u003Cagent-doable item 1 | owner-gated wait | tracker fallthrough>\nOwner-gated: \u003Ccommands or none>\n```\n\nThen execute the **Doing** line. On owner-gated, print the merge lines and Step 6. Do not merge.\n\n## Step 6 — Board under the handoff\n\nSame entry as `\u002Fnext`. `sync` refreshes the board and the goals overlay.\n`tracker.js next` does not.\n\n```bash\nnode \"$JV_REPO\u002Fscripts\u002Ftracker.js\" sync\n```\n\nPrint free surfaces under the handoff board. Do **not** auto-claim a gap.\nWait for the owner to pick.\n\n## Do not\n\n- Do not steal `\u002Fnext` or print TRACKER before finishing Steps 1–4.\n- Do not paste a next-agent prompt back at the owner; this skill *is* the consume path.\n- Do not start `\u002Frecover` unless git is corrupt or the owner asked.\n- Do not auto-run on SessionStart.\n- Do not guess a product when **Launch** is missing.\n- Do not rewrite tracked `CURRENT-HANDOFF.md` on the shared primary `.jv`.\n- Residue after consume is `\u002Fcleanup` (report) or `\u002Fcleanup --fix` (gated). Stale MASTER_HANDOFF is `\u002Frollup`. Do not invent a second sweep.\n",{"name":5,"license":14,"metadata":43,"description":53,"allowed-tools":54},{"author":44,"related":45,"version":51,"website":52},"RevealUI Studio",[46,47,48,49,50],"revealui-checkpoint","revealui-tracker","revealui-recover","revealui-cleanup","revealui-rollup","0.2.0","https:\u002F\u002Frevealui.com","Consume the rolling CURRENT-HANDOFF and continue agent-doable work. Use when the user runs \u002Fpickup, asks to continue from checkpoint, pick up the last session, or resume fleet handoff work in a new session. Not \u002Fnext (TRACKER free surfaces). Not \u002Fresume (vendor transcript). Not \u002Frecover (crash inventory).\n","Bash, Read, Grep","test","2b46ce0cfb27f77a7b78cfb49b0b004e2072b7ba","skills\u002Frevealui-pickup",0,"https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills","https:\u002F\u002Fgithub.com\u002Frevealui-studio","2026-11-11 23:29:48",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add revealui-studio\u002Frevskills --skill revealui-pickup",{"tool":68,"command":69},"bunx","bunx skills add revealui-studio\u002Frevskills --skill revealui-pickup",{"tool":71,"command":72},"pnpm","pnpm dlx skills add revealui-studio\u002Frevskills --skill revealui-pickup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Fskills\u002Frevealui-pickup\u002FSKILL.md",true,[],[77,103,115,129,157,192],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":88,"publishedAt":38},"01M6NNN0QCBBPEW3V3C4SBETRZ","good-skill","A minimal valid skill fixture used to prove the skills-lint and plugin-lint validators accept well formed input. Covers frontmatter shape only.","https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Ftest\u002Ffixtures\u002Fskills\u002Fgood-skill\u002FSKILL.md",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[89,90,91,92,93,94,95,96,97,98,99,100,101,102],"good","good skill","valid skill","valid","plugin","lint","only","shape","minimal","fixture","input","well formed","frontmatter","skill fixture",{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":109,"publishedAt":38},"01M6NNMY4GWFD65V1Q2W5YC465","bad-skill-missing-field","https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Ftest\u002Ffixtures\u002Fskills\u002Fbad-skill-missing-field\u002FSKILL.md",[108],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},[110,111,112,113,114],"bad","missing","missing field","bad skill missing field","bad skill",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":122,"publishedAt":38},"01M6NNMF7WN6C308H8CGJVRBCB","bad-skill-awk","Fixture skill whose fenced shell block violates lint-skill.awk. skills-lint must reject it.","https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Ftest\u002Ffixtures\u002Fskills\u002Fbad-skill-awk\u002FSKILL.md",[121],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},[123,124,110,114,94,125,126,127,98,128],"bad skill awk","awk","shell","block","fixture skill","it",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":138,"publishedAt":38},"01M6NNMB2BYCM9J8GVW3TJ8YA7","yjs-collaboration","Yjs CRDT collaboration patterns for real-time and offline-first editing. Use when building collaborative documents, shared scratchpads, or multi-user editing. Covers Y.Doc, Y.Map, Y.Array, Y.Text, state encoding, structured patches, server-side document manipulation, and conflict-free merge semantics.","https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Fskills\u002Fyjs-collaboration\u002FSKILL.md",[135],{"categoryNo":136,"categoryName":137,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000010","后端与接口",[139,140,141,142,23,24,143,144,145,146,147,148,149,150,151,152,153,154,155,156],"yjs","yjs collaboration","collaboration","for","server-side","conflict","shared","time","map","patterns","read","server","doc","real-time","offline","documents","merge","text",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":174,"publishedAt":38},"01M6NNM6VE7WE8ZAWQFS4AZE1P","vitest-testing","Vitest testing patterns for production TypeScript projects. Use when writing tests, fixing test failures, configuring coverage, mocking modules, debugging flaky tests, or setting up Vitest in a monorepo. Covers Vitest 3+, vi.mock, vi.fn, React Testing Library, PGlite in-memory PostgreSQL, pool forks, maxWorkers, and hookTimeout.","https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Fskills\u002Fvitest-testing\u002FSKILL.md",[163,166,169],{"categoryNo":164,"categoryName":165,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":167,"categoryName":168,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":170,"categoryName":171,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[175,176,177,178,179,180,181,182,142,183,184,185,186,187,21,29,188,189,190,191],"vitest testing","testing","vitest","debugging","memory","writing","testing library","mock","react testing library","mocking","tests","react testing","modules","coverage","monorepo","projects","testing patterns",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":198,"publishedAt":38},"01M6NNKSJ6TJBVPDN3YJHK5B70","tailwind-v4","Tailwind CSS v4 patterns, CSS-first configuration, and v3 migration guide. Use when writing styles, configuring @theme variables, creating components with CVA, migrating from tailwind.config.js, or using container queries, dark mode, and new v4 utility syntax. Covers @import tailwindcss, custom properties, oklch colors, and clsx.","https:\u002F\u002Fgithub.com\u002Frevealui-studio\u002Frevskills\u002Fblob\u002Ftest\u002Fskills\u002Ftailwind-v4\u002FSKILL.md",[],[199,200,201,202,203,204,23,205,206,207,208,209,210,211,212,29,213,214,215,180],"tailwind v4","Tailwind","utility","dark","custom","mode","Variables","with","theme","import","dark mode","v3","queries","container","components","tailwindcss","css"]