[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R7D6YKPVBW0Q13YKFSGTC1":3,"skill-same:01M6R7D6YKPVBW0Q13YKFSGTC1":74},{"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":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":73},"01M6R7D6YKPVBW0Q13YKFSGTC1","port-upstream",null,"Analyzes upstream fork PR changes and ports selected items into the local branch. Use when checking upstream PRs, porting upstream changes, or planning selective upstream integration.","tim-hub\u002Fpowerball-harness","tim-hub","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2884320?v=4","01M6R7B70M93Y25SH3DV1B4Q26","Tim","01M6R7B74YQWC556YVC0FRVS3T",35,"MIT","https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fport-upstream\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"port","port upstream","upstream","URL","planning","when","porting","prs","fork","changes","true","bring","ports","pr","compare","local","Bash","use","check","branch","2026-11-10 10:12:30",false,"---\nname: port-upstream\ndescription: \"Analyzes upstream fork PR changes and ports selected items into the local branch. Use when checking upstream PRs, porting upstream changes, or planning selective upstream integration.\"\nwhen_to_use: \"port upstream, upstream PR, check upstream, upstream changes, upstream fork, bring changes from upstream\"\nuser-invocable: true\nargument-hint: \"[release_tag | compare_url | pr_url]\"\nallowed-tools: [\"Agent\", \"Bash\", \"Read\", \"Glob\", \"Grep\"]\n---\n\n## Step 1. Derive the canonical diff (do this BEFORE spawning any agent)\n\nThe input to analysis must be a **git diff between two tags** (or two commits) — not release-notes prose. Release notes are summaries; the diff is ground truth.\n\n### 1a. Resolve the tag range\n\nFrom the user's input, identify the upstream repo and the two endpoints:\n- **HEAD tag** — the release\u002FPR being evaluated (e.g. `v4.4.0`)\n- **BASE tag** — the previous release tag on the same upstream branch (e.g. `v4.3.0`), or whatever tag we last successfully ported up to\n\nIf only a release URL is given, infer BASE from the upstream's tag list (`gh release list --repo \u003Cupstream> --limit 5`) — the immediately preceding semver tag.\n\n### 1b. Fetch the diff via one of these (cheapest first)\n\n```bash\n# Option A — GitHub compare endpoint (no local fetch needed; works for any public fork)\ngh api repos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fcompare\u002F\u003CBASE>...\u003CHEAD> \\\n  --jq '.files[] | {filename, status, additions, deletions, patch}' > \u002Ftmp\u002Fupstream-diff.json\n\n# Option B — local git (if upstream is wired as a git remote)\ngit fetch upstream --tags\ngit diff upstream\u002F\u003CBASE>..upstream\u002F\u003CHEAD> -- ':!*.lock' ':!bin\u002F' ':!*.min.*'\n```\n\nExclude generated artifacts (`bin\u002F`, lock files, minified output) — they're noise.\n\n### 1c. Spawn the Explore agent on the diff\n\nPass the diff file path (not the release URL) as the agent's primary input. Brief:\n- Classify each changed hunk: new feature \u002F bug fix \u002F doc \u002F generated artifact.\n- For each substantive change, produce a one-line summary plus the file:line citation **from the upstream diff**.\n- For every item the agent classifies as **\"already in local\"**, it must produce one of the evidence forms in Verification Rules below. A bare commit-hash citation is not sufficient and must be rejected.\n- Translate any non-English content to English (see Rules).\n\n### Why a diff, not release notes\n\nRelease notes are prose summaries written by the upstream author. They invite subject-line matching — \"upstream said X, local commit says X, must be the same.\" That heuristic produces false-positive merge claims. Diffs eliminate the abstraction: the hunks either are or are not in the working tree, no interpretation needed.\n\n## Step 2. Build the harness plan from the finding\n\n- Based on what we found in Step 1, write a plan through `\u002Fharness-plan`\n- If there is nothing worth porting, just tell user.\n\n\n## Verification Rules — \"is this change already in local?\"\n\nThis skill exists in a fork of an upstream repo. After `git fetch upstream`, every commit upstream pushes is reachable **by hash** from the local repo, even if no local branch points at it. This makes hash-based \"proof\" unreliable.\n\n### Forbidden checks (do not use as proof of local presence)\n\n- `git show \u003Chash>` — works on any fetched object, including unmerged upstream commits.\n- `git log --oneline | grep \u003Chash>` — same problem; the hash is in the object DB, not necessarily on `master`.\n- Subject-line matching (\"upstream commit says X, local commit says X\" → \"we have it\") — heuristic only, never proof.\n\n### Required checks (use one — pick the cheapest)\n\n1. **Working-tree symbol grep** (preferred). Pick a unique symbol the upstream change introduces — a function name, variable name, regex literal, error string — and grep the working tree:\n   ```bash\n   grep -rn 'headingTaskRe' .   # if it's missing, the change is not present, full stop\n   ```\n2. **Branch reachability** (when only a hash is available). Confirm the cited commit is reachable from `master`:\n   ```bash\n   git branch --contains \u003Chash>   # empty output = not merged, ignore the citation\n   ```\n\n### Default question\n\nWhen verifying \"is this in local?\", default the framing to **\"what would prove this is *missing*?\"** — not \"what would prove it's present?\". Confirmation bias is the recurring failure mode in port reviews; refutation-first framing is the cheapest counter.\n\n## Rules\n\n- If changes are in Japanese or non English, translate to English\n- One verifier, not chained reviewers. Layered second-opinions amplify bad evidence — if the first agent's check is wrong, a reviewer checking the same way will reach the same wrong conclusion.\n","## Step 1. Derive the canonical diff (do this BEFORE spawning any agent)\n\nThe input to analysis must be a **git diff between two tags** (or two commits) — not release-notes prose. Release notes are summaries; the diff is ground truth.\n\n### 1a. Resolve the tag range\n\nFrom the user's input, identify the upstream repo and the two endpoints:\n- **HEAD tag** — the release\u002FPR being evaluated (e.g. `v4.4.0`)\n- **BASE tag** — the previous release tag on the same upstream branch (e.g. `v4.3.0`), or whatever tag we last successfully ported up to\n\nIf only a release URL is given, infer BASE from the upstream's tag list (`gh release list --repo \u003Cupstream> --limit 5`) — the immediately preceding semver tag.\n\n### 1b. Fetch the diff via one of these (cheapest first)\n\n```bash\n# Option A — GitHub compare endpoint (no local fetch needed; works for any public fork)\ngh api repos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fcompare\u002F\u003CBASE>...\u003CHEAD> \\\n  --jq '.files[] | {filename, status, additions, deletions, patch}' > \u002Ftmp\u002Fupstream-diff.json\n\n# Option B — local git (if upstream is wired as a git remote)\ngit fetch upstream --tags\ngit diff upstream\u002F\u003CBASE>..upstream\u002F\u003CHEAD> -- ':!*.lock' ':!bin\u002F' ':!*.min.*'\n```\n\nExclude generated artifacts (`bin\u002F`, lock files, minified output) — they're noise.\n\n### 1c. Spawn the Explore agent on the diff\n\nPass the diff file path (not the release URL) as the agent's primary input. Brief:\n- Classify each changed hunk: new feature \u002F bug fix \u002F doc \u002F generated artifact.\n- For each substantive change, produce a one-line summary plus the file:line citation **from the upstream diff**.\n- For every item the agent classifies as **\"already in local\"**, it must produce one of the evidence forms in Verification Rules below. A bare commit-hash citation is not sufficient and must be rejected.\n- Translate any non-English content to English (see Rules).\n\n### Why a diff, not release notes\n\nRelease notes are prose summaries written by the upstream author. They invite subject-line matching — \"upstream said X, local commit says X, must be the same.\" That heuristic produces false-positive merge claims. Diffs eliminate the abstraction: the hunks either are or are not in the working tree, no interpretation needed.\n\n## Step 2. Build the harness plan from the finding\n\n- Based on what we found in Step 1, write a plan through `\u002Fharness-plan`\n- If there is nothing worth porting, just tell user.\n\n\n## Verification Rules — \"is this change already in local?\"\n\nThis skill exists in a fork of an upstream repo. After `git fetch upstream`, every commit upstream pushes is reachable **by hash** from the local repo, even if no local branch points at it. This makes hash-based \"proof\" unreliable.\n\n### Forbidden checks (do not use as proof of local presence)\n\n- `git show \u003Chash>` — works on any fetched object, including unmerged upstream commits.\n- `git log --oneline | grep \u003Chash>` — same problem; the hash is in the object DB, not necessarily on `master`.\n- Subject-line matching (\"upstream commit says X, local commit says X\" → \"we have it\") — heuristic only, never proof.\n\n### Required checks (use one — pick the cheapest)\n\n1. **Working-tree symbol grep** (preferred). Pick a unique symbol the upstream change introduces — a function name, variable name, regex literal, error string — and grep the working tree:\n   ```bash\n   grep -rn 'headingTaskRe' .   # if it's missing, the change is not present, full stop\n   ```\n2. **Branch reachability** (when only a hash is available). Confirm the cited commit is reachable from `master`:\n   ```bash\n   git branch --contains \u003Chash>   # empty output = not merged, ignore the citation\n   ```\n\n### Default question\n\nWhen verifying \"is this in local?\", default the framing to **\"what would prove this is *missing*?\"** — not \"what would prove it's present?\". Confirmation bias is the recurring failure mode in port reviews; refutation-first framing is the cheapest counter.\n\n## Rules\n\n- If changes are in Japanese or non English, translate to English\n- One verifier, not chained reviewers. Layered second-opinions amplify bad evidence — if the first agent's check is wrong, a reviewer checking the same way will reach the same wrong conclusion.\n",{"name":5,"description":7,"when_to_use":44,"allowed-tools":45,"argument-hint":50,"user-invocable":51},"port upstream, upstream PR, check upstream, upstream changes, upstream fork, bring changes from upstream",[46,35,47,48,49],"Agent","Read","Glob","Grep","[release_tag | compare_url | pr_url]",true,"master","cf086c6a667d37610d30a4236b94d8ab02e4efc5",".claude\u002Fskills\u002Fport-upstream",0,"https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness","https:\u002F\u002Fgithub.com\u002Ftim-hub","https:\u002F\u002Ftim.bai.uno","Building things.","2026-08-05 17:45:08",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":51},[63,66,69],{"tool":64,"command":65},"npx","npx skills add tim-hub\u002Fpowerball-harness --skill port-upstream",{"tool":67,"command":68},"bunx","bunx skills add tim-hub\u002Fpowerball-harness --skill port-upstream",{"tool":70,"command":71},"pnpm","pnpm dlx skills add tim-hub\u002Fpowerball-harness --skill port-upstream","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fport-upstream\u002FSKILL.md",[],[75,92,101,126,146,152],{"skillNo":76,"name":77,"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":78,"categories":79,"keywords":85,"publishedAt":39},"01M6R7GH70ABV40CS95W4WWMQZ","escape-skill","https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-escape\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[86,87,88,89,29,90,91],"escape skill","escape","quoted","path","false","Tools",{"skillNo":93,"name":94,"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":95,"categories":96,"keywords":97,"publishedAt":39},"01M6R7G8A2BQHYTAR39BY7X3GK","zz-review-empty","https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-empty\u002FSKILL.md",[],[98,99,100,29,90],"review","zz review empty","empty",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"publishedAt":39},"01M6R7G3XH6C43JKP2RX1SZW6V","harness-schedule-run","Use when running Plans.md tasks on a scheduled cadence (fresh context per wake-up, sprint-contract flow, plateau detection, flock guard). Do NOT load for: single-task work (harness-work), planning, review, release.","https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002Fharness\u002Ftemplates\u002Fopencode\u002Fskills\u002Fharness-schedule-run\u002FSKILL.md",[107],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[109,110,111,112,98,113,114,115,116,117,24,118,35,119,120,121,122,123,124,125],"run","harness schedule run","harness","schedule","tasks","ci","MCP","mem","wake","sprint-contract","scheduled","cadence","sprint","fresh","worker","up","work",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":39},"01M6R7FY3ZVYDDKXBT3D7QSFFK","harness-work","Use when implementing, executing, or running Plans.md tasks — single task, parallel workers, or full team\u002Fbreezing run. Accepts specific task numbers or ranges. Do NOT load for: planning, review, release, or setup.","https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002Fharness\u002Ftemplates\u002Fcodex-skills\u002Fharness-work\u002FSKILL.md",[],[133,111,125,134,24,135,136,137,138,139,140,141,142,35,143,109,113,144,98,145],"harness work","full","implementing","mode","number","breezing","auto","edit","write","team","release","commit","read",{"skillNo":147,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":39},"01M6R7FGP3R612506A5GKMBF5C","https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002Fharness\u002Ftemplates\u002Fcodex-skills\u002Fharness-schedule-run\u002FSKILL.md",[150],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[110,111,109,112,98,115,113,119,24,118,117,120,121,122,123,116,124,125,35,114],{"skillNo":153,"name":138,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":39},"01M6R7FCDN9AS7RSQFGZWHTF7F","Use when running the full team\u002Fbreezing flow end-to-end — all tasks with parallel workers. Do NOT load for: single-task implementation, planning, review, release, or setup.","https:\u002F\u002Fgithub.com\u002Ftim-hub\u002Fpowerball-harness\u002Fblob\u002Fmaster\u002Fharness\u002Ftemplates\u002Fcodex-skills\u002Fbreezing\u002FSKILL.md",[],[138,140,158,24,159,136,160,161,134,139,141,145,162,35,142,163,143,113,144,98],"running","single-task","websearch","end","parallel","flow"]