Skip to content

Add .claude-plugin/marketplace.json so Claude Code can load the marketplace#1747

Open
freezscholte wants to merge 2 commits into
microsoft:mainfrom
freezscholte:add-claude-plugin-marketplace-path
Open

Add .claude-plugin/marketplace.json so Claude Code can load the marketplace#1747
freezscholte wants to merge 2 commits into
microsoft:mainfrom
freezscholte:add-claude-plugin-marketplace-path

Conversation

@freezscholte
Copy link
Copy Markdown

Problem

claude plugin marketplace add microsoft/azure-container-apps fails:

✘ Failed to add marketplace: Marketplace file not found at
  .../.claude-plugin/marketplace.json

Claude Code resolves a marketplace manifest only at .claude-plugin/marketplace.json, but this repo ships the manifest at the repo root (/marketplace.json). So Claude Code users can't add the marketplace at all, even though the README advertises support for "coding agents (Copilot CLI, Claude Code)".

Fix

  1. Add .claude-plugin/marketplace.json — the path Claude Code expects. The repo already uses this convention for the plugin manifest (plugin/.claude-plugin/plugin.json), so this just aligns the marketplace manifest with the same convention. The root marketplace.json is left untouched so GitHub Copilot CLI is unaffected.

  2. Drop the redundant skills array from the plugin entry. Skill discovery is already handled by the plugin's own manifest (plugin/.claude-plugin/plugin.json"skills": "./skills/"). The marketplace-level skills: ["./plugin/skills/aca-sandboxes"] was resolved relative to the plugin source dir, producing a doubled path plugin/plugin/skills/aca-sandboxes and causing the plugin to fail to load even after the manifest was found:

    Status: ✘ failed to load
    Error: Path not found: .../plugin/plugin/skills/aca-sandboxes (skills)
    

Verification (local)

$ claude plugin marketplace add <repo>
✔ Successfully added marketplace: Azure-Container-Apps
$ claude plugin install sandboxes@Azure-Container-Apps
✔ Successfully installed plugin: sandboxes@Azure-Container-Apps
$ claude plugin list
  sandboxes@Azure-Container-Apps   Status: ✔ enabled
$ claude plugin details sandboxes@Azure-Container-Apps
  Skills (1)  aca-sandboxes

Note

The root marketplace.json carries the same redundant/incorrect skills array. I left it untouched to avoid changing Copilot CLI behavior, but maintainers may want to apply the same cleanup there.

🤖 Generated with Claude Code

…tplace

Claude Code resolves a marketplace manifest only at
`.claude-plugin/marketplace.json`, but this repo ships it at the repo
root (`/marketplace.json`). As a result `claude plugin marketplace add
microsoft/azure-container-apps` fails with:

    Marketplace file not found at .../.claude-plugin/marketplace.json

This adds the manifest at the path Claude Code expects. The repo already
follows this convention for the plugin manifest
(`plugin/.claude-plugin/plugin.json`), so this aligns the marketplace
manifest with the same convention. The root `marketplace.json` is left
untouched so GitHub Copilot CLI is unaffected.

It also drops the redundant `skills` array from the plugin entry: skill
discovery is already handled by the plugin's own manifest
(`plugin/.claude-plugin/plugin.json` -> "skills": "./skills/"). The
marketplace-level `skills` path was resolved relative to the plugin
source dir, producing a doubled `plugin/plugin/skills/aca-sandboxes` and
causing the plugin to fail to load even after the manifest was found.

Verified locally: `claude plugin marketplace add` + `install` now load
the `sandboxes` plugin and discover the `aca-sandboxes` skill (status:
enabled).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@freezscholte
Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

Three documented forms hard-error on `aca 1.0.0-preview.1`; corrected to the
forms the CLI actually accepts (verified live against the CLI):

- egress allow-list: `--host-allow "<host>"` → `--rule "<pattern>:Allow"`
  (the CLI's own `egress set --help` example and `egress init` template use
  `--rule`; `--host-allow` returns "unexpected argument"). Fixed in the SKILL.md
  egress rows + the copilot scenario in scenarios.md. Added an explicit anti-cue.
- sandbox labels: `--labels "k=v,k2=v2"` → `--label k=v --label k2=v2`
  (repeatable; the CLI suggests `--label` and rejects `--labels`).
- group secrets: `secret upsert --name X --values "K=V"` →
  `secret set --name X --key K --value V` (there is no `upsert` subcommand;
  `secret` exposes list/show/set/remove/delete).

The skill was internally inconsistent (one "Try asking" row already used
`--rule`), which confirms drift from the shipped CLI rather than a version pin.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant