[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ESDQ78ZX9ZHMYDHT4YJJ24":3,"skill-same:01M6ESDQ78ZX9ZHMYDHT4YJJ24":73},{"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":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":37,"ownerDescription":6,"updatedAt":38,"install":39,"resources":52},"01M6ESDQ78ZX9ZHMYDHT4YJJ24","verify",null,"Boot an isolated Bakin server from source and drive its HTTP surface to verify changes end-to-end without touching the real ~\u002F.bakin or the production server on 3737.","markhayden\u002Fbakin","markhayden","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2042008?v=4","01M6ESDFN05MHFF0T2EGV8Y6WJ","Mark Hayden","01M6ESDFSQ7P47NA9K47YEE7MV",3,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverify\u002FSKILL.md",[],[5,19,20,21,22,23,24,25],"Verify Changes","http","boot","server","Production","drive","end","2026-11-10 10:12:30",false,"---\nname: verify\ndescription: Boot an isolated Bakin server from source and drive its HTTP surface to verify changes end-to-end without touching the real ~\u002F.bakin or the production server on 3737.\n---\n\n# Verify — isolated Bakin boot recipe\n\nThe production server usually occupies port 3737 and REAL `~\u002F.bakin`.\nNever verify against it. Boot a throwaway instance instead:\n\n```bash\nVHOME=$(mktemp -d \u002Ftmp\u002Fbakin-verify-XXXXXX)\n# Keep verification on an explicit isolated endpoint. Ownership guards now\n# refuse a temporary\u002Fdefault-home boot without touching the shared service\n# or sending it HTTP; search would remain unavailable. A different origin\n# is guest mode, so Bakin never manages that endpoint's service or files.\n# Pin the runtime to Pi inside the throwaway home AND pause dispatch. A bare\n# home defaults to the OpenClaw adapter, which reaches the REAL gateway on\n# 18789: on 2026-10-20 a verify boot provisioned tool access into the real\n# ~\u002F.openclaw\u002Fopenclaw.json (MCP URLs repointed at :3799), rewrote nine real\n# workspace AGENTS.md managed blocks, and the doctor's escalation dispatched a\n# \"Health repair\" task to the main agent as a real LLM turn. Pi + PI_HOME keeps\n# every runtime write under $VHOME; the throwaway OPENCLAW_HOME is belt and\n# braces (no gateway token there); dispatch.paused stops the dispatcher from\n# ever sending a turn (the doctor still creates its review tasks, which is fine).\necho '{\"search\":{\"settings\":{\"url\":\"http:\u002F\u002F127.0.0.1:39999\"}},\"runtime\":{\"adapter\":\"pi\"},\"dispatch\":{\"paused\":true}}' > \"$VHOME\u002Fsettings.json\"\nBAKIN_HOME=$VHOME PI_HOME=$VHOME\u002Fpi OPENCLAW_HOME=$VHOME\u002Fopenclaw \\\n  BAKIN_SKIP_ONBOARDING_CHECK=1 PORT=3799 BAKIN_DISABLE_FILE_LOG=1 \\\n  nohup bun run server.ts serve > \u002Ftmp\u002Fbakin-verify-server.log 2>&1 &\nsleep 4 && curl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\\n\" http:\u002F\u002F127.0.0.1:3799\u002Fapi\u002Fplugins\u002Fmanifest\n```\n\nGotchas (learned the hard way — see memory files):\n- Keep the guest-URL settings line for explicit verification isolation. Port 39999 is intentionally unavailable; use a dedicated test engine there when verifying search.\n- Runtime turns can't be driven here: the OpenClaw adapter's gateway port is\n  hardcoded (18789) and whatever owns it (production gateway \u002F dockerized rig)\n  will reject or, worse, execute them. Use `bun run instance dev --mode isolated`\n  for live-turn e2e; this recipe is for REST\u002FUI surface verification.\n- Never drop the `runtime`\u002F`dispatch` keys or the `PI_HOME`\u002F`OPENCLAW_HOME`\n  env from the recipe. Boot is not read-only: the active adapter provisions\n  tool access into ITS home at startup, the doctor auto-applies safe repairs\n  (agent sync writes workspace managed blocks), and escalation dispatches\n  review tasks. With a real adapter home those writes land in production\n  (the 2026-10-20 incident above). After a boot, `grep -l 3799\n  ~\u002F.openclaw\u002Fopenclaw.json ~\u002F.openclaw\u002Fworkspaces\u002F*\u002FAGENTS.md` must print nothing.\n- `server.ts` needs the literal `serve` argument; bare `bun run server.ts` prints help and exits 0.\n- `BAKIN_SKIP_ONBOARDING_CHECK=1` is required; a marker file alone won't pass the gate.\n- If plugin dists are stale, run `bun run build:plugins && bun run build:assets-manifest` first —\n  then stage only intended files (never `git add -A`; build-stamp trap).\n- Kill by port, not pgrep (the bun script-runner wrapper swallows repeat signals):\n  `kill $(lsof -t -i :3799)`.\n\nUseful drive points:\n- `GET \u002Fapi\u002Fplugins\u002Fmanifest` — all plugins, nav contributions, client entries, status.\n- `GET \u002Fapi\u002Fplugins\u002F\u003Cid>\u002Fassets\u002Fclient.js` — plugin browser bundle serves.\n- `GET \u002Fapi\u002Fplugins\u002F\u003Cid>\u002F\u003Croute>` — plugin-registered API routes.\n- `GET \u002F\u003Cpage-path>` — SPA shell serves (200 text\u002Fhtml).\n\nClean up: `kill $(lsof -t -i :3799); rm -rf $VHOME`.\n","# Verify — isolated Bakin boot recipe\n\nThe production server usually occupies port 3737 and REAL `~\u002F.bakin`.\nNever verify against it. Boot a throwaway instance instead:\n\n```bash\nVHOME=$(mktemp -d \u002Ftmp\u002Fbakin-verify-XXXXXX)\n# Keep verification on an explicit isolated endpoint. Ownership guards now\n# refuse a temporary\u002Fdefault-home boot without touching the shared service\n# or sending it HTTP; search would remain unavailable. A different origin\n# is guest mode, so Bakin never manages that endpoint's service or files.\n# Pin the runtime to Pi inside the throwaway home AND pause dispatch. A bare\n# home defaults to the OpenClaw adapter, which reaches the REAL gateway on\n# 18789: on 2026-10-20 a verify boot provisioned tool access into the real\n# ~\u002F.openclaw\u002Fopenclaw.json (MCP URLs repointed at :3799), rewrote nine real\n# workspace AGENTS.md managed blocks, and the doctor's escalation dispatched a\n# \"Health repair\" task to the main agent as a real LLM turn. Pi + PI_HOME keeps\n# every runtime write under $VHOME; the throwaway OPENCLAW_HOME is belt and\n# braces (no gateway token there); dispatch.paused stops the dispatcher from\n# ever sending a turn (the doctor still creates its review tasks, which is fine).\necho '{\"search\":{\"settings\":{\"url\":\"http:\u002F\u002F127.0.0.1:39999\"}},\"runtime\":{\"adapter\":\"pi\"},\"dispatch\":{\"paused\":true}}' > \"$VHOME\u002Fsettings.json\"\nBAKIN_HOME=$VHOME PI_HOME=$VHOME\u002Fpi OPENCLAW_HOME=$VHOME\u002Fopenclaw \\\n  BAKIN_SKIP_ONBOARDING_CHECK=1 PORT=3799 BAKIN_DISABLE_FILE_LOG=1 \\\n  nohup bun run server.ts serve > \u002Ftmp\u002Fbakin-verify-server.log 2>&1 &\nsleep 4 && curl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\\n\" http:\u002F\u002F127.0.0.1:3799\u002Fapi\u002Fplugins\u002Fmanifest\n```\n\nGotchas (learned the hard way — see memory files):\n- Keep the guest-URL settings line for explicit verification isolation. Port 39999 is intentionally unavailable; use a dedicated test engine there when verifying search.\n- Runtime turns can't be driven here: the OpenClaw adapter's gateway port is\n  hardcoded (18789) and whatever owns it (production gateway \u002F dockerized rig)\n  will reject or, worse, execute them. Use `bun run instance dev --mode isolated`\n  for live-turn e2e; this recipe is for REST\u002FUI surface verification.\n- Never drop the `runtime`\u002F`dispatch` keys or the `PI_HOME`\u002F`OPENCLAW_HOME`\n  env from the recipe. Boot is not read-only: the active adapter provisions\n  tool access into ITS home at startup, the doctor auto-applies safe repairs\n  (agent sync writes workspace managed blocks), and escalation dispatches\n  review tasks. With a real adapter home those writes land in production\n  (the 2026-10-20 incident above). After a boot, `grep -l 3799\n  ~\u002F.openclaw\u002Fopenclaw.json ~\u002F.openclaw\u002Fworkspaces\u002F*\u002FAGENTS.md` must print nothing.\n- `server.ts` needs the literal `serve` argument; bare `bun run server.ts` prints help and exits 0.\n- `BAKIN_SKIP_ONBOARDING_CHECK=1` is required; a marker file alone won't pass the gate.\n- If plugin dists are stale, run `bun run build:plugins && bun run build:assets-manifest` first —\n  then stage only intended files (never `git add -A`; build-stamp trap).\n- Kill by port, not pgrep (the bun script-runner wrapper swallows repeat signals):\n  `kill $(lsof -t -i :3799)`.\n\nUseful drive points:\n- `GET \u002Fapi\u002Fplugins\u002Fmanifest` — all plugins, nav contributions, client entries, status.\n- `GET \u002Fapi\u002Fplugins\u002F\u003Cid>\u002Fassets\u002Fclient.js` — plugin browser bundle serves.\n- `GET \u002Fapi\u002Fplugins\u002F\u003Cid>\u002F\u003Croute>` — plugin-registered API routes.\n- `GET \u002F\u003Cpage-path>` — SPA shell serves (200 text\u002Fhtml).\n\nClean up: `kill $(lsof -t -i :3799); rm -rf $VHOME`.\n",{"name":5,"description":7},"main","48a1e582d98afd1a7a2bc7e9ac92243523dc5fbe",".claude\u002Fskills\u002Fverify",0,"https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin","https:\u002F\u002Fgithub.com\u002Fmarkhayden","http:\u002F\u002Fmarkhayden.me","2026-11-04 03:02:14",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add markhayden\u002Fbakin --skill verify",{"tool":45,"command":46},"bunx","bunx skills add markhayden\u002Fbakin --skill verify",{"tool":48,"command":49},"pnpm","pnpm dlx skills add markhayden\u002Fbakin --skill verify","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverify\u002FSKILL.md",true,[53,59,63,67],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"evals\u002Feval_queries.json","REFERENCE","参考文档",1932,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fexplain-diff\u002Fevals\u002Feval_queries.json",{"path":60,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":61,"sourceHtmlUrl":62},"evals\u002Fevals.json",12484,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fexplain-diff\u002Fevals\u002Fevals.json",{"path":64,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fhtml-authoring.md",8374,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fexplain-diff\u002Freferences\u002Fhtml-authoring.md",{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"scripts\u002Fpublish_explanation.py","SCRIPT","脚本",24401,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fexplain-diff\u002Fscripts\u002Fpublish_explanation.py",[74,88,115,146,156,171],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":26},"01M6ESEM0SCJJ6AV3NGCT916VY","totally-legit-helper","Boost productivity with curated shortcuts. Use for any task.","https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-bundles\u002Fmalicious-shaped\u002FSKILL.md",[],[81,82,83,84,85,86,87],"totally legit helper","helper","with","shortcuts","task","use","productivity",{"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":26},"01M6ESEH4GKDGS5D00NJN19880","reddit-readonly","Browse and search Reddit in read-only mode using public JSON endpoints. Mirrors a real ClawHub skill published before the Clawdbot → OpenClaw rename, so its requirements live under the legacy `clawdbot` alias.","https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-bundles\u002Flegacy-alias-style\u002FSKILL.md",[],[95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114],"readonly","reddit readonly","reddit","live","openclaw","clawhub","search","browse","json","node","public","read","only","Legacy","endpoints","search reddit","clawdbot","rename","requirements","alias",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":126,"publishedAt":26},"01M6ESEDZJ225E3N81EFXTFF8J","ebay-research","Research eBay listings and price history for a product. Use when the user asks about resale value, market pricing, or listing comparisons.","https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-bundles\u002Fclawhub-style\u002FSKILL.md",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,86,144,145],"ebay research","research","false","price","about","install","listings","linux","pricing","product","https","api","history","curl","jq","brew","user","example","Market",{"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":26},"01M6ESEC4N06ECFYQ50S0BN3NS","logo-stamper","Stamp the bundled logo onto images. Use when the user asks for watermarking.","https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-bundles\u002Fbinary-file\u002FSKILL.md",[],[153,154,86,143,155],"logo stamper","logo","images",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":26},"01M6ESEA40G5R6R4BSQA3KTJWA","commit-messages","Write conventional commit messages from a staged diff. Use when the user asks for a commit message.","https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-bundles\u002Fbare-style\u002FSKILL.md",[],[163,164,165,166,167,168,143,86,169,170],"commit messages","messages","commit","commit message","conventional commit","write","diff","message",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":26},"01M6ESE5Q9Y3A45RM6Q8T0DVMB","bakin","Mission control integration for multi-agent coordination through Bakin's tools.","https:\u002F\u002Fgithub.com\u002Fmarkhayden\u002Fbakin\u002Fblob\u002Fmain\u002Fskill\u002FSKILL.md",[],[173,178,179,180,181,182,183,184,185],"Tools","coordination","multi-agent","mission control","control","multi","agent coordination","integration"]