Skip to content

jasmeralia/jasmeralia-personal-hooks

v0.1.0

Morgan/Jasmeralia's personal-infra and workflow-policy guard hooks (TrueNAS, EC2, Odoo, memory policy, global CLAUDE.md tracking)

jasmeralia-personal-hooks

Morgan/Jasmeralia's personal infrastructure and workflow-policy guard hooks. Not employer-specific, but tied to Morgan's own home infra (TrueNAS, EC2 instances) and personal accounts (Odoo) - install this if you're Morgan or running the same infra, not as a general-purpose team plugin.

ScriptEventMatcherWhat it does
memory-vs-agents-guard.shPreToolUseWrite|EditAsks for confirmation before writing to Claude's private auto-memory instead of AGENTS.md/CLAUDE.md.
odoo-task-close-guard.shPreToolUsemcp__odoo__update_recordReminds to set state: "1_done" alongside stage_id when closing a project.task.
validate_odoo_html.pyPreToolUsemcp__odoo__post_message|update_record|create_recordRejects Odoo chatter/description HTML that Odoo would render as escaped text.
ec2-destructive-guard.shPreToolUseBashDenies aws ec2 terminate-instances; asks for confirmation on stop-instances/reboot-instances.
truenas-docker-crontab-guard.shPreToolUseBashOn TrueNAS-directed commands, denies raw docker run/restart/start and raw crontab edits.
claude-md-baseline.shSessionStart-Records a hash of ~/.claude/CLAUDE.md as this session's baseline.
claude-md-diff-check.shPostToolUseBashFlags git pull, and injects the current ~/.claude/CLAUDE.md content if it changed on disk mid-session.
webfetch-auth-wall-reminder.shPostToolUseWebFetchDetects an auth-wall response, reminds to re-scan the full MCP tool list before concluding "no access".

Cross-ecosystem support

  • Claude Code: .claude-plugin/plugin.json + hooks/hooks.json.
  • Codex: root plugin.json (Agent Plugins standard) reuses the same hooks/hooks.json.
  • Cursor: .cursor-plugin/plugin.json + a hand-translated hooks/cursor-hooks.json, covering the five hooks that have a clean Cursor equivalent.

Three hooks are Claude Code-only and intentionally omitted from cursor-hooks.json:

  • claude-md-baseline.sh / claude-md-diff-check.sh - hardcode ~/.claude/CLAUDE.md and ~/.claude/hook-state, which are Claude Code concepts specifically (Codex has its own separate, existing mechanism for tracking ~/.codex/AGENTS.md, out of scope for this plugin).
  • webfetch-auth-wall-reminder.sh - no confirmed Cursor tool-matcher name for WebFetch in Cursor's native preToolUse/postToolUse vocabulary (Shell/Read/Write/Task/MCP:<tool>), so it's omitted rather than guessed at.

Odoo MCP tool-name matchers in cursor-hooks.json are a best guess (MCP:odoo_update_record etc.) using Cursor's documented MCP:<tool_name> convention - confirm against Cursor's actual MCP tool naming the first time this plugin is installed there, and correct if it doesn't match.