[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71T14N7RAXAXJ18MPBH8ZPR":3,"skill-same:01M71T14N7RAXAXJ18MPBH8ZPR":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":31,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":65},"01M71T14N7RAXAXJ18MPBH8ZPR","sync-branches",null,"Use to bring every local branch and worktree across your sibling git repos up to date with origin\u002Fmain in one pass — fetches, fast-forwards where safe, and reports conflicts without forcing anything. For creating a NEW worktree to isolate feature work, use \u002Fclaudna:worktree instead.","Claudfather\u002FclauDNA","Claudfather","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F281278891?v=4","01M71SX82K0TBGQ394AB2G1T5Z","01M71SX83CE1S8YC06K9P3P962",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fsync-branches\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"sync branches","branches","sync","local","one","new","for","true","bring","with","forcing","feature","across","main","conflicts","reports","up","use","branch","work","2026-11-10 13:02:02",false,"---\nname: sync-branches\nuser-invocable: true\ndescription: \"Use to bring every local branch and worktree across your sibling git repos up to date with origin\u002Fmain in one pass — fetches, fast-forwards where safe, and reports conflicts without forcing anything. For creating a NEW worktree to isolate feature work, use \u002Fclaudna:worktree instead.\"\nargument-hint: \"[workspace-root]\"\n---\n\n# Sync Branches\n\n> **Codex:** Read `..\u002F_shared\u002Fcodex-tools.md` before following this skill. Apply its tool, root and dispatch mappings throughout.\n\nFetch latest origin\u002Fmain and merge into all active local branches and worktrees, across every sibling repo in the workspace. Designed to run manually or on a recurring interval via `\u002Floop 2h \u002Fclaudna:sync-branches`.\n\n**Important**: This assumes a multi-repo workspace — each sibling directory under the workspace root has its own `.git`. Iterate over all of them, not just the current repo.\n\n## Instructions\n\n### Step 1: Determine the workspace root\n\nIf the user names a workspace root (the `[workspace-root]` argument), use it. Otherwise default to the parent directory of the current repo's root:\n\n```bash\ndirname $(git rev-parse --show-toplevel)\n```\n\n### Step 2: Discover repos\n\n```bash\nfor dir in \u003Cworkspace-root>\u002F*\u002F; do if [ -d \"$dir\u002F.git\" ]; then echo \"$dir\"; fi; done\n```\n\n### Step 3: For each repo — fetch, list branches, sync\n\n```bash\ngit -C \u003Crepo-path> fetch origin main\ngit -C \u003Crepo-path> worktree list\ngit -C \u003Crepo-path> branch --format='%(refname:short) %(upstream:track)' | grep -v HEAD\n```\n\nIdentify:\n- The current branch in the main working tree\n- All worktree branches\n- Any other local branches with a remote\n\n### Step 4: Sync the main working tree\n\nIf on main:\n```bash\ngit -C \u003Crepo-path> pull origin main\n```\n\nIf on a feature branch, check for uncommitted changes first — never stash (a pre-existing unrelated stash entry on the stack would get silently popped into this branch):\n```bash\ngit -C \u003Crepo-path> status --porcelain\n```\n\nIf clean, merge:\n```bash\ngit -C \u003Crepo-path> merge origin\u002Fmain\n```\n\nIf dirty, skip and report — same as Step 5 does for worktrees:\n```\nSkipped (uncommitted changes)\n```\n\nIf merge fails, abort and report — do NOT force anything:\n```bash\ngit -C \u003Crepo-path> merge --abort\n```\n\n### Step 5: Sync each worktree\n\nFor each worktree (skip if it has uncommitted changes — just report it):\n\n```bash\ngit -C \u003Cworktree-path> status --porcelain\n```\n\nIf clean, merge:\n```bash\ngit -C \u003Cworktree-path> merge origin\u002Fmain\n```\n\nIf merge conflicts, abort and report — do NOT force anything:\n```bash\ngit -C \u003Cworktree-path> merge --abort\n```\n\n### Step 6: Report\n\nShow a summary:\n\n| Repo | Branch | Worktree? | Status |\n|------|--------|-----------|--------|\n| repo-a | main | - | Up to date |\n| repo-a | feature\u002Fx | \u002Fpath\u002Fto\u002Fwt | Merged (3 new commits) |\n| repo-b | feature\u002Fy | \u002Fpath\u002Fto\u002Fwt | Skipped (uncommitted changes) |\n| repo-c | feature\u002Fz | - | Conflict — needs manual merge |\n\nIf running via `\u002Floop`, keep the output concise — just the table unless there are conflicts.\n","# Sync Branches\n\n> **Codex:** Read `..\u002F_shared\u002Fcodex-tools.md` before following this skill. Apply its tool, root and dispatch mappings throughout.\n\nFetch latest origin\u002Fmain and merge into all active local branches and worktrees, across every sibling repo in the workspace. Designed to run manually or on a recurring interval via `\u002Floop 2h \u002Fclaudna:sync-branches`.\n\n**Important**: This assumes a multi-repo workspace — each sibling directory under the workspace root has its own `.git`. Iterate over all of them, not just the current repo.\n\n## Instructions\n\n### Step 1: Determine the workspace root\n\nIf the user names a workspace root (the `[workspace-root]` argument), use it. Otherwise default to the parent directory of the current repo's root:\n\n```bash\ndirname $(git rev-parse --show-toplevel)\n```\n\n### Step 2: Discover repos\n\n```bash\nfor dir in \u003Cworkspace-root>\u002F*\u002F; do if [ -d \"$dir\u002F.git\" ]; then echo \"$dir\"; fi; done\n```\n\n### Step 3: For each repo — fetch, list branches, sync\n\n```bash\ngit -C \u003Crepo-path> fetch origin main\ngit -C \u003Crepo-path> worktree list\ngit -C \u003Crepo-path> branch --format='%(refname:short) %(upstream:track)' | grep -v HEAD\n```\n\nIdentify:\n- The current branch in the main working tree\n- All worktree branches\n- Any other local branches with a remote\n\n### Step 4: Sync the main working tree\n\nIf on main:\n```bash\ngit -C \u003Crepo-path> pull origin main\n```\n\nIf on a feature branch, check for uncommitted changes first — never stash (a pre-existing unrelated stash entry on the stack would get silently popped into this branch):\n```bash\ngit -C \u003Crepo-path> status --porcelain\n```\n\nIf clean, merge:\n```bash\ngit -C \u003Crepo-path> merge origin\u002Fmain\n```\n\nIf dirty, skip and report — same as Step 5 does for worktrees:\n```\nSkipped (uncommitted changes)\n```\n\nIf merge fails, abort and report — do NOT force anything:\n```bash\ngit -C \u003Crepo-path> merge --abort\n```\n\n### Step 5: Sync each worktree\n\nFor each worktree (skip if it has uncommitted changes — just report it):\n\n```bash\ngit -C \u003Cworktree-path> status --porcelain\n```\n\nIf clean, merge:\n```bash\ngit -C \u003Cworktree-path> merge origin\u002Fmain\n```\n\nIf merge conflicts, abort and report — do NOT force anything:\n```bash\ngit -C \u003Cworktree-path> merge --abort\n```\n\n### Step 6: Report\n\nShow a summary:\n\n| Repo | Branch | Worktree? | Status |\n|------|--------|-----------|--------|\n| repo-a | main | - | Up to date |\n| repo-a | feature\u002Fx | \u002Fpath\u002Fto\u002Fwt | Merged (3 new commits) |\n| repo-b | feature\u002Fy | \u002Fpath\u002Fto\u002Fwt | Skipped (uncommitted changes) |\n| repo-c | feature\u002Fz | - | Conflict — needs manual merge |\n\nIf running via `\u002Floop`, keep the output concise — just the table unless there are conflicts.\n",{"name":5,"description":7,"argument-hint":43,"user-invocable":44},"[workspace-root]",true,"fc776f04574726e261087dbb521c1831bf0ea9d5","skills\u002Fsync-branches",1,"https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA","https:\u002F\u002Fgithub.com\u002FClaudfather","https:\u002F\u002Fcrog.gg","Rise of the machines","2026-11-12 04:46:22",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":44},[55,58,61],{"tool":56,"command":57},"npx","npx skills add Claudfather\u002FclauDNA --skill sync-branches",{"tool":59,"command":60},"bunx","bunx skills add Claudfather\u002FclauDNA --skill sync-branches",{"tool":62,"command":63},"pnpm","pnpm dlx skills add Claudfather\u002FclauDNA --skill sync-branches","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fsync-branches\u002FSKILL.md",[],[67,92,102,119,143,159],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":38},"01M71T1STJ99BE1C0JYHCQW0XN","example-review","Use when you want to review pull requests with detailed, actionable feedback on code quality, correctness, and maintainability.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fvalid-package\u002FSKILL.md",[],[74,75,76,77,78,27,79,80,81,82,83,35,84,85,86,87,88,89,90,91],"review","example","example review","actionable","pull requests","code","correctness","Bash","you","when","gh","gh pr","diff","view","pr","code quality","feedback","pull",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":38},"01M71T1RMCD30MAJC954JC7580","bad-skill","Too short","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Ffailing-package\u002FSKILL.md",[],[99,100,101],"bad","bad skill","short",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":38},"01M71T1NS97NJ2MQ993V7FBES7","worktree","Use when starting feature work that needs isolation from the current workspace, or when running multiple Claude sessions in parallel on different branches — creates and manages git worktrees. For fetching latest main into every existing worktree and branch across your sibling repos, use \u002Fclaudna:sync-branches instead.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fworktree\u002FSKILL.md",[],[104,20,109,110,111,112,113,114,37,30,115,116,83,117,31,19,36,118,24,29],"repos","git","isolation","running","sessions","worktrees","needs","git worktrees","claude sessions","parallel",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":38},"01M71T1HNVG1CZY8P904P6RB7P","weigh-development-paths","Use when at a development junction with multiple viable approaches — architecture choices, refactoring strategies, where to put new code, or which pattern to follow. Triggers on 'which approach', 'how should I', 'Option A vs B', or any point where the next step isn't obvious and the wrong choice creates rework.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fweigh-development-paths\u002FSKILL.md",[],[126,127,128,129,130,131,132,133,134,135,136,137,138,79,83,139,23,140,141,142],"development","weigh development paths","paths","next step","path","refactoring","choice","pattern","at","how","next","strategies","architecture","auto","junction","option","which",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":38},"01M71T1ECV1T5E168GH70AY5B3","verify-completion","Use when about to claim work is complete, fixed, or passing -- requires running verification commands and confirming output before making any success claims.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fverify-completion\u002FSKILL.md",[],[150,151,152,153,112,25,154,155,37,156,157,158,83,35],"verify completion","verify","claim","complete","commands","about","verification","claims","output",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":170,"publishedAt":38},"01M71T1BC1HA7XQH0Q1H574FYS","vercel","Use for Vercel operations — deploy to production or preview (or roll back), view, filter, or debug deployment logs, or check project status (deployments, domains, env vars, config). Replaces \u002Fvercel-deploy, \u002Fvercel-logs, \u002Fvercel-status.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fvercel\u002FSKILL.md",[165],{"categoryNo":166,"categoryName":167,"taxonomyType":168,"taxonomyTypeDesc":169},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[161,171,172,173,174,175,176,177,178,35,179,25,180,181,182,183,24,87,184,185],"inspection","check","filter","env","logs","preview","debug deployment","debug","deployments","domains","deployment","env vars","project","project status","back"]