Skip to content

原文(日本語に翻訳)

Hooks: Stop と SubagentStop フックが hookSpecificOutput.additionalContext を返せるようになりました。これにより Claude にフィードバックを渡しつつ、フックエラーと見なされることなくターンを継続できます。

原文(英語)

Hooks: Stop and SubagentStop hooks can now return hookSpecificOutput.additionalContext to give Claude feedback and keep the turn going without being labeled a hook error

概要

Stop および SubagentStop フックで hookSpecificOutput.additionalContext を返せるようになりました。これまでフックからのフィードバックはエラーとして扱われる場合がありましたが、この仕組みにより Claude にコンテキストを追加情報として提供しながら、ターン(会話のやり取り)を正常に継続させることができます。

基本的な使い方

フックスクリプトで hookSpecificOutput.additionalContext を含む JSON を返します:

json
{
  "hookSpecificOutput": {
    "additionalContext": "テストを実行した結果、3件のエラーが検出されました。修正が必要です。"
  }
}

実践例

テスト結果をフィードバックとして渡す

Stop フックでテストを自動実行し、結果を Claude に伝えてターンを継続させる例:

bash
#!/bin/bash
# .claude/hooks/stop.sh

# テストを実行
TEST_OUTPUT=$(npm test 2>&1)
TEST_EXIT_CODE=$?

if [ $TEST_EXIT_CODE -ne 0 ]; then
  # テストが失敗した場合、フィードバックを返してターンを継続
  cat <<EOF
{
  "hookSpecificOutput": {
    "additionalContext": "テストが失敗しました。以下のエラーを確認して修正してください:\n${TEST_OUTPUT}"
  }
}
EOF
fi

Claude はこのフィードバックを受け取り、テストエラーを修正する作業を継続します。

コードレビューチェックを挟む

bash
#!/bin/bash
# SubagentStop フック: リント結果を Claude にフィードバック

LINT_RESULT=$(eslint src/ --format compact 2>&1)
LINT_EXIT=$?

if [ $LINT_EXIT -ne 0 ]; then
  cat <<EOF
{
  "hookSpecificOutput": {
    "additionalContext": "ESLint で以下の問題が検出されました。修正してください:\n${LINT_RESULT}"
  }
}
EOF
fi

ビルドエラーを次のターンに引き継ぐ

bash
#!/bin/bash
BUILD_OUTPUT=$(make build 2>&1)

if echo "$BUILD_OUTPUT" | grep -q "error:"; then
  cat <<EOF
{
  "hookSpecificOutput": {
    "additionalContext": "ビルドエラーが発生しました:\n${BUILD_OUTPUT}\n\n上記のエラーを修正してから作業を続けてください。"
  }
}
EOF
fi

注意点

  • additionalContext を返しても、フックの終了コードが 0 であればターンはエラーなく継続します。
  • additionalContext の内容は Claude の次のターンのコンテキストとして利用されます。Claude はこの情報をもとに判断や修正を行います。
  • Stop フックはエージェントのメインターン終了時に、SubagentStop フックはサブエージェントのターン終了時に呼び出されます。
  • フックエラーとして扱われると作業が中断されますが、additionalContext を使えばエラーとして中断せずにフィードバックを渡せます。

関連情報