CClaude Code Catalog
全Hooks

編集後テストランナー

Post-Tool入門Hookタイプ: post-tool-use

編集後テストランナーは、すべてのファイル書き込みまたは編集操作の後にトリガーされます。一般的な命名規則(*.test.ts、*.spec.ts、__tests__/*)を使用して、変更されたソースファイルに対応するテストファイルを検出し、該当するテストのみを実行します。一致するテストファイルがない場合は静かにスキップします。これにより、編集が既存の機能を壊していないか即座にフィードバックを得られ、リグレッションが蓄積される前に検出できます。

テストJestVitestリグレッション自動化

Hookコード

#!/bin/bash # Post-Edit Test Runner Hook # Runs related tests after file edits # Only trigger on file write/edit tools if [[ "$TOOL_NAME" != "Edit" ]] && [[ "$TOOL_NAME" != "Write" ]]; then exit 0 fi FILE_PATH=$(echo "$TOOL_INPUT" | jq -r '.file_path // .path // empty') if [ -z "$FILE_PATH" ]; then exit 0 fi # Skip non-source files if ! echo "$FILE_PATH" | grep -qE '\.(ts|tsx|js|jsx|py)$'; then exit 0 fi # Skip test files themselves if echo "$FILE_PATH" | grep -qE '\.(test|spec)\.(ts|tsx|js|jsx)$'; then exit 0 fi BASE_NAME=$(basename "$FILE_PATH" | sed 's/\.[^.]*$//') DIR_NAME=$(dirname "$FILE_PATH") # Find matching test files TEST_FILE="" for pattern in "$DIR_NAME/$BASE_NAME.test.ts" "$DIR_NAME/$BASE_NAME.spec.ts" "$DIR_NAME/__tests__/$BASE_NAME.test.ts"; do if [ -f "$pattern" ]; then TEST_FILE="$pattern" break fi done if [ -z "$TEST_FILE" ]; then echo "No matching test file found for $FILE_PATH, skipping." exit 0 fi echo "Running tests: $TEST_FILE" npx vitest run "$TEST_FILE" --reporter=verbose 2>&1 | tail -20 exit 0

このHookをClaude Code設定または.claude/settings.jsonに追加して有効化してください。

実行プレビュー

編集後テストランナー

編集後テストランナーについて

Claude Code Hooksは、Claude操作中の特定イベントに応じてカスタムシェルコマンドを自動実行します。編集後テストランナーは入門レベルのPost-Tool Hookで、開発ワークフローの重要なタイミングでタスクを自動化し、手動ステップを削減してチーム全体の一貫性を維持します。

関連Hooks