If the commit is to be split based on path
SkillDev toolsSteps to reliably split a commit/change using the jj (jujutsu) VCS
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 If the commit is to be split based on path skill
What this skill tells your AI
The instructions your AI receives, as published by mozilla/enterprise-firefox in .agents/skills/jj-split/SKILL.md and read by ahel’s review.
- Identify the commit to split - Use jj log to find the revision ID of the commit you want to split
- View the files in the commit - Use jj log -r --stat to see which files are in the commit
- Split the commit - Use jj split -r -m "description for first commit"
- The -r flag specifies which revision to split
- The -m flag sets the description for the commit with the selected files
- The file path argument specifies which file(s) go in the first commit
- All remaining files automatically go into a new commit on top
- Update the second commit's description - Use jj describe -r -m "description for second commit" to set a proper description for the automatically created second commit
- Verify the split - Use jj log --stat to confirm each commit now contains only its respective file
Key points:
- jj split with a fileset argument is non-interactive and deterministic (reliable)
- The original commit keeps its position in history with the selected files
- The remaining files go into a new commit automatically placed on top
- Descendant commits are automatically rebased
If the commit is to be split based on hunks (split changes in the same file)
- Export the full diff jj show -r --git > /tmp/full.patch
- Manually split the patch into separate files
- Open full.patch in an editor
- Create hunk-1.patch containing only the required hunks
- Create hunk-2.patch containing only the remaining hunks
- Etc.
- IMPORTANT: Store patches outside the repo (e.g., /tmp/) so they don't disappear when switching revisions
- Go back to parent jj edit
- Apply each patch and make jj new -m "description of hunk 1" patch -p1 < /tmp/hunk-1.patch
jj new -m "description of hunk 2" patch -p1 < git apply /tmp/hunk-2.patch
repeat as needed
- Abandon the original commit jj abandon
Advantages:
- ✅ Preserves exact line numbers and context
- ✅ Good for complex hunks with specific formatting
- ✅ Can be partially automated with tools like splitpatch or filterdiff
- ✅ Patch files serve as documentation of what was split
Key Principles for RELIABLE Splitting:
- Avoid interactive tools - They're not scriptable or reproducible
- Store artifacts outside the repo - Patch files should be in /tmp/ or similar
- Verify each step - Use jj diff/jj show to confirm each commit contains only what you expect
- Clean up - Abandon the original multi-hunk commit when done
Signals
- GitHub stars
- 22
- Forks
- 42
- Last commit
- Sep 2026
ahel recommends instead
Advanced
- Catalog kind
- skill
- Gateway key
jj-split-mozilla- Source
- github.com/mozilla/enterprise-firefox