| name | merge |
| description | Commit, rebase, and merge the current branch. |
| disable-model-invocation | true |
| allowed-tools | Read, Bash, Glob, Grep |
Arguments: $ARGUMENTS
Check the arguments for flags:
--keep, -k → pass --keep to workmux merge (keeps the worktree and tmux window after merging)
--no-verify, -n → pass --no-verify to workmux merge
Strip all flags from arguments.
Commit, rebase, and merge the current branch.
This command finishes work on the current branch by:
- Committing any staged changes
- Rebasing onto the base branch
- Running
workmux merge to merge and clean up
Step 1: Commit
Stage all changes and create a single git commit with an appropriate message. Skip this step if there are no changes.
The commit subject must be 70 characters or less. The description must wrap at 70 characters. Use plain ASCII characters only. Keep the description short and to the point.
Context
- Current git status: !
git status
- Current git diff (staged and unstaged changes): !
git diff HEAD
- Current branch: !
git branch --show-current
- Recent commits: !
git log --oneline -10
Conventional Commit Reference
If the codebase follows conventional commits (visible in recent commits above), the commit type must follow these rules:
- build: changes that affect the build system or external dependencies
- ci: changes to our CI configuration files and scripts
- docs: documentation only changes
- feat: a new feature
- fix: a bug fix
- perf: a code change that improves performance
- refactor: a code change that neither fixes a bug nor adds a feature
- style: changes that do not affect the meaning of the code (e.g. white-space, formatting)
- test: adding missing tests or correcting existing tests
- chore: changes that affect auxiliary tools (e.g. linter version/configs)
Step 2: Rebase
Get the base branch from git config:
git config --local --get "branch.$(git branch --show-current).workmux-base"
If no base branch is configured, default to "main".
Rebase onto the local base branch (do NOT fetch from origin first):
git rebase <base-branch>
IMPORTANT: Do NOT run git fetch. Do NOT rebase onto origin/<branch>. Only rebase onto the local branch name (e.g., git rebase main, not git rebase origin/main).
If conflicts occur:
- BEFORE resolving any conflict, understand what changes were made to each
conflicting file in the base branch
- For each conflicting file, run
git log -p -n 3 <base-branch> -- <file> to
see recent changes to that file in the base branch
- The goal is to preserve BOTH the changes from the base branch AND our branch's
changes
- After resolving each conflict, stage the file and continue with
git rebase --continue
- If a conflict is too complex or unclear, ask for guidance before proceeding
Step 3: Merge
Run: workmux merge --rebase --notification [--keep] [--no-verify]
Include --keep only if the --keep flag was passed in arguments.
Include --no-verify only if the --no-verify flag was passed in arguments.
This will merge the branch into the base branch and clean up the worktree and
tmux window (unless --keep is used).