Jujutsu(jj)是一个与 Git 兼容的版本控制系统,具备可变提交、自动变更跟踪以及操作日志,使每一次操作都可以撤销。该技能的目标版本为 jj 0.36+,仅在项目存在 .jj/ 目录或明确提及 jj/jujutsu 时激活。
用途 该技能用于指导自动化智能体在 jj 仓库中正确操作,涵盖从日常提交、历史整理到推送、恢复和并行工作区等场景。它同时提供与 Git 互操作、revset/fileset/模板表达式、书签管理、冲突处理、配置定制等主题的深入参考文档。
主要能力
- 提供 jj 的心智模型:工作副本即提交、无暂存区、每次运行 jj 命令时文件变更自动快照到 @;change ID 稳定而 commit ID 不稳定;历史可变,后代自动变基;书签不同于分支,不会自动前进;冲突不阻塞提交。
- 列出智能体操作规则:始终使用 -m 传递消息,绝不调用会打开编辑器的命令;绝不使用交互式命令(如不带文件路径的 jj split、jj squash -i、jj resolve);变更后运行 jj st 验证;使用 change ID 而非 commit ID;revset 表达式始终用单引号包裹。
- 提供智能体专用配置示例(agent-jj-config.toml),包括用户信息、编辑器、diff 格式和分页设置,并说明通过 JJ_CONFIG 环境变量启动。
- 描述核心工作流:describe → code → new → repeat;历史整理命令如 jj squash、jj absorb、jj abandon;非线性工作方式,如从 trunk 创建兄弟提交、切换编辑不同 change;推送前需设置书签。
- 列出常用命令表,涵盖状态检查、差异/日志查看、描述提交、新建工作、编辑旧提交、压缩、自动分配、放弃提交、撤销、操作历史、恢复、书签创建/移动、推送/拉取。
- 提供恢复机制:jj undo、jj op log、jj op restore、jj evolog。
- 说明如何识别 jj 仓库:.jj/ 目录表示 jj 仓库,同时存在 .jj/ 和 .git/ 表示共置仓库,应始终使用 jj 命令;Git 的“detached HEAD”在共置仓库中属正常现象。
- 列出常见错误及修复方法,如遗漏 -m、不带路径使用 jj split、推送前忘记设置书签、使用 commit ID 而非 change ID、未加引号的 revset 表达式、混淆 :: 与 .. 运算符、将工作区创建为子目录等。
- 提供参考索引,包括 Git 互操作、命令陷阱、revset/fileset/模板语言规范、书签、GitHub/GitLab 工作流、冲突、分歧、配置参考、并行智能体设置等文档。
使用方式 该技能以文档形式提供,智能体在检测到 .jj/ 目录或明确提及 jj/jujutsu 时激活。使用时遵循智能体规则和核心工作流,并可按需查阅各深入参考文档。配置可通过 JJ_CONFIG 环境变量指定自定义配置文件。
适用场景 适用于使用 Jujutsu 进行版本控制的项目,尤其是需要自动化智能体参与提交、历史整理、冲突解决、推送和并行工作区管理的场景。也适用于需要理解 jj 与 Git 差异、进行 Git 互操作或编写 revset/fileset/模板表达式的用户。
限制 该技能仅提供文档和操作指引,不包含 jj 本身的安装或部署。目标版本为 jj 0.36+,部分命令和配置可能随版本变化。智能体操作时需严格遵守非交互式规则,否则可能导致命令挂起。关于收费、价格、平台或效果等信息暂未提供。