1仕組みと動作原理
まず診断スクリプトを実行して機械的切り分けを実施:diagnose_plugins.py がローカルの ~/.claude プラグイン状態ファイル(installed_plugins.json、settings.json の enabledPlugins、known_marketplaces.json)を読み取り、「インストール済みだが未有効化」のリストを照合してキャッシュの鮮度をチェック。
Run the diagnostic script to identify common issues: ```bash python3 scripts/diagnose_plugins.py
診断の核心的判断基準:cache ディレクトリの mtime は信用せず、known_marketplaces.json の lastUpdated を鮮度の唯一の情報源とする(タイムゾーン付き ISO-8601 を厳格パースし、欠落・不正形式・タイムゾーンなし・未来のタイムスタンプはすべて無効と判定)。
never guess freshness from the unreliable cache-directory mtime.
2層の修復パス:公式 CLI(claude plugin enable/disable/update)と settings.json の enabledPlugins 直接編集を提供。さらに、一括有効化スクリプト enable_all_plugins.py(マーケットプレイス接尾辞でのマッチング、書き込み前に対話的確認を実施)も提供。
claude plugin enable plugin-name@marketplace-name
ナレッジベースによる裏付け:references/architecture.md でプラグインのライフサイクルとアクティベーションフロー(インストール → キャッシュへコピー → 登録 → 手動有効化 → 起動時の enabledPlugins 読み込み)を解説、references/known_issues.md で上流 GitHub の issue(#17832 など)を追跡、SKILL.md に 4 つの Common Issues の根本原因と解決策を内包。
https://github.com/anthropics/claude-code/issues/17832
「Skill と Command の2系統の拡張」に関するアーキテクチャの明確化:skills/ は説明文に基づき自動マッチングで起動、commands/ は /command-name での明示的呼び出しが必要。明示的に呼び出したい場合は command ファイルの追加が必要。
If a skill should be explicitly invocable, add a corresponding command file.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | python3 |
| cli | claude(官方 CLI:plugin enable/disable/install/uninstall/marketplace update) |
| cli | jq(诊断命令参考中读 JSON) |
| network | GitHub(issue 引用与 marketplace 内容源) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: scripts/diagnose_plugins.py
- 网络端点: 外部ネットワークアクセスの宣言: (SKILL が案内するユーザー操作)claude plugin marketplace update —— 公式 CLI による登録済みマーケットプレイスからの取得
- 本地工作目录: ファイル読み書きおよびアーティファクト出力: ~/.claude/settings.json の enabledPlugins(enable_all_plugins.py での対話的確認後のみファイル全体を書き戻し)
5二重目の独立検証
- [ok] 无网络外发(脚本层) — 两脚本零网络;https 只出现在 SKILL/known_issues 文档链接
- [ok] diagnose 只读声明属实 — 全文仅 json.load + print,无写文件路径
- [ok] enable_all 写前确认属实 — 写入前 input("Enable all these plugins? [y/N] "),非 y 即取消
- [ok] lastUpdated 唯一新鲜度来源规则三方一致 — SKILL.md / architecture.md / diagnose_plugins.py 同口径(时区必需、mtime 不可信、7 天过期、未来时间戳无效)
- [ok] 诊断退出码语义 — main() 末尾 missing/stale/invalid 任一成立打印 Action needed 并 return 1,与 SKILL 'exits nonzero' 一致
- [ok] settings.json 含密钥时的接触面 — enable_all 整文件 json.load/json.dump 回写;密钥字段原样保留不处理——按统一分档‘接触即 orange’上浮边界,本档定 yellow 因脚本从不读取/传递密钥字段,reason 已注明触发条件
6結論
3f56dc20d44cb7a1…