superpowers skill 3.1: using-git-worktrees
智能体工作流安装$ npx skills add https://github.com/obra/superpowers --skill using-git-worktrees摘要具有智能目录选择和安全验证的隔离 Git 工作树。通过检查现有目录、CLAUDE.md 偏好设置或询问用户来自动检测工作树目录位置支持项目本地.worktrees和全局~/.config/superpowers/worktrees存储在创建前验证项目本地目录是否被 Git 忽略以防止意外提交工作树内容根据检测到的项目文件自动检测并运行项目设置npm install, cargo build, pip install, go mod download运行基线测试以确保在开始功能开发前处于干净的初始状态与头脑风暴、子智能体驱动开发和平执行工作流集成提供隔离的工作空间SKILL.md使用 Git 工作树概述确保工作在隔离工作空间中进行。优先使用平台原生工作树工具。仅在没有可用原生工具时回退到手动 Git 工作树。核心原则首先检测现有隔离。然后使用原生工具。然后回退到 Git。永远不要对抗框架。开始时宣布“我正在使用 using-git-worktrees 技能来设置隔离工作空间。”步骤 0检测现有隔离在创建任何东西之前检查您是否已处于隔离工作空间中。GIT_DIR$(cd$(gitrev-parse --git-dir)2/dev/nullpwd-P)GIT_COMMON$(cd$(gitrev-parse --git-common-dir)2/dev/nullpwd-P)BRANCH$(gitbranch --show-current)子模块保护GIT_DIR ! GIT_COMMON在 Git 子模块内部也成立。在得出已在工作树中的结论前验证您不在子模块中# 如果这返回路径您就在子模块中不是工作树——视为普通仓库gitrev-parse --show-superproject-working-tree2/dev/null如果GIT_DIR ! GIT_COMMON且不在子模块中您已处于链接工作树中。跳转到步骤 3项目设置。请勿创建另一个工作树。报告分支状态在分支上“已在隔离工作空间path上的分支name中。”分离 HEAD “已在隔离工作空间path中分离 HEAD外部管理。完成时需要创建分支。”如果GIT_DIR GIT_COMMON或在子模块中您在普通仓库检出中。用户是否已在指令中表明他们的工作树偏好如果没有在创建工作树前征求同意“您希望我设置一个隔离工作树吗它会保护您的当前分支不被更改。”无需询问即可遵守任何现有的声明偏好。如果用户拒绝同意则就地工作并跳转到步骤 3。步骤 1创建隔离工作空间您有两种机制。按此顺序尝试它们。1a. 原生工作树工具首选用户要求了隔离工作空间步骤 0 同意。您是否已有创建工作树的方法它可能是一个名为EnterWorktree、WorktreeCreate的工具/worktree命令或--worktree标志。如果有使用它并跳转到步骤 3。原生工具自动处理目录放置、分支创建和清理。当您有原生工具时使用git worktree add会创建框架无法看到或管理的幻影状态。只有在没有可用原生工作树工具时才继续步骤 1b。1b. Git 工作树回退仅当步骤 1a 不适用时使用— 您没有可用的原生工作树工具。使用 Git 手动创建工作树。目录选择遵循此优先级顺序。明确的用户偏好始终胜过观察到的文件系统状态。检查指令中的声明工作树目录偏好。如果用户已指定一个使用它而无需询问。检查现有项目本地工作树目录ls-d.worktrees2/dev/null# 首选隐藏ls-dworktrees2/dev/null# 替代方案如果找到使用它。如果两者都存在.worktrees获胜。检查现有全局目录project$(basename$(gitrev-parse --show-toplevel))ls-d~/.config/superpowers/worktrees/$project2/dev/null如果找到使用它向后兼容旧版全局路径。如果没有其他指导可用默认使用项目根目录的.worktrees/。安全验证仅项目本地目录必须在创建工作树前验证目录是否被忽略gitcheck-ignore-q.worktrees2/dev/null||gitcheck-ignore-qworktrees2/dev/null如果不是被忽略添加到 .gitignore提交更改然后继续。为什么关键防止意外将工作树内容提交到仓库。全局目录~/.config/superpowers/worktrees/无需验证。创建工作树project$(basename$(gitrev-parse --show-toplevel))# 根据所选位置确定路径# 对于项目本地path$LOCATION/$BRANCH_NAME# 对于全局path~/.config/superpowers/worktrees/$project/$BRANCH_NAMEgitworktreeadd$path-b$BRANCH_NAMEcd$path沙箱回退如果git worktree add因权限错误沙箱拒绝失败告诉用户沙箱阻止了工作树创建您将在当前目录中工作。然后就地运行设置和基线测试。步骤 3项目设置自动检测并运行适当的设置# Node.jsif[-fpackage.json];thennpminstall;fi# Rustif[-fCargo.toml];thencargobuild;fi# Pythonif[-frequirements.txt];thenpipinstall-rrequirements.txt;fiif[-fpyproject.toml];thenpoetryinstall;fi# Goif[-fgo.mod];thengo mod download;fi步骤 4验证干净基线运行测试以确保工作空间从干净状态开始# 使用项目合适的命令npmtest/cargotest/ pytest / gotest./...如果测试失败报告失败询问是否继续或调查。如果测试通过报告就绪。报告工作树就绪于 full-path 测试通过N 测试0 失败 准备实现 feature-name快速参考情况行动已在链接工作树中跳过创建步骤 0在子模块中视为普通仓库步骤 0 保护可用原生工作树工具使用它步骤 1a无原生工具Git 工作树回退步骤 1b.worktrees/存在使用它验证被忽略worktrees/存在使用它验证被忽略两者都存在使用.worktrees/都不存在检查指令文件然后默认.worktrees/全局路径存在使用它向后兼容目录未被忽略添加到 .gitignore 提交创建时权限错误沙箱回退就地工作基线期间测试失败报告失败 询问无 package.json/Cargo.toml跳过依赖安装常见错误对抗框架问题当平台已提供隔离时使用git worktree add修复步骤 0 检测现有隔离。步骤 1a 推迟至原生工具。跳过检测问题在现有工作树内创建嵌套工作树修复总是在创建任何东西前运行步骤 0跳过忽略验证问题工作树内容被跟踪污染 Git 状态修复在创建项目本地工作树前始终使用git check-ignore假设目录位置问题创建不一致性违反项目约定修复遵循优先级现有 全局遗留 指令文件 默认在测试失败时继续问题无法区分新错误和预存问题修复报告失败获得明确许可继续红旗永不当步骤 0 检测到现有隔离时创建工作树当您有原生工作树工具如EnterWorktree时使用git worktree add。这是第 1 号错误——如果您有它使用它。通过直接跳转到步骤 1b 的 Git 命令跳过步骤 1a在验证被忽略前创建工作树项目本地跳过基线测试验证在测试失败时未经询问继续总是首先运行步骤 0 检测优先使用原生工具而非 Git 回退遵循目录优先级现有 全局遗留 指令文件 默认为项目本地验证目录被忽略自动检测并运行项目设置验证干净测试基线
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2608109.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!