Skip to content

hooks/hooks.json ships as [] in 4 of 5 vertical plugins -> fails plugin load with schema error #219

@smiralles1979

Description

@smiralles1979

Summary

Four of the five vertical plugins in this marketplace ship a hooks/hooks.json file containing a bare JSON array ([]), but the Claude Code plugin loader validates that file against a schema expecting an object with a hooks record property. As a result, those plugins install successfully (claude plugin install ... returns success) but immediately fail to load on subsequent claude plugin list, with status × failed to load.

Affected files (paths relative to repo root)

Plugin Version plugins/vertical-plugins/<plugin>/hooks/hooks.json
financial-analysis 0.1.0 [] — broken
equity-research 0.1.0 [] — broken
private-equity current [] — broken
wealth-management current [] — broken
investment-banking 0.2.0 {"hooks": {}} — correct (canonical example)

Reproduction

claude plugin marketplace add anthropics/financial-services
claude plugin install financial-analysis@claude-for-financial-services
claude plugin list

Observed:

> financial-analysis@claude-for-financial-services
  Status: × failed to load
  Error: Hook load failed: [
    {
      "expected": "record",
      "code": "invalid_type",
      "path": ["hooks"],
      "message": "Invalid input: expected record, received undefined"
    }
  ]

A first patch from [] to {} produced a different error (expected record at path ["hooks"]), confirming the loader requires the top-level object and a hooks key whose value is itself a record. Patching to {"hooks": {}} resolved the load.

Root cause

Empty-hooks placeholder file does not match the required minimum shape. The canonical valid example already exists in the same repo at plugins/vertical-plugins/investment-banking/hooks/hooks.json.

Proposed fix

Replace the contents of the four broken hooks.json files with:

{
  "hooks": {}
}

A four-line patch. Also consider:

  • Adding a check.py rule (the repo's existing pre-commit linter) that validates every hooks/hooks.json against the loader schema, so this can't regress.
  • Patch-bumping the version of the four affected plugin manifests so installed users pull the fix.

Environment

  • OS: Windows 11 Pro (10.0.26200)
  • Shell: PowerShell 7.6.1
  • claude CLI: current as of 2026-05-16
  • Marketplace source: https://github.com/anthropics/financial-services.git (HTTPS, fresh clone today)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions