From 18d0f34ffc1ab36d39b0bf59b6639814a37682e7 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 24 Oct 2026 05:55:28 +0000 Subject: [PATCH 1/2] feat: install crew from its repository root johantor/crew#320 moves the plugin from plugins/crew to the root, the same layout as board, so its entry becomes a github source. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01D6Q9kbbS2WZPHEu966B4MN --- .claude-plugin/marketplace.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 04dacf5..71ad2df 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -8,9 +8,8 @@ { "name": "crew", "source": { - "source": "git-subdir", - "url": "johantor/crew", - "path": "plugins/crew" + "source": "github", + "repo": "johantor/crew" }, "description": "Team-style feature delivery for Claude Code: a captain agent plans the work and delegates each step to backend, frontend, test, and design specialists behind hook-enforced guardrails, with a consolidated review gate before anything ships. Also pays down tech debt one verified, gated batch at a time." }, From 1dc5fcd91f745b403e90f5c44e248d96e8c284fa Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 24 Oct 2026 06:06:28 +0000 Subject: [PATCH 2/2] feat: install crew and board from their plugin/ folders Both repos move their plugin into plugin/ (johantor/crew#322, johantor/board#5), so each entry is a git-subdir source and installs only the plugin. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01D6Q9kbbS2WZPHEu966B4MN --- .claude-plugin/marketplace.json | 10 ++++++---- README.md | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 71ad2df..d863924 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -8,16 +8,18 @@ { "name": "crew", "source": { - "source": "github", - "repo": "johantor/crew" + "source": "git-subdir", + "url": "johantor/crew", + "path": "plugin" }, "description": "Team-style feature delivery for Claude Code: a captain agent plans the work and delegates each step to backend, frontend, test, and design specialists behind hook-enforced guardrails, with a consolidated review gate before anything ships. Also pays down tech debt one verified, gated batch at a time." }, { "name": "board", "source": { - "source": "github", - "repo": "johantor/board" + "source": "git-subdir", + "url": "johantor/board", + "path": "plugin" }, "description": "A local kanban board of every Claude Code session: what needs you, what is running, what you closed today. Hooks log each session's state, a small Node server on 127.0.0.1 shows it as cards, and a click copies the resume command. Crew runs show their subagents on the session's card." } diff --git a/README.md b/README.md index 1e1c9cb..b0c1127 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ claude plugin install crew@johantor # and board@johantor ## Maintaining +Each plugin lives in the `plugin/` folder of its repository, and the entries install that folder +only (`git-subdir`), so a repo's site and tooling never reach users. + A plugin entry's `name` and `description` copy the plugin's own `plugin.json`, which is canonical. CI (`validate.yml`) fetches each `plugin.json` from its repository and fails on a mismatch, so update the entry here when a plugin changes its description.