davila7/claude-code-templates · warning
Warning: Error processing plugin ${pluginDef.name}
Error message
Warning: Error processing plugin ${pluginDef.name} What it means
While iterating a marketplace's plugin definitions, each plugin's processing (reading its local folder, computing enabled state, parsing metadata) is individually wrapped; this warning fires when one pluginDef fails — most often its source path doesn't resolve inside the marketplace clone or its metadata shape is unexpected. Remaining plugins still load.
Source
Thrown at cli-tool/src/plugin-dashboard.js:296
// Check if plugin is enabled in settings.json
const enabled = await this.isPluginEnabled(pluginDef.name, marketplaceName);
plugins.push({
name: pluginDef.name,
version: pluginDef.version || '1.0.0',
description: pluginDef.description || 'No description',
marketplace: marketplaceName,
path: pluginSourcePath,
components,
author: pluginDef.author,
homepage: pluginDef.homepage,
license: pluginDef.license,
keywords: pluginDef.keywords || [],
category: pluginDef.category,
enabled
});
} catch (error) {
console.warn(chalk.yellow(`Warning: Error processing plugin ${pluginDef.name}`), error.message);
}
}
} catch (error) {
console.warn(chalk.yellow(`Warning: Error loading plugins from marketplace ${marketplaceName}`), error.message);
}
return plugins;
}
async isPluginEnabled(pluginName, marketplace) {
// Check if plugin is enabled in settings.json
// Plugins are stored as "plugin-name@marketplace-name": true
const pluginKey = `${pluginName}@${marketplace}`;
return this.enabledPlugins && this.enabledPlugins.has(pluginKey);
}
async countPluginComponents(pluginPath) {
const components = {View on GitHub (pinned to a0851ed10c)
Solutions
- Update the marketplace clone: `cd ~/.claude/plugins/marketplaces/<name> && git pull` (or reinstall it).
- Verify the pluginDef.source path exists inside the marketplace directory.
- Remove the offending entry if it references a plugin the marketplace no longer ships.
- Re-run the dashboard after fixing; the warning names the plugin (pluginDef.name) making it easy to locate.
Defensive patterns
Strategy: validation
Validate before calling
const pluginPath = path.join(marketplacePath, pluginDef.source || ''); if (!fs.existsSync(pluginPath)) continue; // stale entry, skip
Type guard
const isPluginDef = (v) => v != null && typeof v.name === 'string' && (typeof v.source === 'string' || v.source == null);
Try / catch
catch (e) { console.warn(`Skipping marketplace plugin ${pluginDef.name}:`, e.message); } Prevention
- Re-sync marketplace clones after upstream layout changes.
- Skip and report stale plugin entries instead of failing the whole marketplace.
- Log pluginDef.source with the warning for faster diagnosis.
When it happens
Trigger: A marketplace entry whose source points to a folder missing from the local clone (repo changed layout after you installed), a pluginDef with a non-string source, or per-plugin enabled-state lookup throwing on a malformed settings entry.
Common situations: Marketplace upstream reorganizes plugin folders, stale local clones that haven't been pulled, or custom marketplaces with hand-written entries that don't follow the source-path convention.
Related errors
- Warning: Error loading marketplaces
- Warning: Could not load marketplace details for ${name}
- Warning: Error loading plugin ${pluginDir}
- Warning: Error counting components for plugin at ${pluginPat
- Warning: Error loading plugin permissions for ${plugin.name}
AI-assisted analysis of davila7/claude-code-templates@a0851ed10c (2026-08-28).
Data as JSON: /api/errors/0482f7311203b919.
Report an issue: GitHub.