Claude-skill-registry jj:split
Split the current commit into multiple commits grouped by function
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/jj-split" ~/.claude/skills/majiayu000-claude-skill-registry-jj-split-efd890 && rm -rf "$T"
manifest:
skills/data/jj-split/SKILL.mdsource content
Split Commit by Function
Split a commit into multiple commits, grouping changes by functional purpose.
Process
- Run
to check if splittingjj status
(has changes) or@
(working copy empty)@- - Run
andjj show <rev> --summary
for overviewjj diff -r <rev> --stat - Analyze changes:
- Small (≤5 files, ≤200 lines): run
directlyjj diff -r <rev> - Large: use
to group changes by purpose/jj-context
- Small (≤5 files, ≤200 lines): run
- Propose functional groups (implementation+tests together, config separate, migrations separate)
- Ask user for approval via AskUserQuestion
- Execute splits with one-line descriptions:
jj split -r <rev> -m "<description>" file1 file2 - Describe the last group (no split needed):
jj describe -r @- -m "<description>"
IMPORTANT: Always use single-line commit messages. Never use multi-line descriptions or bullet points.
Common Groupings
- Core feature + its tests together
- Configuration/infrastructure separate
- Database migrations separate
- Refactoring/cleanup separate
- API changes vs UI changes
Example
# Split auth files into new commit jj split -r @- -m "src/auth: add user authentication" src/auth.py test/test_auth.py # Split API files jj split -r @- -m "services/api: add rate limiting" src/api/rate_limit.py test/test_rate_limit.py # Describe the remaining migration jj describe -r @- -m "db/migrations: add users table"
Note: After each split, revision ID changes. Use
@- for subsequent splits.