chief-upgrade について
Chief を指定したリリース、ブランチ、タグへ更新するスキルです。コーディングエージェントとインストール方式を判定し、変更の承認後に適用して、ユーザー所有の内容を保護しながら結果を検証します。
主な機能
- 01安定版・canary・指定タグの選択
- 02エージェントと導入方式の判定
- 03変更計画と AGENTS.md の比較
- 04承認後にのみ更新を適用
- 05ファイル検証と一時データの削除
活用シーン
- 01Chief を指定バージョンへ更新
- 02適用前に更新内容を確認
- 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. コーディングエージェントとインストールモードを検出する
ユーザーがセットアップしているコーディングエージェントを検出します。
.claude/agents/が存在する → claude-code を提案.github/agents/が存在する → copilot を提案.agents/のみ存在する → opencode を提案
インストールモードを検出します。
- エージェント固有のディレクトリ内にシンボリックリンクがある → link
- ファイルが通常のファイルである → copy
- エージェント固有のディレクトリがない → 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 を手動でマージします。以下の優先順位を使用します。
-
ユーザーの
AGENTS.mdにおよびマーカーが含まれている場合(新しい遅延インストール方式):- マーカーの間を
.chief-agent-tmp/template/AGENTS.mdの内容で置き換えます。 - マーカーの外側はそのまま維持します。
- マーカーの間を
-
それ以外で、ユーザーの
AGENTS.mdに## Project Rulesセクションがある場合(従来の v4 レイアウト):## Project Rulesから次の---までをユーザーが管理するものとして扱います。- このセクションより下を、テンプレートの新しいフレームワークの内容で置き換えます。
- ユーザーの Project Rules セクションはそのまま維持します。
-
それ以外の場合(マーカーも Project Rules セクションもない場合):
- ファイル全体をフレームワークの内容として扱い、テンプレートの内容で上書きします。
マージ後の内容をユーザーに表示し、書き込む前に確認を得ます。
.chief/(project.md、milestones、rules)は、アップグレードによって絶対に変更しません。空であっても、ユーザーの状態データです。
upgrade.sh が成功した場合は、手順 6 に進みます。
upgrade.sh が失敗した場合は、手順 5 に進みます。
5. 手動でのフォールバック(upgrade.sh が失敗した場合)
chief-install のフォールバックパターンと同じ方法で、手動でアップグレードします。
-
エージェントファイルを上書きする —
.chief-agent-tmp/template/.agents/agents/*.mdごとに、以下を行います。- ローカルファイルから現在の
model:の値を取得します。 - テンプレートファイルでローカルファイルを上書きします。
${thinking_model}および${coding_model}を、取得したモデル値に置き換えます。- 新しいエージェントファイル(対応するローカルファイルがないもの)はコピーし、モデルのプレースホルダーを処理します。
- ローカルファイルから現在の
-
エージェントとモードに基づいて統合ファイルを更新する:
claude-code link:
for f in .agents/agents/*.md; do ln -sf "../../$f" ".claude/agents/$(basename "$f")"; doneclaude-code copy:
cp .agents/agents/*.md .claude/agents/copilot link:
for f in .agents/agents/*.md; do ln -sf "../../$f" ".github/agents/$(basename "$f")"; donecopilot copy:
cp .agents/agents/*.md .github/agents/その他のエージェント — 統合ファイルは不要です。
-
モデルのプレースホルダー — いずれかのファイルに
${thinking_model}または${coding_model}が残っている場合:- claude-code:
opus/sonnetに置き換えます。 - その他:モデル名をユーザーに尋ね、置き換えます。
- claude-code:
6. 検証する
必要なファイルがすべて存在すること、および(link モードの場合)シンボリックリンクが解決されることを確認します。問題があれば修正します。
7. クリーンアップする
rm -rf .chief-agent-tmp
8. 概要
変更した内容、スキップした内容、残っている手動作業を報告します。
重要なルール
- すべての一時ファイルは
.chief-agent-tmp/内に置く必要があります。リポジトリ外の/tmp、セッションディレクトリ、ホームディレクトリ、その他の場所には絶対に書き込まないでください。 - ユーザーの承認なしに変更を適用しないでください。
.chief/のマイルストーン(目標、契約、計画、レポート)にあるユーザーのコンテンツを絶対に上書きしないでください。- ローカルのファイルを絶対に削除しないでください。アップグレードでは更新と追加のみを行い、削除は行いません。
- 差分を記憶に基づいて要約しないでください。必ず実際の差分出力(upgrade.sh または手動コマンドによるもの)を使用してください。
- アップグレードがキャンセルされた場合も、必ず
.chief-agent-tmpをクリーンアップしてください。