G
YouTube TikTok Games
Skip to content

feat(tools/jujutsu): Jujutsu (jj) support for the local dev-loop #603

Open

Description

@potiuk

Add tools/jujutsu/ so the local dev-loop skills can run on Jujutsu (jj) working copies. jj is Git-compatible at the storage layer but exposes a fundamentally different working model — no staging area, anonymous/auto-evolving changes, first-class conflict commits, and jj-style revsets instead of branches. The fix-workflow and code-review skills, which assume Git's branch/commit/git add model, would produce wrong or confusing steps on a jj repo even though the backing store is Git.

Capabilities to provide:

  • Map the dev-loop primitives onto jj: jj new/jj describe for commit, jj diff, jj log, jj bookmark for branch-equivalent hand-off
  • Translate the fix-workflow "create branch → commit → push" recipe into the jj change/bookmark model
  • Detect a jj working copy and route through this shim instead of raw git
  • Reuse the VCS-capability abstraction from tools/mercurial/

Why: jj adoption is growing fast among individual maintainers and at Google (its primary sponsor), and it's a common front-end over Git-hosted repos (GitHub/GitLab). Because it's Git-backed, an adopter can use jj locally while the forge stays GitHub — so this is low-risk, high-leverage support that several power-user maintainers would benefit from immediately.

Reference:

Activity

  1. added
    enhancementNew feature or request
    capability:platformFramework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap)
    source control systemVersion control systems and the forges/services that host them
    on Jun 28, 2026
  2. leninworld commented on Oct 15, 2026

    @leninworld
    Contributor

    Hi @potiuk — I’d like to take this one. Could it be assigned to me?

    Before writing code, I’d like to confirm three scope points:

    1. Placement: I propose adding only a JujutsuBackend under tools/vcs/src/magpie_vcs/, following the “Adding a backend” contract in tools/vcs/README.md. It would be registered before GitBackend, because colocated Jujutsu/Git repositories contain both .jj and .git, and detect_backend keeps the first match when their roots are equal. I would not add a separate tools/jujutsu/ directory or change the skills/fix-workflow in this PR. Is that the intended scope?

    2. Supported version: I propose requiring a Jujutsu release that supports jj bookmark and jj git push --bookmark, rather than the older jj branch commands. Should the project specify a particular minimum jj version?

    3. Behavior and tests: stage() would be a documented no-op because Jujutsu snapshots the working copy automatically. The other operations would map to the corresponding jj commit, bookmark creation, and bookmark push commands. Tests would cover detection—including a directory containing both .jj and .git—parsing without Jujutsu installed, and real temporary-repository round trips when jj is available. Should CI install jj so the round-trip tests always run, or should those tests use the existing optional-tool skip pattern?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    capability:platformFramework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap)enhancementNew feature or requestfamily:toolstools/*good first issueGood for newcomerssource control systemVersion control systems and the forges/services that host them

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions