[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71ES39C19465QVWAW4WSQKG":3,"skill-same:01M71ES39C19465QVWAW4WSQKG":71},{"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":45,"forksCount":14,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M71ES39C19465QVWAW4WSQKG","update-branch",null,"Merge the current pull request's target branch into the current work branch with Git, keeping remote updates opt-in. Without a pull request, merge an explicit or default target locally. Use when the user says update branch or asks to merge the base or default branch.","patinaproject\u002Fskills","patinaproject","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F229996889?v=4","01M71E58JKTDNY1138WYZK44TR","Patina Project","01M71E58K5GH4K16MV6A8BQ6NZ",1,"MIT","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fupdate-branch\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"update","update branch","branch","default","target","opt","when","request","updates","with","remote","base","merge","use","user","work","pull","git","pull request","2026-11-10 10:12:30",false,"---\nname: update-branch\ndescription: Merge the current pull request's target branch into the current work branch with Git, keeping remote updates opt-in. Without a pull request, merge an explicit or default target locally. Use when the user says update branch or asks to merge the base or default branch.\n---\n\n# Update a branch\n\nRun from a local work branch.\n\n```text\n\u002Fupdate-branch\n\u002Fupdate-branch release\u002F1.x\n```\n\nWhen the current branch has one open pull request, always use that pull\nrequest's target branch, even if the user supplied another target. Without an\nopen pull request, use the supplied target or fall back to `origin\u002FHEAD`.\n\nUse `git` for fetch and merge. Use `gh` only to read pull request data.\nThe bundled `scripts\u002Fupdate-context.sh` selects the target and verifies the\npull request context. A branch without a pull request stays local. This run\nnever pushes a remote branch unless the operator explicitly requests that\nremote update with the helper's `push` command.\n\n## Requirements\n\n- Accept zero or one target argument.\n- Stop on a detached HEAD or missing `origin` remote.\n- Require `gh` for the pull request lookup. A failed lookup is an error, not\n  proof that no pull request exists.\n- Without a pull request or explicit target, require `origin\u002FHEAD`. If it is\n  missing, tell the user to run `git remote set-head origin -a`.\n- Never assume the default branch is named `main` or `master`.\n- Do not update the repository's default branch unless the user supplied a\n  target and explicitly confirmed the default branch should change.\n- Use `fix-merge-conflicts` for every merge conflict. Before editing a\n  conflict, run `\"$UPDATE_BRANCH_HELPER\" require-conflict-skill`. Install the\n  skill or stop when the helper says it is missing.\n\n## Workflow\n\n1. Read repository instructions for commits, checks, and protected branches.\n2. Record `git branch --show-current` and compare it with the repository default\n   branch. Stop on the default branch unless the user explicitly authorized it.\n3. Keep the consumer repository as the working directory. Resolve this skill's\n   installed directory to an absolute path, then run:\n\n   ```sh\n   UPDATE_BRANCH_HELPER=\"\u003Cabsolute installed skill directory>\u002Fscripts\u002Fupdate-context.sh\"\n   \"$UPDATE_BRANCH_HELPER\" resolve [target]\n   ```\n\n   Record the returned mode, current branch, normalized target, pull request\n   number and URL, pull request head, and both repository identities.\n   The helper requires a fetch remote matching the pull request's base\n   repository and a configured upstream whose push URL matches its head\n   repository. It refuses missing, ambiguous, or mismatched identities before\n   the workflow changes local or remote state. `pull-request` mode uses the pull\n   request target. `local-only` mode uses the explicit target or `origin\u002FHEAD`.\n4. Split the selected target at its first `\u002F` into remote and branch. Fetch\n   that branch from that remote. Fork pull requests can select a base remote\n   such as `upstream`; local-only targets use `origin`.\n   Record `git rev-parse \u003Ctarget>` as the exact target commit.\n5. Run `git status --short` and inspect staged, unstaged, and untracked files.\n   Commit existing work automatically only when every changed file belongs to\n   one clear change, contains no likely secret, and can use the repository's\n   required commit format. Before committing, tell the user the exact files and\n   commit message. Stop for mixed or unclear changes, generated files with an\n   unknown source, possible secrets, or a required issue reference that cannot\n   be determined.\n6. Start the merge without committing it:\n\n   ```sh\n   git merge --no-commit --no-ff \u003Ctarget>\n   ```\n\n   If Git says `Already up to date`, no merge commit is needed.\n7. If conflicts occur, run the required skill check and use\n   `fix-merge-conflicts` for conflicts whose correct result belongs to\n   this change and can be verified. Abort the merge and ask the user when a\n   conflict needs a product decision, unrelated work, unavailable access,\n   secret handling, generated-file knowledge, or a guess about behavior.\n   Run the skill check from the consumer repository:\n\n   ```sh\n   \"$UPDATE_BRANCH_HELPER\" require-conflict-skill\n   ```\n\n8. Check whether the merge changed package manifests, lockfiles, workspace\n   files, or toolchain versions. If so, run the install or setup command from\n   repository instructions before verification. Stop if no command is\n   documented. Include generated dependency changes only when that documented\n   command produced them and they belong to this branch update.\n9. Run the repository's documented checks that cover the changed code, resolved\n   conflicts, and affected dependencies. If no local check applies, state that.\n\n   A separate full-repository check is required only when repository\n   instructions require it for this change. If a required or relevant check\n   fails, abort the merge and stop.\n\n   When the relevant checks pass but an extra full-repository check fails, you\n   may continue only after proving that the same problem already exists on the\n   fetched target commit. Prove that by showing either:\n\n   - the failing source and the rule, configuration, or input that causes the\n     failure are unchanged from the target commit\n   - the same failure occurs when the command runs on the target commit\n\n   Record the target commit, command, failing check, and comparison. Do not\n   continue when the branch changed an input involved in the failure, the merge\n   caused the failure through interaction, or repository instructions require\n   the full-repository command. On a later run, reuse the comparison only when\n   the target commit, command, failing check, and comparison are unchanged.\n10. If the merge is still open after verification, create the merge commit with\n    the repository's normal commit format and hooks.\n11. Finish without changing the remote. In `pull-request` mode, report the\n    local merge and the captured pull request context. If the operator\n    explicitly requests the remote update, run:\n\n    ```sh\n    \"$UPDATE_BRANCH_HELPER\" push \u003Cpr-number> \u003Ctarget> \u003Cpr-head> \u003Cbase-repository> \u003Chead-repository>\n    ```\n\n    Pass the identities captured by `resolve` unchanged. The helper verifies\n    the pull request and both remote identities, pushes to the configured\n    upstream, and verifies the pull request again. If the pull request changes\n    or its lookup fails during the push, say\n    that the remote branch moved but the pull request result is uncertain.\n    On any failure, report the helper message or failed `git push` output and\n    do not claim the pull request was updated. In `local-only` mode, report\n    that the branch remains unpushed and include the optional command\n    `git push origin HEAD`.\n\n## Merge safety\n\nKeep a merge open only while resolving clear conflicts covered by this branch\nupdate. Run `git merge --abort` before stopping so the branch returns to its\npre-merge state. Do not rebase, force-push, rewrite history, or include unrelated\nfiles.\n\n## Final report\n\nReport the current branch, selected target, exact target commit, and how the\ntarget was chosen. State whether existing work was committed, a merge commit\nwas created, dependencies were refreshed, conflicts were resolved, checks\npassed, and the remote branch was pushed. For an extra full-repository failure\nthat did not stop the update, include the target commit, command, failed check,\nand comparison. For local-only work, say that the branch remains unpushed and\ninclude `git push origin HEAD`.\n","# Update a branch\n\nRun from a local work branch.\n\n```text\n\u002Fupdate-branch\n\u002Fupdate-branch release\u002F1.x\n```\n\nWhen the current branch has one open pull request, always use that pull\nrequest's target branch, even if the user supplied another target. Without an\nopen pull request, use the supplied target or fall back to `origin\u002FHEAD`.\n\nUse `git` for fetch and merge. Use `gh` only to read pull request data.\nThe bundled `scripts\u002Fupdate-context.sh` selects the target and verifies the\npull request context. A branch without a pull request stays local. This run\nnever pushes a remote branch unless the operator explicitly requests that\nremote update with the helper's `push` command.\n\n## Requirements\n\n- Accept zero or one target argument.\n- Stop on a detached HEAD or missing `origin` remote.\n- Require `gh` for the pull request lookup. A failed lookup is an error, not\n  proof that no pull request exists.\n- Without a pull request or explicit target, require `origin\u002FHEAD`. If it is\n  missing, tell the user to run `git remote set-head origin -a`.\n- Never assume the default branch is named `main` or `master`.\n- Do not update the repository's default branch unless the user supplied a\n  target and explicitly confirmed the default branch should change.\n- Use `fix-merge-conflicts` for every merge conflict. Before editing a\n  conflict, run `\"$UPDATE_BRANCH_HELPER\" require-conflict-skill`. Install the\n  skill or stop when the helper says it is missing.\n\n## Workflow\n\n1. Read repository instructions for commits, checks, and protected branches.\n2. Record `git branch --show-current` and compare it with the repository default\n   branch. Stop on the default branch unless the user explicitly authorized it.\n3. Keep the consumer repository as the working directory. Resolve this skill's\n   installed directory to an absolute path, then run:\n\n   ```sh\n   UPDATE_BRANCH_HELPER=\"\u003Cabsolute installed skill directory>\u002Fscripts\u002Fupdate-context.sh\"\n   \"$UPDATE_BRANCH_HELPER\" resolve [target]\n   ```\n\n   Record the returned mode, current branch, normalized target, pull request\n   number and URL, pull request head, and both repository identities.\n   The helper requires a fetch remote matching the pull request's base\n   repository and a configured upstream whose push URL matches its head\n   repository. It refuses missing, ambiguous, or mismatched identities before\n   the workflow changes local or remote state. `pull-request` mode uses the pull\n   request target. `local-only` mode uses the explicit target or `origin\u002FHEAD`.\n4. Split the selected target at its first `\u002F` into remote and branch. Fetch\n   that branch from that remote. Fork pull requests can select a base remote\n   such as `upstream`; local-only targets use `origin`.\n   Record `git rev-parse \u003Ctarget>` as the exact target commit.\n5. Run `git status --short` and inspect staged, unstaged, and untracked files.\n   Commit existing work automatically only when every changed file belongs to\n   one clear change, contains no likely secret, and can use the repository's\n   required commit format. Before committing, tell the user the exact files and\n   commit message. Stop for mixed or unclear changes, generated files with an\n   unknown source, possible secrets, or a required issue reference that cannot\n   be determined.\n6. Start the merge without committing it:\n\n   ```sh\n   git merge --no-commit --no-ff \u003Ctarget>\n   ```\n\n   If Git says `Already up to date`, no merge commit is needed.\n7. If conflicts occur, run the required skill check and use\n   `fix-merge-conflicts` for conflicts whose correct result belongs to\n   this change and can be verified. Abort the merge and ask the user when a\n   conflict needs a product decision, unrelated work, unavailable access,\n   secret handling, generated-file knowledge, or a guess about behavior.\n   Run the skill check from the consumer repository:\n\n   ```sh\n   \"$UPDATE_BRANCH_HELPER\" require-conflict-skill\n   ```\n\n8. Check whether the merge changed package manifests, lockfiles, workspace\n   files, or toolchain versions. If so, run the install or setup command from\n   repository instructions before verification. Stop if no command is\n   documented. Include generated dependency changes only when that documented\n   command produced them and they belong to this branch update.\n9. Run the repository's documented checks that cover the changed code, resolved\n   conflicts, and affected dependencies. If no local check applies, state that.\n\n   A separate full-repository check is required only when repository\n   instructions require it for this change. If a required or relevant check\n   fails, abort the merge and stop.\n\n   When the relevant checks pass but an extra full-repository check fails, you\n   may continue only after proving that the same problem already exists on the\n   fetched target commit. Prove that by showing either:\n\n   - the failing source and the rule, configuration, or input that causes the\n     failure are unchanged from the target commit\n   - the same failure occurs when the command runs on the target commit\n\n   Record the target commit, command, failing check, and comparison. Do not\n   continue when the branch changed an input involved in the failure, the merge\n   caused the failure through interaction, or repository instructions require\n   the full-repository command. On a later run, reuse the comparison only when\n   the target commit, command, failing check, and comparison are unchanged.\n10. If the merge is still open after verification, create the merge commit with\n    the repository's normal commit format and hooks.\n11. Finish without changing the remote. In `pull-request` mode, report the\n    local merge and the captured pull request context. If the operator\n    explicitly requests the remote update, run:\n\n    ```sh\n    \"$UPDATE_BRANCH_HELPER\" push \u003Cpr-number> \u003Ctarget> \u003Cpr-head> \u003Cbase-repository> \u003Chead-repository>\n    ```\n\n    Pass the identities captured by `resolve` unchanged. The helper verifies\n    the pull request and both remote identities, pushes to the configured\n    upstream, and verifies the pull request again. If the pull request changes\n    or its lookup fails during the push, say\n    that the remote branch moved but the pull request result is uncertain.\n    On any failure, report the helper message or failed `git push` output and\n    do not claim the pull request was updated. In `local-only` mode, report\n    that the branch remains unpushed and include the optional command\n    `git push origin HEAD`.\n\n## Merge safety\n\nKeep a merge open only while resolving clear conflicts covered by this branch\nupdate. Run `git merge --abort` before stopping so the branch returns to its\npre-merge state. Do not rebase, force-push, rewrite history, or include unrelated\nfiles.\n\n## Final report\n\nReport the current branch, selected target, exact target commit, and how the\ntarget was chosen. State whether existing work was committed, a merge commit\nwas created, dependencies were refreshed, conflicts were resolved, checks\npassed, and the remote branch was pushed. For an extra full-repository failure\nthat did not stop the update, include the target commit, command, failed check,\nand comparison. For local-only work, say that the branch remains unpushed and\ninclude `git push origin HEAD`.\n",{"name":5,"description":7},"main","e6ee720f466a8344a52abd87679191fadde3b63f","plugins\u002Fwork\u002Fskills\u002Fupdate-branch","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills","https:\u002F\u002Fgithub.com\u002Fpatinaproject","https:\u002F\u002Fwww.patinaproject.com","The best way to pick your next pair of boots or shoes.","2026-11-12 00:44:02",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add patinaproject\u002Fskills --skill update-branch",{"tool":57,"command":58},"bunx","bunx skills add patinaproject\u002Fskills --skill update-branch",{"tool":60,"command":61},"pnpm","pnpm dlx skills add patinaproject\u002Fskills --skill update-branch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fupdate-branch\u002FSKILL.md",true,[65],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"scripts\u002Fupdate-context.sh","SCRIPT","脚本",10008,"https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fupdate-branch\u002Fscripts\u002Fupdate-context.sh",[72,80,109,121,144,167],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":79},"01M72KDQJR99954NE224VB3KZ2","code-review","Review the changes since a fixed point (commit, branch, tag, or merge-base) along five axes: Standards (does the code follow this repo's documented coding standards?), Spec (does the code match what the originating issue\u002Fspec asked for?), Evidence (does each claim in the pull request have evidence that shows it?), Bugs (does the changed code have logic errors, unhandled states, races, or regressions?), and Security (does the change open injection, auth, secret, input, or CI workflow holes?). Runs the reviews in parallel sub-agents, tags every finding Important, Nit, or Pre-existing, and reports them side by side with what blocks merge. Given an earlier reviewed head and its findings, it reviews only the newer commits, rechecks the earlier findings, and never repeats one. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to \"review since X\".","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fcode\u002Fskills\u002Fcode-review\u002FSKILL.md",[],[],"2026-11-10 22:39:42",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":96,"publishedAt":38},"01M71ESEDVHD9EXN6787XHP7HD","writing-for-pstack","Write or tighten an operator prompt for a patina-mode run. Use when the operator asks to write, revise, or review a prompt that will be passed to patina-mode.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwriting-for-pstack\u002FSKILL.md",[86,91],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[97,98,99,100,101,102,103,104,105,32,106,107,25,108],"for","pstack","writing","writing for pstack","review","run","mode","write","operator","tighten","prompt","revise",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":117,"publishedAt":38},"01M71ESCJ0SSJFFENF8HYDKBTJ","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[115,116],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},[118,97,99,119,32,120,25],"writing for agents","editing","documents",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":38},"01M71ESA1NN9WVMD2HA5Z1RRDY","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\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwizard\u002FSKILL.md",[],[123,128,129,130,131,132,25,133,134,135,136,137,32,138,139,140,97,141,142,143],"interactive","can","credentials","one","Bash","invoke","dashboard","generate","human","secrets","provisioning infrastructure","ci","up","setting","running","only",{"skillNo":145,"name":146,"nameZh":6,"description":147,"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":150,"publishedAt":38},"01M71ES8FAN567N3JEPG8W6AS1","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[146,151,152,153,154,155,156,157,158,159,160,161,162,163,164,34,165,129,166,131],"more","true","decision","session","time","chunk","as","shared","map","tickets","destination","at","tracker","plan","agent session","one at a time",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":38},"01M71ES6PWJPKBW8R24YFH4PY6","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[174,175,176,177,178,179,180,181,152,182],"wait","wait what","stop","it","land","re","pitch","message","last"]