mcpField
J
jujutsu-workflow

jujutsu-workflow

github.com/netresearch开发2077 次安装今天更新
代码仓库

关于 jujutsu-workflow

为使用 Jujutsu(jj)的仓库提供编码 Agent 工作流程指南,规定安全检测、修改、恢复、Git 交接和验证步骤。

主要功能

  1. 01识别 jj、Git、共置及影子仓库
  2. 02遵循适用于 Agent 的 jj 命令规范
  3. 03以非交互方式创建和拆分修改
  4. 04通过操作日志恢复状态
  5. 05通过 Git 交接修改
  6. 06完成前验证仓库状态

适用场景

  1. 01处理包含 .jj/ 的仓库
  2. 02避免修改共置仓库的 Git 暂存区
  3. 03恢复意外执行的 jj 操作
  4. 04准备通过 Git 创建拉取请求的修改

安装

复制下面的命令,在终端中运行。

$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/ 仓库,就优先使用 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,然后询问用户。

参见 references/git-interop.md。

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。

评论

支持 Markdown