fix(plugins): move marketplace manifest to repo root for /plugin marketplace add ruvnet/RuView

Claude Code looks for `.claude-plugin/marketplace.json` at the cloned repo's
ROOT — not in a subdirectory — so `/plugin marketplace add ruvnet/RuView`
(and `claude plugin marketplace add ruvnet/RuView`) was failing with
"Marketplace file not found".

- Move `plugins/.claude-plugin/marketplace.json` → `.claude-plugin/marketplace.json`
  (repo root); the `ruview` plugin's `source` is now `./plugins/ruview`.
- README.md / plugins/ruview/README.md: install instructions now use
  `/plugin marketplace add ruvnet/RuView` + `/plugin install ruview@ruview`
  (with `claude --plugin-dir ./plugins/ruview` as the no-install fallback);
  manifest path references updated.
- plugins/ruview/scripts/smoke.sh: resolve the manifest at the repo root;
  also assert the plugin `source` is `./plugins/ruview`.
- ADR-0001 updated (scope, directory contract, smoke contract, consequences).

Verified: `claude plugin validate .` + `./plugins/ruview` pass; smoke 13/13;
`claude plugin marketplace add ./` → `claude plugin install ruview@ruview` →
`claude plugin details ruview` works end-to-end (16 skill-entries + 3 agents).

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv
2026-05-11 19:52:04 -04:00
parent 298543913e
commit df9d3b0eea
5 changed files with 28 additions and 25 deletions
+7 -4
View File
@@ -3,10 +3,12 @@
# Run from anywhere: bash plugins/ruview/scripts/smoke.sh
set -u
# Resolve plugin root (this file lives in <root>/scripts/smoke.sh)
# Resolve plugin root (this file lives in <root>/scripts/smoke.sh).
# Plugin lives at <repo>/plugins/ruview ; marketplace manifest is at <repo>/.claude-plugin/marketplace.json
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
MARKET="$(cd "$ROOT/.." && pwd)/.claude-plugin/marketplace.json"
REPO="$(cd "$ROOT/../.." && pwd)"
MARKET="$REPO/.claude-plugin/marketplace.json"
PASS=0
FAIL=0
@@ -16,10 +18,11 @@ has() { grep -q "$1" "$2" 2>/dev/null; }
echo "ruview plugin smoke test"
echo "root: $ROOT"
echo "repo: $REPO"
echo
# 1. marketplace.json exists and lists the ruview plugin
if [ -f "$MARKET" ] && has '"ruview"' "$MARKET"; then ok "marketplace.json present and lists 'ruview'"; else bad "marketplace.json missing or does not list 'ruview' ($MARKET)"; fi
# 1. repo-root marketplace.json exists, lists the ruview plugin, points source at ./plugins/ruview
if [ -f "$MARKET" ] && has '"ruview"' "$MARKET" && has '"\./plugins/ruview"' "$MARKET"; then ok "repo-root .claude-plugin/marketplace.json lists 'ruview' with source ./plugins/ruview"; else bad "marketplace.json missing / wrong location / wrong source ($MARKET)"; fi
# 2. plugin.json exists with required fields
PJ="$ROOT/.claude-plugin/plugin.json"