Communitygithub.com

netresearch/jujutsu-workflow-skill

基于 Jujutsu (jj) 的 Agent 安全版本控制——使用 jj 管理本地变更,以 Git 作为规范的远程/PR/CI/审计接口。Netresearch 代理技能。

jujutsu-workflow-skill 是什么?

该技能为 AI 代理提供了一套完整的版本控制工作流,以 Jujutsu (jj) 为核心进行本地变更管理,同时保留 Git 作为与远程仓库、PR、CI 和审计交互的规范接口。它专为自动化场景设计,通过强制使用 `--no-pager`、禁止交互式编辑器等非协商性规则,确保代理操作的安全性和可重复性。技能支持多种仓库类型(纯 jj 或 jj+Git 协同),并提供了从检测、编辑、恢复到通过 Git 移交变更的完整流程。它特别适合需要并行代理协作的场景,每个代理拥有独立工作区,避免工作副本共享冲突,并能通过可验证的脚本和命令输出确保交付质量。

兼容平台✓Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add netresearch/jujutsu-workflow-skill

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

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。

参见 references/git-interop.md。

2. 代理安全规则(不可协商)

  • 输出命令始终使用 --no-pager;设置 jj config set --user ui.paginate never。
  • 始终使用 -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
# 编辑文件(在下一个 jj 命令时快照)
jj --no-pager diff
jj describe -m "<项目规范消息>"
j new -m "<下一个单元>"     # 每个逻辑单元一个变更——避免一个大提交

非交互式拆分混合变更: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 <默认分支>
jj bookmark create <分支> -r @-
jj git push --bookmark <分支>      # 新书签直接推送

绝不推送到受保护/默认分支;除非允许,绝不重写公共历史。使用 gh/glab 打开 PR。参见 references/pr-handoff.md。

6. 并行代理

每个并发代理一个 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 比 git 更适合代理(以及何时不使用它):references/why-jj-for-agents.md。

相关技能