Skill to teach your agents how to use Jujutsu VCS An Agent Skill published for Claude Code and other compatible AI coding agents teaches them to use the Jujutsu (jj) version control system, tested against jj v0.46.0. In an end-to-end evaluation run with Harbor, the skill let Claude Code complete 36% more tasks than without it: 100% of trials succeeded with the skill (90 of 90) versus 73% without it (66 of 90), using the same 30 scenarios with three trials each against jj 0.46.0. The skill emphasizes describe-first commits, atomic commits, commit quality preservation and clean history via squash, split and absorb, and installs by copying the jujutsu/ directory into a project's .claude/skills/ directory or ~/.claude/skills/ for a global install. An Agent Skill that helps AI coding agents work with the Jujutsu jj version control system. This repository provides an Agent Skill for Claude Code and other compatible AI agents to effectively use the Jujutsu VCS. The skill teaches agents the proper workflow and commands for creating atomic, well-documented commits using jj. Tested with: jj v0.46.0 This skill is designed for jj v0.46.0 and may work with other versions, though compatibility is not guaranteed. The latest eval run https://github.com/danverbraganza/jujutsu-skill/blob/main/evals/results/2026-11-03-skill-improvements.md passes on both v0.37.0 and v0.46.0. Jujutsu jj is a Git-compatible version control system that offers several advantages: - Working copy as a commit : The working directory is always a commit, automatically snapshotting changes - No staging area : Changes are moved directly between commits using squash and split - Automatic rebasing : Descendant commits are automatically rebased when parent commits change - Mutable commits : Commits can be freely edited, split, and squashed - Change IDs : Stable identifiers that persist across commit rewrites - Conflict handling : Conflicts can be committed and resolved later If you use just https://github.com/danverbraganza/jujutsu-skill/blob/main/just.systems , you can run: just install Copy the jujutsu/ directory into your project's .claude/skills/ directory: cp -r jujutsu/ /path/to/your/project/.claude/skills/jujutsu/ Or install it as a global skill: cp -r jujutsu/ ~/.claude/skills/jujutsu/ jujutsu/ └── SKILL.md Main skill file with jj workflow instructions The skill emphasizes: 1. Describe-first commits : Use jj desc -m "message" before making changes 2. Atomic commits : Each commit should represent one logical change 3. Commit quality preservation : Leverage jj's mutability to refine commits 4. Clean history : Use squash , split , and absorb to maintain a readable history In an end-to-end evaluation with Harbor https://harborframework.com/docs , the skill lets Claude Code complete 36% more tasks than it does without the skill: 100% of trials succeed with it 90 of 90 , and 73% without it 66 of 90 . Both runs used the same 30 scenarios, three trials each, against jj 0.46.0. Each scenario gives the agent a plain-language request, such as "Rebase my feature bookmark onto main", in a real jj repo, and grades only the repo's end state. Most scenarios use a jj repo that is not colocated with git, so git commands fail and the agent has to use jj. Scenarios about using jj and git together run in a colocated repo. Only Claude Code has been tested so far, with claude-sonnet-5-5 . evals/ holds the scenarios and the harness. Each scenario runs in a container with an official jj release. Any agent Harbor supports works, including Claude Code and pi. just eval-selftest 0.46.0 check every scenario with Harbor's oracle and nop agents, no API calls just eval 0.46.0 run Claude Code on the scenarios against jj 0.46.0 just eval 0.46.0 --agent pi --model anthropic/claude-sonnet-5 just eval 0.46.0 --no-skill the same scenarios without the skill, for comparison See evals/README.md https://github.com/danverbraganza/jujutsu-skill/blob/main/evals/README.md for credentials, the scenarios, and the diagnostics. Contributions are welcome. Please ensure any changes are compatible with jj v0.46.0; just eval 0.46.0 checks this. MIT