jj

Jujutsu (jj) Version Control

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "jj" with this command: npx skills add schpet/toolbox/schpet-toolbox-jj

Jujutsu (jj) Version Control

Agent Usage

When reading data from jj, always use --ignore-working-copy to avoid snapshotting the working copy (which is slow and unnecessary for read operations).

Non-interactive Commands (Critical)

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 instead

  • jj config edit — use jj config set <key> <value> instead

  • jj sparse edit — use jj sparse set --add <path> or --remove <path> instead

  • jj resolve — edit conflict markers directly in files, or use --tool :ours / --tool :theirs

Agent-Friendly Output Formats

jj'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 .

Common Commands

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

Topics

In-depth guides on jj concepts and syntax.

  • Bookmarks

  • Config

  • Filesets

  • Glossary

  • Revsets

  • Templates

  • Tutorial

Command Reference

Documentation generated from jj manpages. For details on any command, read the corresponding reference file.

Bisect

  • jj-bisect-run

Bookmark

  • jj-bookmark-create

  • jj-bookmark-delete

  • jj-bookmark-forget

  • jj-bookmark-list

  • jj-bookmark-move

  • jj-bookmark-rename

  • jj-bookmark-set

  • jj-bookmark-track

  • jj-bookmark-untrack

Config

  • jj-config-edit

  • jj-config-get

  • jj-config-list

  • jj-config-path

  • jj-config-set

  • jj-config-unset

File

  • jj-file-annotate

  • jj-file-chmod

  • jj-file-list

  • jj-file-search

  • jj-file-show

  • jj-file-track

  • jj-file-untrack

General

  • jj

  • jj-abandon

  • jj-absorb

  • jj-bisect

  • jj-bookmark

  • jj-commit

  • jj-config

  • jj-describe

  • jj-diff

  • jj-diffedit

  • jj-duplicate

  • jj-edit

  • jj-evolog

  • jj-file

  • jj-fix

  • jj-gerrit

  • jj-git

  • jj-help

  • jj-interdiff

  • jj-log

  • jj-metaedit

  • jj-new

  • jj-next

  • jj-operation

  • jj-parallelize

  • jj-prev

  • jj-rebase

  • jj-redo

  • jj-resolve

  • jj-restore

  • jj-revert

  • jj-root

  • jj-show

  • jj-sign

  • jj-sparse

  • jj-split

  • jj-squash

  • jj-status

  • jj-tag

  • jj-undo

  • jj-unsign

  • jj-util

  • jj-version

  • jj-workspace

Gerrit

  • jj-gerrit-upload

Git

  • jj-git-clone

  • jj-git-colocation

  • jj-git-colocation-disable

  • jj-git-colocation-enable

  • jj-git-colocation-status

  • jj-git-export

  • jj-git-fetch

  • jj-git-import

  • jj-git-init

  • jj-git-push

  • jj-git-remote

  • jj-git-remote-add

  • jj-git-remote-list

  • jj-git-remote-remove

  • jj-git-remote-rename

  • jj-git-remote-set-url

  • jj-git-root

Operation

  • jj-operation-abandon

  • jj-operation-diff

  • jj-operation-log

  • jj-operation-restore

  • jj-operation-revert

  • jj-operation-show

Simplify

  • jj-simplify-parents

Sparse

  • jj-sparse-edit

  • jj-sparse-list

  • jj-sparse-reset

  • jj-sparse-set

Tag

  • jj-tag-delete

  • jj-tag-list

  • jj-tag-set

Util

  • jj-util-completion

  • jj-util-config-schema

  • jj-util-exec

  • jj-util-gc

  • jj-util-install-man-pages

  • jj-util-markdown-help

Workspace

  • jj-workspace-add

  • jj-workspace-forget

  • jj-workspace-list

  • jj-workspace-rename

  • jj-workspace-root

  • jj-workspace-update-stale

Generated from jj manpages (jj 0.37.0)

License

The content in the references/ directory is derived from the jj (Jujutsu) project and is licensed under the Apache License 2.0.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

restate

No summary provided by upstream source.

Repository SourceNeeds Review
General

jjwf

No summary provided by upstream source.

Repository SourceNeeds Review
General

changelog

No summary provided by upstream source.

Repository SourceNeeds Review
General

svbump

No summary provided by upstream source.

Repository SourceNeeds Review