Skip to content

[Bug]: Skills marketplace returns empty against the current extensions manifest layout #4665

Description

@enyst

Bug description

The skills marketplace loader checks for marketplaces/default.json and returns [] if it is absent before attempting manifest discovery (openhands-agent-server/openhands/agent_server/skills_service.py:706-738).

The current OpenHands/extensions repository uses .plugin/marketplace.json; its marketplaces/ directory contains large-codebase.json and openhands-extensions.json, not default.json. The plugin marketplace loader already handles this correctly by calling Marketplace.load(repo_path) first (plugins_service.py:331-357).

As a result, a cold /skills/marketplace load can be blank while /plugins/marketplace loads the same repository successfully. The skills path also caches empty failures for the full TTL, while the plugin path deliberately does not.

Expected behavior

Skills and plugins should derive their views from the same successfully fetched and parsed marketplace snapshot, using manifest discovery first and the explicit path only as fallback.

Suggested implementation

Add one small shared marketplace snapshot loader/cache backed by Marketplace.load. Fetch/parse once, cache only successful snapshots, and let skills/plugins derive their distinct response shapes while computing installation state fresh.

Acceptance criteria

  • Skills load from the real .plugin/marketplace.json layout when marketplaces/default.json is absent.
  • Custom explicit marketplace paths remain supported as fallback.
  • Skills and plugins within the TTL use the same fetched/parsed snapshot.
  • Transient fetch/parse failures do not cache an empty catalog.
  • Existing plugin-over-skill name precedence, plugin filtering, installed-state freshness, and REST schemas remain unchanged.

Version

Current main at 6d3881035. Repository layout was independently verified through the GitHub API on 2026-08-27; existing issue search found no duplicate.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpluginsAbout plugins and their contentspriority:mediumFor bugs, a serious source of annoyance, but not blocking a large number of users.skills

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions