mcpField
C
chief-upgrade

chief-upgrade

github.com/thaitypeエージェントワークフロー66112 回インストール5 週間前に更新
リポジトリ

chief-upgrade について

Chief を指定したリリース、ブランチ、タグへ更新するスキルです。コーディングエージェントとインストール方式を判定し、変更の承認後に適用して、ユーザー所有の内容を保護しながら結果を検証します。

主な機能

  1. 01安定版・canary・指定タグの選択
  2. 02エージェントと導入方式の判定
  3. 03変更計画と AGENTS.md の比較
  4. 04承認後にのみ更新を適用
  5. 05ファイル検証と一時データの削除

活用シーン

  1. 01Chief を指定バージョンへ更新
  2. 02適用前に更新内容を確認
  3. 03更新時にプロジェクト固有のルールを保持

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/chief-upgradeを入力して読み込まれたか確認します。

詳細

引数で指定されたバージョンに Chief をアップグレードします。

引数

最初の引数は対象バージョン(ブランチまたはタグ)です。省略可能です。

  • 引数なし → 最新の安定版リリース(semver タグのうち最大のもの)にアップグレードします。git ls-remote --tags https://github.com/thaitype/chief.git を実行して見つけます。refs/tags/ を取り除き、^{} のエントリを除外して、semver バージョンのうち最大のものを選択します。
  • canary → 最新の canary ブランチ(開発中、未リリース)
  • v1.0.0、v2.0.0 など → 指定したタグバージョン

手順

0. コーディングエージェントとインストールモードを検出する

ユーザーがセットアップしているコーディングエージェントを検出します。

  1. .claude/agents/ が存在する → claude-code を提案
  2. .github/agents/ が存在する → copilot を提案
  3. .agents/ のみ存在する → opencode を提案

インストールモードを検出します。

  1. エージェント固有のディレクトリ内にシンボリックリンクがある → link
  2. ファイルが通常のファイルである → copy
  3. エージェント固有のディレクトリがない → link を提案

エージェントとモードを確認するようユーザーに尋ねます。

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、milestones、rules)は、アップグレードによって絶対に変更しません。空であっても、ユーザーの状態データです。

upgrade.sh が成功した場合は、手順 6 に進みます。

upgrade.sh が失敗した場合は、手順 5 に進みます。

5. 手動でのフォールバック(upgrade.sh が失敗した場合)

chief-install のフォールバックパターンと同じ方法で、手動でアップグレードします。

  1. エージェントファイルを上書きする — .chief-agent-tmp/template/.agents/agents/*.md ごとに、以下を行います。

    • ローカルファイルから現在の model: の値を取得します。
    • テンプレートファイルでローカルファイルを上書きします。
    • ${thinking_model} および ${coding_model} を、取得したモデル値に置き換えます。
    • 新しいエージェントファイル(対応するローカルファイルがないもの)はコピーし、モデルのプレースホルダーを処理します。
  2. エージェントとモードに基づいて統合ファイルを更新する:

    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/
    

    その他のエージェント — 統合ファイルは不要です。

  3. モデルのプレースホルダー — いずれかのファイルに ${thinking_model} または ${coding_model} が残っている場合:

    • claude-code:opus/sonnet に置き換えます。
    • その他:モデル名をユーザーに尋ね、置き換えます。
6. 検証する

必要なファイルがすべて存在すること、および(link モードの場合)シンボリックリンクが解決されることを確認します。問題があれば修正します。

7. クリーンアップする
rm -rf .chief-agent-tmp
8. 概要

変更した内容、スキップした内容、残っている手動作業を報告します。

重要なルール

  • すべての一時ファイルは .chief-agent-tmp/ 内に置く必要があります。リポジトリ外の /tmp、セッションディレクトリ、ホームディレクトリ、その他の場所には絶対に書き込まないでください。
  • ユーザーの承認なしに変更を適用しないでください。
  • .chief/ のマイルストーン(目標、契約、計画、レポート)にあるユーザーのコンテンツを絶対に上書きしないでください。
  • ローカルのファイルを絶対に削除しないでください。アップグレードでは更新と追加のみを行い、削除は行いません。
  • 差分を記憶に基づいて要約しないでください。必ず実際の差分出力(upgrade.sh または手動コマンドによるもの)を使用してください。
  • アップグレードがキャンセルされた場合も、必ず .chief-agent-tmp をクリーンアップしてください。

コメント