agentleFS
adampoitadampoit/ai/skills/jj/SKILL.md

jj

Skill2 starsChanged 13 days agoMITView on GitHub

Use Jujutsu (`jj`) for version control operations including status, history, diffs, commits, rebases, splits, squashes, and Git interop. Use when a repository is initialized for jj or the user asks for jj/Jujutsu workflows.

  • Commits and pushes

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use jj for version control when a repository has a .jj/ directory or jj status succeeds.

    line 8
  2. Distinctive:

    Start with these read-only commands:

    line 23
  3. Distinctive:

    Create a new change from a specific parent:

    line 64
  4. Distinctive:

    Prefer small, atomic changes.

    line 70
  5. Very specific:

    Use --onto/-o for destinations:

    line 103
  6. Very specific:

    Avoid deprecated --destination/-d examples unless an installed jj version requires them.

    line 117
  7. Distinctive:

    Create or update a Git bookmark before pushing when needed:

    line 128
  8. Distinctive:

    Do not use git add, git commit, or Git staging workflows in a jj repository unless the user explicitly asks for Git commands.

    line 135
  9. Distinctive:

    Prefer explicit messages and non-interactive flags:

    line 160
  10. Very specific:

    Use jj diff --git for familiar unified diffs.

    line 168
  11. Distinctive:

    Only push, restore operations, abandon changes, or rewrite unrelated user changes when explicitly requested.

    line 172
  12. Very specific:

    Before mutating history, inspect jj status and jj log --limit 20 so you understand the current stack.

    line 173

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

jj

Use jj for version control when a repository has a .jj/ directory or jj status succeeds.

jj status

Core Model

  • There is no staging area; commands operate on the current change or selected revisions.
  • The working copy is a mutable commit/change. Use jj describe to set its message.
  • Change IDs are stable across rewrites; commit IDs change when contents or metadata change.
  • Most history edits are safe because jj records operations in the operation log.

Inspect State

Start with these read-only commands:

jj status
jj log --limit 20
jj diff --git

Inspect a specific revision:

jj show <revset>
jj evolog -r <revset>

Useful revsets:

  • @: current working-copy commit
  • @-: parent of the working-copy commit
  • ::@: ancestors of the working-copy commit
  • @::: descendants of the working-copy commit
  • trunk(): repository trunk/main baseline
  • mine(): changes authored by the current user
  • conflicted(): changes with conflicts
  • mutable(): changes that can be rewritten

Quote revsets in shell commands when they contain special characters:

jj log -r 'trunk()..@'

Make Commits

Describe the current change before creating a new one:

jj describe -m "Explain why this change exists"
jj new

Create a new change from a specific parent:

jj new <revset>

Prefer small, atomic changes. If the working copy mixes concerns, split it before describing or submitting.

jj desc is the common shorthand for jj describe; use either form consistently with nearby docs or commands.

Refine History

Move selected changes from the working copy into its parent:

jj squash

Absorb modifications into matching mutable ancestors:

jj absorb

Split a mixed change:

jj split

Split whole files or filesets non-interactively by passing paths and a message:

jj split -r @ path/to/file1 path/to/file2 -m "Move focused changes into their own commit"
jj split -r @ 'glob:src/**/*.rs' -m "Update Rust sources"

Rebase

Use --onto/-o for destinations:

jj rebase -r <revset> -o <destination>

Common forms:

jj rebase -r @ -o trunk()
jj rebase -s <source> -o <destination>
jj rebase -b <branch> -o <destination>

Avoid deprecated --destination/-d examples unless an installed jj version requires them.

Git Interop

Fetch and push through jj in colocated Git repositories:

jj git fetch
jj git push

Create or update a Git bookmark before pushing when needed:

jj bookmark set <name> -r <revset>
jj git push --bookmark <name>

Do not use git add, git commit, or Git staging workflows in a jj repository unless the user explicitly asks for Git commands.

Operation Log

Inspect recent jj operations:

jj op log

Undo or redo the most recent operation:

jj undo
jj redo

Recover from a bad operation by restoring a previous operation only when the user explicitly approves:

jj op restore <operation-id>

Non-Interactive Safety

Prefer explicit messages and non-interactive flags:

jj describe -m "Message"
jj new --no-edit <revset>
jj --no-pager log --limit 20

Use jj diff --git for familiar unified diffs; jj's default diff format can be harder for agents to read.

Guardrails

  • Only push, restore operations, abandon changes, or rewrite unrelated user changes when explicitly requested.
  • Before mutating history, inspect jj status and jj log --limit 20 so you understand the current stack.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.