mcpField
R
repo-rename

repo-rename

github.com/paulrberg开发10293 次安装今天更新
代码仓库

关于 repo-rename

面向管理仓库身份和路径的开发者,用于重命名 GitHub 仓库及本地副本。它会先预览文件系统、远程地址和连续性引用的变更,再要求明确确认后应用。

主要功能

  1. 01预览仓库重命名变更
  2. 02重命名 GitHub 仓库和本地目录
  3. 03更新 origin URL
  4. 04替换指定范围内的仓库引用
  5. 05保留符合条件的 Agent 连续性路径

适用场景

  1. 01重命名仓库及对应的本地目录
  2. 02将仓库移至其他路径但不改名
  3. 03重命名后更新本地仓库引用
  4. 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 仓库、对应的本地文件夹和 origin URL。
  • 如果提供两个路径参数,则将源仓库移至目标位置,但不更改其名称、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 配置中的仓库绝对路径。
  • 不要修改其他对话记录存储、归档、远程或仓库。

工作流

  1. 从两个路径参数中的第一个解析源仓库;如果是重命名,则从当前目录解析。确定是否存在活跃的 AI 聊天记录,再判断是否需要保留连续性:

    • Claude Code:解析 ${CLAUDE_CONFIG_DIR:-~/.claude}/projects/<encoded-repo-path>(将绝对仓库路径中的每个非字母数字字符替换为 -),并检查该路径是否存在且非空。
    • Codex:解析 ${CODEX_HOME:-~/.codex}/sessions,并检查是否有任何会话文件引用了完全匹配的绝对仓库路径。
    • 如果两者都不存在,请说明无需更新聊天记录连续性。在这种情况下,仍可继续执行下述 GitHub、git、文件系统和仓库内容变更。
  2. 解析技能目录,并从仓库中运行辅助程序,生成只读预览:

    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 目录。

  3. 如果请求了 --dry-run,则返回预览并停止。成功的试运行不得更改 GitHub 仓库、远程仓库、文件夹、配置、聊天记录或仓库文件。

  4. 否则,先展示完整预览,并要求用户在后续消息中明确确认。说明确认即授权 GitHub 重命名、本地文件夹移动、启用时的 Claude 项目文件夹移动、origin 更新,以及所有列出的连续性/仓库替换。对于仅限本地的预览,请说明不会更改 GitHub 或 origin。标题使用 ### ⚠️ Rename preview — no changes made。用精简表格展示 GitHub、文件夹、origin、替换计数和回滚覆盖范围,然后列出所有文件和计数。将确切的确认令牌单独放在代码格式中。如果预览中的任何信息发生变化,重新生成预览并再次请求确认。

    对于同名移动,请显示未更改的 GitHub 身份和 origin,以及需要创建的每个父目录。

  5. 确认后,传入预览中的确切令牌:

    uv run <skill-dir>/scripts/repo-rename.py <new-name> --apply --confirm '<owner/old->owner/new>'
    

    对于同名移动,则改为传入两个路径和预览中的 move: 令牌。

    辅助程序会重新运行预检、备份每个替换文件、执行确定性的字面替换,并在失败时尝试回滚。绝不可绕过其工作区干净、目标路径或确认检查。

  6. 使用 gh repo view、git remote get-url origin、pwd -P,并搜索所列范围中残留的旧绝对路径/名称引用,以验证辅助程序的结果。单独报告有意保留的匹配项。

完成

试运行完成意味着已完整预览所有变更,且未写入任何内容。应用完成要求新的 GitHub 身份、文件夹、远程仓库及列出的连续性引用保持一致,并提供干净的验证报告。如果回滚不完整,请停止操作,并以 ### ⛔ Rollback incomplete 开头,然后在执行其他操作之前报告每项回滚失败操作。成功时,使用 ### ✅ Repository renamed 并提供“范围/预期/已验证”表格。保持辅助程序 JSON、确认令牌、命令、路径、URL 和回滚错误原样且不加修饰。

评论

支持 Markdown