claude-hooks 0.1.2

Programmatic management of Claude Code hooks
Documentation
# claude-hooks

Programmatic management of [Claude Code](https://claude.ai/code) hooks.

## Features

- **install** — Add hooks to `~/.claude/settings.json` with atomic writes
- **uninstall** — Remove only hooks installed by this crate (ownership tracking)
- **list** — Show all hooks with managed/unmanaged status

## Usage

```rust
use claude_hooks::{HookEvent, HookHandler, install, uninstall, list};

// Install a hook
let handler = HookHandler {
    r#type: "command".to_string(),
    command: "/path/to/hook.sh $SESSION_ID".to_string(),
    matcher: String::new(),
    timeout: Some(600),
    r#async: None,
};
install(HookEvent::Stop, handler, "my-app")?;

// List all hooks
for entry in list()? {
    println!("{:?}: {} (managed: {})",
        entry.event,
        entry.handler.command,
        entry.managed
    );
}

// Uninstall (only works for hooks we installed)
uninstall(HookEvent::Stop, "/path/to/hook.sh $SESSION_ID")?;
```

## Design

- **Atomic writes**: Uses temp-file-then-rename to prevent corruption
- **Ownership tracking**: Local registry in XDG data dir tracks which hooks we installed
- **Non-destructive**: Never modifies hooks installed by other tools or manually

## Hook Events

Supports all Claude Code hook events:

- `Start`, `Stop`
- `BeforePrompt`, `AfterPrompt`
- `BeforeToolUse`, `AfterToolUse`
- `BeforeEdit`, `AfterEdit`
- `BeforeRevert`, `AfterRevert`
- `BeforeRun`, `AfterRun`

## License

MIT OR Apache-2.0