mcpField
J
jujutsu-workflow

jujutsu-workflow

github.com/netresearch開発2077 回インストール今日更新
リポジトリ

jujutsu-workflow について

Jujutsu(jj)を使うリポジトリでコーディングエージェントが作業するための手順ガイドです。安全な判定、変更、復旧、Git への引き継ぎ、検証のルールを示します。

主な機能

  1. 01jj・Git・共置・シャドウリポジトリの判定
  2. 02エージェント向け jj コマンドの安全規則
  3. 03非対話での変更と分割
  4. 04操作ログによる復旧
  5. 05Git 経由の変更引き継ぎ
  6. 06完了前のリポジトリ状態確認

活用シーン

  1. 01.jj/ を含むリポジトリでの作業
  2. 02共置リポジトリで Git のステージング変更を避ける
  3. 03意図しない jj 操作からの復旧
  4. 04Git のプルリクエスト向け変更の準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/netresearch/jujutsu-workflow-skill --skill jujutsu-workflow

インストール後、Claude Code で/jujutsu-workflowを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
agent-safety.md
command-map.md
git-interop.md
parallel-agents.md
pr-handoff.md
recovery-playbook.md
why-jj-for-agents.md
scripts/
detect_jj_state.sh
verify_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 を参照してください。

コメント