[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-roo-code-push":3,"mdc--15gmdh-key":31,"related-org-roo-code-push":941,"related-repo-roo-code-push":1101},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"push","push local commits to remote repositories","Push local commits or existing unpushed commits to the remote without opening pull requests. Stage and commit any uncommitted changes first, keep existing unpushed history when present, and report the follow-up pull request command.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"roo-code","Roo Code","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Froo-code.png","RooCodeInc",[13,17],{"name":14,"slug":15,"type":16},"GitHub","github","tag",{"name":18,"slug":19,"type":16},"Git","git",5,"https:\u002F\u002Fgithub.com\u002FRooCodeInc\u002FRoomote","2026-07-16T06:02:03.206293",null,0,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"Your own cloud coding agent. Everything you want from an AI engineering teammate, without building from scratch or paying for a black box.","https:\u002F\u002Fgithub.com\u002FRooCodeInc\u002FRoomote\u002Ftree\u002FHEAD\u002Fpackages\u002Fcloud-agents\u002Fsrc\u002Fserver\u002Fworkflows\u002Fskills\u002Fstandard\u002Fpush","---\nname: push\ndescription: Push local commits or existing unpushed commits to the remote without opening pull requests. Stage and commit any uncommitted changes first, keep existing unpushed history when present, and report the follow-up pull request command.\n---\n\n\u003Crole>\nYou are executing a command to push work to remote branches without creating a pull request. Stage and commit any unstaged changes first when needed, keep existing unpushed commits when present, then push the result.\n\u003C\u002Frole>\n\n\u003Cshared_core_loading>\n\u003Crule>If the `implement-changes` skill is not currently loaded into your context, load that skill before deeper execution.\u003C\u002Frule>\n\u003Crule>When loading `implement-changes` from this child skill, inherit only the `core-contract` section and the matching parent child-path contract for this workflow.\u003C\u002Frule>\n\u003Crule>Do not execute `implement-changes`'s default workflow from this child skill unless the caller explicitly instructed the parent default path to run first.\u003C\u002Frule>\n\u003Crule>This child skill remains the canonical owner of its delivery mechanics even when the parent skill is loaded for shared context.\u003C\u002Frule>\n\u003C\u002Fshared_core_loading>\n\n\u003Cworkflow>\n  \u003Coverview>Push the current changes or existing unpushed commits to remote branches without opening pull requests, handling both single-repository and multi-repository workspaces.\u003C\u002Foverview>\n  \u003Cinitial_determination>\n    \u003Cdetection_patterns>\n      \u003Cpattern type=\"single_repo\">\n        \u003Cindicator>The current directory contains a `.git` directory.\u003C\u002Findicator>\n      \u003C\u002Fpattern>\n      \u003Cpattern type=\"multi_repo\">\n        \u003Cindicator>The current directory contains child repositories rather than being the active repository itself.\u003C\u002Findicator>\n      \u003C\u002Fpattern>\n      \u003Cpattern type=\"no_changes\">\n        \u003Cindicator>No repository has uncommitted changes or unpushed commits after detection.\u003C\u002Findicator>\n      \u003C\u002Fpattern>\n    \u003C\u002Fdetection_patterns>\n  \u003C\u002Finitial_determination>\n\n  \u003Cphase name=\"analysis\">\n    \u003Cdescription>Find every repository that requires a pushed branch and determine the names and commit metadata that should be used.\u003C\u002Fdescription>\n    \u003Csteps>\n      \u003Cstep number=\"1\">\n        \u003Ctitle>Detect the workspace layout and changed repositories\u003C\u002Ftitle>\n        \u003Cdescription>Establish whether the workflow should operate on one repository or many, then collect all repositories that need a branch push.\u003C\u002Fdescription>\n        \u003Cactions>\n          \u003Caction>Run `echo \"=== Workspace Detection ===\" && pwd && echo \"\" && if [ -d \".git\" ]; then echo \"WORKSPACE_TYPE: SINGLE_REPO\"; echo \"REPO_DIR: $(pwd)\"; echo \"REPO_NAME: $(git remote get-url origin 2>\u002Fdev\u002Fnull | sed -E 's|.*[:\u002F]([^\u002F]+\u002F[^\u002F]+)$|\\1|' | sed 's\u002F\\.git$\u002F\u002F' || basename $(pwd))\"; else echo \"WORKSPACE_TYPE: MULTI_REPO\"; echo \"=== Repos with Changes ===\"; workspace_root=$(pwd); shopt -s nullglob; for repo_dir in *\u002F; do if [ -d \"$workspace_root\u002F${repo_dir}.git\" ]; then cd \"$workspace_root\u002F$repo_dir\"; has_changes=false; if [ -n \"$(git status --porcelain 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if git rev-parse --abbrev-ref --symbolic-full-name @{u} >\u002Fdev\u002Fnull 2>&1; then if [ -n \"$(git log @{u}..HEAD --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; elif [ -n \"$(git log HEAD --not --remotes=origin --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if [ \"$has_changes\" = \"true\" ]; then repo_name=$(git remote get-url origin 2>\u002Fdev\u002Fnull | sed -E 's|.*[:\u002F]([^\u002F]+\u002F[^\u002F]+)$|\\1|' | sed 's\u002F\\.git$\u002F\u002F' || basename $(pwd)); echo \"CHANGED_REPO: ${repo_dir%\u002F} -> $repo_name\"; fi; fi; done; cd \"$workspace_root\"; for owner_dir in *\u002F; do if [ ! -d \"$workspace_root\u002F${owner_dir}.git\" ]; then cd \"$workspace_root\"; for repo_dir in \"$owner_dir\"*\u002F; do if [ -d \"$workspace_root\u002F${repo_dir}.git\" ]; then cd \"$workspace_root\u002F$repo_dir\"; has_changes=false; if [ -n \"$(git status --porcelain 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if git rev-parse --abbrev-ref --symbolic-full-name @{u} >\u002Fdev\u002Fnull 2>&1; then if [ -n \"$(git log @{u}..HEAD --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; elif [ -n \"$(git log HEAD --not --remotes=origin --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if [ \"$has_changes\" = \"true\" ]; then repo_name=$(git remote get-url origin 2>\u002Fdev\u002Fnull | sed -E 's|.*[:\u002F]([^\u002F]+\u002F[^\u002F]+)$|\\1|' | sed 's\u002F\\.git$\u002F\u002F' || basename $(pwd)); echo \"CHANGED_REPO: ${repo_dir%\u002F} -> $repo_name\"; fi; fi; done; cd \"$workspace_root\"; fi; done; shopt -u nullglob; cd \"$workspace_root\"; fi`.\u003C\u002Faction>\n          \u003Caction>Stop and report that there is nothing to push if the detection phase finds no changed repositories.\u003C\u002Faction>\n        \u003C\u002Factions>\n        \u003Cvalidation>The target repository list is explicit and complete before any commits or pushes occur.\u003C\u002Fvalidation>\n      \u003C\u002Fstep>\n      \u003Cstep number=\"2\">\n        \u003Ctitle>Determine the branch name and commit message for each repository\u003C\u002Ftitle>\n        \u003Cdescription>Inspect the outstanding work so the pushed branch and any required commit reflect the actual intent of the change.\u003C\u002Fdescription>\n        \u003Cactions>\n          \u003Caction>For each repository, run `cd \u003CREPO_DIR> && echo \"=== Analyzing $(basename $(pwd)) ===\" && git remote get-url origin && git status && (git diff --stat HEAD 2>\u002Fdev\u002Fnull || git diff --stat) && (if git rev-parse --abbrev-ref --symbolic-full-name @{u} >\u002Fdev\u002Fnull 2>&1; then git log @{u}..HEAD --oneline; else git log HEAD --not --remotes=origin --oneline; fi || echo \"No commits yet\")`.\u003C\u002Faction>\n          \u003Caction>Choose a branch name using `feature\u002F\u003Cshort-description>-\u003CTASK_ID>` or `fix\u002F\u003Cshort-description>-\u003CTASK_ID>`.\u003C\u002Faction>\n          \u003Caction>Choose a conventional commit message for repositories that still need a local commit.\u003C\u002Faction>\n        \u003C\u002Factions>\n        \u003Cvalidation>Each repository has a branch name, repository identifier, and commit message when a commit is required.\u003C\u002Fvalidation>\n      \u003C\u002Fstep>\n    \u003C\u002Fsteps>\n  \u003C\u002Fphase>\n\n  \u003Cphase name=\"implementation\">\n    \u003Cdescription>Create or reuse the delivery head branch, commit pending work when necessary, and push the resulting branch to the remote.\u003C\u002Fdescription>\n    \u003Csteps>\n      \u003Cstep number=\"3\">\n        \u003Ctitle>Create the branch and commit pending work\u003C\u002Ftitle>\n        \u003Cdescription>Ensure the repository is on a delivery branch created from the provided base\u002Fdefault branch and convert working tree changes into a commit when needed.\u003C\u002Fdescription>\n        \u003Cactions>\n          \u003Caction>For each repository, determine the current branch and the provided base\u002Fdefault branch for this run. If no branch is provided for the run, use the repository default branch.\u003C\u002Faction>\n          \u003Caction>Fetch the provided base branch with `cd \u003CREPO_DIR> && git fetch origin \u003Cbase-branch-for-this-repo>`.\u003C\u002Faction>\n          \u003Caction>If a new delivery branch is needed, run `cd \u003CREPO_DIR> && git checkout -b \u003Cbranch-name-for-this-repo> origin\u002F\u003Cbase-branch-for-this-repo>` before staging or committing pending work. If already on an explicit existing delivery branch for this task, keep it.\u003C\u002Faction>\n          \u003Caction>For each repository with working tree changes, run `cd \u003CREPO_DIR> && git add -A && git diff --cached --name-status`.\u003C\u002Faction>\n          \u003Caction>After `git add -A`, explicitly compare `git diff --cached --name-status` against the intended deliverables for this task. If any staged path is unexpected, unstage it with `git restore --staged \u003Cpath>` before committing. Treat generated or untracked files as excluded by default unless they are clearly part of the requested delivery.\u003C\u002Faction>\n          \u003Caction>After the staged-path review is complete, for each repository with working tree changes run `cd \u003CREPO_DIR> && git commit -m '\u003Ccommit-message-for-this-repo>'`.\u003C\u002Faction>\n          \u003Caction>If the repository already has unpushed commits and no working tree changes, skip only the commit while still ensuring the branch is correct.\u003C\u002Faction>\n          \u003Caction>If hooks fail, fix the validation issue rather than bypassing `--no-verify` unless no safer option remains.\u003C\u002Faction>\n        \u003C\u002Factions>\n        \u003Cvalidation>Each repository is on a delivery branch created from the provided base\u002Fdefault branch, or is explicitly identified as already on an existing delivery branch for this task.\u003C\u002Fvalidation>\n      \u003C\u002Fstep>\n      \u003Cstep number=\"4\">\n        \u003Ctitle>Push the branch for each repository\u003C\u002Ftitle>\n        \u003Cdescription>Publish the resulting branch to the remote so the work is available for later pull request creation.\u003C\u002Fdescription>\n        \u003Cactions>\n          \u003Caction>For each repository, run `cd \u003CREPO_DIR> && if git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>\u002Fdev\u002Fnull; then git push; else git push -u origin HEAD; fi`.\u003C\u002Faction>\n          \u003Caction>Record the pushed repository and branch for final reporting.\u003C\u002Faction>\n        \u003C\u002Factions>\n        \u003Cvalidation>Every targeted repository has a confirmed pushed branch or a clearly reported blocker.\u003C\u002Fvalidation>\n      \u003C\u002Fstep>\n    \u003C\u002Fsteps>\n  \u003C\u002Fphase>\n\n  \u003Cphase name=\"validation\">\n    \u003Cdescription>Summarize the pushed branches clearly so the user can move directly into pull request creation if desired.\u003C\u002Fdescription>\n    \u003Csteps>\n      \u003Cstep number=\"5\">\n        \u003Ctitle>Report the pushed branches and next step\u003C\u002Ftitle>\n        \u003Cdescription>Provide the repository, branch, and follow-up pull-request path for each pushed target.\u003C\u002Fdescription>\n        \u003Cactions>\n          \u003Caction>Report each repository and pushed branch in a concise structured summary.\u003C\u002Faction>\n          \u003Caction>Offer pull request creation as the follow-up step for each pushed branch: a `create-pr` run delivers it through the provider-neutral `mcp__roomote__manage_source_control` tool, so do not suggest provider-specific CLI commands such as `gh pr create`.\u003C\u002Faction>\n          \u003Caction>Mention the org-configured conflict resolver label supplied in the task context so a follow-up pull request run can apply it.\u003C\u002Faction>\n        \u003C\u002Factions>\n        \u003Cvalidation>The final report includes every pushed branch and gives the user an immediate next step for opening a pull request.\u003C\u002Fvalidation>\n      \u003C\u002Fstep>\n    \u003C\u002Fsteps>\n  \u003C\u002Fphase>\n\n\u003Ccompletion_criteria>\n\u003Ccriterion>Every repository with changes or unpushed commits has been processed exactly once.\u003C\u002Fcriterion>\n\u003Ccriterion>Each targeted repository has a pushed branch or a clearly surfaced blocker.\u003C\u002Fcriterion>\n\u003Ccriterion>The final summary tells the user how to open a pull request for each pushed branch.\u003C\u002Fcriterion>\n\u003C\u002Fcompletion_criteria>\n\u003C\u002Fworkflow>\n\n\u003Cbest_practices>\n\u003Cguideline priority=\"high\">\n\u003Crule>Push one branch per changed repository rather than mixing repository state in the final report.\u003C\u002Frule>\n\u003Crationale>Repository-specific reporting makes later pull request creation predictable and auditable.\u003C\u002Frationale>\n\u003Cexceptions>None.\u003C\u002Fexceptions>\n\u003C\u002Fguideline>\n\u003Cguideline priority=\"high\">\n\u003Crule>Use conventional commit messages and branch names that encode the intent of the change.\u003C\u002Frule>\n\u003Crationale>Pushed work should remain understandable when reviewed later outside the current task context.\u003C\u002Frationale>\n\u003Cexceptions>Use repository-specific conventions if they are stricter than the default pattern.\u003C\u002Fexceptions>\n\u003C\u002Fguideline>\n\u003Cguideline priority=\"medium\">\n\u003Crule>Respect validation hooks and fix their failures instead of bypassing them casually.\u003C\u002Frule>\n\u003Crationale>These flows are meant to keep repository state clean, not just to move bytes to a remote.\u003C\u002Frationale>\n\u003Cexceptions>Only bypass as a last resort after the root cause has been investigated and documented.\u003C\u002Fexceptions>\n\u003C\u002Fguideline>\n\u003C\u002Fbest_practices>\n\n\u003Cpatterns>\n  \u003Cpattern name=\"workspace_detection\">\n    \u003Cdescription>Detect whether work must happen in one repository or many before issuing git commands.\u003C\u002Fdescription>\n    \u003Ccontext>Use for any branch-push workflow.\u003C\u002Fcontext>\n    \u003Ctemplate>Detect repositories, gather changed targets, and short-circuit if there is nothing to push.\u003C\u002Ftemplate>\n  \u003C\u002Fpattern>\n  \u003Cpattern name=\"push_without_pull_request\">\n    \u003Cdescription>Push work remotely without immediately opening a pull request.\u003C\u002Fdescription>\n    \u003Ccontext>Use when the user wants backup, collaboration, or later review rather than immediate PR creation.\u003C\u002Fcontext>\n    \u003Ctemplate>Choose branch and commit metadata, create or reuse the branch, push it, then report the follow-up PR command.\u003C\u002Ftemplate>\n  \u003C\u002Fpattern>\n\u003C\u002Fpatterns>\n\n\u003Cdecision_guidance>\n\u003Cprinciples>\n\u003Cprinciple>Prefer pushing work remotely over leaving it stranded in ephemeral local state.\u003C\u002Fprinciple>\n\u003Cprinciple>Do not create a pull request when the user explicitly asked only for a branch push.\u003C\u002Fprinciple>\n\u003Cprinciple>Stop and report blockers rather than pretending the branch was pushed when it was not.\u003C\u002Fprinciple>\n\u003C\u002Fprinciples>\n\u003Cconstraints>Use only non-interactive git commands, keep hook-based checks, and avoid destructive history rewriting unless the user explicitly asked for it.\u003C\u002Fconstraints>\n\u003Cboundaries>\n\u003Crule>This workflow handles branch creation, optional commits, remote push, and push reporting.\u003C\u002Frule>\n\u003Crule>This workflow does not open pull requests automatically.\u003C\u002Frule>\n\u003Crule>When authentication, branch protection, or remote policy blocks the push, surface the blocker and stop.\u003C\u002Frule>\n\u003C\u002Fboundaries>\n\u003C\u002Fdecision_guidance>\n\n\u003Cexamples>\n  \u003Cexample name=\"push_two_repository_workspace\">\n    \u003Cscenario>The workspace contains two repositories with pending work that should be pushed remotely but not yet packaged into pull requests.\u003C\u002Fscenario>\n    \u003Cuser_request>Push these changes to branches but do not create PRs.\u003C\u002Fuser_request>\n    \u003Cworkflow>\n      \u003Cstep number=\"1\">\n        \u003Cdescription>Identify both repositories that have work to push.\u003C\u002Fdescription>\n        \u003Capproach>Run the workspace detection command and record the changed repositories.\u003C\u002Fapproach>\n        \u003Cexpected_outcome>Both repositories are queued for branch creation and push.\u003C\u002Fexpected_outcome>\n      \u003C\u002Fstep>\n      \u003Cstep number=\"2\">\n        \u003Cdescription>Create the branch and commit state for each repository.\u003C\u002Fdescription>\n        \u003Capproach>Choose branch names and conventional commit messages based on the repository-specific diffs.\u003C\u002Fapproach>\n        \u003Cexpected_outcome>Each repository is on a reviewable branch with the local work committed when needed.\u003C\u002Fexpected_outcome>\n      \u003C\u002Fstep>\n      \u003Cstep number=\"3\">\n        \u003Cdescription>Push both branches and report the follow-up pull request commands.\u003C\u002Fdescription>\n        \u003Capproach>Run `git push` or `git push -u origin HEAD` per repository and summarize the next command for each one.\u003C\u002Fapproach>\n        \u003Cexpected_outcome>The user can immediately create pull requests later without losing the work.\u003C\u002Fexpected_outcome>\n      \u003C\u002Fstep>\n    \u003C\u002Fworkflow>\n    \u003Ccompletion>The work is safely pushed to remote branches and the user receives exact next-step commands.\u003C\u002Fcompletion>\n    \u003Ckey_takeaways>\n      \u003Ctakeaway>Pushing a branch is a valid endpoint even when pull request creation is intentionally deferred.\u003C\u002Ftakeaway>\n    \u003C\u002Fkey_takeaways>\n  \u003C\u002Fexample>\n\u003C\u002Fexamples>\n\n\u003Cerror_handling>\n\u003Cscenario name=\"no_repository_needs_push\">\n\u003Cproblem>There is nothing to commit or push.\u003C\u002Fproblem>\n\u003Ccauses>\n\u003Ccause>The workspace is already clean and synchronized with the remote.\u003C\u002Fcause>\n\u003Ccause>The requested work was already pushed earlier.\u003C\u002Fcause>\n\u003C\u002Fcauses>\n\u003Crecovery>Stop and tell the user that no push action is needed.\u003C\u002Frecovery>\n\u003C\u002Fscenario>\n\u003Cscenario name=\"push_blocked_by_validation_or_permissions\">\n\u003Cproblem>The branch cannot be pushed.\u003C\u002Fproblem>\n\u003Ccauses>\n\u003Ccause>Repository hooks fail.\u003C\u002Fcause>\n\u003Ccause>Remote permissions, branch protection, or authentication prevent the push.\u003C\u002Fcause>\n\u003C\u002Fcauses>\n\u003Crecovery>Fix the validation issue when possible; otherwise surface the exact blocker and stop rather than claiming the push succeeded.\u003C\u002Frecovery>\n\u003C\u002Fscenario>\n\u003C\u002Ferror_handling>\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,44,104],{"type":37,"tag":38,"props":39,"children":40},"element","role",{},[41],{"type":42,"value":43},"text","\nYou are executing a command to push work to remote branches without creating a pull request. Stage and commit any unstaged changes first when needed, keep existing unpushed commits when present, then push the result.\n",{"type":37,"tag":45,"props":46,"children":47},"p",{},[48,50,65,85,97,102],{"type":42,"value":49},"\u003Cshared_core_loading>\n",{"type":37,"tag":51,"props":52,"children":53},"rule",{},[54,56,63],{"type":42,"value":55},"If the ",{"type":37,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":42,"value":62},"implement-changes",{"type":42,"value":64}," skill is not currently loaded into your context, load that skill before deeper execution.",{"type":37,"tag":51,"props":66,"children":67},{},[68,70,75,77,83],{"type":42,"value":69},"When loading ",{"type":37,"tag":57,"props":71,"children":73},{"className":72},[],[74],{"type":42,"value":62},{"type":42,"value":76}," from this child skill, inherit only the ",{"type":37,"tag":57,"props":78,"children":80},{"className":79},[],[81],{"type":42,"value":82},"core-contract",{"type":42,"value":84}," section and the matching parent child-path contract for this workflow.",{"type":37,"tag":51,"props":86,"children":87},{},[88,90,95],{"type":42,"value":89},"Do not execute ",{"type":37,"tag":57,"props":91,"children":93},{"className":92},[],[94],{"type":42,"value":62},{"type":42,"value":96},"'s default workflow from this child skill unless the caller explicitly instructed the parent default path to run first.",{"type":37,"tag":51,"props":98,"children":99},{},[100],{"type":42,"value":101},"This child skill remains the canonical owner of its delivery mechanics even when the parent skill is loaded for shared context.",{"type":42,"value":103},"\n\u003C\u002Fshared_core_loading>",{"type":37,"tag":105,"props":106,"children":107},"workflow",{},[108,110,116,117,169,170,310,311,497,498,560,583,649,703,755,876],{"type":42,"value":109},"\n  ",{"type":37,"tag":111,"props":112,"children":113},"overview",{},[114],{"type":42,"value":115},"Push the current changes or existing unpushed commits to remote branches without opening pull requests, handling both single-repository and multi-repository workspaces.",{"type":42,"value":109},{"type":37,"tag":118,"props":119,"children":120},"initial_determination",{},[121,123,168],{"type":42,"value":122},"\n    ",{"type":37,"tag":124,"props":125,"children":126},"detection_patterns",{},[127,129,143,144,155,156,167],{"type":42,"value":128},"\n      ",{"type":37,"tag":130,"props":131,"children":133},"pattern",{"type":132},"single_repo",[134,136,142],{"type":42,"value":135},"\n        ",{"type":37,"tag":137,"props":138,"children":139},"indicator",{},[140],{"type":42,"value":141},"The current directory contains a `.git` directory.",{"type":42,"value":128},{"type":42,"value":128},{"type":37,"tag":130,"props":145,"children":147},{"type":146},"multi_repo",[148,149,154],{"type":42,"value":135},{"type":37,"tag":137,"props":150,"children":151},{},[152],{"type":42,"value":153},"The current directory contains child repositories rather than being the active repository itself.",{"type":42,"value":128},{"type":42,"value":128},{"type":37,"tag":130,"props":157,"children":159},{"type":158},"no_changes",[160,161,166],{"type":42,"value":135},{"type":37,"tag":137,"props":162,"children":163},{},[164],{"type":42,"value":165},"No repository has uncommitted changes or unpushed commits after detection.",{"type":42,"value":128},{"type":42,"value":122},{"type":42,"value":109},{"type":42,"value":109},{"type":37,"tag":171,"props":172,"children":174},"phase",{"name":173},"analysis",[175,176,182,183,309],{"type":42,"value":122},{"type":37,"tag":177,"props":178,"children":179},"description",{},[180],{"type":42,"value":181},"Find every repository that requires a pushed branch and determine the names and commit metadata that should be used.",{"type":42,"value":122},{"type":37,"tag":184,"props":185,"children":186},"steps",{},[187,188,234,235,308],{"type":42,"value":128},{"type":37,"tag":189,"props":190,"children":192},"step",{"number":191},"1",[193,194,200,201,206,207,226,227,233],{"type":42,"value":135},{"type":37,"tag":195,"props":196,"children":197},"title",{},[198],{"type":42,"value":199},"Detect the workspace layout and changed repositories",{"type":42,"value":135},{"type":37,"tag":177,"props":202,"children":203},{},[204],{"type":42,"value":205},"Establish whether the workflow should operate on one repository or many, then collect all repositories that need a branch push.",{"type":42,"value":135},{"type":37,"tag":208,"props":209,"children":210},"actions",{},[211,213,219,220,225],{"type":42,"value":212},"\n          ",{"type":37,"tag":214,"props":215,"children":216},"action",{},[217],{"type":42,"value":218},"Run `echo \"=== Workspace Detection ===\" && pwd && echo \"\" && if [ -d \".git\" ]; then echo \"WORKSPACE_TYPE: SINGLE_REPO\"; echo \"REPO_DIR: $(pwd)\"; echo \"REPO_NAME: $(git remote get-url origin 2>\u002Fdev\u002Fnull | sed -E 's|.*[:\u002F]([^\u002F]+\u002F[^\u002F]+)$|\\1|' | sed 's\u002F\\.git$\u002F\u002F' || basename $(pwd))\"; else echo \"WORKSPACE_TYPE: MULTI_REPO\"; echo \"=== Repos with Changes ===\"; workspace_root=$(pwd); shopt -s nullglob; for repo_dir in *\u002F; do if [ -d \"$workspace_root\u002F${repo_dir}.git\" ]; then cd \"$workspace_root\u002F$repo_dir\"; has_changes=false; if [ -n \"$(git status --porcelain 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if git rev-parse --abbrev-ref --symbolic-full-name @{u} >\u002Fdev\u002Fnull 2>&1; then if [ -n \"$(git log @{u}..HEAD --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; elif [ -n \"$(git log HEAD --not --remotes=origin --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if [ \"$has_changes\" = \"true\" ]; then repo_name=$(git remote get-url origin 2>\u002Fdev\u002Fnull | sed -E 's|.*[:\u002F]([^\u002F]+\u002F[^\u002F]+)$|\\1|' | sed 's\u002F\\.git$\u002F\u002F' || basename $(pwd)); echo \"CHANGED_REPO: ${repo_dir%\u002F} -> $repo_name\"; fi; fi; done; cd \"$workspace_root\"; for owner_dir in *\u002F; do if [ ! -d \"$workspace_root\u002F${owner_dir}.git\" ]; then cd \"$workspace_root\"; for repo_dir in \"$owner_dir\"*\u002F; do if [ -d \"$workspace_root\u002F${repo_dir}.git\" ]; then cd \"$workspace_root\u002F$repo_dir\"; has_changes=false; if [ -n \"$(git status --porcelain 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if git rev-parse --abbrev-ref --symbolic-full-name @{u} >\u002Fdev\u002Fnull 2>&1; then if [ -n \"$(git log @{u}..HEAD --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; elif [ -n \"$(git log HEAD --not --remotes=origin --oneline 2>\u002Fdev\u002Fnull)\" ]; then has_changes=true; fi; if [ \"$has_changes\" = \"true\" ]; then repo_name=$(git remote get-url origin 2>\u002Fdev\u002Fnull | sed -E 's|.*[:\u002F]([^\u002F]+\u002F[^\u002F]+)$|\\1|' | sed 's\u002F\\.git$\u002F\u002F' || basename $(pwd)); echo \"CHANGED_REPO: ${repo_dir%\u002F} -> $repo_name\"; fi; fi; done; cd \"$workspace_root\"; fi; done; shopt -u nullglob; cd \"$workspace_root\"; fi`.",{"type":42,"value":212},{"type":37,"tag":214,"props":221,"children":222},{},[223],{"type":42,"value":224},"Stop and report that there is nothing to push if the detection phase finds no changed repositories.",{"type":42,"value":135},{"type":42,"value":135},{"type":37,"tag":228,"props":229,"children":230},"validation",{},[231],{"type":42,"value":232},"The target repository list is explicit and complete before any commits or pushes occur.",{"type":42,"value":128},{"type":42,"value":128},{"type":37,"tag":189,"props":236,"children":238},{"number":237},"2",[239,240,245,246,251,252,301,302,307],{"type":42,"value":135},{"type":37,"tag":195,"props":241,"children":242},{},[243],{"type":42,"value":244},"Determine the branch name and commit message for each repository",{"type":42,"value":135},{"type":37,"tag":177,"props":247,"children":248},{},[249],{"type":42,"value":250},"Inspect the outstanding work so the pushed branch and any required commit reflect the actual intent of the change.",{"type":42,"value":135},{"type":37,"tag":208,"props":253,"children":254},{},[255,256,267,268,294,295,300],{"type":42,"value":212},{"type":37,"tag":214,"props":257,"children":258},{},[259,261],{"type":42,"value":260},"For each repository, run `cd ",{"type":37,"tag":262,"props":263,"children":264},"repo_dir",{},[265],{"type":42,"value":266}," && echo \"=== Analyzing $(basename $(pwd)) ===\" && git remote get-url origin && git status && (git diff --stat HEAD 2>\u002Fdev\u002Fnull || git diff --stat) && (if git rev-parse --abbrev-ref --symbolic-full-name @{u} >\u002Fdev\u002Fnull 2>&1; then git log @{u}..HEAD --oneline; else git log HEAD --not --remotes=origin --oneline; fi || echo \"No commits yet\")`.",{"type":42,"value":212},{"type":37,"tag":214,"props":269,"children":270},{},[271,273],{"type":42,"value":272},"Choose a branch name using `feature\u002F",{"type":37,"tag":274,"props":275,"children":276},"short-description",{},[277,279],{"type":42,"value":278},"-",{"type":37,"tag":280,"props":281,"children":282},"task_id",{},[283,285],{"type":42,"value":284},"` or `fix\u002F",{"type":37,"tag":274,"props":286,"children":287},{},[288,289],{"type":42,"value":278},{"type":37,"tag":280,"props":290,"children":291},{},[292],{"type":42,"value":293},"`.",{"type":42,"value":212},{"type":37,"tag":214,"props":296,"children":297},{},[298],{"type":42,"value":299},"Choose a conventional commit message for repositories that still need a local commit.",{"type":42,"value":135},{"type":42,"value":135},{"type":37,"tag":228,"props":303,"children":304},{},[305],{"type":42,"value":306},"Each repository has a branch name, repository identifier, and commit message when a commit is required.",{"type":42,"value":128},{"type":42,"value":122},{"type":42,"value":109},{"type":42,"value":109},{"type":37,"tag":171,"props":312,"children":314},{"name":313},"implementation",[315,316,321,322,496],{"type":42,"value":122},{"type":37,"tag":177,"props":317,"children":318},{},[319],{"type":42,"value":320},"Create or reuse the delivery head branch, commit pending work when necessary, and push the resulting branch to the remote.",{"type":42,"value":122},{"type":37,"tag":184,"props":323,"children":324},{},[325,326,450,451,495],{"type":42,"value":128},{"type":37,"tag":189,"props":327,"children":329},{"number":328},"3",[330,331,336,337,342,343,443,444,449],{"type":42,"value":135},{"type":37,"tag":195,"props":332,"children":333},{},[334],{"type":42,"value":335},"Create the branch and commit pending work",{"type":42,"value":135},{"type":37,"tag":177,"props":338,"children":339},{},[340],{"type":42,"value":341},"Ensure the repository is on a delivery branch created from the provided base\u002Fdefault branch and convert working tree changes into a commit when needed.",{"type":42,"value":135},{"type":37,"tag":208,"props":344,"children":345},{},[346,347,352,353,368,369,390,391,401,402,413,414,430,431,436,437,442],{"type":42,"value":212},{"type":37,"tag":214,"props":348,"children":349},{},[350],{"type":42,"value":351},"For each repository, determine the current branch and the provided base\u002Fdefault branch for this run. If no branch is provided for the run, use the repository default branch.",{"type":42,"value":212},{"type":37,"tag":214,"props":354,"children":355},{},[356,358],{"type":42,"value":357},"Fetch the provided base branch with `cd ",{"type":37,"tag":262,"props":359,"children":360},{},[361,363],{"type":42,"value":362}," && git fetch origin ",{"type":37,"tag":364,"props":365,"children":366},"base-branch-for-this-repo",{},[367],{"type":42,"value":293},{"type":42,"value":212},{"type":37,"tag":214,"props":370,"children":371},{},[372,374],{"type":42,"value":373},"If a new delivery branch is needed, run `cd ",{"type":37,"tag":262,"props":375,"children":376},{},[377,379],{"type":42,"value":378}," && git checkout -b ",{"type":37,"tag":380,"props":381,"children":382},"branch-name-for-this-repo",{},[383,385],{"type":42,"value":384}," origin\u002F",{"type":37,"tag":364,"props":386,"children":387},{},[388],{"type":42,"value":389},"` before staging or committing pending work. If already on an explicit existing delivery branch for this task, keep it.",{"type":42,"value":212},{"type":37,"tag":214,"props":392,"children":393},{},[394,396],{"type":42,"value":395},"For each repository with working tree changes, run `cd ",{"type":37,"tag":262,"props":397,"children":398},{},[399],{"type":42,"value":400}," && git add -A && git diff --cached --name-status`.",{"type":42,"value":212},{"type":37,"tag":214,"props":403,"children":404},{},[405,407],{"type":42,"value":406},"After `git add -A`, explicitly compare `git diff --cached --name-status` against the intended deliverables for this task. If any staged path is unexpected, unstage it with `git restore --staged ",{"type":37,"tag":408,"props":409,"children":410},"path",{},[411],{"type":42,"value":412},"` before committing. Treat generated or untracked files as excluded by default unless they are clearly part of the requested delivery.",{"type":42,"value":212},{"type":37,"tag":214,"props":415,"children":416},{},[417,419],{"type":42,"value":418},"After the staged-path review is complete, for each repository with working tree changes run `cd ",{"type":37,"tag":262,"props":420,"children":421},{},[422,424],{"type":42,"value":423}," && git commit -m '",{"type":37,"tag":425,"props":426,"children":427},"commit-message-for-this-repo",{},[428],{"type":42,"value":429},"'`.",{"type":42,"value":212},{"type":37,"tag":214,"props":432,"children":433},{},[434],{"type":42,"value":435},"If the repository already has unpushed commits and no working tree changes, skip only the commit while still ensuring the branch is correct.",{"type":42,"value":212},{"type":37,"tag":214,"props":438,"children":439},{},[440],{"type":42,"value":441},"If hooks fail, fix the validation issue rather than bypassing `--no-verify` unless no safer option remains.",{"type":42,"value":135},{"type":42,"value":135},{"type":37,"tag":228,"props":445,"children":446},{},[447],{"type":42,"value":448},"Each repository is on a delivery branch created from the provided base\u002Fdefault branch, or is explicitly identified as already on an existing delivery branch for this task.",{"type":42,"value":128},{"type":42,"value":128},{"type":37,"tag":189,"props":452,"children":454},{"number":453},"4",[455,456,461,462,467,468,488,489,494],{"type":42,"value":135},{"type":37,"tag":195,"props":457,"children":458},{},[459],{"type":42,"value":460},"Push the branch for each repository",{"type":42,"value":135},{"type":37,"tag":177,"props":463,"children":464},{},[465],{"type":42,"value":466},"Publish the resulting branch to the remote so the work is available for later pull request creation.",{"type":42,"value":135},{"type":37,"tag":208,"props":469,"children":470},{},[471,472,481,482,487],{"type":42,"value":212},{"type":37,"tag":214,"props":473,"children":474},{},[475,476],{"type":42,"value":260},{"type":37,"tag":262,"props":477,"children":478},{},[479],{"type":42,"value":480}," && if git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>\u002Fdev\u002Fnull; then git push; else git push -u origin HEAD; fi`.",{"type":42,"value":212},{"type":37,"tag":214,"props":483,"children":484},{},[485],{"type":42,"value":486},"Record the pushed repository and branch for final reporting.",{"type":42,"value":135},{"type":42,"value":135},{"type":37,"tag":228,"props":490,"children":491},{},[492],{"type":42,"value":493},"Every targeted repository has a confirmed pushed branch or a clearly reported blocker.",{"type":42,"value":128},{"type":42,"value":122},{"type":42,"value":109},{"type":42,"value":109},{"type":37,"tag":171,"props":499,"children":500},{"name":228},[501,502,507,508,559],{"type":42,"value":122},{"type":37,"tag":177,"props":503,"children":504},{},[505],{"type":42,"value":506},"Summarize the pushed branches clearly so the user can move directly into pull request creation if desired.",{"type":42,"value":122},{"type":37,"tag":184,"props":509,"children":510},{},[511,512,558],{"type":42,"value":128},{"type":37,"tag":189,"props":513,"children":515},{"number":514},"5",[516,517,522,523,528,529,551,552,557],{"type":42,"value":135},{"type":37,"tag":195,"props":518,"children":519},{},[520],{"type":42,"value":521},"Report the pushed branches and next step",{"type":42,"value":135},{"type":37,"tag":177,"props":524,"children":525},{},[526],{"type":42,"value":527},"Provide the repository, branch, and follow-up pull-request path for each pushed target.",{"type":42,"value":135},{"type":37,"tag":208,"props":530,"children":531},{},[532,533,538,539,544,545,550],{"type":42,"value":212},{"type":37,"tag":214,"props":534,"children":535},{},[536],{"type":42,"value":537},"Report each repository and pushed branch in a concise structured summary.",{"type":42,"value":212},{"type":37,"tag":214,"props":540,"children":541},{},[542],{"type":42,"value":543},"Offer pull request creation as the follow-up step for each pushed branch: a `create-pr` run delivers it through the provider-neutral `mcp__roomote__manage_source_control` tool, so do not suggest provider-specific CLI commands such as `gh pr create`.",{"type":42,"value":212},{"type":37,"tag":214,"props":546,"children":547},{},[548],{"type":42,"value":549},"Mention the org-configured conflict resolver label supplied in the task context so a follow-up pull request run can apply it.",{"type":42,"value":135},{"type":42,"value":135},{"type":37,"tag":228,"props":553,"children":554},{},[555],{"type":42,"value":556},"The final report includes every pushed branch and gives the user an immediate next step for opening a pull request.",{"type":42,"value":128},{"type":42,"value":122},{"type":42,"value":109},{"type":37,"tag":45,"props":561,"children":562},{},[563,565,571,576,581],{"type":42,"value":564},"\u003Ccompletion_criteria>\n",{"type":37,"tag":566,"props":567,"children":568},"criterion",{},[569],{"type":42,"value":570},"Every repository with changes or unpushed commits has been processed exactly once.",{"type":37,"tag":566,"props":572,"children":573},{},[574],{"type":42,"value":575},"Each targeted repository has a pushed branch or a clearly surfaced blocker.",{"type":37,"tag":566,"props":577,"children":578},{},[579],{"type":42,"value":580},"The final summary tells the user how to open a pull request for each pushed branch.",{"type":42,"value":582},"\n\u003C\u002Fcompletion_criteria>\n",{"type":37,"tag":45,"props":584,"children":585},{},[586,588,610,628,647],{"type":42,"value":587},"\u003Cbest_practices>\n",{"type":37,"tag":589,"props":590,"children":592},"guideline",{"priority":591},"high",[593,598,604],{"type":37,"tag":51,"props":594,"children":595},{},[596],{"type":42,"value":597},"Push one branch per changed repository rather than mixing repository state in the final report.",{"type":37,"tag":599,"props":600,"children":601},"rationale",{},[602],{"type":42,"value":603},"Repository-specific reporting makes later pull request creation predictable and auditable.",{"type":37,"tag":605,"props":606,"children":607},"exceptions",{},[608],{"type":42,"value":609},"None.",{"type":37,"tag":589,"props":611,"children":612},{"priority":591},[613,618,623],{"type":37,"tag":51,"props":614,"children":615},{},[616],{"type":42,"value":617},"Use conventional commit messages and branch names that encode the intent of the change.",{"type":37,"tag":599,"props":619,"children":620},{},[621],{"type":42,"value":622},"Pushed work should remain understandable when reviewed later outside the current task context.",{"type":37,"tag":605,"props":624,"children":625},{},[626],{"type":42,"value":627},"Use repository-specific conventions if they are stricter than the default pattern.",{"type":37,"tag":589,"props":629,"children":631},{"priority":630},"medium",[632,637,642],{"type":37,"tag":51,"props":633,"children":634},{},[635],{"type":42,"value":636},"Respect validation hooks and fix their failures instead of bypassing them casually.",{"type":37,"tag":599,"props":638,"children":639},{},[640],{"type":42,"value":641},"These flows are meant to keep repository state clean, not just to move bytes to a remote.",{"type":37,"tag":605,"props":643,"children":644},{},[645],{"type":42,"value":646},"Only bypass as a last resort after the root cause has been investigated and documented.",{"type":42,"value":648},"\n\u003C\u002Fbest_practices>",{"type":37,"tag":650,"props":651,"children":652},"patterns",{},[653,654,679,680],{"type":42,"value":109},{"type":37,"tag":130,"props":655,"children":657},{"name":656},"workspace_detection",[658,659,664,665,671,672,678],{"type":42,"value":122},{"type":37,"tag":177,"props":660,"children":661},{},[662],{"type":42,"value":663},"Detect whether work must happen in one repository or many before issuing git commands.",{"type":42,"value":122},{"type":37,"tag":666,"props":667,"children":668},"context",{},[669],{"type":42,"value":670},"Use for any branch-push workflow.",{"type":42,"value":122},{"type":37,"tag":673,"props":674,"children":675},"template",{},[676],{"type":42,"value":677},"Detect repositories, gather changed targets, and short-circuit if there is nothing to push.",{"type":42,"value":109},{"type":42,"value":109},{"type":37,"tag":130,"props":681,"children":683},{"name":682},"push_without_pull_request",[684,685,690,691,696,697,702],{"type":42,"value":122},{"type":37,"tag":177,"props":686,"children":687},{},[688],{"type":42,"value":689},"Push work remotely without immediately opening a pull request.",{"type":42,"value":122},{"type":37,"tag":666,"props":692,"children":693},{},[694],{"type":42,"value":695},"Use when the user wants backup, collaboration, or later review rather than immediate PR creation.",{"type":42,"value":122},{"type":37,"tag":673,"props":698,"children":699},{},[700],{"type":42,"value":701},"Choose branch and commit metadata, create or reuse the branch, push it, then report the follow-up PR command.",{"type":42,"value":109},{"type":37,"tag":45,"props":704,"children":705},{},[706,708,728,734,753],{"type":42,"value":707},"\u003Cdecision_guidance>\n",{"type":37,"tag":709,"props":710,"children":711},"principles",{},[712,718,723],{"type":37,"tag":713,"props":714,"children":715},"principle",{},[716],{"type":42,"value":717},"Prefer pushing work remotely over leaving it stranded in ephemeral local state.",{"type":37,"tag":713,"props":719,"children":720},{},[721],{"type":42,"value":722},"Do not create a pull request when the user explicitly asked only for a branch push.",{"type":37,"tag":713,"props":724,"children":725},{},[726],{"type":42,"value":727},"Stop and report blockers rather than pretending the branch was pushed when it was not.",{"type":37,"tag":729,"props":730,"children":731},"constraints",{},[732],{"type":42,"value":733},"Use only non-interactive git commands, keep hook-based checks, and avoid destructive history rewriting unless the user explicitly asked for it.",{"type":37,"tag":735,"props":736,"children":737},"boundaries",{},[738,743,748],{"type":37,"tag":51,"props":739,"children":740},{},[741],{"type":42,"value":742},"This workflow handles branch creation, optional commits, remote push, and push reporting.",{"type":37,"tag":51,"props":744,"children":745},{},[746],{"type":42,"value":747},"This workflow does not open pull requests automatically.",{"type":37,"tag":51,"props":749,"children":750},{},[751],{"type":42,"value":752},"When authentication, branch protection, or remote policy blocks the push, surface the blocker and stop.",{"type":42,"value":754},"\n\u003C\u002Fdecision_guidance>",{"type":37,"tag":756,"props":757,"children":758},"examples",{},[759,760],{"type":42,"value":109},{"type":37,"tag":761,"props":762,"children":764},"example",{"name":763},"push_two_repository_workspace",[765,766,772,773,779,780,855,856,862,863,875],{"type":42,"value":122},{"type":37,"tag":767,"props":768,"children":769},"scenario",{},[770],{"type":42,"value":771},"The workspace contains two repositories with pending work that should be pushed remotely but not yet packaged into pull requests.",{"type":42,"value":122},{"type":37,"tag":774,"props":775,"children":776},"user_request",{},[777],{"type":42,"value":778},"Push these changes to branches but do not create PRs.",{"type":42,"value":122},{"type":37,"tag":105,"props":781,"children":782},{},[783,784,808,809,831,832,854],{"type":42,"value":128},{"type":37,"tag":189,"props":785,"children":786},{"number":191},[787,788,793,794,800,801,807],{"type":42,"value":135},{"type":37,"tag":177,"props":789,"children":790},{},[791],{"type":42,"value":792},"Identify both repositories that have work to push.",{"type":42,"value":135},{"type":37,"tag":795,"props":796,"children":797},"approach",{},[798],{"type":42,"value":799},"Run the workspace detection command and record the changed repositories.",{"type":42,"value":135},{"type":37,"tag":802,"props":803,"children":804},"expected_outcome",{},[805],{"type":42,"value":806},"Both repositories are queued for branch creation and push.",{"type":42,"value":128},{"type":42,"value":128},{"type":37,"tag":189,"props":810,"children":811},{"number":237},[812,813,818,819,824,825,830],{"type":42,"value":135},{"type":37,"tag":177,"props":814,"children":815},{},[816],{"type":42,"value":817},"Create the branch and commit state for each repository.",{"type":42,"value":135},{"type":37,"tag":795,"props":820,"children":821},{},[822],{"type":42,"value":823},"Choose branch names and conventional commit messages based on the repository-specific diffs.",{"type":42,"value":135},{"type":37,"tag":802,"props":826,"children":827},{},[828],{"type":42,"value":829},"Each repository is on a reviewable branch with the local work committed when needed.",{"type":42,"value":128},{"type":42,"value":128},{"type":37,"tag":189,"props":833,"children":834},{"number":328},[835,836,841,842,847,848,853],{"type":42,"value":135},{"type":37,"tag":177,"props":837,"children":838},{},[839],{"type":42,"value":840},"Push both branches and report the follow-up pull request commands.",{"type":42,"value":135},{"type":37,"tag":795,"props":843,"children":844},{},[845],{"type":42,"value":846},"Run `git push` or `git push -u origin HEAD` per repository and summarize the next command for each one.",{"type":42,"value":135},{"type":37,"tag":802,"props":849,"children":850},{},[851],{"type":42,"value":852},"The user can immediately create pull requests later without losing the work.",{"type":42,"value":128},{"type":42,"value":122},{"type":42,"value":122},{"type":37,"tag":857,"props":858,"children":859},"completion",{},[860],{"type":42,"value":861},"The work is safely pushed to remote branches and the user receives exact next-step commands.",{"type":42,"value":122},{"type":37,"tag":864,"props":865,"children":866},"key_takeaways",{},[867,868,874],{"type":42,"value":128},{"type":37,"tag":869,"props":870,"children":871},"takeaway",{},[872],{"type":42,"value":873},"Pushing a branch is a valid endpoint even when pull request creation is intentionally deferred.",{"type":42,"value":122},{"type":42,"value":109},{"type":37,"tag":45,"props":877,"children":878},{},[879,881,912,939],{"type":42,"value":880},"\u003Cerror_handling>\n",{"type":37,"tag":767,"props":882,"children":884},{"name":883},"no_repository_needs_push",[885,891,906],{"type":37,"tag":886,"props":887,"children":888},"problem",{},[889],{"type":42,"value":890},"There is nothing to commit or push.",{"type":37,"tag":892,"props":893,"children":894},"causes",{},[895,901],{"type":37,"tag":896,"props":897,"children":898},"cause",{},[899],{"type":42,"value":900},"The workspace is already clean and synchronized with the remote.",{"type":37,"tag":896,"props":902,"children":903},{},[904],{"type":42,"value":905},"The requested work was already pushed earlier.",{"type":37,"tag":907,"props":908,"children":909},"recovery",{},[910],{"type":42,"value":911},"Stop and tell the user that no push action is needed.",{"type":37,"tag":767,"props":913,"children":915},{"name":914},"push_blocked_by_validation_or_permissions",[916,921,934],{"type":37,"tag":886,"props":917,"children":918},{},[919],{"type":42,"value":920},"The branch cannot be pushed.",{"type":37,"tag":892,"props":922,"children":923},{},[924,929],{"type":37,"tag":896,"props":925,"children":926},{},[927],{"type":42,"value":928},"Repository hooks fail.",{"type":37,"tag":896,"props":930,"children":931},{},[932],{"type":42,"value":933},"Remote permissions, branch protection, or authentication prevent the push.",{"type":37,"tag":907,"props":935,"children":936},{},[937],{"type":42,"value":938},"Fix the validation issue when possible; otherwise surface the exact blocker and stop rather than claiming the push succeeded.",{"type":42,"value":940},"\n\u003C\u002Ferror_handling>",{"items":942,"total":1100},[943,957,973,987,1003,1017,1036,1046,1055,1065,1076,1089],{"slug":944,"name":944,"fn":945,"description":946,"org":947,"tags":948,"stars":20,"repoUrl":21,"updatedAt":956},"address-pr-feedback","address unresolved GitHub PR feedback","Focused GitHub PR-feedback workflow for addressing unresolved review threads on the current pull request.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[949,952,953],{"name":950,"slug":951,"type":16},"Code Review","code-review",{"name":14,"slug":15,"type":16},{"name":954,"slug":955,"type":16},"Pull Requests","pull-requests","2026-07-19T05:38:26.334008",{"slug":958,"name":958,"fn":959,"description":960,"org":961,"tags":962,"stars":20,"repoUrl":21,"updatedAt":972},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to \"open a website\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[963,966,969],{"name":964,"slug":965,"type":16},"Browser Automation","browser-automation",{"name":967,"slug":968,"type":16},"CLI","cli",{"name":970,"slug":971,"type":16},"Testing","testing","2026-07-16T06:02:26.045337",{"slug":974,"name":974,"fn":975,"description":976,"org":977,"tags":978,"stars":20,"repoUrl":21,"updatedAt":986},"capture-visual-proof","capture visual proof of browser tasks","Visual-proof orchestrator that decides whether browser proof applies, classifies the proof package, and delegates capture to the hidden proof-runner subagent.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[979,982,983],{"name":980,"slug":981,"type":16},"Automation","automation",{"name":964,"slug":965,"type":16},{"name":984,"slug":985,"type":16},"Screenshots","screenshots","2026-08-01T05:44:47.369293",{"slug":988,"name":988,"fn":989,"description":990,"org":991,"tags":992,"stars":20,"repoUrl":21,"updatedAt":1002},"ci-failure-triage","triage failed CI workflows","Investigate the latest default-branch CI failure in an environment-backed workspace and, when it is real and fixable, fix and open a PR in the same task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[993,996,999],{"name":994,"slug":995,"type":16},"CI\u002FCD","ci-cd",{"name":997,"slug":998,"type":16},"Debugging","debugging",{"name":1000,"slug":1001,"type":16},"GitHub Actions","github-actions","2026-07-23T05:40:41.726992",{"slug":1004,"name":1004,"fn":1005,"description":1006,"org":1007,"tags":1008,"stars":20,"repoUrl":21,"updatedAt":1016},"code-quality-auditor","audit code quality in merged pull requests","Automation skill: review recently merged pull requests for high-confidence code quality issues and submit `act` work items that auto-start follow-up execution tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1009,1012,1013],{"name":1010,"slug":1011,"type":16},"Code Analysis","code-analysis",{"name":950,"slug":951,"type":16},{"name":1014,"slug":1015,"type":16},"QA","qa","2026-07-26T05:47:47.339721",{"slug":1018,"name":1018,"fn":1019,"description":1020,"org":1021,"tags":1022,"stars":20,"repoUrl":21,"updatedAt":1035},"codeql-triage","triage and remediate CodeQL security alerts","Review current open CodeQL \u002F GitHub code-scanning alerts with GitHub data, keep scheduled runs read-only, and submit a small set of environment-backed `act` work items that auto-start remediation execution tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1023,1024,1027,1028,1029,1032],{"name":1010,"slug":1011,"type":16},{"name":1025,"slug":1026,"type":16},"CodeQL","codeql",{"name":997,"slug":998,"type":16},{"name":14,"slug":15,"type":16},{"name":1030,"slug":1031,"type":16},"Security","security",{"name":1033,"slug":1034,"type":16},"Triage","triage","2026-07-29T05:39:37.784486",{"slug":1037,"name":1037,"fn":1038,"description":1039,"org":1040,"tags":1041,"stars":20,"repoUrl":21,"updatedAt":1045},"create-draft-pr","create draft pull requests","Draft pull-request creation workflow. Use when repositories have pending changes or unpushed commits and you want draft PRs created.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1042,1043,1044],{"name":980,"slug":981,"type":16},{"name":14,"slug":15,"type":16},{"name":954,"slug":955,"type":16},"2026-07-16T06:00:31.733527",{"slug":1047,"name":1047,"fn":1048,"description":1049,"org":1050,"tags":1051,"stars":20,"repoUrl":21,"updatedAt":1054},"create-pr","create pull requests for pending changes","Pull-request creation workflow. Use when repositories have pending changes or unpushed commits and you want ready-for-review PRs created.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1052,1053],{"name":14,"slug":15,"type":16},{"name":954,"slug":955,"type":16},"2026-07-16T06:03:03.397562",{"slug":1056,"name":1056,"fn":1057,"description":1058,"org":1059,"tags":1060,"stars":20,"repoUrl":21,"updatedAt":1064},"debug-reported-bug","reproduce and debug reported bugs","Reproduce-first bug diagnosis workflow. Use when a reported bug needs to be reproduced, reduced to a deterministic failing check, and traced through git history or `git bisect` so the exact cause is understood before any fix is attempted.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1061,1062,1063],{"name":997,"slug":998,"type":16},{"name":18,"slug":19,"type":16},{"name":970,"slug":971,"type":16},"2026-07-16T06:03:07.255013",{"slug":1066,"name":1066,"fn":1067,"description":1068,"org":1069,"tags":1070,"stars":20,"repoUrl":21,"updatedAt":1075},"dependabot-triage","triage GitHub Dependabot alerts","Review current open Dependabot alerts with GitHub data, keep scheduled runs read-only, and submit a small set of environment-backed `act` work items that auto-start dependency-update execution tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1071,1072,1073,1074],{"name":980,"slug":981,"type":16},{"name":14,"slug":15,"type":16},{"name":1030,"slug":1031,"type":16},{"name":1033,"slug":1034,"type":16},"2026-07-29T05:39:38.757423",{"slug":1077,"name":1077,"fn":1078,"description":1079,"org":1080,"tags":1081,"stars":20,"repoUrl":21,"updatedAt":1088},"environment-setup","configure local development environments","Internal skill to configure environments. Never use unless the user explicitly initiates the skill. Focus on localhost-ready setup and validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1082,1085],{"name":1083,"slug":1084,"type":16},"Configuration","configuration",{"name":1086,"slug":1087,"type":16},"Local Development","local-development","2026-08-01T05:44:46.333988",{"slug":1090,"name":1090,"fn":1091,"description":1092,"org":1093,"tags":1094,"stars":20,"repoUrl":21,"updatedAt":1099},"explain-repo-code","explain repository code and architecture","Explanation-only repository workflow. Use when the user asks to understand behavior, architecture, or rationale from source context without modifying files.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1095,1096],{"name":1010,"slug":1011,"type":16},{"name":1097,"slug":1098,"type":16},"Documentation","documentation","2026-07-16T06:00:34.090082",33,{"items":1102,"total":1100},[1103,1109,1115,1121,1127,1133,1142],{"slug":944,"name":944,"fn":945,"description":946,"org":1104,"tags":1105,"stars":20,"repoUrl":21,"updatedAt":956},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1106,1107,1108],{"name":950,"slug":951,"type":16},{"name":14,"slug":15,"type":16},{"name":954,"slug":955,"type":16},{"slug":958,"name":958,"fn":959,"description":960,"org":1110,"tags":1111,"stars":20,"repoUrl":21,"updatedAt":972},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1112,1113,1114],{"name":964,"slug":965,"type":16},{"name":967,"slug":968,"type":16},{"name":970,"slug":971,"type":16},{"slug":974,"name":974,"fn":975,"description":976,"org":1116,"tags":1117,"stars":20,"repoUrl":21,"updatedAt":986},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1118,1119,1120],{"name":980,"slug":981,"type":16},{"name":964,"slug":965,"type":16},{"name":984,"slug":985,"type":16},{"slug":988,"name":988,"fn":989,"description":990,"org":1122,"tags":1123,"stars":20,"repoUrl":21,"updatedAt":1002},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1124,1125,1126],{"name":994,"slug":995,"type":16},{"name":997,"slug":998,"type":16},{"name":1000,"slug":1001,"type":16},{"slug":1004,"name":1004,"fn":1005,"description":1006,"org":1128,"tags":1129,"stars":20,"repoUrl":21,"updatedAt":1016},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1130,1131,1132],{"name":1010,"slug":1011,"type":16},{"name":950,"slug":951,"type":16},{"name":1014,"slug":1015,"type":16},{"slug":1018,"name":1018,"fn":1019,"description":1020,"org":1134,"tags":1135,"stars":20,"repoUrl":21,"updatedAt":1035},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1136,1137,1138,1139,1140,1141],{"name":1010,"slug":1011,"type":16},{"name":1025,"slug":1026,"type":16},{"name":997,"slug":998,"type":16},{"name":14,"slug":15,"type":16},{"name":1030,"slug":1031,"type":16},{"name":1033,"slug":1034,"type":16},{"slug":1037,"name":1037,"fn":1038,"description":1039,"org":1143,"tags":1144,"stars":20,"repoUrl":21,"updatedAt":1045},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1145,1146,1147],{"name":980,"slug":981,"type":16},{"name":14,"slug":15,"type":16},{"name":954,"slug":955,"type":16}]