fix(mem0-agent): emit the Claude Code manifest at hooks/hooks.json

Claude Code auto-discovers a plugin's hooks at <plugin>/hooks/hooks.json. The
generator was writing to hooks/generated/, so the manifest existed but was never
loaded and no hook would have fired on install.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Deshraj Yadav
2026-07-29 01:49:27 -07:00
parent ba1de5f87b
commit e11d2a4a06
4 changed files with 4 additions and 4 deletions
+2 -2
View File
@@ -25,7 +25,7 @@ To wire the hooks into Claude Code, point your plugin/settings config at the gen
manifest:
```
hooks/generated/claude-code.hooks.json
hooks/hooks.json
```
Non-interactive install (CI, dotfiles, provisioning):
@@ -100,7 +100,7 @@ matcher, command, timeout, background/blocking flags, local-only contract, and o
of *why*.
```bash
python3 hooks/generate.py # write hooks/generated/claude-code.hooks.json
python3 hooks/generate.py # write hooks/hooks.json
python3 hooks/generate.py --check # exit 1 if the committed manifest drifted (run in CI)
```
@@ -29,7 +29,7 @@ defaults:
editors:
- id: claude-code
supported: true
output: "generated/claude-code.hooks.json"
output: "hooks.json" # Claude Code auto-discovers <plugin>/hooks/hooks.json
dialect: "claude-code"
env:
MEM0_EDITOR: "claude-code"
+1 -1
View File
@@ -125,7 +125,7 @@ def test_hook_manifest_commands_all_exist():
"""Guards against the manifest and the CLI drifting apart."""
import pathlib
manifest = pathlib.Path(__file__).resolve().parents[1] / "hooks/generated/claude-code.hooks.json"
manifest = pathlib.Path(__file__).resolve().parents[1] / "hooks/hooks.json"
data = json.loads(manifest.read_text())
known = {"setup", "onboard", "context", "observe", "flush", "assist-error",
"remember", "forget", "maintain", "health", "stats", "config"}