Skip to content

Quick Start

Quick Start

Get up and running with jjj in 5 minutes. This walkthrough covers the full Problem/Solution/Critique workflow.

Initialize

Navigate to an existing Jujutsu repository and initialize jjj:

Terminal window
jjj init

This creates a shadow graph — an orphaned commit history that stores all project metadata separately from your code. The bookmark jjj tracks it.

Create a Problem

Problems describe things that need solving. Create one with a title and priority:

Terminal window
jjj problem new "Search is slow" --priority high

Priorities range from P0/critical to P3/low and affect how jjj status orders your work.

Propose a Solution

Solutions are conjectures — proposed ways to solve a problem. They start in proposed status and must survive criticism before acceptance.

Terminal window
jjj solution new "Add search index" --problem "Search is slow"

This creates a solution linked to the problem. A single problem can have multiple competing solutions.

Start Working

The solution new command creates a solution, a new jj change, and attaches it. The solution stays proposed until you run solution submit to submit it for review. To resume work on an existing solution:

Terminal window
jjj solution resume "Add search index"

Your working copy now has a change tracked by jjj. The parent problem automatically moves to in_progress.

Add a Critique

Critiques are explicit criticism of a solution. They block acceptance until every critique is resolved (addressed, validated, or dismissed).

Terminal window
jjj critique new "search index" "Missing error handling" --severity medium

Severities are low, medium, high, and critical.

Address the Critique

After modifying the solution to handle the criticism, mark the critique as addressed:

Terminal window
jjj critique address "Missing error"

Other resolution options:

  • jjj critique validate "Missing error" — the critique is correct and the solution should be refuted
  • jjj critique dismiss "Missing error" — the critique is incorrect or irrelevant

Submit and Approve

When your work is ready for review, submit it:

Terminal window
jjj solution submit "Add search index"

Once all critiques are resolved and any assigned reviewers have signed off, approve it:

Terminal window
jjj solution approve "Add search index"

Approve integrates the change and marks the solution approved. If this is the only solution for the problem, it offers to mark the problem as solved too.

Check What’s Next

The status command shows a prioritized list of actions you should take:

Terminal window
jjj status

Items are grouped by urgency:

CategoryMeaning
BLOCKEDSolutions blocked by open critiques
READYSolutions ready to accept (critiques resolved)
REVIEWSolutions waiting for your review
WAITINGSolutions in review, waiting on others
TODOOpen problems without solutions yet

View the TUI

The interactive TUI gives you a two-pane overview of your project:

Terminal window
jjj ui

The left pane shows Next Actions — the same prioritized list as jjj status, updated live. The right pane shows the Project Tree: problems, their solutions, and any attached critiques, expanded into a hierarchy.

Key bindings:

KeyAction
TabSwitch between Next Actions and Project Tree
/ or j / kNavigate items
/ Expand / collapse tree nodes
aApprove selected solution
rWithdraw selected solution
dDismiss selected critique
/Search / filter
?Show all key bindings
qQuit

Press q to exit.

Key Concepts

Entity Resolution — You can reference any entity by its title (or partial title), by a truncated UUID prefix (minimum 6 hex chars), or by full UUID. For example, "search index", 01957d, or the full UUID all work.

Change IDs — jjj uses Jujutsu change IDs (not commit hashes) as stable references. They survive rebases and history rewrites, so metadata links never break.

Shadow Graph — All jjj metadata lives in a separate orphaned commit history (jjj). It never pollutes your project history and can be pushed or fetched independently.

Critique Blocking — A solution cannot be approved while it has open critiques. All criticism must be explicitly addressed, validated, or dismissed. This enforces intellectual honesty.

Priority — Problems are prioritized P0 (critical) through P3 (low). Priority affects how jjj status orders work items, ensuring the most important problems surface first.

Common Commands

CommandDescription
jjj initInitialize jjj in current repository
jjj statusShow status and prioritized next actions
jjj uiLaunch interactive TUI
jjj problem new "title" --priority highCreate a problem
jjj problem listList all problems
jjj problem show "Search is slow"Show problem details and solutions
jjj solution new "title" --problem "Search"Propose a solution
jjj solution new "title" --problem "Search" --reviewer @alicePropose with reviewer
jjj solution listList all solutions
jjj solution resume "search index"Switch to a solution’s change
jjj solution submit "search index"Submit solution for review
jjj solution approve "search index"Approve solution, integrate code
jjj solution withdraw "search index"Withdraw solution
jjj critique new "search index" "title" --severity mediumCritique a solution
jjj critique address "Missing error"Mark critique as addressed
jjj pushPush code and metadata to remote
jjj fetchFetch code and metadata from remote
jjj milestone new "v1.0" --date 2025-06-01Create a milestone
jjj milestone roadmapShow milestone roadmap

Next Steps