Skip to content

Fix hooks.json schema in 4 vertical plugins#84

Closed
phschultz1 wants to merge 1 commit into
anthropics:mainfrom
phschultz1:fix/hooks-json-empty-array
Closed

Fix hooks.json schema in 4 vertical plugins#84
phschultz1 wants to merge 1 commit into
anthropics:mainfrom
phschultz1:fix/hooks-json-empty-array

Conversation

@phschultz1

Copy link
Copy Markdown

Summary

Four vertical plugins ship hooks/hooks.json as an empty JSON array ([]), which fails Claude Code's manifest schema validation:

Hook load failed: [
  {
    "expected": "object",
    "code": "invalid_type",
    "path": [],
    "message": "Invalid input: expected object, received array"
  }
]

Result: financial-analysis, equity-research, private-equity, and wealth-management install successfully but show ✘ failed to load in claude plugin list, and their skills/commands never surface in the session.

investment-banking already has the correct shape ({"hooks": {}}); this PR aligns the other four with that convention.

Files changed

  • plugins/vertical-plugins/financial-analysis/hooks/hooks.json
  • plugins/vertical-plugins/equity-research/hooks/hooks.json
  • plugins/vertical-plugins/private-equity/hooks/hooks.json
  • plugins/vertical-plugins/wealth-management/hooks/hooks.json

Each goes from [] to:

{
  "hooks": {}
}

Reproduces on

  • Claude Code 2.1.128
  • Marketplace install via claude plugin marketplace add anthropics/claude-for-financial-services followed by claude plugin install <plugin>@claude-for-financial-services

Test plan

  • claude plugin install financial-analysis@claude-for-financial-servicesStatus: ✘ failed to load before the fix
  • After applying the fix to ~/.claude/plugins/cache/.../hooks/hooks.jsonStatus: ✔ enabled, slash commands surface in next session
  • No-op for investment-banking (already correct)
  • python3 scripts/check.py should pass (no new content added — only manifest shape correction)

🤖 Generated with Claude Code

Four vertical plugins ship hooks/hooks.json as an empty JSON array `[]`,
which fails Claude Code's manifest schema validation:

  Hook load failed: [
    {
      "expected": "object",
      "code": "invalid_type",
      "path": [],
      "message": "Invalid input: expected object, received array"
    }
  ]

Result: financial-analysis, equity-research, private-equity, and
wealth-management install successfully but show "✘ failed to load" in
`claude plugin list`, and their skills/commands never become available
in the session.

investment-banking already has the correct shape — `{"hooks": {}}` —
this PR aligns the other four with that convention.

Reproduces on Claude Code 2.1.128.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@mihilmy

mihilmy commented May 18, 2026

Copy link
Copy Markdown
Collaborator

Thanks for catching this and taking the time to send a fix! 🙏 This was reported by many contributors — the underlying bug is now resolved in #232, which repairs all four broken hooks.json files ([]{"hooks": {}}) and adds a plugin-validate CI check (the official claude plugin validate) so a malformed manifest can't regress again. Closing as superseded by #232. Really appreciate the contribution.

@mihilmy mihilmy closed this May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants