jujutsu-workflow について
Jujutsu(jj)を使うリポジトリでコーディングエージェントが作業するための手順ガイドです。安全な判定、変更、復旧、Git への引き継ぎ、検証のルールを示します。
主な機能
- 01jj・Git・共置・シャドウリポジトリの判定
- 02エージェント向け jj コマンドの安全規則
- 03非対話での変更と分割
- 04操作ログによる復旧
- 05Git 経由の変更引き継ぎ
- 06完了前のリポジトリ状態確認
活用シーン
- 01.jj/ を含むリポジトリでの作業
- 02共置リポジトリで Git のステージング変更を避ける
- 03意図しない jj 操作からの復旧
- 04Git のプルリクエスト向け変更の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ netresearch/ jujutsu-workflow-skill --skill jujutsu-workflowインストール後、Claude Code で/jujutsu-workflowを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/agent-safety.mdcommand-map.mdgit-interop.mdparallel-agents.mdpr-handoff.mdrecovery-playbook.mdwhy-jj-for-agents.mdscripts/detect_jj_state.shverify_handoff.sh詳細
Jujutsu ワークフロー
.jj/ リポジトリがある場合は、生の git よりも jj(Jujutsu)を優先してください。Git はリモート/PR/CI/監査の標準インターフェースとして引き続き使用します。変更には jj を使い、Git は読み取り専用で確認してください。
1. 最初に検出して判定する
${CLAUDE_SKILL_DIR}/scripts/detect_jj_state.sh を実行するか、手動で確認します。
.jj/がある → jj リポジトリです。jjを使い、生のgitで変更を加えないでください。.jj/と.git/の両方がある → 同居リポジトリです。変更にはjjを使い、読み取りには Git を使います。Git のインデックス/ステージングには触れないでください。.git/のみがある → 通常の Git リポジトリです。依頼がない限りjjを導入しないでください。- Git ワークツリー内で
jj root≠git rev-parse --show-toplevel→ シャドー状態(終了コード 3)です。jj は親リポジトリを参照しています。jjは実行せず、Git を使ってから確認を求めてください。
references/git-interop.md を参照してください。
2. エージェントの安全ルール(必須)
- 出力を表示するコマンドには必ず
--no-pagerを付けてください。ユーザーの設定にui.paginateを書き込まないでください。--userはセッション終了後も有効で、ユーザーが対話的にjjを使うときにもページャーが使えなくなります。 - 必ず
-mを使ってください。エディター/TUI 形式のコマンドは絶対に実行しないでください。裸のjj describe|commit|squash、jj split(対話形式)、jj squash -i、jj resolve、jj diffeditはエージェントがハングします。 jjが作業コピーをスナップショットするのは jj コマンドの実行時のみであり、ファイルを書き込むたびではありません。
references/agent-safety.md を参照してください。
3. 編集ループ
jj --no-pager status
# edit files (snapshotted on the next jj command)
jj --no-pager diff
jj describe -m "<project-conventional message>"
jj new -m "<next unit>" # one change per logical unit
対話なしで分割するには、jj split <path> -m "<msg>" を使います。references/command-map.md を参照してください。
4. 復旧(元に戻せます)
jj --no-pager op log → jj undo または jj op restore <id>。コンフリクトは通常の状態として扱われます。jj status で確認し、編集マーカーを修正してから検証してください。references/recovery-playbook.md を参照してください。
5. Git で引き継ぐ
jj git fetch
jj rebase -d <default-branch>
jj bookmark create <branch> -r @- # every pushed commit needs a description
jj git push --bookmark <branch> # new bookmarks push directly
保護ブランチ/デフォルトブランチにはプッシュしないでください。許可がない限り、公開済みの履歴を書き換えないでください。gh/glab で PR を作成します。references/pr-handoff.md を参照してください。
6. 並列エージェント
同時に作業するエージェントごとに jj workspace を 1 つ用意してください。作業コピーを共有しないでください。references/parallel-agents.md を参照してください。
7. 「完了」とする前に検証する
${CLAUDE_SKILL_DIR}/scripts/verify_handoff.sh を実行するか、jj --no-pager status、jj --no-pager log --limit 10、jj --no-pager diff --stat、git status --short --branch の結果を報告してください。これらの出力なしに「完了/テスト済み/準備完了」と主張しないでください。強制プッシュ、復旧、コンフリクトがあれば明記してください。
jj が役立つ場合とそうでない場合:references/why-jj-for-agents.md を参照してください。