# Openloomi Hooks

> OpenLoomi × Claude Code hooks installer. Use when the user wants Claude Code's lifecycle (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop, SubagentStart, SubagentStop, Notification) to mirror onto the Loomi Pet, or wants to auto-archive every Stop into OpenLoomi memory. Triggers: install hooks, /openloomi:hooks, hooks install, hooks uninstall, hooks status, mirror claude on pet, auto-archive stop.

- Skill: `gabrielmoreira/openloomi-hooks` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/openloomi-hooks`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/openloomi-hooks/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/openloomi-hooks

---


# OpenLoomi Hooks Sub-skill

The plugin ships a hook bundle in `hooks/hooks.json` but **never installs it
automatically**. Users must explicitly run one of:

- `/openloomi:hooks install` — merge the bundle into `~/.claude/settings.json`
- `/openloomi:hooks uninstall` — strip only the plugin's block (other
  plugins' hooks are preserved)
- `/openloomi:hooks status` — report whether the bundle is currently active

Under the hood this calls:

```bash
node ${CLAUDE_PLUGIN_ROOT}/scripts/loomi-bridge.mjs install-hooks
node ${CLAUDE_PLUGIN_ROOT}/scripts/loomi-bridge.mjs uninstall-hooks
node ${CLAUDE_PLUGIN_ROOT}/scripts/loomi-bridge.mjs hooks-status
```

## Safety guarantees

- `install-hooks` is **merge-no-overwrite**: only adds the plugin's block
  under `hooks.__openloomi_claude_plugin_hooks__`. Existing hooks for
  other plugins are not touched.
- `uninstall-hooks` removes only the plugin-marked block; rerunning it
  after the first time reports `removed: false`, never deletes anything
  else's hooks.
- The merge is atomic (`writeFile` to a temp file, then `rename`).
- The Stop hook **always exits 0** — archive failures are reported as
  JSON `{continue: true, _openloomi: {archive: "skipped", reason: ...}}`
  so they can never block Claude Code's response stream.

## Suggested user prompt

> This plugin can mirror Claude Code's lifecycle onto your Loomi Pet. To
> enable this, run `/openloomi:hooks install`. To disable, run
> `/openloomi:hooks uninstall`. The plugin never modifies your
> `~/.claude/settings.json` without explicit consent.

