[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71JQV90TK08RTM4X0GXZ5X8":3,"skill-same:01M71JQV90TK08RTM4X0GXZ5X8":66},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":5,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M71JQV90TK08RTM4X0GXZ5X8","throughline",null,"Publish your implementation plan as a live HTML URL the user can read on their phone and hand to another agent. Use whenever you produce a multi-step plan, spec, or roadmap the user should review or that another agent will execute\u002Fcritique — instead of (or in addition to) dumping a long markdown plan into chat. Keep the plan updated as you complete tasks.","caezium\u002Fskills","caezium","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F113233555?v=4","01M71JB77ZPBAWEK009Y2W8BP7","Henry Zhang","01M71JB792NVXCWSYD27HQ0964",3,"MIT","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fthroughline\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"you","plan","multi","publish","chat","review","can","hand","tasks","keep","URL","roadmap","use","produce","implementation plan","phone","long","complete","as","2026-11-10 10:12:30",false,"---\nname: throughline\ndescription: Publish your implementation plan as a live HTML URL the user can read on their phone and hand to another agent. Use whenever you produce a multi-step plan, spec, or roadmap the user should review or that another agent will execute\u002Fcritique — instead of (or in addition to) dumping a long markdown plan into chat. Keep the plan updated as you complete tasks.\n---\n\n# Throughline — publish plans to a live URL\n\nYou write a structured plan once; Throughline renders it as a readable HTML page (phases, task status, decisions, before\u002Fafter diffs, live progress) at a shareable URL, plus machine-readable `.md`\u002F`.json` at the same URL for the next agent, plus one-click \"Open in Proof\" for human+agent comments.\n\n## When to use\n- You've drafted an implementation plan \u002F spec \u002F migration roadmap with phases and tasks.\n- The user wants to review on their phone, or steer you before you build.\n- You'll hand the plan to another agent to execute or critique.\n\nPrefer this over a wall of markdown in chat for anything longer than ~15 lines.\n\n## Setup\nBase URL defaults to the deployed `https:\u002F\u002Fthroughline.henryzh.dev`. Override with `$THROUGHLINE_URL` (e.g. `http:\u002F\u002Flocalhost:8787` in dev, or the `*.workers.dev` URL).\n\n## 1) Create a plan\nBuild a JSON object (schema below) and POST it. Capture the returned `editToken` — you need it to update the plan later.\n\n```bash\ncurl -s -X POST \"$THROUGHLINE_URL\u002Fapi\u002Fplans\" \\\n  -H 'content-type: application\u002Fjson' \\\n  -d @plan.json\n```\nResponse: `{ id, url, ownerUrl, editToken, formats:{html,markdown,json} }`.\n\nGive the user **`ownerUrl`** (it carries an `#t=` fragment that unlocks edit\u002FProof actions in the page; the fragment never reaches the server). Or just `url` for read-only sharing.\n\nOr use the CLI: `node bin\u002Fthroughline.mjs push plan.json` (add `--proof` to also create the Proof doc).\n\n## 2) Update as you work\nAs you finish tasks, flip their status by id (you get ids back in the `.json`). Always reference the plan by `editToken`.\n\n```bash\ncurl -s -X PATCH \"$THROUGHLINE_URL\u002Fapi\u002Fplans\u002F$ID\" \\\n  -H \"authorization: Bearer $EDIT_TOKEN\" -H 'content-type: application\u002Fjson' \\\n  -d '{\"tasks\":[{\"id\":\"abc123\",\"status\":\"done\"}]}'\n```\nThe user's open page updates live (SSE). Patch supports: `status`, `summary`, `notes`, `tasks:[{id,status,title,note,owner}]`, and append-only `addPhase` \u002F `addDecision` \u002F `addDiff`.\n\n## 3) Hand off to another agent\nGive the other agent the `.md` or `.json` URL — it's the same plan, machine-readable:\n```bash\ncurl -s \"$THROUGHLINE_URL\u002Fp\u002F$ID.md\"     # for an executing\u002Fcritiquing agent\n```\n\n## 4) Push to Proof (collaboration loop)\nFor comments \u002F suggestions \u002F provenance with a human, create the Proof doc:\n```bash\ncurl -s -X POST \"$THROUGHLINE_URL\u002Fapi\u002Fplans\u002F$ID\u002Fproof\" -H \"authorization: Bearer $EDIT_TOKEN\"\n```\nReturns `{ shareUrl }` — a Proof document where humans and agents comment and suggest edits.\n\n## Plan JSON schema\n```jsonc\n{\n  \"title\": \"string (required)\",\n  \"summary\": \"markdown string\",\n  \"status\": \"draft | active | blocked | done\",\n  \"author\": \"ai:\u003Cmodel> | human:\u003Cname>\",\n  \"repo\": \"owner\u002Fname\",   \u002F\u002F optional — powers the \"Execute \u002F Critique in Claude Code\" deep-link buttons\n  \"cwd\": \"\u002Fabs\u002Fpath\",     \u002F\u002F optional — absolute working dir; used instead of repo when set\n  \"decisions\": [ { \"title\": \"...\", \"choice\": \"...\", \"rationale\": \"markdown\", \"locked\": true } ],\n  \"phases\": [ {\n    \"title\": \"...\",\n    \"goal\": \"one-line markdown intent\",\n    \"tasks\": [ { \"title\": \"...\", \"status\": \"todo|doing|done|blocked\", \"note\": \"markdown\", \"owner\": \"ai:.. | human:..\" } ]\n  } ],\n  \"diffs\": [ { \"title\": \"...\", \"before\": \"code\", \"after\": \"code\", \"lang\": \"ts\" } ],\n  \"notes\": \"freeform markdown reasoning\",\n  \"links\": [ { \"label\": \"...\", \"href\": \"https:\u002F\u002F...\" } ]\n}\n```\n\nGuidance for good plans:\n- Phases = milestones; tasks = checkable units. Set realistic `status` up front (some `done`, the current one `doing`).\n- Put genuinely settled choices in `decisions` with `locked:true`; put open questions with `locked:false` so the user can weigh in.\n- Use `diffs` to show the key before\u002Fafter — it's the thing HTML does that markdown can't.\n- Mark provenance with `owner` (`ai:` vs `human:`) so the page shows who's doing what.\n- Set `repo` (`owner\u002Fname`) or `cwd` (absolute path) so the page's **Execute \u002F Critique in Claude Code** buttons open a session in the right project. The deep link only pre-fills a prompt (pointing back at this plan's `.md`) — it never runs anything until the user reviews it, and it opens on the same machine as their browser.\n","# Throughline — publish plans to a live URL\n\nYou write a structured plan once; Throughline renders it as a readable HTML page (phases, task status, decisions, before\u002Fafter diffs, live progress) at a shareable URL, plus machine-readable `.md`\u002F`.json` at the same URL for the next agent, plus one-click \"Open in Proof\" for human+agent comments.\n\n## When to use\n- You've drafted an implementation plan \u002F spec \u002F migration roadmap with phases and tasks.\n- The user wants to review on their phone, or steer you before you build.\n- You'll hand the plan to another agent to execute or critique.\n\nPrefer this over a wall of markdown in chat for anything longer than ~15 lines.\n\n## Setup\nBase URL defaults to the deployed `https:\u002F\u002Fthroughline.henryzh.dev`. Override with `$THROUGHLINE_URL` (e.g. `http:\u002F\u002Flocalhost:8787` in dev, or the `*.workers.dev` URL).\n\n## 1) Create a plan\nBuild a JSON object (schema below) and POST it. Capture the returned `editToken` — you need it to update the plan later.\n\n```bash\ncurl -s -X POST \"$THROUGHLINE_URL\u002Fapi\u002Fplans\" \\\n  -H 'content-type: application\u002Fjson' \\\n  -d @plan.json\n```\nResponse: `{ id, url, ownerUrl, editToken, formats:{html,markdown,json} }`.\n\nGive the user **`ownerUrl`** (it carries an `#t=` fragment that unlocks edit\u002FProof actions in the page; the fragment never reaches the server). Or just `url` for read-only sharing.\n\nOr use the CLI: `node bin\u002Fthroughline.mjs push plan.json` (add `--proof` to also create the Proof doc).\n\n## 2) Update as you work\nAs you finish tasks, flip their status by id (you get ids back in the `.json`). Always reference the plan by `editToken`.\n\n```bash\ncurl -s -X PATCH \"$THROUGHLINE_URL\u002Fapi\u002Fplans\u002F$ID\" \\\n  -H \"authorization: Bearer $EDIT_TOKEN\" -H 'content-type: application\u002Fjson' \\\n  -d '{\"tasks\":[{\"id\":\"abc123\",\"status\":\"done\"}]}'\n```\nThe user's open page updates live (SSE). Patch supports: `status`, `summary`, `notes`, `tasks:[{id,status,title,note,owner}]`, and append-only `addPhase` \u002F `addDecision` \u002F `addDiff`.\n\n## 3) Hand off to another agent\nGive the other agent the `.md` or `.json` URL — it's the same plan, machine-readable:\n```bash\ncurl -s \"$THROUGHLINE_URL\u002Fp\u002F$ID.md\"     # for an executing\u002Fcritiquing agent\n```\n\n## 4) Push to Proof (collaboration loop)\nFor comments \u002F suggestions \u002F provenance with a human, create the Proof doc:\n```bash\ncurl -s -X POST \"$THROUGHLINE_URL\u002Fapi\u002Fplans\u002F$ID\u002Fproof\" -H \"authorization: Bearer $EDIT_TOKEN\"\n```\nReturns `{ shareUrl }` — a Proof document where humans and agents comment and suggest edits.\n\n## Plan JSON schema\n```jsonc\n{\n  \"title\": \"string (required)\",\n  \"summary\": \"markdown string\",\n  \"status\": \"draft | active | blocked | done\",\n  \"author\": \"ai:\u003Cmodel> | human:\u003Cname>\",\n  \"repo\": \"owner\u002Fname\",   \u002F\u002F optional — powers the \"Execute \u002F Critique in Claude Code\" deep-link buttons\n  \"cwd\": \"\u002Fabs\u002Fpath\",     \u002F\u002F optional — absolute working dir; used instead of repo when set\n  \"decisions\": [ { \"title\": \"...\", \"choice\": \"...\", \"rationale\": \"markdown\", \"locked\": true } ],\n  \"phases\": [ {\n    \"title\": \"...\",\n    \"goal\": \"one-line markdown intent\",\n    \"tasks\": [ { \"title\": \"...\", \"status\": \"todo|doing|done|blocked\", \"note\": \"markdown\", \"owner\": \"ai:.. | human:..\" } ]\n  } ],\n  \"diffs\": [ { \"title\": \"...\", \"before\": \"code\", \"after\": \"code\", \"lang\": \"ts\" } ],\n  \"notes\": \"freeform markdown reasoning\",\n  \"links\": [ { \"label\": \"...\", \"href\": \"https:\u002F\u002F...\" } ]\n}\n```\n\nGuidance for good plans:\n- Phases = milestones; tasks = checkable units. Set realistic `status` up front (some `done`, the current one `doing`).\n- Put genuinely settled choices in `decisions` with `locked:true`; put open questions with `locked:false` so the user can weigh in.\n- Use `diffs` to show the key before\u002Fafter — it's the thing HTML does that markdown can't.\n- Mark provenance with `owner` (`ai:` vs `human:`) so the page shows who's doing what.\n- Set `repo` (`owner\u002Fname`) or `cwd` (absolute path) so the page's **Execute \u002F Critique in Claude Code** buttons open a session in the right project. The deep link only pre-fills a prompt (pointing back at this plan's `.md`) — it never runs anything until the user reviews it, and it opens on the same machine as their browser.\n",{"name":5,"description":7},"main","6ef866230c1ba3459fd08fc65141dfd37fffd41a",0,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills","https:\u002F\u002Fskills.henryzh.dev","https:\u002F\u002Fgithub.com\u002Fcaezium","henryzh.dev","quant, data science, full-stack, robotics.\r\nbuilding cool stuff","2026-08-24 19:21:44",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add caezium\u002Fskills --skill throughline",{"tool":58,"command":59},"bunx","bunx skills add caezium\u002Fskills --skill throughline",{"tool":61,"command":62},"pnpm","pnpm dlx skills add caezium\u002Fskills --skill throughline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fthroughline\u002FSKILL.md",true,[],[67,90,118,136,156,178],{"skillNo":68,"name":69,"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":83,"publishedAt":38},"01M71JT4RYCAS18RF6003YYR1D","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwriting-for-agents\u002FSKILL.md",[73,78],{"categoryNo":74,"categoryName":75,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[84,85,86,87,31,88,89],"writing for agents","for","writing","editing","documents","when",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":99,"publishedAt":38},"01M71JT0GES4AZ5ADH8EADNN1Z","wrangler","Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwrangler\u002FSKILL.md",[96],{"categoryNo":97,"categoryName":98,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000010","后端与接口",[92,100,101,102,103,104,105,106,107,108,109,110,111,85,112,113,114,115,116,117],"cloudflare","d1","knowledge","workflows","cli","secrets","commands","syntax","cloudflare workers","r2","queues","running","containers","correct","load","workers","best practices","store",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":38},"01M71JSWX4R203M32K9A18AAW8","workers-best-practices","Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fworkers-best-practices\u002FSKILL.md",[],[125,115,116,126,127,128,85,100,129,102,130,92,86,114,89,131,132,133,134,135],"workers best practices","observability","reviews","promises","worker","new","code","common","streaming","state","anti-patterns",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":38},"01M71JST6P88MXGT2MWDTPJGEG","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwizard\u002FSKILL.md",[],[138,111,143,85,144,145,146,147,31,148,89,149,150,151,25,152,153,154,155,105],"setting","up","ci","provisioning infrastructure","only","invoke","Bash","one","interactive","credentials","dashboard","generate","human",{"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":160,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":38},"01M71JSQ95S7BQ61DAPN95X2W4","why","Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Discovers available evidence sources, searches each relevant category, and returns a cited read on decisions and tradeoffs. Use how for runtime behavior.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwhy\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwhy\u002FSKILL.md",[],[158,164,165,166,167,85,168,169,31,170,171,172,173,174,175,176,177],"sources","thresholds","evidence","relevant","runtime","design","decisions","work","how","behavior","read","data","rationale","returns",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":187,"publishedAt":38},"01M71JSMHFVSH8HK8GXN6YAX6J","week-prep","Generate a briefing with calendar, tasks, and attention flags. Use for \"week prep\", \"briefing\", or \"what's on this week\".","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fweek-prep\u002FSKILL.md",[184],{"categoryNo":185,"categoryName":186,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000023","Skill与智能体开发",[188,189,190,191,192,85,193,194,195,196,31,149,27,197,198,154,199,174,200,201],"week prep","prep","deep","attention","get","search","messages","briefing","MCP","with","slack","calendar","flags","grep"]