Skip to content

rins_hooks - Never lose track of your Claude Code changes again. Automatically commits every edit with context, so you can code fearlessly and revert easily.

Notifications You must be signed in to change notification settings

rinadelph/rins_hooks

Repository files navigation

rins_hooks

Universal Claude Code hooks collection with cross-platform installer

πŸ€– Interested in AI Multi-Agent workflows? Join the Swarm Community to discuss agentic development, share tools, and collaborate on building better AI workflows!

🌐 Cross-Platform Support

Works universally across all devices and operating systems:

  • βœ… Windows (10, 11) - Native PowerShell integration
  • βœ… macOS (Intel & Apple Silicon) - Native osascript notifications
  • βœ… Linux (Ubuntu, CentOS, Arch) - Native notify-send support
  • βœ… Node.js 16+ - Tested on LTS versions

πŸš€ Quick Start

Install globally with npm:

npm install -g rins_hooks

Install hooks interactively:

rins_hooks install --interactive

Or install specific hooks:

rins_hooks install auto-commit code-formatter notification

πŸ“‹ Available Hooks

πŸ”„ Auto-Commit Hook

Automatically commits file changes with contextual messages after every Claude Code file modification.

Features:

  • Smart commit messages with tool context
  • File path and change type detection
  • Configurable exclusion patterns
  • Branch-aware behavior

🎨 Code Formatter Hook

Automatically formats code after file modifications using popular formatters.

Features:

  • Support for multiple languages (JS/TS, Python, Go, Rust, Java, C/C++)
  • Project configuration detection
  • Configurable formatters per file type
  • Graceful error handling

πŸ”” Notification Hook

Enhanced notifications for Claude Code events with multiple delivery methods.

Features:

  • Cross-platform desktop notifications
  • Slack/Discord/Teams integration
  • Custom notification commands
  • Configurable notification types

πŸ“– Installation Options

Global Installation (Recommended)

Install for all Claude Code projects:

rins_hooks install auto-commit --user

Project Installation

Install for current project only:

rins_hooks install auto-commit --project

Local Installation

Install locally (not committed to git):

rins_hooks install auto-commit --local

πŸ”§ Commands

Installation

# Interactive installation
rins_hooks install --interactive

# Install specific hooks
rins_hooks install auto-commit notification

# Install all hooks
rins_hooks install --all

# Dry run (preview changes)
rins_hooks install auto-commit --dry-run

Management

# List available hooks
rins_hooks list

# Show installation status
rins_hooks status

# Show configuration
rins_hooks config --show

# Validate configuration
rins_hooks config --validate

# Run diagnostics
rins_hooks doctor

Uninstallation

# Uninstall specific hooks
rins_hooks uninstall auto-commit

# Uninstall all hooks
rins_hooks uninstall --all

βš™οΈ Configuration

Auto-Commit Hook Configuration

The auto-commit hook can be customized through its configuration:

{
  "commitMessageTemplate": "Auto-commit: {{toolName}} modified {{fileName}}\\n\\n- File: {{filePath}}\\n- Tool: {{toolName}}\\n- Session: {{sessionId}}\\n\\nπŸ€– Generated with Claude Code via rins_hooks\\nCo-Authored-By: Claude <[email protected]>",
  "excludePatterns": [
    "*.log", "*.tmp", ".env*", "*.key", "node_modules/**", ".git/**"
  ],
  "skipEmptyCommits": true,
  "branchRestrictions": ["main", "master"],
  "maxCommitMessageLength": 500
}

Code Formatter Configuration

Configure formatters for different file types:

{
  "formatters": {
    ".js": "prettier --write",
    ".py": "black",
    ".go": "gofmt -w",
    ".rs": "rustfmt"
  },
  "excludePatterns": ["node_modules/**", "dist/**"],
  "failOnError": false
}

Notification Configuration

Set up notifications and integrations:

{
  "desktopNotifications": true,
  "integrations": {
    "slack": {
      "enabled": true,
      "webhook": "https://hooks.slack.com/...",
      "channel": "#dev"
    },
    "discord": {
      "enabled": true,
      "webhook": "https://discord.com/api/webhooks/..."
    }
  }
}

πŸ› οΈ Requirements

  • Node.js: >= 16.0.0
  • Claude Code: Latest version
  • Git: For auto-commit functionality
  • Formatters: Optional, based on enabled hooks

πŸ” Diagnostics

Run the built-in diagnostics to check your setup:

rins_hooks doctor

This will check:

  • βœ… Node.js version compatibility
  • βœ… Claude Code installation
  • βœ… Git availability and repository status
  • βœ… Settings directory permissions
  • βœ… Configuration file validity

πŸ“ File Structure

~/.claude/                          # Claude Code settings directory
β”œβ”€β”€ settings.json                   # User-level hooks
└── projects/
    └── your-project/
        └── .claude/
            β”œβ”€β”€ settings.json       # Project-level hooks
            └── settings.local.json # Local hooks (not committed)

πŸ”’ Security Considerations

  • Hooks execute with your user permissions
  • Review hook configurations before installation
  • Use project-level installation for team settings
  • Keep sensitive configurations in local settings
  • Regularly update to latest versions

πŸ› Troubleshooting

Common Issues

Hook not executing:

# Check installation status
rins_hooks status

# Validate configuration
rins_hooks config --validate

# Run diagnostics
rins_hooks doctor

Permission errors:

  • Ensure Claude Code settings directory is writable
  • Check file permissions on hook scripts
  • Verify git repository permissions for auto-commit

Formatter not found:

  • Install required formatters globally
  • Check PATH configuration
  • Use rins_hooks doctor to verify dependencies

🀝 Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch
  3. Add your hook or improvement
  4. Test thoroughly across platforms
  5. Submit a pull request

Creating Custom Hooks

Extend the HookBase class:

const HookBase = require('rins_hooks/src/hook-base');

class MyCustomHook extends HookBase {
  constructor(config = {}) {
    super('my-custom-hook', config);
  }

  async execute(input) {
    // Your hook logic here
    return this.success({ message: 'Hook executed successfully' });
  }
}

πŸ“„ License

MIT License - see LICENSE file for details.

πŸ”— Links

πŸ™ Acknowledgments

  • Anthropic for Claude Code
  • Open source community for formatter tools
  • Contributors and testers

Made with ❀️ for the Claude Code community

About

rins_hooks - Never lose track of your Claude Code changes again. Automatically commits every edit with context, so you can code fearlessly and revert easily.

Resources

Stars

Watchers

Forks

Packages

No packages published