原文(日本語に翻訳)
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
fiClaude はこのフィードバックを受け取り、テストエラーを修正する作業を継続します。
コードレビューチェックを挟む
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を使えばエラーとして中断せずにフィードバックを渡せます。