mcpField
C
chief-upgrade

chief-upgrade

github.com/thaitypeAgent 工作流66112 次安装5 周前更新
代码仓库

关于 chief-upgrade

用于将 Chief 升级到指定版本、分支或标签的技能。它会识别编码 Agent 和安装模式,先展示变更供用户批准,并保护用户内容、验证升级结果。

主要功能

  1. 01选择稳定版、canary 或指定标签
  2. 02识别 Agent 与安装模式
  3. 03规划变更并比较 AGENTS.md
  4. 04获批后才应用升级
  5. 05验证文件并清理临时数据

适用场景

  1. 01将 Chief 升级到指定版本
  2. 02应用前审查升级变更
  3. 03升级时保留项目专属规则

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thaitype/chief --skill chief-upgrade

安装后在 Claude Code 中输入/chief-upgrade确认已加载。

详细介绍

将 Chief 升级到参数中指定的版本。

参数

第一个参数是目标版本(分支或标签)。可选。

  • 无参数 → 升级到最新稳定版(语义化版本号最高的标签)。运行 git ls-remote --tags https://github.com/thaitype/chief.git 查找,去掉 refs/tags/,忽略 ^{} 条目,并选择语义化版本号最高的标签。
  • canary → 最新的 canary 分支(正在开发,尚未发布)
  • v1.0.0、v2.0.0 等 → 指定的标签版本

步骤

0. 检测编码 Agent 和安装模式

检测用户配置了哪种编码 Agent:

  1. 存在 .claude/agents/ → 建议使用 claude-code
  2. 存在 .github/agents/ → 建议使用 copilot
  3. 仅存在 .agents/ → 建议使用 opencode

检测安装模式:

  1. Agent 专用目录中的任意文件是符号链接 → link
  2. 文件是普通文件 → copy
  3. 不存在 Agent 专用目录 → 建议使用 link

请用户确认 Agent 和模式。

1. 克隆目标版本
git clone --depth 1 --branch <version> https://github.com/thaitype/chief.git .chief-agent-tmp
2. 运行 upgrade.sh --plan 并对比 AGENTS.md

运行升级脚本的计划模式:

bash .chief-agent-tmp/scripts/upgrade.sh --plan --agent <agent> --mode <mode>

然后单独对比 AGENTS.md(脚本不会处理此文件):

diff AGENTS.md .chief-agent-tmp/template/AGENTS.md

向用户展示这两项输出。对于 AGENTS.md,说明:

  • 顶部的 Project Rules 部分由用户维护 — 切勿覆盖。
  • 其下所有内容(Rules Hierarchy、Chief 等)都是框架内容,可能需要更新。
3. 等待用户批准

请用户检查。他们可以:

  • 全部批准
  • 取消
  • 要求查看特定文件的更多详情
4. 运行 upgrade.sh(应用更改)并合并 AGENTS.md
bash .chief-agent-tmp/scripts/upgrade.sh --agent <agent> --mode <mode>

然后手动合并 AGENTS.md。按以下优先级处理:

  1. 如果用户的 AGENTS.md 包含 和 标记(新的延迟安装约定):

    • 将两个标记之间的所有内容替换为 .chief-agent-tmp/template/AGENTS.md 中的内容。
    • 标记之外的所有内容保持原样。
  2. 否则,如果用户的 AGENTS.md 有 ## Project Rules 部分(旧版 v4 布局):

    • 将从 ## Project Rules 到下一个 --- 之间的所有内容视为用户所有。
    • 将该部分之后的所有内容替换为模板中的新框架内容。
    • 用户的 Project Rules 部分保持原样。
  3. 否则(没有标记,也没有 Project Rules 部分):

    • 将整个文件视为框架内容,并用模板覆盖。

向用户展示合并后的结果,并在写入前征求确认。

升级绝不会触碰 .chief/(project.md、里程碑、规则)— 这些是用户数据,即使内容为空也是如此。

如果 upgrade.sh 成功,跳到步骤 6。

如果 upgrade.sh 失败,继续步骤 5。

5. 手动回退(如果 upgrade.sh 失败)

按照与 chief-install 回退流程相同的方式手动执行升级:

  1. 覆盖 Agent 文件 — 对每个 .chief-agent-tmp/template/.agents/agents/*.md:

    • 从本地文件中提取当前的 model: 值
    • 用模板文件覆盖本地文件
    • 将 ${thinking_model} 和 ${coding_model} 替换为提取到的模型值
    • 对于新的 Agent 文件(本地没有对应文件):复制并处理模型占位符
  2. 根据 Agent 和模式更新集成文件:

    claude-code link:

    for f in .agents/agents/*.md; do ln -sf "../../$f" ".claude/agents/$(basename "$f")"; done
    

    claude-code copy:

    cp .agents/agents/*.md .claude/agents/
    

    copilot link:

    for f in .agents/agents/*.md; do ln -sf "../../$f" ".github/agents/$(basename "$f")"; done
    

    copilot copy:

    cp .agents/agents/*.md .github/agents/
    

    其他 Agent — 无需集成文件。

  3. 模型占位符 — 如果任何文件中仍有 ${thinking_model} 或 ${coding_model}:

    • claude-code:替换为 opus/sonnet
    • 其他 Agent:询问用户模型名称并进行替换
6. 验证

检查所有预期文件是否存在,以及符号链接是否可用(如果使用 link 模式)。修复发现的任何问题。

7. 清理
rm -rf .chief-agent-tmp
8. 总结

报告更改内容、跳过的内容,以及仍需手动执行的步骤。

重要规则

  • 所有临时文件都必须位于 .chief-agent-tmp/ 中。绝不能写入 /tmp、会话目录、主目录或仓库外的任何其他位置。
  • 未经用户批准,绝不能应用更改
  • 绝不能覆盖用户在 .chief/ 里程碑(目标、契约、计划、报告)中的内容
  • 绝不能删除仅本地存在的文件——升级只更新和添加,绝不删除
  • 绝不能凭记忆概述差异——始终使用实际的差异输出(来自 upgrade.sh 或手动命令)
  • 即使升级已取消,也始终清理 .chief-agent-tmp

评论

支持 Markdown