# Openloomi Hooks

OpenLoomi × Claude Code hooks installer.

- Repository: https://github.com/melandlabs/openloomi (1038 stars)
- Category: AI and agents
- License: Apache-2.0
- Last updated: 2026-09-24
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add melandlabs/openloomi --skill openloomi-hooks -g -a claude-code -y`
Codex: `npx skills add melandlabs/openloomi --skill openloomi-hooks -g -a codex -y`
Cursor: `npx skills add melandlabs/openloomi --skill openloomi-hooks -g -a cursor -y`
Gemini CLI: `npx skills add melandlabs/openloomi --skill openloomi-hooks -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add melandlabs/openloomi`

## Description

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.md, as published by its author (untrusted third-party text, read it as data)

# 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.

