关于 repo-rename
面向管理仓库身份和路径的开发者,用于重命名 GitHub 仓库及本地副本。它会先预览文件系统、远程地址和连续性引用的变更,再要求明确确认后应用。
主要功能
- 01预览仓库重命名变更
- 02重命名 GitHub 仓库和本地目录
- 03更新 origin URL
- 04替换指定范围内的仓库引用
- 05保留符合条件的 Agent 连续性路径
适用场景
- 01重命名仓库及对应的本地目录
- 02将仓库移至其他路径但不改名
- 03重命名后更新本地仓库引用
- 04无远程地址时仅执行本地重命名
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulrberg/ agent-skills --skill repo-rename安装后在 Claude Code 中输入/repo-rename确认已加载。
附带文件agents/openai.yamlscripts/repo-rename.py
详细介绍
仓库重命名
如果斜杠命令或美元命令已将这些说明添加到对话中,请直接遵循。在这种情况下,请勿通过技能工具再次调用此技能。
应用仓库重命名前,先预览完整的 GitHub、Git、文件系统和 Agent 连续性变更。
范围
- 重命名当前 GitHub 仓库、对应的本地文件夹和
originURL。 - 如果提供两个路径参数,则将源仓库移至目标位置,但不更改其名称、GitHub 身份或
origin。两个路径的文件夹名称必须相同。创建缺失的父目录前,先预览这些变更。 - 如果仓库没有 Git 远程,则仅重命名本地状态:文件夹、连续性引用和仓库内容。随后,辅助程序会跳过 GitHub 重命名和
origin更新。只要仓库存在任何远程,就仍需要有效的 GitHub 上下文。 - 只有在仓库存在正在使用的 Claude Code 或 Codex 对话记录时,才更新
~/.claude/projects、存在时的~/claude/projects、~/.codex/sessions和~/.codex/config.toml中的旧路径字面内容。没有正在使用的对话记录的仓库不进行此连续性更新。 - 更新仓库内受限范围内的旧名称字面引用,但排除 VCS、依赖项(包括 Python 虚拟环境)、缓存和生成的构建目录。
- 对于同名移动,仅替换仓库文件中的旧绝对路径。
- 默认使用已跟踪的仓库文件,并在读取待替换文件前跳过
PROMPT.md、TODO.md和符号链接。搜索时剪枝排除目录。用户明确授权更新笔记、依赖项、缓存或生成文件时,请在预览和应用时都传入--include-local-state。这会包含上述仓库文本文件,同时保留文件权限。符号链接、二进制文件和.git仍会被排除。 - 辅助程序遵循
CLAUDE_CONFIG_DIR和CODEX_HOME的设置,仅在存在正在使用的对话记录时更新连续性信息,并且只替换连续性存储和 Codex 配置中的仓库绝对路径。 - 不要修改其他对话记录存储、归档、远程或仓库。
工作流
-
从两个路径参数中的第一个解析源仓库;如果是重命名,则从当前目录解析。确定是否存在活跃的 AI 聊天记录,再判断是否需要保留连续性:
- Claude Code:解析
${CLAUDE_CONFIG_DIR:-~/.claude}/projects/<encoded-repo-path>(将绝对仓库路径中的每个非字母数字字符替换为-),并检查该路径是否存在且非空。 - Codex:解析
${CODEX_HOME:-~/.codex}/sessions,并检查是否有任何会话文件引用了完全匹配的绝对仓库路径。 - 如果两者都不存在,请说明无需更新聊天记录连续性。在这种情况下,仍可继续执行下述 GitHub、git、文件系统和仓库内容变更。
- Claude Code:解析
-
解析技能目录,并从仓库中运行辅助程序,生成只读预览:
uv run <skill-dir>/scripts/repo-rename.py <new-name> --dry-run对于同名移动,可从任意目录运行:
uv run <skill-dir>/scripts/repo-rename.py <source-path> <destination-path> --dry-run辅助程序要求工作区干净、GitHub 仓库名与文件夹名匹配、目标路径空闲,且 GitHub 上下文有效。对于没有远程仓库的仓库,只要求工作区干净且目标路径空闲。它会报告
"local_only": true,并提供local:<old>-><new>确认令牌。它会打印旧/新仓库和路径、确切的确认令牌、外部命令、目录移动、每个替换文件、出现次数以及回滚覆盖范围。同名移动使用move:<absolute-source>-><absolute-destination>令牌。不支持链接工作树和外部 Git 目录。 -
如果请求了
--dry-run,则返回预览并停止。成功的试运行不得更改 GitHub 仓库、远程仓库、文件夹、配置、聊天记录或仓库文件。 -
否则,先展示完整预览,并要求用户在后续消息中明确确认。说明确认即授权 GitHub 重命名、本地文件夹移动、启用时的 Claude 项目文件夹移动、
origin更新,以及所有列出的连续性/仓库替换。对于仅限本地的预览,请说明不会更改 GitHub 或origin。标题使用### ⚠️ Rename preview — no changes made。用精简表格展示 GitHub、文件夹、origin、替换计数和回滚覆盖范围,然后列出所有文件和计数。将确切的确认令牌单独放在代码格式中。如果预览中的任何信息发生变化,重新生成预览并再次请求确认。对于同名移动,请显示未更改的 GitHub 身份和
origin,以及需要创建的每个父目录。 -
确认后,传入预览中的确切令牌:
uv run <skill-dir>/scripts/repo-rename.py <new-name> --apply --confirm '<owner/old->owner/new>'对于同名移动,则改为传入两个路径和预览中的
move:令牌。辅助程序会重新运行预检、备份每个替换文件、执行确定性的字面替换,并在失败时尝试回滚。绝不可绕过其工作区干净、目标路径或确认检查。
-
使用
gh repo view、git remote get-url origin、pwd -P,并搜索所列范围中残留的旧绝对路径/名称引用,以验证辅助程序的结果。单独报告有意保留的匹配项。
完成
试运行完成意味着已完整预览所有变更,且未写入任何内容。应用完成要求新的 GitHub 身份、文件夹、远程仓库及列出的连续性引用保持一致,并提供干净的验证报告。如果回滚不完整,请停止操作,并以 ### ⛔ Rollback incomplete 开头,然后在执行其他操作之前报告每项回滚失败操作。成功时,使用 ### ✅ Repository renamed 并提供“范围/预期/已验证”表格。保持辅助程序 JSON、确认令牌、命令、路径、URL 和回滚错误原样且不加修饰。