{"record":{"id":"ab6f4d2410fbc619","repo":"davila7/claude-code-templates","slug":"warning-could-not-load-marketplace-details-for","errorCode":null,"errorMessage":"Warning: Could not load marketplace details for ${name}","messagePattern":"Warning: Could not load marketplace details for (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cli-tool/src/plugin-dashboard.js","lineNumber":142,"sourceCode":"    return null;\n  }\n\n  async loadMarketplaceDetails(name, config) {\n    try {\n      // Try to read marketplace.json from the marketplace source\n      const marketplacePath = path.join(this.claudeDir, 'plugins', 'marketplaces', name);\n      const marketplaceJsonPath = path.join(marketplacePath, '.claude-plugin', 'marketplace.json');\n\n      if (await fs.pathExists(marketplaceJsonPath)) {\n        const content = await fs.readFile(marketplaceJsonPath, 'utf8');\n        const marketplaceData = JSON.parse(content);\n        return {\n          pluginCount: marketplaceData.plugins ? marketplaceData.plugins.length : 0,\n          marketplaceData\n        };\n      }\n    } catch (error) {\n      console.warn(chalk.yellow(`Warning: Could not load marketplace details for ${name}`));\n    }\n\n    return { pluginCount: 0 };\n  }\n\n  getMarketplaceType(config) {\n    // Handle nested source structure\n    const source = config.source || config;\n\n    if (source.source === 'github') return 'GitHub';\n    if (source.source === 'git') return 'Git';\n    // Support both 'local' and 'directory' for filesystem-based marketplaces\n    // 'directory' is used by Claude Code, 'local' for legacy compatibility\n    if (source.source === 'local' || source.source === 'directory') return 'Local';\n    if (source.source === 'url') return 'URL';\n    return 'Unknown';\n  }\n","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/davila7/claude-code-templates/blob/a0851ed10c7c60463dac8cfaaca124cf32d5804d/cli-tool/src/plugin-dashboard.js#L124-L160","documentation":"loadMarketplaceDetails(name) tries to read a marketplace's plugin manifest (.claude-plugin/marketplace.json or similar) to compute plugin counts; on failure it warns without the underlying error and returns {pluginCount: 0}. The caller (marketplaceInfo) then renders zero plugins for that marketplace.","triggerScenarios":"Requesting details for a marketplace whose manifest file is missing (repo layout changed upstream), whose JSON is invalid, or whose local clone is incomplete/corrupted after a failed git pull.","commonSituations":"Marketplace repo restructures and moves its manifest, shallow/partial clones from interrupted syncs, or a marketplace name passed that doesn't match any directory.","solutions":["Verify the marketplace clone is complete: `cd ~/.claude/plugins/marketplaces/<name> && git status` (re-clone if broken).","Confirm the manifest path the code expects (.claude-plugin/marketplace.json) exists in that repo; if upstream moved it, update the CLI.","Reinstall the marketplace to refresh its clone.","Wrap your call so pluginCount===0 triggers a re-sync instead of displaying empty."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"const manifestPath = path.join(marketplaceDir, '.claude-plugin', 'marketplace.json');\nif (!fs.existsSync(manifestPath)) return { pluginCount: 0, missing: true };","typeGuard":"const hasManifest = (d) => fs.existsSync(path.join(d, '.claude-plugin', 'marketplace.json'));","tryCatchPattern":"catch { console.warn(`Could not load marketplace details for ${name}`); return { pluginCount: 0 }; }","preventionTips":["Check the manifest path exists before parsing.","Re-sync marketplace clones on a schedule.","Treat pluginCount 0 as 'resync needed', not 'empty marketplace'."],"tags":["marketplace","manifest","filesystem"],"backgroundTag":"marketplace-manifest-missing","analyzedSha":"a0851ed10c7c60463dac8cfaaca124cf32d5804d","analyzedAt":"2026-08-28T14:11:56.058Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}