documentation/hooks.md

# Claude Hooks

Claude automatically installs several hooks to help ensure your Elixir code is production-ready. This library provides a batteries-included integration with Claude Code's hook system.

## Documentation

For complete documentation on Claude Code's hook system:
- [Official Hooks Reference](https://docs.anthropic.com/en/docs/claude-code/hooks) - Complete API reference
- [Hooks Guide](https://docs.anthropic.com/en/docs/claude-code/hooks-guide) - Getting started with examples

## What Claude Installs

When you run `mix igniter.install claude`, it automatically sets up:

1. **Format checking** - Alerts when Elixir files need formatting
2. **Compilation checking** - Catches errors and warnings immediately  
3. **Pre-commit validation** - Ensures clean code before commits

## Configuration

Claude's hooks are configured in `.claude.exs`. You can add optional hooks or create custom ones:

```elixir
%{
  hooks: [
    # Optional: Enable related files suggestions
    Claude.Hooks.PostToolUse.RelatedFiles,
    
    # Add your custom hooks
    MyApp.Hooks.CustomChecker
  ]
}
```

## Creating Custom Hooks

You can extend Claude with your own hooks using the `Claude.Hooks.Hook.Behaviour`:

```elixir
defmodule MyApp.Hooks.CustomChecker do
  use Claude.Hooks.Hook.Behaviour,
    event: :post_tool_use,
    matcher: [:write, :edit],
    description: "My custom validation hook"

  @impl true
  def run(json_input) when is_binary(json_input) do
    # Your hook logic here
    :ok
  end
end
```

## Important Notes

- **Format checking only**: The formatter hook only checks if files need formatting - it doesn't automatically format. This gives you control over when formatting happens.
- **Feedback to Claude**: Hooks communicate with Claude through exit codes and stderr, allowing Claude to automatically see and respond to issues.
- **Performance**: Hooks run with a default 60-second timeout, configurable per hook.

For more details on hook events, configuration, and advanced usage, see the [official documentation](https://docs.anthropic.com/en/docs/claude-code/hooks).