Agent skill

Git Fixup Push

by apache in apache/impala

Combines all git commits for a change into a single commit and pushes it to gerrit.

Apache-2.0Auto-check passedDevelopment

Install Git Fixup Push

skills CLI
$ npx skills add apache/impala --skill git-fixup-push -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install apache/impala git-fixup-push --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/apache/impala.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/git-fixup-push .claude/skills/git-fixup-push && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
git-fixup-push
GitHub stars
1.3k
Token cost
~1.7k tokens
SKILL.md length
875 words
Files
2 (incl. scripts)
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Combines all git commits for a change into a single commit and pushes it to gerrit.

  • You push to gerrit
  • SKILL.md covers Fixup Git Commits and Push to…, Deterministic Execution Contract, Canonical Checks and Available Scripts, plus 2 more sections
  • Runs Shell scripts from its folder; calls git
  • Tasks that involve Commit messages

What it does

Git Fixup Push is an agent skill from apache/impala. Combines all git commits for a change into a single commit and pushes it to gerrit. Use when you push to gerrit.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/fixup.sh`).

It sits in Development, covering Commit messages and Git workflow. It works with Git. The licence is Apache-2.0.

When your agent uses it

  • You push to gerrit
  • Tasks that involve Commit messages
  • Tasks that involve Git workflow

Example prompts

  • “Use the git-fixup-push skill to combine all git commits for a change into a single commit and pushes it to gerrit”
  • “/git-fixup-push”

Requirements

  • A Bash shell

What it can do on your machine

Read from SKILL.md and the folder at commit bb537fb. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Git Fixup Push loads about 1.7k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 875 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~32
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from apache/impala at commit bb537fb, republished under its Apache-2.0 licence (© apache). 875 words, ~1,721 tokens.

Download SKILL.mdSave it as .claude/skills/git-fixup-push/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
git-fixup-push
description
Combines all git commits for a change into a single commit and pushes it to gerrit. Use when you push to gerrit.
license
Apache-2.0
metadata.version
1.0

Fixup Git Commits and Push to Gerrit

Use git-fixup-push when you have multiple commits for a change and want to combine them into a single commit before pushing to gerrit. Changes to Impala are managed in gerrit, and each change is represented as a single git commit. Use git-fixup-push to meld multiple commits into a single commit that can be pushed to gerrit.

Deterministic Execution Contract

  • Run all commands from the repository root in a single shell session.
  • Use non-interactive commands only.
  • Treat any non-zero command exit code as a failure for the current step unless the step explicitly defines recovery behavior.
  • Do not use force operations (--force, --force-with-lease, hard reset).
  • Do not run git remote -v.
  • Ignore untracked files for staged/unstaged detection and for stashing decisions.

Canonical Checks

  • Staged changes exist: git diff --cached --quiet (exit code 1 means staged changes exist).
  • Unstaged tracked changes exist: git diff --quiet (exit code 1 means unstaged tracked changes exist).
  • Most recent commit message: git log -1 --pretty=%B.
  • Valid gerrit username regex: ^[A-Za-z0-9._-]+$.
  • Remote URL checks:
    • Fetch URL: git remote get-url asf-gerrit
    • Push URL: git remote get-url --push asf-gerrit

Available Scripts

  • .agents/skills/git-fixup-push/scripts/fixup.sh - Script to combine multiple commits into a single commit. Run with the --help argument to see usage instructions. Run with the --dry-run argument to see the exact command that would be executed without actually running it. The script selects commits from the most recent IMPALA-<id> commit through HEAD. If that matching commit is already HEAD, the script exits without squashing.

Workflow

  • Step 1: Validate asf-gerrit remote and URLs.
    • Success condition: both effective URLs exactly match ssh://<username>@gerrit.cloudera.org:29418/Impala-ASF.
    • Procedure:
      • Try git remote get-url asf-gerrit and git remote get-url --push asf-gerrit.
      • If remote does not exist, ask once for <username>.
      • Validate <username> against ^[A-Za-z0-9._-]+$.
      • If <username> is invalid, abort.
      • If remote does not exist and <username> is valid, run:
        • git remote add asf-gerrit ssh://<username>@gerrit.cloudera.org:29418/Impala-ASF
      • If remote exists but URL mismatch is detected, ask once for <username>.
      • Validate <username> against ^[A-Za-z0-9._-]+$.
      • If <username> is invalid, abort.
      • If remote exists with URL mismatch and <username> is valid, run:
        • git remote set-url asf-gerrit ssh://<username>@gerrit.cloudera.org:29418/Impala-ASF
        • git remote set-url --push asf-gerrit ssh://<username>@gerrit.cloudera.org:29418/Impala-ASF
      • Re-run both URL checks. If either still mismatches, abort.
  • Step 2: Commit already-staged changes (pre-existing index state).
    • Run staged check.
    • If staged changes exist, run:
      • git commit -m "WIP: commit staged files"
    • If no staged changes, continue.
  • Step 3: Resolve unstaged tracked changes.
    • Run unstaged tracked check.
    • If no unstaged tracked changes, continue.
    • If unstaged tracked changes exist, ask user to choose exactly one action:
      • stage: run exactly git add -u
      • stash: run git stash push --keep-index -m "stashed by git-fixup-push skill". Record that a stash was created; Step 9 will pop it after a successful push.
    • If input is not exactly stage or stash, abort.
  • Step 4: Commit staged changes created by Step 3.
    • Run staged check again.
    • If staged changes exist, run:
      • git commit -m "WIP: commit staged files"
    • If no staged changes, continue.
  • Step 5: Squash commits for the current change.
    • Run: .agents/skills/git-fixup-push/scripts/fixup.sh
    • If this command exits non-zero, abort.
  • Step 6: Run critique with bounded retry policy.
    • Run from ${IMPALA_HOME} exactly:
      • ./bin/jenkins/critique-gerrit-review.py --dryrun
    • If critique passes, continue.
    • If critique fails on first attempt:
      • For each file and line number listed in the critique output, apply exactly the code-style fix described (for example: trim trailing whitespace, fix indentation, shorten lines to ≤90 characters). Do not make unrelated changes.
      • Commit fixes with:
        • git commit -m "fixed critique issues"
      • Restart workflow from Step 1 and allow exactly one additional critique attempt.
    • If critique fails on the second attempt, abort.
  • Step 7: Ensure Assisted-by: trailer is present on HEAD.
    • Check trailers with:
      • git log -1 --pretty=%B | git interpret-trailers --only-trailers --unfold
    • If an Assisted-by: trailer is already present, do nothing and continue.
    • If missing, ask user whether to add it.
    • If user approves, amend commit message using git interpret-trailers and add exactly:
      • Assisted-by: <model> (<agent-name>) where <model> is the name of the language model and <agent-name> is the name of the agent executing this skill.
    • Deterministic amend sequence:
      • tmp_msg="$(mktemp)"
      • git log -1 --pretty=%B | git interpret-trailers --if-exists=doNothing --trailer "Assisted-by: <model> (<agent-name>)" > "$tmp_msg"
      • git commit --amend -F "$tmp_msg"
      • rm -f "$tmp_msg"
    • Preserve Gerrit footer requirements:
      • Keep Change-Id: in the final trailer paragraph.
      • Keep trailer lines contiguous (no blank lines between trailer entries).
    • If user declines, continue.
    • If user input is invalid, abort.
  • Step 8: Push to Gerrit drafts.
    • Run exactly:
      • git push asf-gerrit HEAD:refs/drafts/master
    • If this command fails, abort and report the first actionable error.
  • Step 9: Pop stash if one was created in Step 3.
    • If Step 3 recorded that a stash was created, run:
      • git stash pop
    • If git stash pop exits non-zero, report the error and stop; do not abort silently (the push already succeeded).
    • If no stash was created in Step 3, skip this step.
Show full SKILL.md (76 more words)Show less

Gotchas

  • Gerrit requires Change-Id: to be in the final footer paragraph of the commit message. Keep all trailer lines contiguous in that last paragraph (for example, Change-Id: and Assisted-by: should be adjacent, with no blank line between them).
  • Git may not have remote.<name>.pushurl explicitly set. In that case, git remote get-url --push <name> may still resolve via remote.<name>.url.
  • git stash push --keep-index stashes only unstaged tracked changes and preserves staged changes for the next commit step.

© apache, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in .agents/skills/git-fixup-push of apache/impala.

  • SKILL.md
  • scripts/fixup.sh

Open the folder on GitHubat commit bb537fb

Compare with similar skills

Git Fixup Push next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Git Fixup Push compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Git Fixup Push this skillapache/impala1.3k—~1.7kAutomated safety check: PassApache-2.0
ToolJet Multi-Repo CommitToolJet/ToolJet41k—~1.3kAutomated safety check: PassAGPL-3.0
Git Workflow and Versioningaddyosmani/agent-skills102k2 repos~3.5kAutomated safety check: NotesMIT
React Router Pull Request Creatorremix-run/react-router57k—~2.5kAutomated safety check: PassMIT
Saleor Commit Workflowsaleor/saleor23k—~575Automated safety check: PassBSD-3-Clause
Emoji Commit ConventionsbaptisteArno/typebot.io11k—~424Automated safety check: PassCustom licence

Similar skills

  • Commits changes across ToolJet's root repo and its server/ee and frontend/ee submodules, writing messages from the diffs and updating submodule pointers in order.

    41k GitHub stars~1.3k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Git Workflow and Versioning

    addyosmani/agent-skills

    Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.

    102k GitHub starsUsed in 2 repos~3.5k tokens
    DevelopmentAuto-check: notes
  • React Router Pull Request Creator

    remix-run/react-router

    Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.

    57k GitHub stars~2.5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Commits changes in the Saleor codebase and works through pre-commit hook failures from ruff, mypy, the GraphQL schema check and the migrations check.

    23k GitHub stars~575 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Emoji Commit Conventions

    baptisteArno/typebot.io

    Sets the repository's convention for commit messages and pull request titles: one emoji prefix for the main intent, a concise title and clean follow-up commits.

    11k GitHub stars~424 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Draft Pull Request Creator

    wordpress-mobile/WordPress-Android

    Commits and pushes current changes, writes a pull request title and body from the branch history and template, and opens a draft PR on GitHub after you approve it.

    3.2k GitHub stars~881 tokensUpdated yesterday
    DevelopmentAuto-check: notes

More from apache/impala

  • Build One Cc File

    apache/impala

    Build a single C++ file. An agent skill from apache/impala.

    1.3k GitHub stars~846 tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Git Fixup Push

What does Git Fixup Push do?

Combines all git commits for a change into a single commit and pushes it to gerrit. Git Fixup Push is an agent skill from apache/impala. Combines all git commits for a change into a single commit and pushes it to gerrit.

When should I use Git Fixup Push?

Git Fixup Push fits situations like: you push to gerrit; tasks that involve Commit messages; tasks that involve Git workflow.

How do I install Git Fixup Push in Claude Code?

Run `npx skills add apache/impala --skill git-fixup-push -a claude-code`. Or copy the skill folder (.agents/skills/git-fixup-push in apache/impala) into .claude/skills/git-fixup-push in your project. Claude Code loads it when a task matches its description.

How do I install Git Fixup Push in Codex?

Run `npx skills add apache/impala --skill git-fixup-push -a codex`. Or copy the skill folder (.agents/skills/git-fixup-push in apache/impala) into .agents/skills/git-fixup-push in your project. Codex loads it when a task matches its description.

Can I use Git Fixup Push in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add apache/impala --skill git-fixup-push -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/git-fixup-push, .gemini/skills/git-fixup-push, .github/skills/git-fixup-push and .opencode/skills/git-fixup-push in your project.

What does Git Fixup Push need to run?

Going by SKILL.md and its folder, Git Fixup Push needs a shell for the scripts in its folder and the command-line tools its instructions call (git). Our summary lists: A Bash shell.

Does Git Fixup Push access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Git Fixup Push safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Git Fixup Push use?

Git Fixup Push is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Git Fixup Push use?

About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Git Fixup Push?

Skills that share tags, products or a category with Git Fixup Push: ToolJet Multi-Repo Commit (ToolJet/ToolJet, 41k stars), Git Workflow and Versioning (addyosmani/agent-skills, 102k stars), React Router Pull Request Creator (remix-run/react-router, 57k stars) and Saleor Commit Workflow (saleor/saleor, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Git Fixup Push?

apache (a GitHub organization) maintains it in apache/impala, which has 1,290 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 7, 2026.

Source: apache/impala on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.