Push
SkillProductivityPush a committed branch whose task-defined checks passed. With --fixup, continue with CI and review handling in the primary conversation.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Push skill
What this skill tells your AI
The instructions your AI receives, as published by kdlbs/kandev in .agents/skills/push/SKILL.md and read by ahel’s review.
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.
Signals
- GitHub stars
- 771
- Forks
- 114
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
push-kdlbs- Source
- github.com/kdlbs/kandev