push
GitHub将已验证提交的分支推送到远程仓库。支持自动检查提交状态、任务检查结果及分支安全性,并可通过--fixup参数衔接PR修复流程,确保推送操作的安全与规范。
Trigger Scenarios
Install
npx skills add kdlbs/kandev --skill push -g -y
SKILL.md
Frontmatter
{
"name": "push",
"description": "Push a committed branch whose task-defined checks passed. With --fixup, continue with CI and review handling in the primary conversation."
}
Push
Planner Entry
Push the verified commit directly in the primary conversation. With --fixup,
continue with /pr-fixup in that same conversation; do not delegate polling or
delivery.
Available skills
/commit— Creates the artifact after task-defined checks pass./pr-fixup— Wait for CI checks and CodeRabbit, Greptile, Claude, OpenCode, and cubic review feedback, fix any failures or valid comments, and push again.
Options
--fixup— after pushing, begin/pr-fixupin the same conversation.
Note: This skill normally uses
git push. It usesgh pr viewbefore a no-upstream fallback so a checked-out fork PR is not accidentally pushed to its base repository.
Your task
Push the already committed branch to its remote.
Steps
Create a todo/task for each step below and mark them as completed as you go.
-
Uncommitted changes: If there are dirty or staged changes, stop: a new commit and the affected task checks are required first.
-
Task-check evidence: Require the task-defined unit, integration, and E2E checks affected by this commit to pass. If the checkout or commit changed afterward, rerun only the affected task checks.
-
Safety check: Verify the current branch is NOT
mainormaster. If it is, stop and ask the user — direct pushes to the default branch should go through a PR. -
Push the current branch:
git pushIf the branch has no upstream, first look up the current branch's PR. Treat an unavailable or ambiguous lookup as a stop condition; only a confirmed absence of a PR permits the ordinary
originfallback. For a confirmed PR, require itsheadRefNameto match the checked-out local branch, then inspect its delivery target:gh pr view --json isCrossRepository,headRepositoryOwner,headRepository,headRefName,headRefOid,maintainerCanModifyFor a cross-repository PR, the PR head owner can push its own fork directly. When acting as a base-repository maintainer on somebody else's fork,
maintainerCanModifymust betrue; do not treat that field as a universal fork-owner gate. Push the exact current commit to the reported head owner, repository, and ref. Before using the HTTPS URL, configure Git to use the authenticatedghcredential helper:gh auth setup-git git push "https://github.com/<head-owner>/<head-repository>.git" "HEAD:refs/heads/<head-ref>"If that push fails with
git repository does not match any credential lease scope, do not put a token in command arguments or logs. Retry aftergh auth setup-git; if HTTPS still rejects the contributor-fork push, use the SSH fallback below or report the authentication/scope blocker. Never embed the token in a remote URL, command argument, log, or persisted credential. Re-fetch the PR and require itsheadRefOidto equal localHEADafterward. If HTTPS still rejects a contributor-fork push and SSH authentication is available, verify the exact target withgit ls-remote git@github.com:<head-owner>/<head-repository>.git, then retry the same exact ref over SSH (using the exact remote-OID lease if history was rewritten). Re-fetch and verify the PR head OID again. Do not substitute a localforkremote or an inferred repository. Do not use a conveniently named localfork/contributorremote: linked worktrees share remote configuration, so it can refer to another task. Re-fetch the PR and requireheadRefOidto equal localHEAD.Only for a non-PR or same-repository PR, use
git push -u origin HEADrather than transcribing the branch name. Then verifygit rev-parse HEADequalsgit rev-parse '@{upstream}', and report the branch fromgit branch --show-current. If the branch was rebased or history was rewritten, first confirm the current branch is notmainormaster, then use the exact remote-OID leasegit push --force-with-lease=refs/heads/<branch>:<captured-remote-sha>. Use generic--force-with-leaseonly when no remote OID was captured; never use an unconditional force push. If the branch modifies.github/workflows/*and GitHub rejects the push with a message likerefusing to allow an OAuth App to create or update workflow ... without workflow scope, treat it as push authentication/scope, not a code or branch-protection failure. Retry with an SSH remote when available, for examplegit push git@github.com:<owner>/<repo>.git <branch>, or tell the user the token needsworkflowscope. -
Report the pushed commit hash and branch.
-
If
--fixup: Continue with/pr-fixupin this conversation.
Version History
-
1578843
Current 2026-08-16 08:48
移除对独立verify技能的强制依赖,改为要求任务定义的单元、集成和E2E检查通过;增强跨仓库PR推送的安全检查和认证处理逻辑。
- b4239d8 2026-07-24 17:32


