From 843b54d90b1cf3893ae6d7d3fe6a0b3b6473e064 Mon Sep 17 00:00:00 2001 From: Kevin Date: Wed, 2 Sep 2026 15:39:28 +0200 Subject: [PATCH] fix(plugin): remove the duplicate hooks key from the installed manifest Claude Code loads hooks/hooks.json by convention, so a manifest that also declares it fails to load: Hook load failed: Duplicate hooks file detected: ./hooks/hooks.json resolves to already-loaded file .../purchasely/2.0.0/hooks/hooks.json The skills, the commands and the agent still loaded, the SessionStart hook did not, and claude plugin list reported the plugin as failed. 2.0.0-rc.6 removed the same key from the root .claude-plugin/plugin.json, but the marketplace entry installs ./purchasely, so the nested manifest is the one that reaches the harness and it kept the key. Verified with a real install from a local marketplace: status goes from "failed to load" to "enabled", and claude plugin details reports Hooks (1) SessionStart. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 4 ++++ purchasely/.claude-plugin/plugin.json | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08e5327..a6e016f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project are documented here. The format is based on ## [Unreleased] +### Fixed + +- `purchasely/.claude-plugin/plugin.json`: removed the redundant `"hooks": "./hooks/hooks.json"` key. Claude Code loads `hooks/hooks.json` on its own, so the manifest entry made the plugin fail to load with `Hook load failed: Duplicate hooks file detected`. The skills, the agent and the commands loaded, the session-start hook did not. `2.0.0-rc.6` removed the same key from the root `.claude-plugin/plugin.json`, but the marketplace installs `./purchasely`, so the nested manifest is the one that reaches the harness. + ## [2.1.0] — 2026-09-02 The `purchasely-sdk-expert` skill now verifies and cites a source before it answers a behavior question, and it routes a topic to the right reference instead of guessing. A support investigation had spent a day reading SDK and backend source code to rediscover a documented product rule. diff --git a/purchasely/.claude-plugin/plugin.json b/purchasely/.claude-plugin/plugin.json index 7cf0d10..efe9c65 100644 --- a/purchasely/.claude-plugin/plugin.json +++ b/purchasely/.claude-plugin/plugin.json @@ -14,7 +14,6 @@ "agents": [ "./agents/purchasely-sdk-expert.md" ], - "hooks": "./hooks/hooks.json", "keywords": [ "purchasely", "sdk",