From jj-vcs
Jujutsu (jj) version control workflows and commands. Use this skill when working with jj repositories, managing changes, squashing commits, rebasing, or performing jj-specific operations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jj-vcs:skills/jjThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When reading data from jj, always use `--ignore-working-copy` to avoid snapshotting the working copy (which is slow and unnecessary for read operations).
SKILL.template.mdreferences/bookmarks.mdreferences/config.mdreferences/filesets.mdreferences/glossary.mdreferences/jj-abandon.mdreferences/jj-absorb.mdreferences/jj-bisect-run.mdreferences/jj-bisect.mdreferences/jj-bookmark-create.mdreferences/jj-bookmark-delete.mdreferences/jj-bookmark-forget.mdreferences/jj-bookmark-list.mdreferences/jj-bookmark-move.mdreferences/jj-bookmark-rename.mdreferences/jj-bookmark-set.mdreferences/jj-bookmark-track.mdreferences/jj-bookmark-untrack.mdreferences/jj-bookmark.mdreferences/jj-commit.mdWhen reading data from jj, always use --ignore-working-copy to avoid snapshotting the working copy (which is slow and unnecessary for read operations).
Many jj commands spawn $EDITOR or interactive diff tools by default. These will hang indefinitely when run by agents. Always use the non-interactive alternatives:
| Command | Problem | Solution |
|---|---|---|
jj describe | Opens editor | Always use -m "message" |
jj commit | Opens editor | Always use -m "message" |
jj split | Opens diff editor + may open editor for description | Provide filesets to select files; use -m for description |
jj squash | May open editor for combined description | Use -m "message" or -u (use destination message) |
Commands to avoid entirely (no non-interactive mode):
jj diffedit — use jj restore or edit files directly insteadjj config edit — use jj config set <key> <value> insteadjj sparse edit — use jj sparse set --add <path> or --remove <path> insteadjj resolve — edit conflict markers directly in files, or use --tool :ours / --tool :theirsjj's default diff and conflict formats differ from Git's. For easier parsing, use Git-compatible formats:
Diffs: Use the --git flag for unified diff output:
jj diff --git
jj log -p --git
jj show --git
Conflicts: jj uses diff-based conflict markers by default (%%%%%%%, +++++++). For standard Git-style markers (<<<<<<<, =======, >>>>>>>), pass --config when running commands that may create conflicts:
jj --config ui.conflict-marker-style=git rebase ...
jj --config ui.conflict-marker-style=git new --insert-before ...
The conflict style is applied when conflicts are materialized to the working copy, so the config must be set before the conflict occurs.
JSON: For structured/programmatic output, use the json(self) template:
jj log --ignore-working-copy --no-graph -T 'json(self) ++ "\n"'
Outputs one JSON object per line with commit_id, change_id, description, author, etc. Works with jj log, jj show, and other commands that support -T.
| Command | Description |
|---|---|
jj status | Show working copy status |
jj log | Show commit history |
jj new | Create a new change |
jj describe -m "msg" | Set commit message |
jj squash | Squash into parent |
jj diff | Show changes |
jj git push | Push to remote |
jj git fetch | Fetch from remote |
jj bookmark create name | Create a bookmark |
In-depth guides on jj concepts and syntax.
Documentation generated from jj manpages. For details on any command, read the corresponding reference file.
Generated from jj manpages (jj 0.37.0)
The content in the references/ directory is derived from the jj (Jujutsu) project and is licensed under the Apache License 2.0.
npx claudepluginhub schpet/toolbox --plugin jj-vcsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.