关于 git-worktree-discipline
git-worktree-discipline 是供 Agent 使用的共享技能,用于在进行重要修改前判断是否应通过 Git worktree 隔离变更。它会检查现有隔离状态和项目偏好,并引导创建工作区、完成设置及运行基线检查。
主要功能
- 01检测现有 worktree 隔离状态
- 02读取 Agent 文件中的隔离偏好
- 03根据项目状态建议是否隔离
- 04使用原生能力或 Git 创建 worktree
- 05执行项目设置和基线检查
适用场景
- 01编辑前隔离代码或文档变更
- 02复用现有 worktree,避免嵌套
- 03在新工作区检查项目基线
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ fudesign2008/ open-skills --skill git-worktree-discipline安装后在 Claude Code 中输入/git-worktree-discipline确认已加载。
附带文件reference.md
详细介绍
Git 工作树使用规范
内部共享技能。在首次进行非平凡写入(文档或代码)前,可选择创建/检测隔离环境。宿主应在
dependencies中声明此技能,并在缺失时中止。名称说明: 有意不命名为
using-git-worktrees。仅使用git-worktree-discipline。操作性的创建/检测/设置详情见reference.md(灵感来自常见的工作树实践;不依赖外部技能)。
何时运行
在宿主运行中首次进行非平凡的持久写入(文档或代码)前运行。仅当此变更已处于隔离环境中,或 gate/never,或本次会话选择 lean/hotfix 就地留痕时,才跳过创建提示。
工作流程
- 检测 — 此变更是否已位于关联工作树中?复用该工作树(不要嵌套)。在判定为隔离环境前,区分子模块和工作树。命令见:
reference.md。 - 确定偏好 — 在
AGENTS.md/CLAUDE.md中查看worktree-gate:always|never|ask。未设置 ≡ask。 - 提出建议(ask / always) — 根据项目状态评估是否适用(同级目录
../脚本、完整产品包、主工作树有未提交更改)。适合代码 + 单元测试;不适合未重新绑定路径的产品包。 - 按 gate 执行
never→ 跳过创建;【工作区隔离跳过】escape=worktree-gate-never;reason=…always→ 条件允许时创建(无需询问)ask→ 提出建议后询问:创建 / 拒绝 / lean;不得静默创建
- 创建 — 如果可用,优先使用 Agent 的原生工作区/工作树功能(避免产生对运行环境不可见的虚假 Git 工作树);否则使用 Git 回退方案,在项目内被忽略的目录中创建(优先使用
.worktrees/)。使用git check-ignore验证忽略状态。路径优先级和失败时的回退方案见:reference.md。 - 设置 + 基线 — 在新工作区中,运行适合项目的安装/构建,并在项目具备相应测试时运行基线测试/类型检查;如果基线失败,报告情况并询问是继续还是调查。仅当没有适用的项目标记时,才跳过安装/基线检查。
- Lean/hotfix / 拒绝 —
【工作区隔离跳过】escape=lean-hotfix|user-decline;reason=…
不要替代设计审批。不要在运行期间静默销毁隔离环境。不要暗示可在工作树中一键运行完整产品包。
清理责任
验证/归档后销毁/移除 → feature-branch-closeout 可选清理。本技能可注明与创建操作对应的移除命令。
集成指南
- 宿主:在首次写入制品/代码前添加一行——加载此技能(worktree gate + 可选隔离)。
- 仅在清理时与
feature-branch-closeout组合使用。 - 优先设置
user-invocable: false。 - 完整检测/创建/设置清单:
reference.md。
评论
支持 Markdown