From 3f79288b5466d602b654f572d74877bc8d73adba Mon Sep 17 00:00:00 2001 From: lmiranda Date: Sun, 25 Jan 2026 15:48:41 -0500 Subject: [PATCH 1/2] fix(data-platform): use separate hooks.json file (not inline) Cherry-pick fix from hotfix/data-platform-hooks to development. Hooks must be in separate hooks/hooks.json file (auto-discovered), NOT inline in plugin.json. Co-Authored-By: Claude Opus 4.5 --- plugins/data-platform/.claude-plugin/plugin.json | 8 -------- plugins/data-platform/hooks/hooks.json | 10 ++++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 plugins/data-platform/hooks/hooks.json diff --git a/plugins/data-platform/.claude-plugin/plugin.json b/plugins/data-platform/.claude-plugin/plugin.json index 00bae91..489fcee 100644 --- a/plugins/data-platform/.claude-plugin/plugin.json +++ b/plugins/data-platform/.claude-plugin/plugin.json @@ -18,14 +18,6 @@ "etl", "dataframe" ], - "hooks": { - "SessionStart": [ - { - "type": "command", - "command": "${CLAUDE_PLUGIN_ROOT}/hooks/startup-check.sh" - } - ] - }, "commands": ["./commands/"], "mcpServers": ["./.mcp.json"] } diff --git a/plugins/data-platform/hooks/hooks.json b/plugins/data-platform/hooks/hooks.json new file mode 100644 index 0000000..529b5ec --- /dev/null +++ b/plugins/data-platform/hooks/hooks.json @@ -0,0 +1,10 @@ +{ + "hooks": { + "SessionStart": [ + { + "type": "command", + "command": "${CLAUDE_PLUGIN_ROOT}/hooks/startup-check.sh" + } + ] + } +} -- 2.49.1 From f22d49ed07bdba10be6706b9785a7d1386b03fed Mon Sep 17 00:00:00 2001 From: lmiranda Date: Sun, 25 Jan 2026 15:48:58 -0500 Subject: [PATCH 2/2] docs: correct plugin.json hooks format rules Hooks should be in separate hooks/hooks.json file (auto-discovered), NOT inline in plugin.json. Co-Authored-By: Claude Opus 4.5 --- CLAUDE.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index b4eb294..10785aa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -164,9 +164,11 @@ leo-claude-mktplace/ - **CLI tools forbidden** - Use MCP tools exclusively (never `tea`, `gh`, etc.) #### ⚠️ plugin.json Format Rules (CRITICAL) -- **Hooks MUST be inline** - NEVER use `"hooks": "path/to/file.json"` +- **Hooks in separate file** - Use `hooks/hooks.json` (auto-discovered), NOT inline in plugin.json +- **NEVER reference hooks** - Don't add `"hooks": "..."` field to plugin.json at all - **Agents auto-discover** - NEVER add `"agents": ["./agents/"]` - .md files found automatically - **Always validate** - Run `./scripts/validate-marketplace.sh` before committing +- **Working examples:** projman, pr-review, claude-config-maintainer all use `hooks/hooks.json` - See lesson: `lessons/patterns/plugin-manifest-validation---hooks-and-agents-format-requirements` ### Hooks (Valid Events Only) -- 2.49.1