claude-code icon indicating copy to clipboard operation
claude-code copied to clipboard

[BUG]

Open owensk opened this issue 2 months ago • 1 comments

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Bug: Local directory marketplace plugins show as "installed" but cannot be managed

Environment

  • Claude Code version: 2.0.62
  • OS: macOS Darwin 25.1.0 (Sequoia)
  • Installation method: npm-global

Description

When using a local directory-based marketplace, plugins show as "installed" (with ✔ checkmark) in the marketplace browse view, but they don't appear in the Installed tab and cannot be actually installed, enabled, or managed through the UI.

Actual Behavior

  1. ❌ Plugins show with ✔ "installed" checkmark in marketplace browse view (incorrectly)
  2. ❌ Plugins do NOT appear in "Discover" tab - shows "No plugins available"
  3. ❌ Plugins do NOT appear in "Installed" tab - shows "No plugins installed"
  4. ❌ Clicking Enter on a plugin in browse view immediately redirects to Installed tab showing "No plugins installed" (no details shown)
  5. ❌ No UI path exists to actually install or enable directory-based local plugins

Screenshots

Marketplace browse shows plugins as "installed":

│ Install Plugins (1/16)                                                        │
│                                                                               │
│ ❯ ✔ feature-registry (installed)                                              │
│     Feature and work item tracking (LOCAL DEV)                                │
│                                                                               │
│   ✔ sdlc-workflow-manager (installed)                                         │
│     SDLC orchestration with TDD (LOCAL DEV)                                   │

But Installed tab is empty:

│ Manage plugins                                                                │
│                                                                               │
│ No plugins installed.                                                         │

Clicking a plugin redirects to empty Installed view instead of showing details.

Root Cause Analysis

The marketplace browse view and Installed tab use inconsistent logic:

  • Marketplace browse: Determines "installed" by checking if source path exists on filesystem
  • Installed tab: Reads from installed_plugins_v2.json which remains empty

Since directory-based plugins already exist on disk, the browse view marks them as "installed", but no actual installation record is created in installed_plugins_v2.json.

Workarounds Attempted (None Worked)

  1. Manually editing installed_plugins_v2.json - Added entries with correct format (scope, installPath, version, installedAt, lastUpdated, isLocal) - plugins still don't appear in Installed tab

  2. Manually adding to enabledPlugins in settings.json - Added entries like "plugin-name@marketplace-name": true - no effect

  3. Using @local vs @marketplace-name naming - Tried both conventions - no effect

  4. Adding version field to marketplace.json entries - No effect on installation ability

Files Involved

  • ~/.claude/plugins/installed_plugins_v2.json
  • ~/.claude/plugins/known_marketplaces.json
  • ~/.claude-profiles/{profile}/settings.jsonenabledPlugins section

Impact

  • Cannot use local directory-based marketplaces for plugin development
  • No way to test local plugins through the official marketplace/plugin system
  • Blocks local development workflow for plugin authors

Suggested Fix

  1. For directory-based marketplaces, either:

    • Automatically register existing plugins in installed_plugins_v2.json when marketplace is added
    • Or show an "Install" button even when source path exists
  2. Ensure clicking a plugin in browse view shows plugin details (not redirect to Installed tab)

  3. Make browse view and Installed tab use consistent logic for determining installation status

What Should Happen?

Expected Behavior

  • Plugins should appear in "Discover" tab for installation
  • Clicking a plugin should show details with Install/Enable options
  • After installation, plugins should appear in "Installed" tab
  • Plugins should be usable (commands, skills, agents available)

Error Messages/Logs


Steps to Reproduce

Steps to Reproduce

  1. Create a local marketplace directory structure:

    /path/to/plugins/
    ├── .claude-plugin/
    │   └── marketplace.json
    ├── plugin-a/
    │   └── .claude-plugin/
    │       └── plugin.json
    └── plugin-b/
        └── .claude-plugin/
            └── plugin.json
    
  2. Create marketplace.json with plugins using relative ./ sources:

    {
      "name": "local-dev-marketplace",
      "plugins": [
        {
          "name": "plugin-a",
          "source": "./plugin-a",
          "description": "Test plugin A",
          "version": "1.0.0"
        }
      ]
    }
    
  3. Add marketplace via /plugin → Marketplaces → Add Marketplace

    • Use source type: directory
    • Path: /path/to/plugins/
  4. Marketplace shows correctly with "X available plugins"

  5. Select marketplace and choose "Browse plugins"

Claude Model

None

Is this a regression?

I don't know

Last Working Version

No response

Claude Code Version

2.0.62

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

iTerm2

Additional Information

No response

owensk avatar Dec 09 '25 22:12 owensk

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

github-actions[bot] avatar Jan 10 '26 10:01 github-actions[bot]

I have the same issue. (Windows / WSL)

ymyke avatar Jan 14 '26 07:01 ymyke