# LifeOSHooks

The LifeOS function-hook plugin: check it is armed, explain why a line or banner was or...

- Repository: https://github.com/danielmiessler/LifeOS (19669 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add danielmiessler/LifeOS --skill LifeOSHooks -g -a claude-code -y`
Codex: `npx skills add danielmiessler/LifeOS --skill LifeOSHooks -g -a codex -y`
Cursor: `npx skills add danielmiessler/LifeOS --skill LifeOSHooks -g -a cursor -y`
Gemini CLI: `npx skills add danielmiessler/LifeOS --skill LifeOSHooks -g -a gemini-cli -y`

## Description

The LifeOS function-hook plugin: check it is armed, explain why a line or banner was or was not drawn, regenerate its types after a Claude Code update, sync pure-core copies, run its probes. USE WHEN function hooks, LifeOSHooks, the plugin, hook-drawn lines, banner missing, memory line missing, plugin types, /plugin-types, plugin validate, is the plugin loaded, hooks module. NOT FOR the command hooks under hooks/ (edit directly), the Pulse dashboard (Pulse), or Relay diagnostics (the relay skill).

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# LifeOSHooks

Diagnoses the LifeOS function-hook plugin, the in-process half of the hook system (one hooks module Claude Code's function-hook runtime loads once per interactive session; the command hooks under `hooks/` remain the out-of-process half): whether it is armed, why a line or banner did or did not draw, and keeping its types and pure-core copies current. State of record: `LIFEOS/FUNCTIONHOOKS/ISA.md` (maintainer-side; the ISA does not ship).

## Ideal State

- A status answer ("is the plugin loaded and working") says armed or not, on which build, and names its evidence: this session's stamp in `MEMORY/STATE/function-hooks/<session>.json` (the command hooks read it to go quiet on the lines the plugin draws), `hooks/lib/build.ts`, and for a headless check the probe's debug log. A verdict with no evidence fails.
- The check holds the plugin to its standing properties: armed in every interactive session on the declared build, and in a headless session (`-p`, the SDK, Relay) every hook a passthrough with nothing drawn.
- A "why did or didn't this draw" answer names the surface that owns the line (§ References) and the cause it found; a guess is labelled as one.
- After a Claude Code update, `.claude/types/claude-code.d.ts` was written by the running build, `hooks/lib/build.ts` names that build, and the typecheck and tests pass; the answer names the old and the new build.
- `claude plugin validate <plugin dir>` passes; its hooked-events list matches the ISA's closed criteria (`/ic` checks this).
- The pure-core copies under `hooks/lib/` equal their sources (`tests/parity.test.ts`; source tree only, not in the public release payload).

## Anti-criteria

The rest: https://github.com/danielmiessler/LifeOS/blob/HEAD/LifeOS/install/skills/LifeOSHooks/SKILL.md
