Page:
lessons/patterns/plugin-version-mismatch-causes-silent-load-failure
Pages
Change V5.4.0: Multi-Model Agent Support Proposal
Change V5.4.0: Multi-Model Support (Sprint 7 Implementation)
Change V04.1.0: Proposal (Implementation 1)
Change V04.1.0: Proposal
Change-V5.2.0:-Plugin-Enhancements-(Sprint-4-Commands)
Change-V5.2.0:-Plugin-Enhancements-(Sprint-5-Documentation)
Change-V5.2.0:-Plugin-Enhancements-Proposal.-
Change-V5.5.0:-Hook-Efficiency-Quick-Wins-(Sprint-8-Implementation)
Change-V5.6.0:-Domain-Advisory-Pattern-(Sprint-9-Implementation).-
Change V5.6.0: Domain Advisory Pattern Proposal
Change-V5.7.0:-Data-Platform-Domain-Advisory-(Sprint-10-Implementation)
RFC-Hook-Efficiency-Improvements
RFC-Perf-Sentinel-Plugin
Sprint-1-viz-platform-Implementation-Plan
branding/header-templates
branding/plugin-registry
branding/progress-templates
branding/visual-spec
lessons/patterns/agent-model-field-not-supported-by-claude-code
lessons/patterns/command-frontmatter-missing-name-field-causes-silent-load-failure
lessons/patterns/hook-message-wording-affects-claude-continuation-behavior
lessons/patterns/mcp-venv-symlinks-lost-on-marketplace-update---5-hour-debug-loop
lessons/patterns/mcp_servers-field-in-pluginjson---another-failed-debug-theory
lessons/patterns/plugin-hooks-must-be-in-separate-file-not-inline
lessons/patterns/plugin-load-errors---missing-name-field-in-command-frontmatter
lessons/patterns/plugin-load-failure---check-command-frontmatter-first
lessons/patterns/plugin-manifest-validation---hooks-and-agents-format-requirements
lessons/patterns/plugin-version-mismatch-causes-silent-load-failure
lessons/patterns/reset-pandas-index-after-filtering-to-prevent-column-pollution
lessons/patterns/session-2026-02-02---mcp-server-venv-package-installation-failures
lessons/patterns/setup-wizard-url-format-mismatch
lessons/patterns/sprint-4---new-commands-not-discoverable-until-session-restart
lessons/patterns/startup-hooks-must-check-venv-cache-path-first
lessons/patterns/sync-entire-plugin-directory-not-individual-files
lessons/patterns/use-fixes-n-keyword-for-automatic-issue-closing-in-prs
lessons/sprints/cache-clearing-breaks-mcp-tools-mid-session
lessons/sprints/sprint-1---viz-platform-plugin-implementation
lessons/sprints/sprint-10---domain-advisory-pattern-replication-success
lessons/sprints/sprint-2---contract-validator-plugin-implementation
lessons/sprints/sprint-3---agent-runaway-detection-and-timeout-handling
lessons/sprints/sprint-3---background-agent-permissions-must-be-pre-granted
lessons/sprints/sprint-3---mcp-server-branch-detection-bug-runs-from-installed-dir
lessons/sprints/sprint-4---plugin-commands-implementation
lessons/sprints/sprint-6---visual-branding-and-documentation-maintenance
lessons/sprints/sprint-8---parallel-hook-optimization-success
lessons/sprints/v400-release---wiki-workflow-and-versioning-patterns
lessons/sprints/versioning-workflow---use-unreleased-and-release-script
lessons-learned/sprints/hook-efficiency-rfc
unnamed
Clone
1
lessons/patterns/plugin-version-mismatch-causes-silent-load-failure
Leo Miranda edited this page 2026-02-03 03:27:33 +00:00
Plugin Version Mismatch Causes Silent Load Failure
Context
- Date: 2026-02-02
- Time Wasted: 5+ hours debugging across 3 devices
- Severity: CRITICAL - plugins fail silently with NO error message
- Impact: User sees "failed to load · 1 error" but NO details
Problem
Plugins failed to load with this unhelpful message:
contract-validator Plugin · leo-claude-mktplace · ✘ failed to load · 1 error
Claude Code provides NO error details. The user has to guess what's wrong.
Root Cause
Version mismatch between marketplace.json and plugin.json:
| Plugin | marketplace.json | plugin.json | Status |
|---|---|---|---|
| contract-validator | 1.2.0 | 1.1.0 | FAILED |
| git-flow | 1.2.0 | 1.0.0 | FAILED |
| projman | 3.4.0 | 3.3.0 | FAILED |
| clarity-assist | 1.2.0 | 1.0.0 | FAILED |
| doc-guardian | 1.1.0 | 1.0.0 | FAILED |
When Claude Code loads a plugin, it checks the version in marketplace.json and expects the same version in plugin.json. If they don't match, it silently fails.
How This Happened
- Version was bumped in marketplace.json during releases
- Individual plugin.json files were NOT updated
- No validation caught the mismatch
- Claude Code loaded plugins but failed silently
Solution
- Fix all version mismatches:
# Check mismatches
python3 << 'EOF'
import json, os
with open('.claude-plugin/marketplace.json') as f:
mkt = json.load(f)
mkt_ver = {p['name']: p['version'] for p in mkt['plugins']}
for p in os.listdir('plugins'):
if os.path.exists(f'plugins/{p}/.claude-plugin/plugin.json'):
with open(f'plugins/{p}/.claude-plugin/plugin.json') as f:
pv = json.load(f)['version']
if mkt_ver.get(p) != pv:
print(f"MISMATCH: {p} mkt={mkt_ver[p]} plugin={pv}")
EOF
- Clear corrupted cache:
rm -rf ~/.claude/plugins/cache/leo-claude-mktplace/{plugin-name}/
- Restart Claude Code
Prevention
1. Add Version Sync Validation to Pre-Commit Hook
Add to scripts/validate-marketplace.sh:
# Validate version consistency
for plugin in plugins/*/; do
name=$(basename "$plugin")
mkt_ver=$(grep -A1 "\"$name\"" .claude-plugin/marketplace.json | grep version | grep -oE '[0-9.]+')
plugin_ver=$(grep version "$plugin/.claude-plugin/plugin.json" | grep -oE '[0-9.]+')
if [[ "$mkt_ver" != "$plugin_ver" ]]; then
echo "ERROR: Version mismatch for $name"
exit 1
fi
done
2. Single Version Source
Consider using a script to update ALL version locations atomically.
3. Release Checklist
- Update marketplace.json version
- Update plugin.json version (MUST MATCH)
- Run version consistency check
- Clear plugin cache after update
Warning Signs
If you see this, check version consistency:
- "✘ failed to load · 1 error" with no details
- Plugin worked before, suddenly doesn't
- After version bump, plugins stop loading
Related Issues
- Claude Code provides no error details for plugin load failures
- Cache can hold stale/orphaned versions
- No built-in version consistency validation
Tags: version, plugin, silent-failure, cache, critical, marketplace, debugging