[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BV2Z1H9T0YR777XRBQDS5G":3,"skill-same:01M6BV2Z1H9T0YR777XRBQDS5G":78},{"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":23,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":62,"ownerDescription":63,"updatedAt":64,"install":65,"resources":77},"01M6BV2Z1H9T0YR777XRBQDS5G","rebase",null,"Rebase current branch onto latest upstream default branch and force-push to update PR. Use when updating a branch, rebasing onto main, or resolving conflicts.","drn\u002Fdots","drn","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F885841?v=4","01M6BTZJR7B1RVQRJKP0S70DQS","Darren Cheng","01M6BTZJWXCK41P3Z50BV8KWD9",23,"MIT","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Frebase\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"when","MCP","parse","true","rev","upstream","main","default","diff","use","fetch","branch","git push","Bash","rebase current branch","push","pull","git","git branch","update","git merge","pr","update pr","merge","github","2026-11-10 10:12:30",false,"---\nname: rebase\nallowed-tools: Bash(git fetch:*), Bash(git rebase:*), Bash(git push:*), Bash(git log:*), Bash(git diff:*), Bash(git branch:*), Bash(git rev-parse:*), Bash(git symbolic-ref:*), Bash(git merge-base:*), mcp__github__list_pull_requests\ndescription: Rebase current branch onto latest upstream default branch and force-push to update PR. Use when updating a branch, rebasing onto main, or resolving conflicts.\ndisable-model-invocation: true\n---\n\n## Context\n\n- Current branch: !`git branch --show-current`\n- Git status: !`git status --short`\n- Remotes: !`git remote -v 2>\u002Fdev\u002Fnull | head -10`\n- HEAD ref: !`git rev-parse --abbrev-ref HEAD 2>\u002Fdev\u002Fnull | head -1`\n- Open PR: !`gh pr view --json number,url,headRefName 2>\u002Fdev\u002Fnull | head -10`\n- Base ref: !`git branch -r 2>\u002Fdev\u002Fnull | grep -oE 'origin\u002F(main|master)' | head -1`\n- Commits vs main: !`git log origin\u002Fmain..HEAD --oneline 2>\u002Fdev\u002Fnull | head -20`\n- Commits vs master: !`git log origin\u002Fmaster..HEAD --oneline 2>\u002Fdev\u002Fnull | head -20`\n- Arguments: $ARGUMENTS\n\n## Your task\n\nRebase the current branch onto the latest upstream default branch and force-push to update the remote PR branch.\n\n### Step 0: Validate state\n\n- If HEAD is detached (not on a named branch), stop and tell the user: \"Cannot rebase in detached HEAD state.\"\n- Determine the current branch name.\n\n### Step 1: Determine the target remote\n\n- Run `git remote` to list remotes.\n- If `upstream` exists, use **upstream** as the target remote.\n- Otherwise, use **origin**.\n\n### Step 2: Determine the default branch\n\nIf the user passed `--onto \u003Cbranch>` in the arguments, use that branch as the rebase target instead of the default branch. Otherwise:\n\n- Run `git symbolic-ref refs\u002Fremotes\u002F\u003Cremote>\u002FHEAD 2>\u002Fdev\u002Fnull` (where remote is from Step 1) and extract the branch name.\n- If that fails, check if `\u003Cremote>\u002Fmain` exists with `git rev-parse --verify \u003Cremote>\u002Fmain 2>\u002Fdev\u002Fnull`.\n- If that fails, check if `\u003Cremote>\u002Fmaster` exists with `git rev-parse --verify \u003Cremote>\u002Fmaster 2>\u002Fdev\u002Fnull`.\n- If none work, stop and tell the user: \"Could not determine the default branch. Use --onto \u003Cbranch> to specify.\"\n\n**If the current branch IS the default branch, stop and tell the user: \"You are on the default branch. Rebase is not needed.\"**\n\n### Step 3: Fetch\n\n- Run `git fetch \u003Cremote> \u003Cdefault-branch>`.\n- Report: \"Fetching \u003Cremote>\u002F\u003Cdefault-branch>...\"\n\n### Step 4: Check if rebase is needed\n\n- Run `git merge-base --is-ancestor \u003Cremote>\u002F\u003Cdefault-branch> HEAD` to check if already up to date.\n- If the branch is already up to date (exit code 0 from the above), report \"Already up to date with \u003Cremote>\u002F\u003Cdefault-branch>.\" and skip to Step 6.\n\n### Step 5: Rebase\n\n- Count the commits to be rebased: `git log \u003Cremote>\u002F\u003Cdefault-branch>..HEAD --oneline`\n- Report: \"Rebasing N commits onto \u003Cremote>\u002F\u003Cdefault-branch>...\"\n- Run `git rebase \u003Cremote>\u002F\u003Cdefault-branch>`.\n- **If conflicts arise:**\n  - Show the user which files have conflicts (use `git diff --name-only --diff-filter=U`).\n  - Resolve each conflict. Read the conflicting files, understand both sides, and make the correct resolution.\n  - After resolving each file, run `git add \u003Cfile>`.\n  - Run `git rebase --continue`.\n  - If further conflicts arise, repeat the process.\n  - Report each conflict and how it was resolved.\n  - **If a conflict cannot be resolved confidently**, run `git rebase --abort`, report the issue, and stop. Do not guess at resolutions that could lose work.\n- Report: \"Rebased successfully.\"\n\n### Step 6: Force push (conditional)\n\n- Check if the current branch has a remote tracking branch by running `git rev-parse --abbrev-ref @{upstream} 2>\u002Fdev\u002Fnull`.\n- Use `mcp__github__list_pull_requests` (with `head` set to `\u003Cowner>:\u003Cbranch>`, `state: \"open\"`) to check if there is an open PR.\n- **If there is an open PR:**\n  - Run `git push --force-with-lease` to update the PR branch.\n  - Report: \"Force pushed to origin\u002F\u003Cbranch> (open PR #N).\"\n- **If there is no open PR but there IS a remote tracking branch:**\n  - Run `git push --force-with-lease` to update the remote branch.\n  - Report: \"Force pushed to origin\u002F\u003Cbranch> (no open PR).\"\n- **If there is no remote tracking branch:**\n  - Skip the push.\n  - Report: \"No remote tracking branch. Skipped push.\"\n- **If the MCP GitHub tools are not available**, skip the PR check, and only push if there is a remote tracking branch.\n\n### Step 7: Report summary\n\nPrint a concise summary of what happened:\n- How many commits were rebased (or \"already up to date\")\n- Whether conflicts were resolved and in which files\n- Whether the branch was pushed and to where\n- The PR URL if one exists\n","## Context\n\n- Current branch: !`git branch --show-current`\n- Git status: !`git status --short`\n- Remotes: !`git remote -v 2>\u002Fdev\u002Fnull | head -10`\n- HEAD ref: !`git rev-parse --abbrev-ref HEAD 2>\u002Fdev\u002Fnull | head -1`\n- Open PR: !`gh pr view --json number,url,headRefName 2>\u002Fdev\u002Fnull | head -10`\n- Base ref: !`git branch -r 2>\u002Fdev\u002Fnull | grep -oE 'origin\u002F(main|master)' | head -1`\n- Commits vs main: !`git log origin\u002Fmain..HEAD --oneline 2>\u002Fdev\u002Fnull | head -20`\n- Commits vs master: !`git log origin\u002Fmaster..HEAD --oneline 2>\u002Fdev\u002Fnull | head -20`\n- Arguments: $ARGUMENTS\n\n## Your task\n\nRebase the current branch onto the latest upstream default branch and force-push to update the remote PR branch.\n\n### Step 0: Validate state\n\n- If HEAD is detached (not on a named branch), stop and tell the user: \"Cannot rebase in detached HEAD state.\"\n- Determine the current branch name.\n\n### Step 1: Determine the target remote\n\n- Run `git remote` to list remotes.\n- If `upstream` exists, use **upstream** as the target remote.\n- Otherwise, use **origin**.\n\n### Step 2: Determine the default branch\n\nIf the user passed `--onto \u003Cbranch>` in the arguments, use that branch as the rebase target instead of the default branch. Otherwise:\n\n- Run `git symbolic-ref refs\u002Fremotes\u002F\u003Cremote>\u002FHEAD 2>\u002Fdev\u002Fnull` (where remote is from Step 1) and extract the branch name.\n- If that fails, check if `\u003Cremote>\u002Fmain` exists with `git rev-parse --verify \u003Cremote>\u002Fmain 2>\u002Fdev\u002Fnull`.\n- If that fails, check if `\u003Cremote>\u002Fmaster` exists with `git rev-parse --verify \u003Cremote>\u002Fmaster 2>\u002Fdev\u002Fnull`.\n- If none work, stop and tell the user: \"Could not determine the default branch. Use --onto \u003Cbranch> to specify.\"\n\n**If the current branch IS the default branch, stop and tell the user: \"You are on the default branch. Rebase is not needed.\"**\n\n### Step 3: Fetch\n\n- Run `git fetch \u003Cremote> \u003Cdefault-branch>`.\n- Report: \"Fetching \u003Cremote>\u002F\u003Cdefault-branch>...\"\n\n### Step 4: Check if rebase is needed\n\n- Run `git merge-base --is-ancestor \u003Cremote>\u002F\u003Cdefault-branch> HEAD` to check if already up to date.\n- If the branch is already up to date (exit code 0 from the above), report \"Already up to date with \u003Cremote>\u002F\u003Cdefault-branch>.\" and skip to Step 6.\n\n### Step 5: Rebase\n\n- Count the commits to be rebased: `git log \u003Cremote>\u002F\u003Cdefault-branch>..HEAD --oneline`\n- Report: \"Rebasing N commits onto \u003Cremote>\u002F\u003Cdefault-branch>...\"\n- Run `git rebase \u003Cremote>\u002F\u003Cdefault-branch>`.\n- **If conflicts arise:**\n  - Show the user which files have conflicts (use `git diff --name-only --diff-filter=U`).\n  - Resolve each conflict. Read the conflicting files, understand both sides, and make the correct resolution.\n  - After resolving each file, run `git add \u003Cfile>`.\n  - Run `git rebase --continue`.\n  - If further conflicts arise, repeat the process.\n  - Report each conflict and how it was resolved.\n  - **If a conflict cannot be resolved confidently**, run `git rebase --abort`, report the issue, and stop. Do not guess at resolutions that could lose work.\n- Report: \"Rebased successfully.\"\n\n### Step 6: Force push (conditional)\n\n- Check if the current branch has a remote tracking branch by running `git rev-parse --abbrev-ref @{upstream} 2>\u002Fdev\u002Fnull`.\n- Use `mcp__github__list_pull_requests` (with `head` set to `\u003Cowner>:\u003Cbranch>`, `state: \"open\"`) to check if there is an open PR.\n- **If there is an open PR:**\n  - Run `git push --force-with-lease` to update the PR branch.\n  - Report: \"Force pushed to origin\u002F\u003Cbranch> (open PR #N).\"\n- **If there is no open PR but there IS a remote tracking branch:**\n  - Run `git push --force-with-lease` to update the remote branch.\n  - Report: \"Force pushed to origin\u002F\u003Cbranch> (no open PR).\"\n- **If there is no remote tracking branch:**\n  - Skip the push.\n  - Report: \"No remote tracking branch. Skipped push.\"\n- **If the MCP GitHub tools are not available**, skip the PR check, and only push if there is a remote tracking branch.\n\n### Step 7: Report summary\n\nPrint a concise summary of what happened:\n- How many commits were rebased (or \"already up to date\")\n- Whether conflicts were resolved and in which files\n- Whether the branch was pushed and to where\n- The PR URL if one exists\n",{"name":5,"description":7,"allowed-tools":54,"disable-model-invocation":55},"Bash(git fetch:*), Bash(git rebase:*), Bash(git push:*), Bash(git log:*), Bash(git diff:*), Bash(git branch:*), Bash(git rev-parse:*), Bash(git symbolic-ref:*), Bash(git merge-base:*), mcp__github__list_pull_requests",true,"master","427f62a9fc82624977516767979411f885161ac5","agents\u002Fskills\u002Frebase",4,"https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots","https:\u002F\u002Fgithub.com\u002Fdrn","https:\u002F\u002Fdrn.dev","CTO & Co-Founder @thanx","2026-11-11 07:28:39",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":55},[67,70,73],{"tool":68,"command":69},"npx","npx skills add drn\u002Fdots --skill rebase",{"tool":71,"command":72},"bunx","bunx skills add drn\u002Fdots --skill rebase",{"tool":74,"command":75},"pnpm","pnpm dlx skills add drn\u002Fdots --skill rebase","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Frebase\u002FSKILL.md",[],[79,105,123,135,160,178],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":88,"publishedAt":49},"01M70KJSG2P5Y3N95MGSGKJ8VA","batch-pr-review","Review a batch of pull requests together, describe every change in plain language, and build a private Claude artifact that eases human review, with a severity-tagged and verified findings list. Use when asked to review several PRs, a stack of PRs, PRs listed in a Slack thread or message, or to summarize a batch of PRs for a reviewer.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fbatch-pr-review\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",[89,90,45,91,92,93,24,26,94,95,96,97,98,99,100,101,37,102,103,104],"batch pr review","batch","pr review","review","reviewer","scripts","human","artifact","message","write","read","stack","gh pr","change","pull requests","slack",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":112,"publishedAt":49},"01M6BV2G3ZAS76C40S3YBY6R61","plannotator-setup-goal","Create reviewed Codex goal setup packages for long-running \u002Fgoal work. Use when the user wants to turn an idea, backlog, project mission, or vague objective into durable goal files under a project goals slug folder, with Plannotator review gates for brief, narrative plan with acceptance criteria, verification, blockers, and the final \u002Fgoal prompt.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fplannotator-setup-goal\u002FSKILL.md",[111],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[113,114,115,116,117,118,119,120,121,122,92],"plannotator setup goal","setup","verification","plan","plannotator review","brief","acceptance","create","packages","codex",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":49},"01M6BV26Y6GTDMQZYXFRWKEC08","plannotator-annotate","Open Plannotator's annotation UI for a markdown file, converted HTML file, URL, or folder and then respond to the returned annotations.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fplannotator-annotate\u002FSKILL.md",[],[130,131,132,133,134],"plannotator annotate","markdown","open","ui","file",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":49},"01M6BV44RGGTRRFGWMYCR3BQ1P","write-skill","Create or improve a Claude Code skill\u002Fslash command with best practices for structure, dynamic context, and safety. Use for creating new skills, improving existing ones, or learning skill authoring.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fwrite-skill\u002FSKILL.md",[141],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[98,143,144,145,146,147,148,149,150,33,151,152,153,154,155,156,157,158,159,120],"write skill","with","authoring","code skill","code","for","structure","claude code skill","context","command","improve","learning","Safety","best practices","Existing","new","skill authoring",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":49},"01M6BV4390BFK30F1T51SAJPAV","wrapup","End-of-session checklist that detects loose ends — uncommitted changes, unmerged branches, learnings to capture, handoffs needed — and routes to the right skills. Use for session closeout, wrapping up, end of day, or \"anything else to capture\".","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fwrapup\u002FSKILL.md",[],[162,167,168,169,148,170,171,172,173,174,33,175,176,177],"session closeout","up","changes","end of day","end","branches","learnings","checklist","session","closeout","capture",{"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":184,"publishedAt":49},"01M6BV41ZZ051JX2B3CB5WARZM","tts","Read text aloud using text-to-speech. Use when the user says \"speak to me\", \"read to me\", \"read this aloud\", \"say this\", \"speak the summary\", or asks to hear something spoken.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Ftts\u002FSKILL.md",[],[180,33,185,99,186,187,188,189,24,190,191,192],"user","speak","text","speech","say","text-to-speech","me","summary"]