check-updates について
check-updates は Fabric スキル向けの読み取り専用更新チェッカーです。インストール元とエージェントホストを判定してリポジトリのバージョンと比較し、自動更新せずに対応する更新方法を示します。
主な機能
- 01インストール経路と実行ホストの判定
- 02ローカル版とリポジトリ版の比較
- 03ホストに応じた更新案内
- 04インストール単位での通信頻度制御
活用シーン
- 01Fabric スキルの新バージョンの確認
- 02現在のエージェントホストで使える更新方法の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ skills-for-fabric --skill check-updatesインストール後、Claude Code で/check-updatesを入力して読み込まれたか確認します。
詳細
更新の確認
これは読み取り専用の更新チェッカーです。このスキルを提供したインストール先を特定し、そのバージョンをリポジトリの main ブランチと比較して、現在のエージェントホストがサポートする更新方法を表示します。自動的に更新されることはありません。
実行間隔
次の2つの制御は分けて扱います。
- 呼び出しガード: 他の Fabric スキルは、処理を続ける前にセッションごとに1回このスキルを呼び出します。
- ネットワークガード: 自動呼び出しでは、検出されたインストール識別情報ごとに、リモートへの照会を7日に1回までに制限します。
ユーザーの現在のリクエストがバージョン、変更履歴、更新確認を直接求めている場合は、明示的な呼び出しとして扱い、7日間のネットワークガードを適用しません。このスキルが別のスキルのセッション開始通知によってのみ呼び出された場合は、自動呼び出しとして扱います。
自動呼び出しの後は、確認がスキップされた場合や失敗した場合も含め、呼び出し元の元のタスクを必ず続行してください。
手順
Step 1: インストールコンテキストを特定する
インストールルートの候補を1つ決定します。
- ユーザーがインストールパスを明示的に指定している場合は、その正確なパスを使用します。
- それ以外の場合は、アクティブな
<skills-root>/check-updates/SKILL.mdファイルを起点にします。 <skills-root>の名前がskillsの場合は、その親を包含ルートとして検討します。この包含ルートにサポート対象のプラグインマニフェストがあるか、package.jsonと直下の.gitファイルまたはディレクトリの両方があり、さらに後述する skills-for-fabric の肯定的な Git 識別情報がある場合に限り、包含ルートを使用します。- それ以外の場合は、
<skills-root>を候補ルートとして使用します。これには、~/.copilot/skillsや~/.agents/skillsにある個人用コピーと、.github/skills、.agents/skills、.claude/skillsにあるプロジェクト用コピーが含まれます。 - ランタイムからアクティブなスキルパスを取得できない場合は、コンテキストを不明として報告します。推測してはいけません。
シェルの現在の作業ディレクトリからインストール先を推定してはいけません。候補ルートより上の階層をたどってはいけません。無関係な親の .git ディレクトリを含むプロジェクトは、そのリポジトリからスキルが提供された証拠にはなりません。
ランタイムホストは、インストール経路とは独立して特定します。
copilot-cli | claude-code | cursor | windsurf | codex | other | unknown
現在のセッションまたはランタイムが公開するホスト識別情報を使用します。プラグインマニフェスト、インストールパス、作業ディレクトリから推定してはいけません。決定的なテストでは、ランタイムホストを明示的に上書きできますが、通常の使用ではできません。ホストを特定できない場合は unknown を使用します。
インストール済みプラグインをランタイムで検出する場合は、次のツール横断の優先順位で最初に存在するマニフェストを使用します。
.plugin/plugin.jsonplugin.json.github/plugin/plugin.json.claude-plugin/plugin.json
このリポジトリでは、.github/plugin/plugin.json が正規のソースマニフェストです。.plugin/plugin.json と plugin.json は、ほかのインストールレイアウトやテスト用フィクスチャとの互換性を保つための代替手段です。最後の場所は、Claude 互換マニフェストのみを公開するパッケージをサポートします。このランタイムでの確認順序を、このリポジトリの作成ガイドとして扱ってはいけません。
次の順序で候補ルートを分類します。
| 経路 | 候補ルートに必要なファイル | 読み取る内容 |
|---|---|---|
| プラグイン | サポート対象のプラグインマニフェストが1つ | トップレベルの name、version、repository |
| Git クローン | package.json、直下の .git ファイルまたはディレクトリ、skills-for-fabric の肯定的な Git 識別情報 | トップレベルの version、repository.url |
| コピーされたスキル | プラグインまたは Git のレイアウトがなく、ルートに SKILL.md があるか、直下のスキルディレクトリに SKILL.md がある | 暫定的なスキルディレクトリ名のみ |
| 不明 | いずれの正確なレイアウトにも該当しない | 識別情報や更新コマンドなし |
両方のレイアウトが存在する場合は、プラグインの検出を優先します。これにより、開発用フィクスチャがローカルの Git リモートを使用していても、プラグインとしての意味を維持できます。
肯定的な Git 識別情報には、次の両方の確認が必要です。
package.jsonのnameの最後のスコープなしセグメントはskills-for-fabricです。受け入れられる例にはskills-for-fabric、@microsoft/skills-for-fabric、およびコントリビューターのフォークスコープが含まれます。- 末尾のスラッシュと
.gitを削除した後、リポジトリパスの最後のセグメントがskills-for-fabricであり、大文字と小文字を区別せずに比較されます。
いずれかのチェックが失敗した場合、その包含するルートを Git チャネルに昇格させず、
それに対して Git を実行しないでください。候補ルートの解決を続行し、結果として得られた
候補を独立して分類してください。したがって、ネストされた skills ルートは
緩いコピーである可能性があります。たまたま skills/ ディレクトリを含む一般的な
Node リポジトリは、skills-for-fabric のインストールではありません。
コピーされたチャネルは、明示的なリクエストがそのソースを確認するまで終端です:
- 自動呼び出しの場合、質問をしないでください。任意で、検証されていない緩いコピーが スキップされ、明示的に確認できるという短い注記を 1 つ表示し、その後呼び出し元の 元のタスクを続行します。
- ソース確認なしの明示的な呼び出しの場合、暫定的なコピーされたスキル名を列挙し、 ソースとバージョンが検証されていないことを述べ、コピーされたチャネルのセクションで 確認の質問をし、停止します。
どちらのパスも、ネットワークガードやリモートバージョンのステップには進みません。
1 つのコンテキストオブジェクトを構築します:
runtimeHost: copilot-cli | claude-code | cursor | windsurf | codex | other | unknown
channel: plugin | git | copy | unknown
root: exact candidate root
installKind: marketplace | direct | none
installScope: user | project | local | managed | none
manifestName: plugin manifest name | none
installedName: marketplace entry name | none
marketplace: marketplace name | none
sourceId: direct-install source ID | none
identity: plugin:<marketplace>/<installed-name> | plugin:direct/<source-id> | git:<repository-url-as-stored>|<root>
localVersion: manifest version
repository: URL exactly as stored in the selected manifest
updateTarget: <installed-name>@<marketplace> | <manifest-name> | <root> | none
copiedSkills: direct skill directory names | none
プラグインの場合、マニフェスト名をインストールされたマーケットプレイスエントリ名とは 別に保ってください。これらは異なることがあります。インストールされたエントリは、 ネイティブランタイムメタデータ、または候補ルートを識別するネイティブプラグイン一覧から 解決してください。
GitHub Copilot CLI のマーケットプレイスインストールの場合、ドキュメント化されたパスは
~/.copilot/installed-plugins/<marketplace>/<installed-name> であるため、これら 2 つのパス
セグメントが正式です。
~/.copilot/installed-plugins/_direct/<source-id> にある直接の Copilot CLI インストールの
場合、installKind を direct に設定し、ソース ID はキャッシュIDにのみ使用し、
マニフェスト名をベアの更新ターゲットとして使用します。_direct はマーケットプレイス名では
ありません。
Claude Code のマーケットプレイスインストールの場合、インストールされたエントリとスコープを
Claude のネイティブプラグインメタデータから解決してください。claude plugin list --json は
エントリを識別でき、宣言している設定ファイルがそのスコープを識別します:
~/.claude/settings.json->user.claude/settings.json->project.claude/settings.local.json->local- 管理対象設定 ->
managed
同じエントリが複数のスコープに存在する場合、選択肢を列挙し、どれを更新するかを尋ねてください。
スコープを推測しないでください。skills ディレクトリ、--plugin-dir、または --plugin-url
からのみ読み込まれたプラグインにはマーケットプレイスのインストール記録がありません。
それに対する更新コマンドをでっち上げないでください。
ネイティブメタデータとインストール済みパスが利用できない場合、マッピングが明白な場合に
限り、マニフェスト名をマーケットプレイス fabric-collection とともに使用してください。
fabric-skills マニフェストは明白ではありません。なぜなら、レガシーの skills-for-fabric
マーケットプレイスエントリが同じペイロードを使用しているからです。その場合、インストール
されたエントリを解決できなかったことを報告し、ユーザーにネイティブプラグイン一覧を
確認するよう求め、ID や更新コマンドを推測しないでください。
Git の package.json の場合、url プロパティを持つリポジトリオブジェクト、または
リポジトリ URL 文字列のいずれかを受け入れてください。リポジトリの値は保存されているとおりに
正確に保ち、キャッシュIDを構築する際に解決された正確なルートを追加してください。これにより、
1 つのクローンが同じリポジトリの別のクローンのチェックを抑制するのを防ぎます。リモートツールの
ために GitHub のオーナーとリポジトリを解析する場合、末尾の .git と末尾のスラッシュのみを
削除してください。オーナーの綴り、大文字と小文字、アンダースコア、句読点を変更しないでください。
必須フィールドが存在すること、および localVersion がセマンティックバージョンのテキストで
あることを検証してください。検証が失敗した場合、不正な形式のフィールドを報告し、部分的な
メタデータを使用するのではなく、コンテキストを unknown として分類してください。
ステップ 2:ネットワークガードを適用する
決定的なテストの場合に限り、呼び出し元から指定された正確なキャッシュパスを使用します。 それ以外の場合は、次の永続キャッシュファイルを使用します。
~/.config/fabric-collection/last-update-check.json
Windows の場合は、次のとおりです。
$env:USERPROFILE\.config\fabric-collection\last-update-check.json
このファイルは、インストール ID をキーとするフラットな JSON オブジェクトです。
{
"plugin:fabric-collection/fabric-consumption": "2026-07-15",
"plugin:direct/github-com-example-skills": "2026-07-15",
"git:https://github.com/example/skills-for-fabric.git|C:\\repos\\skills-for-fabric": "2026-07-14"
}
UTC 日付は YYYY-MM-DD 形式で使用します。
- 自動呼び出しの場合、この ID に有効な直近 7 日以内の日付があるときは、リモートの確認をスキップします。
- 明示的な呼び出しの場合、新しいキャッシュエントリーがあってもリモートの確認を行います。
- インストール済みプラグインエントリーや Git クローンのルートが異なる場合、それぞれのエントリーは互いの確認を抑止しません。
- ファイルを書き込む際は、関連のないすべてのエントリーを保持します。
- ファイルに不正な JSON が含まれている場合は警告し、上書きしません。
- コピーされたコンテキストや不明なコンテキストのキャッシュエントリーは読み書きしません。
リモートへの試行が完了したら、更新が見つかったか、更新が見つからなかったか、失敗したかにかかわらず、検出された ID に今日の UTC 日付を記録します。ただし、キャッシュファイルに不正な形式の JSON が含まれている場合を除きます。これにより、自動ネットワーク試行が失敗しても、すべてのセッションで繰り返されるのを防ぎます。ネットワークガードによって試行がスキップされた場合は、マーカーを書き換えないでください。
ステップ 3:リモートバージョンを読み取る
同じリポジトリの同じ main ref から package.json と CHANGELOG.md を読み取ります。次の方法を順に試し、最初に成功した方法で停止します。
-
**Git CLI:**候補ルート自体に直接
.gitファイルまたはディレクトリがある場合に限ります。無関係な親リポジトリを検出する可能性があるため、利用可能かどうかの確認にgit rev-parseを使用しないでください。git -C "<root>" fetch origin main --quiet git -C "<root>" show origin/main:package.json git -C "<root>" show origin/main:CHANGELOG.md -
**認証済み GitHub ツール:**GitHub MCP のファイルツール、またはマニフェスト URL から正確に解析したオーナーとリポジトリを指定した
gh apiを使用します。refmainのpackage.jsonとCHANGELOG.mdを読み取ります。 -
**公開 Raw コンテンツ:**公開リポジトリの場合、
https://raw.githubusercontent.com/<owner>/<repo>/main/から両方のファイルを読み取ります。
最新の GitHub Release タグをリモートバージョンとして使用しないでください。プラグインマーケットプレイスの更新はリポジトリのコンテンツに従うため、リリースタグがプラグインユーザーに提供されているバージョンより遅れている場合があります。
バージョンの取得に失敗した場合は、検出されたチャンネル、ID、ローカルバージョンを簡潔な警告とともに表示します。リモートバージョンを捏造しないでください。変更履歴の取得だけに失敗した場合でも、バージョンを比較して報告し、変更履歴を取得できなかったことを記載します。
ステップ 4:比較して報告する
セマンティックバージョンを比較します。
remoteVersion > localVersion:更新があります。remoteVersion <= localVersion:最新です。
更新がある場合は、ローカルバージョンとリモートバージョンの間に該当する CHANGELOG.md の項目を表示し、検出されたチャンネルと runtimeHost の両方で確認済みの案内のみを示します。
プラグインチャンネル
別のホスト向けのプラグインコマンドを出力しないでください。
| ランタイムホスト | 確認済みの案内 |
|---|---|
| GitHub Copilot CLI | マーケットプレイスからのインストールの場合は /plugin update <installed-name>@<marketplace> を表示します。直接インストールの場合は /plugin update <manifest-name> を表示します。 |
| Claude Code | 解決済みのスコープを持つマーケットプレイスからのインストールの場合は、claude plugin update <installed-name>@<marketplace> --scope <scope> を表示し、その後 /reload-plugins を実行するか Claude Code を再起動するよう伝えます。 |
| Cursor | Customize > Plugins に案内します。チームのマーケットプレイスの場合、管理者は Refresh または Enable Auto Refresh を使用できます。プラグイン CLI コマンドは出力しないでください。 |
| Windsurf、Codex、その他、または不明 | 利用可能なバージョンとリポジトリを報告しますが、このレイアウトでは実行可能なプラグインコマンドが確認されていないため、提示しません。 |
GitHub Copilot CLI のマーケットプレイスからのインストール:
/plugin update <installed-name>@<marketplace>
インストール済みのマーケットプレイスエントリーが正とされます。たとえば、インストール済みエントリーが fabric-consumption@fabric-collection の場合、次のようになります。
/plugin update fabric-consumption@fabric-collection
インストール済みエントリーが旧式の skills-for-fabric エイリアスの場合、コピーされたマニフェストの名前が fabric-skills であっても、現在のペイロードをインストール済みエントリーが受け取れるよう、まずそのエイリアスを更新します。
/plugin update skills-for-fabric@fabric-collection
その後、必要に応じて正規のエントリーに移行できます:
/plugin uninstall skills-for-fabric@fabric-collection
/plugin install fabric-skills@fabric-collection
GitHub Copilot CLI の直接インストール:
/plugin update <manifest-name>
直接インストールの場合、ネイティブ CLI の更新対象にはマニフェスト名のみを指定します。
更新対象に @_direct を付けたり、不透明なソース ID を使用したりしないでください。
Claude Code のマーケットプレイスからのインストール:
claude plugin update <installed-name>@<marketplace> --scope <scope>
エントリー名とスコープは、Claude のインストール済みプラグインのメタデータから取得する必要があります。
Claude Code で Copilot の _direct の動作を再利用しないでください。
Git チャネル
git -C "<detected-root>" pull --ff-only
不明なチャネル
不足している想定ファイルを示し、更新コマンドは提示しないでください。既定で fabric-skills を使用してはいけません。
コピーされたスキルのチャネル
単独でコピーされたスキルには、信頼できるリポジトリ、インストール済みバージョン、ネイティブの更新対象がありません。これには、ソースのメタデータが付随しない状態で copilot skill add によりローカルファイルまたは URL から配置されたスキルも含まれます。
自動呼び出しの場合は、ソースについてユーザーに質問して作業を中断しないでください。コピーされたスキルの更新フローをスキップし、明示的な更新チェックで対応する置き換え先を特定できることを任意で伝えたうえで、ユーザーの作業を続行してください。実行可能なコマンドは提示しないでください。
明示的な呼び出しの場合は、候補ルートで見つかったスキル名の候補を列挙し、ファイルだけでは出所を検証できないことを伝えて、次のように質問してください:
Were these skills copied from https://github.com/microsoft/skills-for-fabric?
If yes, I can inspect the official public repository and show the supported
plugin bundle that will refresh them. I will not install or remove anything
without your confirmation.
ユーザーがソースを明示的に確認するまでは、ネットワークに接続したり、バージョンを比較したり、キャッシュの状態を書き込んだり、実行可能なインストール/更新コマンドを提示したりしないでください。
明示的な確認後:
-
まず認証済みの GitHub ツールを使用し、次に公開 raw コンテンツを使用して、
microsoft/skills-for-fabricのmainref から.github/plugin/marketplace.jsonを読み取ります。 -
候補となるスキルディレクトリ名を、各マーケットプレイスプラグインのソース内にあるスキルパスと照合します。完全一致するパスのみを根拠として扱ってください。
-
一致したユーティリティ以外のすべてのスキルを含む、目的に合ったプラグインを優先します。該当するプラグインが複数ある場合は、有効な選択肢を列挙し、ユーザーに選択を求めてください。
check-updatesが含まれているという理由だけでfabric-skillsを選択してはいけません。 -
runtimeHostでサポートされている置き換え方法のみを提示します:GitHub Copilot CLI:
/plugin marketplace add microsoft/skills-for-fabric /plugin install <matched-plugin>@fabric-collectionClaude Code の場合。個人用のコピーされたスキルのルートには
userを、プロジェクト用のコピーされたスキルのルートにはprojectを使用します:/plugin marketplace add microsoft/skills-for-fabric claude plugin install <matched-plugin>@fabric-collection --scope <scope>インストール後に
/reload-pluginsを実行するか、Claude Code を再起動するようユーザーに伝えてください。Claude のスコープを特定できない場合は、推測せずに質問してください。Cursor、Windsurf、Codex、その他、不明なホストの場合は、公式リポジトリのインストール手順にリンクし、実行可能な置き換えコマンドは提示しないでください。現在の公開リポジトリでは、これらのホスト用の検証済みネイティブプラグインマーケットプレイスは公開されていません。
これにより、単独のファイルを上書きしてバージョンの異なる依存関係を残すのではなく、最新の完全なバンドルをインストールできます。ネイティブプラグインがインストールされ、検証されるまで、単独のコピーはそのまま残してください。削除する場合は、別途ユーザーに確認してください。公式の完全一致するマッピングがない場合、または公開リポジトリを利用できない場合は、その旨を伝え、バンドルを捏造したり個別のファイルをコピーしたりしないでください。
例
目的別のプラグインバンドル
Host: copilot-cli
Detected: plugin:fabric-collection/fabric-consumption
Current: 0.3.7
Latest: 0.3.8
Update: /plugin update fabric-consumption@fabric-collection
Claude Code のプラグインバンドル
Host: claude-code
Detected: plugin:fabric-collection/fabric-consumption
Current: 0.3.7
Latest: 0.3.8
Update: claude plugin update fabric-consumption@fabric-collection --scope user
Reload: /reload-plugins
Git クローン
Detected: git:https://github.com/example/skills-for-fabric.git|C:\repos\skills-for-fabric
Current: 0.3.7
Latest: 0.3.8
Update: git -C "C:\repos\skills-for-fabric" pull --ff-only
不明なレイアウト
Could not determine the skills-for-fabric installation at <candidate-root>.
Expected a supported plugin manifest, or a positively identified
skills-for-fabric package.json plus a direct .git entry.
No update command was guessed.
公式の単独コピーを確認済みの場合
Host: copilot-cli
Detected loose skills: check-updates, powerbi-report-planning
Confirmed source: https://github.com/microsoft/skills-for-fabric
Supported refresh:
/plugin marketplace add microsoft/skills-for-fabric
/plugin install powerbi-authoring@fabric-collection
The loose files were not changed or removed.
必須
- アクティブなスキルのルート、またはユーザーが明示したパスから ID を特定します。
- ランタイムホストはインストール先の構成とは別に特定します。
- セッションごとに 1 回の呼び出しと、7 日間のネットワークガードを分けて管理します。
- プラグインの ID や更新コマンドでは、マニフェスト名だけでなく、インストール済みのマーケットプレイスエントリを使用します。
- 直接インストールとマーケットプレイス経由のインストールを区別します。
- Git チャネルを使用する前に、パッケージとリポジトリの ID を確実に確認します。
- Git キャッシュのエントリは、リポジトリと正確なクローンルートごとに分離します。
- 無関係なキャッシュエントリを保持し、UTC の日付を使用します。
- 公式公開リポジトリで単独のコピーを検索する前に、ソースを確認します。
- コピーされたスキル名を、公開マーケットプレイスの正確なスキルパスと照合します。
- ランタイムホストで動作確認済みの更新コマンドまたは置換コマンドのみを出力します。
- 自動チェック後は、処理をブロックせずに続行します。
推奨
- 認証済み GitHub ツールを使う前に、ルートローカルの Git リモートを使用します。
- バージョンと変更履歴は、同じリポジトリの参照先から取得します。
- 公式の単独コピーであることが確認できた場合は、個別ファイルを上書きせず、完全なネイティブプラグインバンドルで置き換えます。
- 簡潔でコピーして貼り付けやすい出力を提示します。
回避事項
- 現在の作業ディレクトリからインストール環境を推測すること。
gitに親リポジトリを検索させること。- 無関係なパッケージと
.gitの存在を、skills-for-fabric のクローンである証拠として扱うこと。 - マニフェストやインストールパスからランタイムホストを推測すること。
- 別のホストに Copilot または Claude のプラグインコマンドを提示すること。
- フォーカスされたバンドルの既定値を
fabric-skillsにすること。 - GitHub Release のタグをプラグインのマーケットプレイスバージョンとして使うこと。
- 失敗した自動ネットワークチェックを、毎回のセッションで繰り返すこと。
- 同名の単独フォルダーを、公式リポジトリ由来の証拠として扱うこと。
- 完全なバンドル依存関係を含めずに、コピーされた個別ファイルを置き換えること。
- ユーザーの明示的な同意なしに更新すること。
エラー処理
失敗した場合は、失敗した操作を報告して処理を続行します。
Could not check plugin:fabric-collection/fabric-consumption for updates: remote package.json was unavailable.
Current installed version: 0.3.7
The automatic check is non-blocking; continuing with the requested task.
ユーザーが「自分のスキルを更新して」とだけ伝えた場合は、更新を確認したいのか、検出されたネイティブ更新コマンドを実行したいのかを確認します。意図が曖昧なまま更新を実行しないでください。