Skip to content

fix(marketplace): use relative sources to avoid SSH-only clones#111

Open
drewbitt wants to merge 1 commit intonrwl:mainfrom
drewbitt:fix/issue-106-marketplace-relative-source
Open

fix(marketplace): use relative sources to avoid SSH-only clones#111
drewbitt wants to merge 1 commit intonrwl:mainfrom
drewbitt:fix/issue-106-marketplace-relative-source

Conversation

@drewbitt
Copy link
Copy Markdown

@drewbitt drewbitt commented Apr 8, 2026

Summary

Fixes #106. Both plugin entries in .claude-plugin/marketplace.json used absolute GitHub sources, which trigger a second git clone during /plugin install — that clone defaults to SSH and fails on machines without SSH keys, and silently fails in GitHub Codespaces / devcontainers where github.com isn't in known_hosts.

Since both plugins live in this repo, switching to relative sources makes Claude Code reuse the already-cloned marketplace checkout and never performs a second clone.

  • nx"source": "./"
  • polygraph"source": "./generated/polygraph"

Mirrors the pattern already in use by .cursor-plugin/marketplace.json here ("source": ".") and by vercel-labs/agent-browser, both of which install cleanly in HTTPS-only and devcontainer environments.

Test plan

Verified end-to-end against a local clone of this branch:

  • claude plugin validate .claude-plugin/marketplace.json → ✔ passed
  • claude plugin marketplace add <local-clone> → registered as nx-claude-plugins
  • claude plugin install nx@nx-claude-plugins → ✔ installed (no SSH clone attempted)
  • claude plugin install polygraph@nx-claude-plugins → ✔ installed
  • Confirmed all 6 model-invocable nx skills load after install: nx:nx-workspace, nx:nx-run-tasks, nx:nx-plugins, nx:nx-import, nx:monitor-ci, nx:link-workspace-packages. (nx:nx-generate uses subagent: general-purpose + context: fork, so it's enumerated on a different path — verified present in the plugin cache at plugins/cache/nx-claude-plugins/nx/0.2.33/skills/nx-generate/SKILL.md.)
  • Confirmed polygraph skills load: polygraph:polygraph, polygraph:get-latest-ci, polygraph:await-polygraph-ci.
  • Tested on macOS with HTTPS-only git config — no SSH connection attempted.

Before this fix, neither plugin would install on this machine (silent failure, red circle in the Claude Code UI). After this fix, both install and their skills load immediately.

Notes

  • No source files in artifacts/ changed, so npx nx sync-artifacts is not required.
  • Plugin manifests at .claude-plugin/plugin.json (nx) and generated/polygraph/.claude-plugin/plugin.json (polygraph) already exist and are unchanged.

Both plugin entries in .claude-plugin/marketplace.json used absolute
GitHub sources (github / git-subdir), which trigger a second git clone
when a user runs `/plugin install`. That clone defaults to the SSH
transport and fails on machines without SSH keys or without
github.com in known_hosts:

    git@github.com: Permission denied (publickey).
    Host key verification failed.

The failure is common in corporate environments (HTTPS-only proxies)
and GitHub Codespaces / devcontainers (no SSH host keys preloaded),
and Claude Code surfaces it silently — the skill shows a red circle
with no actionable error. The marketplace itself clones fine because
Claude Code's marketplace loader falls back to HTTPS, but the plugin
install path does not.

Since both plugins live inside this same repo that hosts
marketplace.json, switch to relative sources so Claude Code reuses the
already-cloned marketplace checkout and never performs a second clone:

- `nx` → `"source": "./"` (plugin manifest at .claude-plugin/plugin.json)
- `polygraph` → `"source": "./generated/polygraph"` (manifest at
  generated/polygraph/.claude-plugin/plugin.json)

This matches the pattern already used by .cursor-plugin/marketplace.json
in this repo (`"source": "."`) and by vercel-labs/agent-browser, both of
which install cleanly in HTTPS-only and devcontainer environments.

Verified locally with:

    claude plugin validate .claude-plugin/marketplace.json  # ✔ passed
    claude plugin marketplace add <local-clone>
    claude plugin install nx@nx-claude-plugins              # ✔ installed
    claude plugin install polygraph@nx-claude-plugins       # ✔ installed

After install, all 7 nx skills (nx-workspace, nx-generate, nx-run-tasks,
nx-plugins, nx-import, monitor-ci, link-workspace-packages) and the
polygraph subagents/skills load as expected.

Fixes nrwl#106
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.

Plugin install fails without SSH keys - marketplace.json should use relative source

1 participant