Programmatically rewrite non-top Git commits without needing an interactive editor.
The material indicates a prompt/documentation-only Git skill with no required secrets and no declared remote endpoints, so overall risk is low. It does describe local Git commands that can rewrite commit history and repository contents, but in the provided material this is guidance rather than self-executing capability.
The material explicitly states that no keys or environment variables are required. No API tokens, account credentials, or credential collection/misuse behaviors are described.
No remote hosts or network endpoints are declared. The README focuses on local Git rebase workflows and does not describe sending user data, commit contents, or repository information to third-party services.
The system marks it as prompt-only. While the documentation includes shell/Git command examples (such as setting GIT_SEQUENCE_EDITOR and running git rebase), these are guidance for the user rather than automatic local code execution by the skill itself.
The material does not indicate that the skill itself has programmatic read/write access to local files. The README only explains that Git rebase may modify commit history, todo files, and repository contents when the user manually applies the commands.
The source is on GitHub and marked open-source, which is better than closed-source for auditability. However, the repository link points to facebook/hermes, which does not obviously match the skill name, and it has 0 stars, no declared license, and unknown maintenance status, so the source mapping and ongoing maintenance should be verified.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "non-interactive-git-rebase" skill from askskill: 1. Download https://raw.githubusercontent.com/facebook/hermes/static_h/.claude/skills/non-interactive-git-rebase/SKILL.md 2. Save it as ~/.claude/skills/non-interactive-git-rebase/SKILL.md 3. Reload skills and tell me it's ready
Give me a non-interactive git rebase approach: move the 2nd of the last 6 commits to after the 5th, and squash the 4th and 5th commits into one. Use GIT_SEQUENCE_EDITOR or an equivalent script, and include full commands and precautions.
An executable non-interactive rebase command sequence with reorder, squash steps, and risk notes.
I need to split a Git commit that is not the top commit: split the 3rd of the last 8 commits into two commits, with one containing only changes from specific files. Provide a method that does not rely on an interactive editor, including automated hunk selection or file-based split commands.
A step-by-step command workflow showing how to target the commit, split its contents, and recommit them.
Show me how to amend the author, commit message, and dates of a specific commit within a Git commit range without an interactive editor, while keeping other commits unchanged. Provide a scriptable approach and verification steps.
A reusable scripted amendment workflow with metadata change commands and result verification.
git rebase -i normally opens an editor for the todo list. By setting GIT_SEQUENCE_EDITOR to a command that replaces the todo file with a pre-prepared one, you can perform any interactive rebase operation — reorder, drop, squash, edit, amend — entirely from scripts.
Before any rebase, create a backup branch:
git branch backup-before-rebase HEAD
After the rebase succeeds and verification passes, do NOT delete the backup branch automatically. Always ask the user before deleting it, unless the user explicitly requested automatic cleanup. The backup is cheap to keep and the user may discover problems later.
The editor receives the todo file path as $1. Any command that overwrites that file works:
# Replace the todo with our prepared version
GIT_SEQUENCE_EDITOR="cp /tmp/prepared-todo" git rebase -i <base>
Git generates the default todo (all pick lines), then invokes cp /tmp/prepared-todo <todo-file>, which replaces it with your version. Git then executes the rewritten todo.
Extract the default todo without actually rebasing — copy it out, then fail the editor so git aborts:
GIT_SEQUENCE_EDITOR='cp $1 /tmp/default-todo && false' git rebase -i <base>
The false exits non-zero, so git aborts the rebase. You have the todo file, no rebase happened.
Or build it directly from git log:
git rev-list --reverse <base>..HEAD | while read hash; do
echo "pick $hash $(git log --oneline -1 $hash | cut -d' ' -f2-)"
done > /tmp/prepared-todo
Then edit the file: reorder lines, change pick to drop/squash/edit/etc.
The --exec <cmd> flag inserts an exec <cmd> line after every pick in the todo. Combined with GIT_SEQUENCE_EDITOR=: (a no-op that succeeds, leaving the default todo unchanged), this runs a command after each commit is replayed — no editor needed.
Change author email on all commits in a range:
GIT_SEQUENCE_EDITOR=: git rebase -i <base> --exec \
'if [ "$(git log -1 --format=%ae)" != "[email protected]" ]; then git commit --amend --no-edit --author="Name <[email protected]>"; fi'
Change commit message pattern:
GIT_SEQUENCE_EDITOR=: git rebase -i <base> --exec \
'git commit --amend -m "$(git log -1 --format=%B | sed s/old/new/)"'
Rearrange lines in the todo file. Example — move commit abc123 to the front:
# Build todo with abc123 first, then everything else in original order
{
echo "pick abc123 The commit to move first"
git rev-list --reverse <base>..HEAD | while read hash; do
full=$(git rev-parse abc123)
[ "$hash" != "$full" ] && echo "pick $hash $(git log --oneline -1 $hash | cut -d' ' -f2-)"
done
} > /tmp/prepared-todo
GIT_SEQUENCE_EDITOR="cp /tmp/prepared-todo" git rebase -i <base>
Remove lines from the todo, or change pick to drop.
NEVER use reword in the todo. The reword command opens an interactive editor for the new message, which cannot be scripted via GIT_SEQUENCE_EDITOR. Instead, use edit and amend with -m:
# Step 1: Prepare todo with 'edit' on commits to reword
# Step 2: At each stop, amend the message non-interactively:
git commit --amend -m "New subject line
New body text."
# Step 3: Continue to the next stop
git rebase --continue
Change pick to squash or fixup. For squash, you also need GIT_SEQUENCE_EDITOR for the commit message editor that opens after squashing:
# Squash second commit into first, keep first message
# In the todo: pick aaa, fixup bbb
GIT_SEQUENCE_EDITOR="cp /tmp/prepared-todo" git rebase -i <base>
…
Write and review GC-safe C++ code for the Hermes VM runtime.
Analyze hermesvm binary size changes and regressions across commit ranges.
Add new JSI Runtime features with Hermes and SynthTrace support.
Guide for adding a new IR instruction to the Hermes compiler. Use when the user asks to add, create, or define a new IR instruction (Inst/Instruction) in the Hermes intermediate representation. Covers all required files and the patterns for each.
Get idiomatic Relay guidance for React code, debugging, and code reviews.
Write and run Markdown-driven end-to-end tests for Relay apps.
Group AI-generated code changes into reviewable commit candidates before approval.
Generate standardized Git commits from diffs with logical grouping support.
Create, switch, and verify Git branches before starting implementation work.
Create isolated Git worktrees safely with smart directory selection.
Coordinate behavior-preserving code refactors with tests, review, and gated commits.
Create isolated Git workspaces for parallel development and safer task switching.