[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C63BNFKZHAZWHTP12HSZ7T":3,"skill-same:01M6C63BNFKZHAZWHTP12HSZ7T":83},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6C63BNFKZHAZWHTP12HSZ7T","plugin-registry",null,"Claude Code plugin registry structure, install scopes, and version lag. Use when troubleshooting plugin problems, a stale plugin version in one project, or fixing registry entries.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",59,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fhealth-plugin\u002Fskills\u002Fplugin-registry\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"plugin registry","registry","plugin","2026","when","entries","sep","wed","structure","false","project","stale","grep","install","edit","write","read","claude code plugin","code","Bash","version","use","2026-11-10 10:12:30",false,"---\nname: plugin-registry\ndescription: \"Claude Code plugin registry structure, install scopes, and version lag. Use when troubleshooting plugin problems, a stale plugin version in one project, or fixing registry entries.\"\nuser-invocable: false\nallowed-tools: Bash(jq *), Bash(cp ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json *), Bash(claude plugin list *), Bash(bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Fcheck-registry.sh *), Bash(bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Ffix-registry.sh *), Read, Edit, Glob, Grep, TodoWrite\ncreated: 2026-02-04\nmodified: 2026-11-10\ncompatibility: claude-code\nreviewed: 2026-11-10\n---\n\n# Claude Code Plugin Registry\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else when... |\n|------------------------|---------------------------|\n| Plugin shows \"installed\" but isn't working | Setting up new plugins (`configure-plugin:configure-claude-plugins`) |\n| Need to understand plugin scopes | Configuring plugin permissions (`health-plugin:settings-configuration`) |\n| Fixing orphaned registry entries | Running the registry diagnostic and fix (`health-plugin:health-plugins`; for the user, `\u002Fhealth:check --scope=registry`) |\n| Debugging installation failures | |\n| A declared capability (LSP server, hook, command) silently never loads — see [REFERENCE.md](REFERENCE.md) § A capability declared in a registry is not proof it reached the installed copy | |\n\n## Registry Location\n\n`~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` (the root moves with `CLAUDE_CODE_PLUGIN_CACHE_DIR`) records every install across all projects; plugin files live under `cache\u002F`. Official reference: [plugin loading](https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fplugins\u002Floading), \"Find plugins on disk\".\n\n## Registry Structure (v2)\n\n```json\n{\n  \"version\": 2,\n  \"plugins\": {\n    \"plugin-name@marketplace-name\": [\n      {\n        \"scope\": \"project\",\n        \"projectPath\": \"\u002Fpath\u002Fto\u002Fproject\",\n        \"installPath\": \"~\u002F.claude\u002Fplugins\u002Fcache\u002Fmarketplace\u002Fplugin-name\u002F1.0.0\",\n        \"version\": \"1.0.0\",\n        \"installedAt\": \"2024-01-15T10:30:00Z\",\n        \"lastUpdated\": \"2024-01-15T10:30:00Z\",\n        \"gitCommitSha\": \"abc123\"\n      }\n    ]\n  }\n}\n```\n\nEach plugin key maps to an **array** of installations (supporting multiple scopes). Entries are version pointers into the shared cache, not plugin copies ([REFERENCE.md](REFERENCE.md) § The registry holds version pointers, not plugin copies).\n\n`scope` is `user`, `project` or `local`; `project` and `local` entries also carry `projectPath`. The per-field table, re-read from a live registry, is in [REFERENCE.md](REFERENCE.md) § Field reference.\n\n## Installation Scopes\n\n`--scope` names the settings file whose `enabledPlugins` the command writes:\n\n| Scope | Command | Settings file | Reaches |\n|-------|---------|---------------|---------|\n| `user` (default) | `claude plugin install my-plugin@marketplace` | `~\u002F.claude\u002Fsettings.json` | You, in every project |\n| `project` | `claude plugin install my-plugin@marketplace --scope project` | `.claude\u002Fsettings.json` | Everyone who clones the repo; each person also installs in their own clone |\n| `local` | `claude plugin install my-plugin@marketplace --scope local` | `.claude\u002Fsettings.local.json` | You, in this repo only |\n\nWhen scopes disagree, `local` overrides `project`, which overrides `user`, and managed settings override everything (official plugin loading reference, \"Find where a plugin is enabled\").\n\nA project entry can also appear with no install command run: a session-start sync was observed adding one per plugin the committed `.claude\u002Fsettings.json` enables, recorded at the then-current version ([REFERENCE.md](REFERENCE.md) § Session-start sync creates project entries).\n\n## Known Issue: #14202\n\n[anthropics\u002Fclaude-code#14202](https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code\u002Fissues\u002F14202) is **open** as of 2026-10-30: after a `--scope project` install in one project, other projects were reported (on 2.0.70) to show the plugin as \"(installed)\" and refuse to install it, while it does not load there. Recent comments name no version; details in [REFERENCE.md](REFERENCE.md) § Known issue #14202.\n\nAn \"already installed (scope: project)\" message exits `0`, so check `claude plugin list --json` for a row with your `projectPath`. Try `--scope local` (not verified to escape #14202) before § Last resort: edit the registry by hand.\n\n## Which Install Loads, and Why a Project Can Run an Old Version\n\nWhen a plugin has both a project entry for the current directory and a user\nentry, **the project entry decides which cached version loads there**, and it\ndoes not follow the user install's updates, so a project can run a version\nbehind the rest of the machine. `claude plugin details` reports the **user**\nversion from inside such a project; `claude plugin list --json` reports each\nrow's `scope` but not which row wins. The reliable read is the debug log:\n\n```bash\nCLAUDECODE= claude -p \"reply ok\" --debug plugins --debug-file \u002Ftmp\u002Fp.log\n```\n\nThen read its `skillsPath:` lines for the version actually loaded.\n\n`\u002Fhealth:check` runs `check-plugin-scope-lag.sh`, which lists every project-scope\nentry below its user-scope version as a `scope_lag` WARN.\n\nRemoving a lagging row is a **repair, not a fix**: the next session in that project re-creates it. The measured evidence, the lag query, and the uninstall-rewrites-committed-settings hazard are in [REFERENCE.md](REFERENCE.md).\n\n## Fixing Registry Issues\n\nFind orphaned entries (a `projectPath` whose directory is gone) with the diagnostic, not by testing each path by hand:\n\n```bash\nbash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Fcheck-registry.sh --verbose\n```\n\nPrefer the CLI and the bundled fix script, and confirm with the user before any write.\n\n| Task | Use |\n|------|-----|\n| Remove orphaned entries | `bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Ffix-registry.sh [--plugin \u003Cname>] [--dry-run]` (timestamped backup, JSON validation, aborts on error) |\n| Plugin needed in this project | `claude plugin install \u003Cplugin>@\u003Cmarketplace> --scope project` (or `--scope local`), run from the project |\n| Make a project-only plugin global | `claude plugin install \u003Cplugin>@\u003Cmarketplace>`, then `claude plugin uninstall \u003Cplugin>@\u003Cmarketplace> --scope project` from the project |\n| Remove a lagging project row | `claude plugin uninstall \u003Cplugin>@\u003Cmarketplace> --scope project`, with the snapshot-restore steps in [REFERENCE.md](REFERENCE.md) § Removing a lagging row rewrites the project's committed settings |\n\nA project-scope uninstall also rewrites the committed `.claude\u002Fsettings.json`. Install and uninstall are not pre-approved here, so each goes through the normal permission flow. Verify by re-reading the registry or `claude plugin list --json`; an exit code alone does not prove the row changed.\n\n### Last resort: edit the registry by hand\n\nOnly when neither the CLI nor `fix-registry.sh` can make the change, such as a row whose `projectPath` no longer exists for a case the script does not cover, or the #14202 refusal with no other scope working:\n\n1. Back up first, every time:\n\n   ```bash\n   cp ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json.backup\n   ```\n\n2. Read the file, then make the smallest change with the Edit tool: drop one array element, or add one element copied from an existing entry with `scope` and `projectPath` changed.\n3. Validate: `jq empty ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` must exit 0. If it does not, restore the backup.\n4. Run `\u002Freload-plugins` or start a new session, then re-run the diagnostic.\n\n## Project Settings Integration\n\nProject-scoped plugins also need a key in `.claude\u002Fsettings.json`: `enabledPlugins` is an **object** mapping `plugin@marketplace` to a boolean (`{\"enabledPlugins\": {\"plugin-name@marketplace\": true}}`), not an array of names. `claude plugin install --scope project` writes this key itself. Without it, even a correctly registered project-scoped plugin won't load.\n\n## Troubleshooting Checklist\n\n1. **Plugin shows installed but doesn't work**: check that `projectPath` matches the current directory and `.claude\u002Fsettings.json` has the `enabledPlugins` key, then run the registry diagnostic (`health-plugin:health-plugins`; for the user, `\u002Fhealth:check --scope=registry`)\n\n2. **Can't install plugin (already installed)**: look for an existing entry with a different `projectPath`; try `--scope local`, then § Last resort: edit the registry by hand\n\n3. **Plugin works in one project but not another**: likely project-scoped; install it in the other project, or at user scope\n\n4. **A skill or command is missing in one project only, or behaves as an older version**\n   - Suspect a project entry lagging the user install — run the lag query in [REFERENCE.md](REFERENCE.md) § Find rows that lag their user install\n   - Confirm with `--debug plugins` and read the `skillsPath:` version\n   - `claude plugin details` reports the user version here and will mislead you\n\n5. **Registry file is corrupted**: Claude Code keeps a dated `installed_plugins.unreadable.*.kept` copy when it rebuilds an unreadable registry; restore a backup, or reinstall with `claude plugin install`\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| View registry | `jq -c . ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| List plugins | `jq -r '.plugins \\| keys[]' ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| Check specific | `jq '.plugins.\"name@market\"' ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| Project-scoped rows | `jq '.plugins \\| to_entries[] \\| .value[] \\| select(.scope==\"project\") \\| {projectPath, version}' ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| Installs per scope | `claude plugin list --json` |\n| Orphan diagnostic | `bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Fcheck-registry.sh` |\n\nKeys are `{plugin-name}@{marketplace-name}`. After any registry change, run `\u002Freload-plugins` or start a new session for it to load.\n","# Claude Code Plugin Registry\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else when... |\n|------------------------|---------------------------|\n| Plugin shows \"installed\" but isn't working | Setting up new plugins (`configure-plugin:configure-claude-plugins`) |\n| Need to understand plugin scopes | Configuring plugin permissions (`health-plugin:settings-configuration`) |\n| Fixing orphaned registry entries | Running the registry diagnostic and fix (`health-plugin:health-plugins`; for the user, `\u002Fhealth:check --scope=registry`) |\n| Debugging installation failures | |\n| A declared capability (LSP server, hook, command) silently never loads — see [REFERENCE.md](REFERENCE.md) § A capability declared in a registry is not proof it reached the installed copy | |\n\n## Registry Location\n\n`~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` (the root moves with `CLAUDE_CODE_PLUGIN_CACHE_DIR`) records every install across all projects; plugin files live under `cache\u002F`. Official reference: [plugin loading](https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fplugins\u002Floading), \"Find plugins on disk\".\n\n## Registry Structure (v2)\n\n```json\n{\n  \"version\": 2,\n  \"plugins\": {\n    \"plugin-name@marketplace-name\": [\n      {\n        \"scope\": \"project\",\n        \"projectPath\": \"\u002Fpath\u002Fto\u002Fproject\",\n        \"installPath\": \"~\u002F.claude\u002Fplugins\u002Fcache\u002Fmarketplace\u002Fplugin-name\u002F1.0.0\",\n        \"version\": \"1.0.0\",\n        \"installedAt\": \"2024-01-15T10:30:00Z\",\n        \"lastUpdated\": \"2024-01-15T10:30:00Z\",\n        \"gitCommitSha\": \"abc123\"\n      }\n    ]\n  }\n}\n```\n\nEach plugin key maps to an **array** of installations (supporting multiple scopes). Entries are version pointers into the shared cache, not plugin copies ([REFERENCE.md](REFERENCE.md) § The registry holds version pointers, not plugin copies).\n\n`scope` is `user`, `project` or `local`; `project` and `local` entries also carry `projectPath`. The per-field table, re-read from a live registry, is in [REFERENCE.md](REFERENCE.md) § Field reference.\n\n## Installation Scopes\n\n`--scope` names the settings file whose `enabledPlugins` the command writes:\n\n| Scope | Command | Settings file | Reaches |\n|-------|---------|---------------|---------|\n| `user` (default) | `claude plugin install my-plugin@marketplace` | `~\u002F.claude\u002Fsettings.json` | You, in every project |\n| `project` | `claude plugin install my-plugin@marketplace --scope project` | `.claude\u002Fsettings.json` | Everyone who clones the repo; each person also installs in their own clone |\n| `local` | `claude plugin install my-plugin@marketplace --scope local` | `.claude\u002Fsettings.local.json` | You, in this repo only |\n\nWhen scopes disagree, `local` overrides `project`, which overrides `user`, and managed settings override everything (official plugin loading reference, \"Find where a plugin is enabled\").\n\nA project entry can also appear with no install command run: a session-start sync was observed adding one per plugin the committed `.claude\u002Fsettings.json` enables, recorded at the then-current version ([REFERENCE.md](REFERENCE.md) § Session-start sync creates project entries).\n\n## Known Issue: #14202\n\n[anthropics\u002Fclaude-code#14202](https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code\u002Fissues\u002F14202) is **open** as of 2026-10-30: after a `--scope project` install in one project, other projects were reported (on 2.0.70) to show the plugin as \"(installed)\" and refuse to install it, while it does not load there. Recent comments name no version; details in [REFERENCE.md](REFERENCE.md) § Known issue #14202.\n\nAn \"already installed (scope: project)\" message exits `0`, so check `claude plugin list --json` for a row with your `projectPath`. Try `--scope local` (not verified to escape #14202) before § Last resort: edit the registry by hand.\n\n## Which Install Loads, and Why a Project Can Run an Old Version\n\nWhen a plugin has both a project entry for the current directory and a user\nentry, **the project entry decides which cached version loads there**, and it\ndoes not follow the user install's updates, so a project can run a version\nbehind the rest of the machine. `claude plugin details` reports the **user**\nversion from inside such a project; `claude plugin list --json` reports each\nrow's `scope` but not which row wins. The reliable read is the debug log:\n\n```bash\nCLAUDECODE= claude -p \"reply ok\" --debug plugins --debug-file \u002Ftmp\u002Fp.log\n```\n\nThen read its `skillsPath:` lines for the version actually loaded.\n\n`\u002Fhealth:check` runs `check-plugin-scope-lag.sh`, which lists every project-scope\nentry below its user-scope version as a `scope_lag` WARN.\n\nRemoving a lagging row is a **repair, not a fix**: the next session in that project re-creates it. The measured evidence, the lag query, and the uninstall-rewrites-committed-settings hazard are in [REFERENCE.md](REFERENCE.md).\n\n## Fixing Registry Issues\n\nFind orphaned entries (a `projectPath` whose directory is gone) with the diagnostic, not by testing each path by hand:\n\n```bash\nbash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Fcheck-registry.sh --verbose\n```\n\nPrefer the CLI and the bundled fix script, and confirm with the user before any write.\n\n| Task | Use |\n|------|-----|\n| Remove orphaned entries | `bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Ffix-registry.sh [--plugin \u003Cname>] [--dry-run]` (timestamped backup, JSON validation, aborts on error) |\n| Plugin needed in this project | `claude plugin install \u003Cplugin>@\u003Cmarketplace> --scope project` (or `--scope local`), run from the project |\n| Make a project-only plugin global | `claude plugin install \u003Cplugin>@\u003Cmarketplace>`, then `claude plugin uninstall \u003Cplugin>@\u003Cmarketplace> --scope project` from the project |\n| Remove a lagging project row | `claude plugin uninstall \u003Cplugin>@\u003Cmarketplace> --scope project`, with the snapshot-restore steps in [REFERENCE.md](REFERENCE.md) § Removing a lagging row rewrites the project's committed settings |\n\nA project-scope uninstall also rewrites the committed `.claude\u002Fsettings.json`. Install and uninstall are not pre-approved here, so each goes through the normal permission flow. Verify by re-reading the registry or `claude plugin list --json`; an exit code alone does not prove the row changed.\n\n### Last resort: edit the registry by hand\n\nOnly when neither the CLI nor `fix-registry.sh` can make the change, such as a row whose `projectPath` no longer exists for a case the script does not cover, or the #14202 refusal with no other scope working:\n\n1. Back up first, every time:\n\n   ```bash\n   cp ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json.backup\n   ```\n\n2. Read the file, then make the smallest change with the Edit tool: drop one array element, or add one element copied from an existing entry with `scope` and `projectPath` changed.\n3. Validate: `jq empty ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` must exit 0. If it does not, restore the backup.\n4. Run `\u002Freload-plugins` or start a new session, then re-run the diagnostic.\n\n## Project Settings Integration\n\nProject-scoped plugins also need a key in `.claude\u002Fsettings.json`: `enabledPlugins` is an **object** mapping `plugin@marketplace` to a boolean (`{\"enabledPlugins\": {\"plugin-name@marketplace\": true}}`), not an array of names. `claude plugin install --scope project` writes this key itself. Without it, even a correctly registered project-scoped plugin won't load.\n\n## Troubleshooting Checklist\n\n1. **Plugin shows installed but doesn't work**: check that `projectPath` matches the current directory and `.claude\u002Fsettings.json` has the `enabledPlugins` key, then run the registry diagnostic (`health-plugin:health-plugins`; for the user, `\u002Fhealth:check --scope=registry`)\n\n2. **Can't install plugin (already installed)**: look for an existing entry with a different `projectPath`; try `--scope local`, then § Last resort: edit the registry by hand\n\n3. **Plugin works in one project but not another**: likely project-scoped; install it in the other project, or at user scope\n\n4. **A skill or command is missing in one project only, or behaves as an older version**\n   - Suspect a project entry lagging the user install — run the lag query in [REFERENCE.md](REFERENCE.md) § Find rows that lag their user install\n   - Confirm with `--debug plugins` and read the `skillsPath:` version\n   - `claude plugin details` reports the user version here and will mislead you\n\n5. **Registry file is corrupted**: Claude Code keeps a dated `installed_plugins.unreadable.*.kept` copy when it rebuilds an unreadable registry; restore a backup, or reinstall with `claude plugin install`\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| View registry | `jq -c . ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| List plugins | `jq -r '.plugins \\| keys[]' ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| Check specific | `jq '.plugins.\"name@market\"' ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| Project-scoped rows | `jq '.plugins \\| to_entries[] \\| .value[] \\| select(.scope==\"project\") \\| {projectPath, version}' ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json` |\n| Installs per scope | `claude plugin list --json` |\n| Orphan diagnostic | `bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Fcheck-registry.sh` |\n\nKeys are `{plugin-name}@{marketplace-name}`. After any registry change, run `\u002Freload-plugins` or start a new session for it to load.\n",{"name":5,"created":51,"modified":52,"reviewed":52,"description":7,"allowed-tools":53,"compatibility":54,"user-invocable":47},1770163200000,1794268800000,"Bash(jq *), Bash(cp ~\u002F.claude\u002Fplugins\u002Finstalled_plugins.json *), Bash(claude plugin list *), Bash(bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Fcheck-registry.sh *), Bash(bash ${CLAUDE_SKILL_DIR}\u002F..\u002Fhealth-plugins\u002Fscripts\u002Ffix-registry.sh *), Read, Edit, Glob, Grep, TodoWrite","claude-code","main","8da01fc7034a9dd86aabf9fe15311441a4224c8e","health-plugin\u002Fskills\u002Fplugin-registry",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-13 03:22:01",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add laurigates\u002Fclaude-plugins --skill plugin-registry",{"tool":69,"command":70},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill plugin-registry",{"tool":72,"command":73},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill plugin-registry","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fhealth-plugin\u002Fskills\u002Fplugin-registry\u002FSKILL.md",true,[77],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"REFERENCE.md","REFERENCE","参考文档",12638,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fhealth-plugin\u002Fskills\u002Fplugin-registry\u002FREFERENCE.md",[84,111,129,145,168,194],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":95,"publishedAt":46},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":93,"taxonomyTypeDesc":94},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[96,97,98,99,100,101,102,103,104,105,45,28,43,106,107,108,109,110,27,40],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","file","text","with","xdg","via",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":46},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[99,118,119,120,33,121,28,43,122,123,124,27,40,39,38,125,126,127,128,45],"kitty session persistence","session","persistence","snapshots","uname","reboot","terminal","snapshot","macos","sessions","restore",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":46},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[136,137,99,138,139,101,140,141,102,142,143,45,28,144,43,107,108,124,27,40],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":46},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[152,153,154,155,156,157,158,159,160,161,45,28,43,162,106,163,164,165,166,167],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":179,"publishedAt":46},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[174,177,178],{"categoryNo":175,"categoryName":176,"taxonomyType":93,"taxonomyTypeDesc":94},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":91,"categoryName":92,"taxonomyType":93,"taxonomyTypeDesc":94},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[180,181,182,183,158,184,40,185,38,186,187,188,45,43,106,189,190,28,191,192,193,110,27],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":203,"publishedAt":46},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[200],{"categoryNo":201,"categoryName":202,"taxonomyType":93,"taxonomyTypeDesc":94},"01JBSEEDCAT000000000000023","Skill与智能体开发",[204,205,206,207,182,183,208,209,210,211,212,40,213,214,215,216,45,217,28,108,218,27],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]