A plugin hook can point to a file that exists in a developer checkout and is missing from the distributed plugin cache. Checking that the manifest is valid will not catch that failure.
We repaired this in oh-my-agent. The old manifest referenced generated files under ${CLAUDE_PLUGIN_ROOT}/.claude/hooks/. A fresh-cache fixture omitted those files, exposing the packaging dependency.
Test the distributed shape
The repair routes marketplace events through a tracked shell dispatcher and the installed CLI. It also checks whether an executable project hook already owns the event, so project and marketplace registrations do not deliver the same event twice.
Bootstrap needed a separate check: a success marker shared across projects could let a second project skip its own wiring. The receipt now belongs to the project, and reuse requires the configuration, version, executable wrapper, and actual hook registrations.
The worked repair links the before/after source and the regression fixtures. Those fixtures use fake CLI commands and temporary directories. They test dispatch and wiring; real host and model behavior require a separate session check.
Apply the method to your own diff
Ask your coding agent to load the review instructions:
bunx skills use first-fluke/oh-my-agent@oma-qa
Then give it a bounded request:
Review this diff against origin/main. Check whether referenced files exist in
the distributed package, not only this checkout. Look for duplicate event
delivery and project-specific state stored in shared locations. Cite each
confirmed finding with file:line and its trigger. Keep application source
unchanged and report which checks you actually ran.
The command returns instructions and their support directory. Your agent still needs to read them and have access to the repository and its existing tools.
Review your own AI-written change. Check the cited locations and rerun the narrow checks before deciding whether to merge.
Top comments (0)