Claude Code Stop Hook: “पूरा” से पहले जाँच

Stop Hook से test या अपेक्षित file जाँचें और गलती पर Claude Code को रुकने न दें।

Claude Code का “पूरा” संदेश यह साबित नहीं करता कि test चला या अपेक्षित build file बनी। Stop Hook turn समाप्त होने से पहले एक छोटी local जाँच चला सकता है। यह CI या पूरी test strategy का विकल्प नहीं है।

न्यूनतम Hook

.claude/settings.json में Stop event को ./scripts/check-before-stop.sh से जोड़ें और छोटा timeout रखें। Script focused test चलाए और dist/app.js जैसी file जाँचे।

सफलता पर 0 लौटाएँ। असफलता पर stderr में एक स्पष्ट कारण लिखें और 2 लौटाएँ। Claude Code में exit code 2 Stop को block करके कारण Claude को देता है; 1 आम तौर पर non-blocking hook error है।

{ "hooks": { "Stop": [{ "hooks": [{ "type": "command", "command": "./scripts/check-before-stop.sh", "timeout": 30 }] }] } }
chmod +x scripts/check-before-stop.sh

Stop Hook turn के अंत में check चलाता है। CLAUDE.md rules बताता है, command नहीं चलाता। CI अलग चलता है और अंतिम gate रहता है।

npm test -- --runInBand >/dev/null 2>&1 || { echo "Stop blocked: npm test" >&2; exit 2; } test -s dist/app.js || { echo "Stop blocked: dist/app.js missing" >&2; exit 2; } exit 0

पूरा सत्यापन

  1. जानबूझकर गलत file path दें और manually code 2 देखें।
  2. Claude Code में छोटी task चलाएँ। Hook को Stop block करके छोटा कारण दिखाना चाहिए।
  3. test या path ठीक करके फिर चलाएँ। Code 0 को turn पूरा होने देना चाहिए।
  4. stop_hook_active true हो तो अंधा retry न जोड़ें; named check ठीक करें या session रोककर hook सुधारें।

API Key, .env या पूरा test log न छापें। अलग API workflow के लिए BetterToken Claude Code guide देखें।

अपना LLM वर्कफ़्लो बेहतर बनाना चाहते हैं?

एक API से मॉडल जोड़ें, कुंजियाँ प्रबंधित करें और AI खर्च नियंत्रित करें।