关于 jujutsu-workflow
为使用 Jujutsu(jj)的仓库提供编码 Agent 工作流程指南,规定安全检测、修改、恢复、Git 交接和验证步骤。
主要功能
- 01识别 jj、Git、共置及影子仓库
- 02遵循适用于 Agent 的 jj 命令规范
- 03以非交互方式创建和拆分修改
- 04通过操作日志恢复状态
- 05通过 Git 交接修改
- 06完成前验证仓库状态
适用场景
- 01处理包含 .jj/ 的仓库
- 02避免修改共置仓库的 Git 暂存区
- 03恢复意外执行的 jj 操作
- 04准备通过 Git 创建拉取请求的修改
安装
复制下面的命令,在终端中运行。
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/ 仓库,就优先使用 jj(Jujutsu),而不是直接使用 git。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,然后询问用户。
2. Agent 安全规则(不可妥协)
- 对会打印内容的命令始终添加
--no-pager。不要将ui.paginate写入用户配置——--user配置会在会话结束后继续生效,还会影响用户交互式使用jj时的分页。 - 始终使用
-m。绝不运行编辑器/TUI 形式的命令——裸用jj describe|commit|squash、jj split(交互式)、jj squash -i、jj resolve、jj diffedit——这些命令会卡住 Agent。 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. 并行 Agent
每个并发 Agent 使用一个 jj workspace——绝不共用工作副本。参见 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。