Edmonds-Commerce-Limited/claude-code-hooks-daemon

Claude Code 用のデーモンベースフックシステム。遅延起動、自動シャットダウン、プロジェクトレベルのハンドラ拡張性を提供します。

claude-code-hooks-daemon とは?

このスキルは、Claude Code 向けのデーモンベースのフックシステムです。従来のスクリプト実行型フックとは異なり、バックグラウンドで動作するデーモン(常駐プロセス)を管理し、効率的なフック処理を実現します。主な特徴として、実際にフックが呼び出されるまでデーモンを起動しない「遅延起動」、一定時間アイドル状態が続くと自動的にシャットダウンする「自動シャットダウン」、そしてプロジェクトごとにカスタムハンドラを追加できる「拡張性」があります。これにより、開発者は各プロジェクトのニーズに合わせてフック処理をカスタマイズでき、Claude Code のワークフローをより柔軟かつ効率的に制御できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add Edmonds-Commerce-Limited/claude-code-hooks-daemon

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

claude-code-hooks-daemon は何をしますか?

Claude Code 用のデーモンベースフックシステム。遅延起動、自動シャットダウン、プロジェクトレベルのハンドラ拡張性を提供します。

概要

このスキルは、Claude Code のフック機構を拡張し、デーモンプロセスとしてバックグラウンドで永続的に動作するフックハンドラを管理します。従来の各フックイベントごとにスクリプトを起動する方式と比較して、以下の利点があります。

  • パフォーマンス: デーモンが常駐しているため、フック呼び出しのオーバーヘッドが低減されます。
  • 状態管理: デーモン内で状態を保持できるため、複数のフック呼び出しにまたがる処理が容易になります。
  • リソース効率: 必要なときだけデーモンを起動し、不要になれば自動的に終了します。

仕組み

  1. Claude Code がフックイベント(例: onToolUse、onTaskStart)を発行します。
  2. このスキルは、設定されたフックハンドラをデーモンプロセスとして起動します(未起動の場合)。
  3. デーモンは標準入力(stdin)を介してフックイベントのJSONデータを受け取り、標準出力(stdout)に結果を返します。
  4. 一定時間(デフォルトでは5分)フック呼び出しがない場合、デーモンは自動的にシャットダウンされます。

設定

プロジェクトのルートに hooks.config.json というファイルを作成し、以下のように設定します。

{
  "handlers": {
    "onToolUse": "node ./my-handler.js",
    "onTaskStart": ["python3", "./my-other-handler.py"]
  },
  "daemon": {
    "idleTimeout": 300000,
    "startupDelay": 100
  }
}
  • handlers: フックイベント名と、そのイベントを処理するコマンド(またはコマンド配列)のマッピング。
  • daemon.idleTimeout: アイドルタイムアウト(ミリ秒)。この時間を超えてフック呼び出しがないとデーモンがシャットダウンします。
  • daemon.startupDelay: 起動遅延(ミリ秒)。最初のフック呼び出しから実際にデーモンを起動するまでの待機時間です。

使用例

シンプルなNode.jsハンドラ

// my-handler.js
process.stdin.on('data', (data) => {
  const event = JSON.parse(data.toString());
  console.log(`フックイベント受信: ${event.type}`);
  // イベントを処理...
  process.stdout.write(JSON.stringify({ processed: true }));
});

Pythonハンドラ

# my-other-handler.py
import sys
import json

for line in sys.stdin:
    event = json.loads(line)
    print(f"フックイベント受信: {event['type']}", file=sys.stderr)
    # イベントを処理...
    print(json.dumps({"processed": True}))
    sys.stdout.flush()

開発

このスキル自体の開発に参加するには、リポジトリをクローンし、依存関係をインストールしてください。

git clone https://github.com/Edmonds-Commerce-Limited/claude-code-hooks-daemon.git
cd claude-code-hooks-daemon
npm install

テストを実行するには:

npm test

ライセンス

MIT

関連スキル