isClaudePluginApp returns true if the app uses the Claude-style plugin metadata model (installed_plugins.json + known_marketplaces.json) rather than the simple directory-scan model.
(app, dest string)
| 194 | // metadata model (installed_plugins.json + known_marketplaces.json) rather |
| 195 | // than the simple directory-scan model. |
| 196 | func isClaudePluginApp(app, dest string) bool { |
| 197 | if app != "claude" { |
| 198 | return false |
| 199 | } |
| 200 | // Verify the metadata files exist — if they don't, fall back to dir scan. |
| 201 | resolved := pathutil.Expand(dest) |
| 202 | installedPath := filepath.Join(resolved, "installed_plugins.json") |
| 203 | if _, err := os.Stat(installedPath); err != nil { |
| 204 | return false |
| 205 | } |
| 206 | return true |
| 207 | } |
| 208 | |
| 209 | // claudePluginHasMarketplace returns whether a Claude plugin key contains |
| 210 | // a marketplace reference (name@marketplace format). |
no test coverage detected