Official agent skill

Jj Split

by SAP in SAP/project-foxhound

Steps to reliably split a commit/change using the jj (jujutsu) VCS

OfficialGPL-3.0Auto-check passedDevelopment

Install Jj Split

skills CLI
$ npx skills add SAP/project-foxhound --skill jj-split -a claude-code

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

GitHub CLI
$ gh skill install SAP/project-foxhound jj-split --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/SAP/project-foxhound.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/jj-split .claude/skills/jj-split && 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
jj-split
GitHub stars
180
Used in
1 other repo
Token cost
~728 tokens
SKILL.md length
403 words
Files
1
Skills in repo
10
Repo updated
First seen
Licence
GPL-3.0

At a glance

Steps to reliably split a commit/change using the jj (jujutsu) VCS

  • Works in 2 steps: Identify the commit to split - Use jj… → View the files in the commit - Use jj…
  • Tasks that involve Commit messages
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Jj Split is an agent skill from SAP/project-foxhound, published by the product's own GitHub organization. Steps to reliably split a commit/change using the jj (jujutsu) VCS

Its SKILL.md is about 730 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Commit messages. The repository describes itself as: A web browser with dynamic data-flow tracking enabled in the Javascript engine and DOM, based on Mozilla Firefox (https://github.com/mozilla-firefox/firefox). It can be used to… The licence is GPL-3.0.

When your agent uses it

  • Tasks that involve Commit messages

Example prompts

  • “Use the jj-split skill to step to reliably split a commit/change using the jj (jujutsu) VCS”
  • “/jj-split”

Requirements

  • Pre-approved tools (allowed-tools): Bash(jj log:*),, Bash(jj show:*),, Bash(jj split:*),, Bash(jj commit:*),, Bash(jj new:*),, Bash(jj describe:*),, Bash(jj rebase:*),, Bash(jj edit:*),, Bash(jj restore:*),, Bash(jj file show:*),, Read,, Grep,, Glob

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Identify the commit to split - Use jj log to find the revision ID of the commit you want to split
  2. View the files in the commit - Use jj log -r --stat to see which files are in the

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(jj log:*)
    • Bash(jj show:*)
    • Bash(jj split:*)
    • Bash(jj commit:*)
    • Bash(jj new:*)
    • Bash(jj describe:*)
    • Bash(jj rebase:*)
    • Bash(jj edit:*)
    • Bash(jj restore:*)
    • Bash(jj file show:*)

    …and 3 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

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

  • Network

    No URLs in SKILL.md.

    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

Jj Split loads about 728 tokens when it runs. Until then it costs about 19 tokens; SKILL.md has 403 words of instructions outside code blocks.

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

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from SAP/project-foxhound at commit 9dcb850, republished under its GPL-3.0 licence (© SAP). 403 words, ~728 tokens.

Download SKILL.mdSave it as .claude/skills/jj-split/SKILL.md (or your agent's skills folder).
name
jj-split
description
Steps to reliably split a commit/change using the jj (jujutsu) VCS
allowed-tools
Bash(jj log:*),, Bash(jj show:*),, Bash(jj split:*),, Bash(jj commit:*),, Bash(jj new:*),, Bash(jj describe:*),, Bash(jj rebase:*),, Bash(jj edit:*),, Bash(jj restore:*),, Bash(jj file show:*),, Read,, Grep,, Glob

If the commit is to be split based on path

  1. Identify the commit to split - Use jj log to find the revision ID of the commit you want to split
  2. View the files in the commit - Use jj log -r <revision> --stat to see which files are in the commit
  3. Split the commit - Use jj split -r <revision> -m "description for first commit" <first-file-path>
  • 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
  1. Update the second commit's description - Use jj describe -r <new-revision-id> -m "description for second commit" to set a proper description for the automatically created second commit
  2. 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
Show full SKILL.md (205 more words)Show less

If the commit is to be split based on hunks (split changes in the same file)

  1. Export the full diff jj show -r <changeid> --git > /tmp/full.patch
  2. 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
  1. Go back to parent jj edit <parent-revision-id>
  2. 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

  1. Abandon the original commit jj abandon <original-revision-id>

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:

  1. Avoid interactive tools - They're not scriptable or reproducible
  2. Store artifacts outside the repo - Patch files should be in /tmp/ or similar
  3. Verify each step - Use jj diff/jj show to confirm each commit contains only what you expect
  4. Clean up - Abandon the original multi-hunk commit when done

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

Files

Just SKILL.md in .agents/skills/jj-split of SAP/project-foxhound.

Open the folder on GitHubat commit 9dcb850

Used in 2 other repositories

We found 5 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in SAP/project-foxhound, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Jj Split 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.

Jj Split compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Jj Split this skillSAP/project-foxhound1801 repos~728Automated safety check: PassGPL-3.0
Contextual Commit Messagesyamadashy/repomix29k1 repos~2.7kAutomated safety check: PassMIT
React Router Release Notes Prepremix-run/react-router57k—~1.1kAutomated safety check: PassMIT
Caveman Commitvishiri/fantasia-archive40913 repos~642Automated safety check: PassGPL-3.0
PR Finalize Reviewmicrosoft/garnet12k—~3.1kAutomated safety check: PassMIT
ToolJet Multi-Repo CommitToolJet/ToolJet41k—~1.3kAutomated safety check: PassAGPL-3.0

Similar skills

  • Writes Conventional Commits whose bodies carry action lines recording the intent, decisions and constraints behind a change, not only what changed.

    29k GitHub starsUsed in 1 repo~2.7k tokens
    DevelopmentAuto-check passed
  • React Router Release Notes Prep

    remix-run/react-router

    Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.

    57k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Caveman Commit

    vishiri/fantasia-archive

    Ultra-compressed commit message generator. An agent skill from vishiri/fantasia-archive.

    409 GitHub starsUsed in 13 repos~642 tokens
    DevelopmentAuto-check passed
  • PR Finalize Review

    microsoft/garnet

    Official

    Checks that a pull request's title and description match its implementation and reviews the code for Garnet best practices, reporting findings without posting them.

    12k GitHub stars~3.1k tokensUpdated today
    DevelopmentAuto-check passed
  • 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 today
    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.

    103k GitHub starsUsed in 2 repos~3.5k tokens
    DevelopmentAuto-check: notes

More from SAP/project-foxhound

All 10 skills in this repo
  • Accessibility Frontend Review

    SAP/project-foxhound

    Official

    Performs an accessibility code review of a local diff or Phabricator revision in the style of the Firefox accessibility team.

    180 GitHub starsUsed in 2 repos~3.2k tokens
    Auto-check passed
  • JS Perf Investigation

    SAP/project-foxhound

    Official

    Structured performance opportunity investigation for SpiderMonkey (the Firefox JavaScript engine).

    180 GitHub starsUsed in 2 repos~4.1k tokens
    Auto-check passed
  • Bug Filing

    SAP/project-foxhound

    Official

    File a Bugzilla bug for Firefox/Gecko work, or draft a bug summary and description.

    180 GitHub starsUsed in 2 repos~828 tokens
    Auto-check passed
  • Specmap

    SAP/project-foxhound

    Official

    Map relationships between a web spec section, its Firefox implementation code, and Web Platform Tests.

    180 GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check passed
  • Stmo

    SAP/project-foxhound

    Official

    Manage Redash queries and dashboards on Mozilla's STMO (sql.telemetry.mozilla.org) using stmo-cli.

    180 GitHub starsUsed in 2 repos~1.8k tokens
    Auto-check passed
  • Android New Module

    SAP/project-foxhound

    Official

    Guide for creating new Android gradle modules in the android-components project.

    180 GitHub starsUsed in 2 repos~1.8k tokens
    Auto-check passed

Questions about Jj Split

What does Jj Split do?

Steps to reliably split a commit/change using the jj (jujutsu) VCS. Jj Split is an agent skill from SAP/project-foxhound, published by the product's own GitHub organization.

When should I use Jj Split?

Jj Split fits situations like: tasks that involve Commit messages.

How do I install Jj Split in Claude Code?

Run `npx skills add SAP/project-foxhound --skill jj-split -a claude-code`. Or copy the skill folder (.agents/skills/jj-split in SAP/project-foxhound) into .claude/skills/jj-split in your project. Claude Code loads it when a task matches its description.

How do I install Jj Split in Codex?

Run `npx skills add SAP/project-foxhound --skill jj-split -a codex`. Or copy the skill folder (.agents/skills/jj-split in SAP/project-foxhound) into .agents/skills/jj-split in your project. Codex loads it when a task matches its description.

Can I use Jj Split 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 SAP/project-foxhound --skill jj-split -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/jj-split, .gemini/skills/jj-split, .github/skills/jj-split and .opencode/skills/jj-split in your project.

What does Jj Split need to run?

SKILL.md names no scripts, command-line tools or credentials: Jj Split is instructions for the agent only. Its frontmatter pre-approves these tools: Bash(jj log:*),, Bash(jj show:*),, Bash(jj split:*),, Bash(jj commit:*),, Bash(jj new:*),, Bash(jj describe:*),, Bash(jj rebase:*),, Bash(jj edit:*),, Bash(jj restore:*),, Bash(jj file show:*),, Read,, Grep,, Glob.

Does Jj Split access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Jj Split 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. Review the folder before installing.

What licence does Jj Split use?

Jj Split is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Jj Split use?

About 728 tokens (SKILL.md is roughly 2.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 Jj Split?

Skills that share tags, products or a category with Jj Split: Contextual Commit Messages (yamadashy/repomix, 29k stars), React Router Release Notes Prep (remix-run/react-router, 57k stars), Caveman Commit (vishiri/fantasia-archive, 409 stars) and PR Finalize Review (microsoft/garnet, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Jj Split?

SAP (a GitHub organization, an official publisher) maintains it in SAP/project-foxhound, which has 180 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 6, 2026.

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