Skip to content
Back to skills

Push

ASecurity

Push a committed branch whose task-defined checks passed. With --fixup, continue with CI and review handling in the primary conversation.

  • 901 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added May 27, 2026
developmentgobashgitdatabase

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add kdlbs/kandev --skill push --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Push?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Push
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kdlbs-push/badge)](https://www.skillsdirectory.com/skills/kdlbs-push)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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-fixup` in the same conversation.

> **Note:** This skill normally uses `git push`. It uses `gh pr view` before 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.**

1. **Uncommitted changes:** If there are dirty or staged changes, stop: a new
   commit and the affected task checks are required first.

2. **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.

3. **Safety check:** Verify the current branch is NOT `main` or `master`. If it is, stop and ask the user — direct pushes to the default branch should go through a PR.

4. **Push** the current branch:
   ```bash
   git push
   ```
   If 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 `origin` fallback. For a confirmed PR,
   require its `headRefName` to match the checked-out local branch, then inspect
   its delivery target:
   ```bash
   gh pr view --json isCrossRepository,headRepositoryOwner,headRepository,headRefName,headRefOid,maintainerCanModify
   ```
   For 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,
   `maintainerCanModify` must be `true`; 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
   authenticated `gh` credential helper:
   ```bash
   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 after
   `gh 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 its `headRefOid` to equal local
   `HEAD` afterward.
   If HTTPS still rejects a contributor-fork push and SSH authentication is
   available, verify the exact target with
   `git 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
   local `fork` remote or an inferred repository.
   Do not use a conveniently named local `fork`/`contributor` remote: linked
   worktrees share remote configuration, so it can refer to another task.
   Re-fetch the PR and require `headRefOid` to equal local `HEAD`.

   Only for a non-PR or same-repository PR, use `git push -u origin HEAD`
   rather than transcribing the branch name. Then verify
   `git rev-parse HEAD` equals `git rev-parse '@{upstream}'`, and report the
   branch from `git branch --show-current`.
   If the branch was rebased or history was rewritten, first confirm the current
   branch is not `main` or `master`, then use the exact remote-OID lease
   `git push --force-with-lease=refs/heads/<branch>:<captured-remote-sha>`.
   Use generic `--force-with-lease` only 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 like `refusing 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
   example `git push git@github.com:<owner>/<repo>.git <branch>`, or tell the
   user the token needs `workflow` scope.

   If both HTTPS and SSH pushes time out and an authorized GitHub connector
   exposes Git database writes, preserve the tested tree by creating blobs for
   the exact file contents, a tree from the known parent tree, and a commit with
   the same parent and message, then fast-forward the existing branch ref. Fetch
   that ref, verify its content and commit, and reset the local worktree only to
   the fetched SHA. This can produce a different commit SHA, so all subsequent
   checks and final evidence must use the fetched head.

5. **Report** the pushed commit hash and branch.

6. **If `--fixup`:** Continue with `/pr-fixup` in this conversation.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.