From 14c824ed17cffcb158de5807eaf0bf3a98e5f84a Mon Sep 17 00:00:00 2001 From: Mykyta Mikhaulov Date: Tue, 16 Jun 2026 10:15:02 +0400 Subject: [PATCH 1/2] Fix hoopit-matt-picks manifest conflict: set strict: true The hoopit-matt-picks marketplace entry declared both `strict: false` and an explicit `skills` list, while the upstream mattpocock/skills plugin.json also declares its own components. Claude Code rejects this as conflicting manifests, so the plugin installs but fails to load: Plugin hoopit-matt-picks has conflicting manifests: both plugin.json and marketplace entry specify components. Set strict: true in marketplace entry or remove component specs from one location. Setting `strict: true` makes the curated 5-skill list in this entry authoritative, which is the intended behavior for "curated picks", and resolves the load failure. Co-Authored-By: Claude Opus 4.8 --- .claude-plugin/marketplace.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 69cf6a8..032d2b0 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -29,7 +29,7 @@ "source": "github", "repo": "mattpocock/skills" }, - "strict": false, + "strict": true, "description": "Curated picks from mattpocock/skills, tracking upstream.", "skills": [ "./skills/productivity/caveman", From 8010252cc35d42b326153f965c7b0ebfdf549fcd Mon Sep 17 00:00:00 2001 From: Mykyta Mikhaulov Date: Tue, 16 Jun 2026 10:51:41 +0400 Subject: [PATCH 2/2] docs: align strict mode docs with marketplace.json Update README.md and create-hoopit-skill/SKILL.md to describe hoopit-matt-picks as strict: true, matching the manifest change, and explain why strict mode is required (overrides the upstream plugin's own manifest instead of conflicting with it). Co-Authored-By: Claude Opus 4.8 --- .claude/skills/create-hoopit-skill/SKILL.md | 6 ++++-- README.md | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.claude/skills/create-hoopit-skill/SKILL.md b/.claude/skills/create-hoopit-skill/SKILL.md index 94fc5b7..2a49162 100644 --- a/.claude/skills/create-hoopit-skill/SKILL.md +++ b/.claude/skills/create-hoopit-skill/SKILL.md @@ -70,8 +70,10 @@ The `README.md` does **not** list individual skills (deliberately — it was a maintenance burden), so adding a skill needs no README change. `hoopit-matt-picks` is special: it has a `github` source pointing at -`mattpocock/skills` with `strict: false` and an explicit `skills` array, so its -skills resolve against *that* repo. To curate it, edit only its `skills` array in +`mattpocock/skills` with `strict: true` and an explicit `skills` array, so its +skills resolve against *that* repo. `strict: true` is required because the +upstream plugin ships its own manifest; it makes our `skills` list authoritative +instead of conflicting with theirs. To curate it, edit only its `skills` array in the manifest. ## Checklist diff --git a/README.md b/README.md index 0ca39e5..41a2f7f 100644 --- a/README.md +++ b/README.md @@ -46,9 +46,10 @@ each group gets its own directory rather than a shared top-level `skills/` (a single shared folder would leak every skill into every plugin). `hoopit-matt-picks` is the exception: it uses a `github` source pointing at -`mattpocock/skills` with `strict: false` and an explicit `skills` array listing +`mattpocock/skills` with `strict: true` and an explicit `skills` array listing the specific skill paths to surface (a marketplace can list a plugin fetched from -a different repo). +a different repo). `strict: true` makes that curated list authoritative, so it +overrides the upstream plugin's own manifest instead of conflicting with it. > **Adding or removing a Hoopit skill?** When working in this repo, Claude has a > project-local `create-hoopit-skill` skill (under `.claude/skills/`) that