20 पॉइंट द्वारा GN⁺ 2025-07-02 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • Claude Code में custom hooks फीचर जोड़ा गया है। इससे LLM की पसंद पर निर्भर हुए बिना, ऐप के व्यवहार को और अधिक सटीक और दोहराने योग्य तरीके से नियंत्रित किया जा सकता है
  • notification customization, code auto-formatting, और command log tracking जैसी कई तरह की automation संभव है
  • यह command execution से पहले/बाद, notification होने पर, response पूरा होने के समय जैसे बिंदुओं पर काम करता है, और settings file के जरिए project·user·enterprise स्तर पर manage किया जा सकता है
  • settings file structure और matcher तरीके के जरिए, किसी खास tool call के समय केवल खास hooks ही चलाए जा सकते हैं
  • input JSON format में दिया जाता है और output exit code या JSON के जरिए result·feedback को नियंत्रित करता है
  • hooks shell commands को user की पूरी permission के साथ अपने-आप चलाते हैं, इसलिए security और safety पर ध्यान देना ज़रूरी है

परिचय

  • Claude Code के hooks, code execution lifecycle के हर चरण में अपने-आप चलने वाले custom shell commands हैं
  • इससे LLM द्वारा वैकल्पिक रूप से चलाने के बजाय हर बार consistent automation संभव हो जाती है
  • प्रमुख उपयोग उदाहरण

    • notification: input का इंतज़ार होने पर user को customized notification देना
    • auto-formatting: file edit होने के बाद prettier या gofmt अपने-आप चलाना
    • logging: चलाए गए commands को रिकॉर्ड और aggregate करके tracking या debugging में उपयोग
    • feedback: codebase rules के अनुरूप न होने वाला code बनने पर अपने-आप feedback देना
    • custom permissions: sensitive directory या production files में बदलाव को रोकना
  • यह prompt के बजाय system code के रूप में काम करता है, इसलिए हर बार deterministically execute होता है → automation की reliability बढ़ती है
  • hooks user की full permissions के साथ shell commands सीधे चलाते हैं, इसलिए safety verification ज़रूरी है.

कॉन्फ़िगरेशन उदाहरण

  • उदाहरण: Claude हर बार Bash command चलाने से पहले log छोड़े, इसके लिए hook register करना
    1. /hooks command से hook settings menu में जाएँ, PreToolUse event चुनें
    2. Bash matcher जोड़ें (Bash commands पर ही लागू)
    3. hook command register करके save करें (User settings location चुनने पर सभी projects पर लागू)
    4. /hooks से setting जाँचें या ~/.claude/settings.json में file सीधे देख सकते हैं

settings संरचना

  • hooks को matcher के आधार पर group किया जाता है, और हर matcher के लिए कई hooks array में हो सकते हैं
    • उदाहरण: single string (exact match), regular expression, खाली छोड़ने पर सभी events पर लागू
  • settings file के प्रकार
    • ~/.claude/settings.json: user-wide settings
    • .claude/settings.json: project settings
    • .claude/settings.local.json: local (shared नहीं) settings
    • enterprise policy settings

प्रमुख hook events

  • PreToolUse: tool call से पहले execute, ज़रूरत पड़ने पर execution block किया जा सकता है (मुख्य matcher: Bash, Write, Edit, Grep आदि)
  • PostToolUse: tool execution के तुरंत बाद, वही matcher support
  • Notification: notification भेजते समय execute
  • Stop: response पूरा होने के बाद execute

matcher उदाहरण

  • Task: agent task
  • Bash: shell command
  • Glob: file pattern matching
  • Grep: content search
  • Read: file read
  • Edit, MultiEdit: file modification
  • Write: file writing
  • WebFetch, WebSearch: web tasks

input और output format

  • input: stdin के ज़रिए JSON दिया जाता है (session info, event-specific data शामिल)
    • उदाहरण: PreToolUse में tool_input शामिल होता है, PostToolUse में tool_response अतिरिक्त होता है
  • output:
    • exit code 0: सामान्य execution, stdout user को दिखाया जाता है
    • exit code 2: block, stderr Claude को feedback के रूप में भेजा जाता है (PreToolUse में tool execution block)
    • अन्य code: error, केवल stderr user को दिखता है
    • advanced control: stdout में JSON लौटाने पर, "continue" false या "decision": "block" जैसे विस्तृत flow control संभव

MCP tools के साथ integration

  • Model Context Protocol(MCP) आधारित tools भी supported हैं, और विशेष naming pattern(mcp____) के जरिए इन्हें चुनिंदा रूप से target किया जा सकता है

security सिफारिशें

  • hooks में system arbitrary commands execution का जोखिम होता है, इसलिए input validation, path check, sensitive files को exclude करना, absolute path का उपयोग जैसी safety rules अनिवार्य हैं
  • settings बदलने पर यह तुरंत लागू नहीं होती; session शुरू होने पर snapshot उपयोग होता है और बाहरी बदलाव होने पर warning दिखाई जाती है

execution environment और debugging

  • हर hook अधिकतम 60 सेकंड की सीमा, parallel execution, current working directory·environment में काम करता है
  • /hooks में settings जाँची जा सकती हैं, command को सीधे test किया जा सकता है, और exit code·output check जैसी debugging संभव है
  • execution process और result को transcript mode(Ctrl-R) में देखा जा सकता है

4 टिप्पणियां

 
shakespeare 2025-07-02

कृपया Windows वर्ज़न भी बना दीजिए, प्लीज़ प्लीज़

 
nalbam 2025-07-06

WSL का इस्तेमाल करें

 
slowmo 2025-07-08

शायद मेरे PC के specs कमज़ोर हैं, इसलिए Windows WSL में Claude Code का इस्तेमाल करने वाले कुछ काम (जैसे project build, local web server चलाना आदि) बहुत धीमे हैं.
उन कामों को सिर्फ़ मैन्युअली WSL के बाहर चलाने का तरीका भी है, लेकिन वह झंझट भरा है और कुछ सीमाएँ भी हैं, इसलिए Gemini CLI आने के बाद से Windows पर मैं Claude Code की बजाय ज़्यादातर Gemini CLI ही इस्तेमाल कर रहा हूँ.

 
GN⁺ 2025-07-02
Hacker News राय
  • Claude Code Opus 4 में फ़ाइल के अंत में return न जोड़ने की आदत की वजह से काफ़ी झुंझलाहट हुई
    नए hooks को टेस्ट करते समय claude को रीस्टार्ट करना पड़ता है, इसलिए ऐसा script इस्तेमाल करना कहीं ज़्यादा असरदार रहा जिसे session के भीतर लगातार edit किया जा सके
    यह script C फ़ाइलों और shell scripts पर formatter चलाता है, और बाकी फ़ाइलों में सिर्फ़ missing return को ठीक करता है
    Claude जैसे AI समस्या को ठीक तरह से छोटे हिस्सों में बाँटने में कमजोर होते हैं, और कई बार अजीब तरीक़े से काम करने की कोशिश करते हैं, इसलिए ऊपर वाले hook example की तरह JSON फ़ाइल को disk पर save करके, सिर्फ़ path निकालकर फिर save करना, और उस path को save-hook.sh में पास करना—ऐसे कई बार सुधार करना पड़ा
    10 मिनट में मनचाही चीज़ बन गई, लेकिन एक ही बार में बड़े step करवाने की वजह से उससे ज़्यादा समय बेकार गया

  • लोग कहते हैं कि AI developers को replace कर देगा, लेकिन ऐसे hooks कौन सेट करेगा और नए features कौन propose करेगा, यह काम अब भी इंसानों का है
    tooling से जुड़े ऐसे काम तब तक बने रहेंगे जब तक AI इतना evolve नहीं हो जाता कि वह ख़ुद यह idea सोचे और उसे दूसरे AI पर लागू कर सके

    • बढ़ईगीरी की analogy लें तो, अभी हम hand tools से power tools के दौर में जाने वाले मोड़ पर हैं
      जो लोग fundamentals समझते हैं वे tools को बेहतर चला पाते हैं, लेकिन अब हाथ से बारीकी से बनाने के बजाय table saw से तेज़ी से काम करने का चरण है, इसलिए efficiency बढ़ती है पर ख़तरा भी ज़्यादा हो सकता है

    • यह उस दावे जैसा है कि combine harvester जैसे कृषि उपकरण आने से खेती की नौकरियाँ replace हो जाएँगी
      क्या यह मान लेना ठीक है कि हर व्यक्ति बस machine operator बन जाएगा?
      नज़रिया यह है कि automation tools हों, चाहे खेती में हों या AI में, मूल्य सिर्फ़ साधारण transition में नहीं है

    • मशहूर "कछुओं की पीठ पर टिकी पृथ्वी" वाली कहानी की तरह, AI आने के बाद "तो फिर उस AI को कौन manage करेगा?" जैसी चर्चा अनंत तक दोहराई जा सकती है
      पहले से ऐसे उदाहरण हैं जहाँ Claude Code से ख़ुद CLAUDE.md update करवाया जाता है, इसलिए उससे उसके अपने hooks भी edit करवाना पूरी तरह असंभव नहीं है
      लेकिन Jurassic Park की तरह "क्या हमें यह करना भी चाहिए?" वाला सवाल अक्सर छूट जाता है, यही दिलचस्प बात है

    • यह राय कि AI development jobs कम करेगा, और यह सवाल कि फिर hooks कौन सेट करेगा—दोनों सही हैं
      ज़ोर इस बात पर है कि तकनीकी प्रगति को सिर्फ़ jobs की संख्या बढ़ने-घटने के सवाल में सरल नहीं किया जा सकता; वह jobs ख़त्म भी करती है और साथ ही नई jobs भी बनाती है

    • सच कहें तो ज़्यादातर लोगों के लिए यह काम development नहीं बल्कि maintenance, DevOps जैसी चीज़ें हैं
      SaaS products में भी code से ज़्यादा operations से जुड़े काम होते हैं, और यह HN उपयोगकर्ताओं की कल्पना वाले core development से अलग है

  • इस feature के आने से सच में बहुत उत्साह है
    hooks से agent की context engineering और runtime performance verification में अहम भूमिका निभाने की उम्मीद है
    इसे enterprise compliance या behavior monitoring जैसी कई स्थितियों तक बढ़ाया जा सकता है
    यह भी प्रभावशाली है कि Anthropic ने GitHub issue के suggestion से सीधे इसे support कर दिया
    संबंधित issue लिंक

    • मैं खुद Claude Code की जगह cline.bot नाम का VS Code extension इस्तेमाल करता हूँ
      मुझे लगता है कि आगे चलकर यह feature हर coding agent का एक killer move बन जाएगा
  • मुझे यह feature इसलिए पसंद आया क्योंकि CLAUDE.md के ज़रिए workaround करने के बजाय अब सीधे complex command execution control rules लिखे जा सकते हैं
    उदाहरण के लिए,
    docker compose exec django python manage.py test
    जैसे command को allow किया जा सकता है, और
    docker compose exec django python manage.py makemigrations
    जैसे command को block किया जा सकता है

    • यह स्तर का control पहले से .Claude/settings.json में implement किया जा सकता है
  • मुझे लगता है, अगर यह feature खुद MCP server की तरह काम करता तो और बेहतर होता
    hooks को पहले से तय नाम वाले mcp tools की तरह बनाया जाता, और agent अपने-आप hooks discover कर लेता, जिससे internal implementation जाने बिना mcp server को reuse किया जा सकता या दूसरे agents में भी दोबारा इस्तेमाल किया जा सकता—ऐसी तस्वीर की कल्पना की जा सकती है

  • Claude Code अक्सर CLAUDE.md फ़ाइल के निर्देश और codebase की अहम बातें भूल जाता है, इसलिए उसे बार-बार याद दिलाना पड़ता है
    उम्मीद है यह update इस समस्या को ठीक कर पाएगा

    • जैसे, "void function में early return मत इस्तेमाल करो! CLAUDE.md में साफ़ लिखा है कि ऐसा pattern मना है!"
      Claude CLAUDE.md पढ़ता है और कहता है, "22 सेकंड, 2.6k tokens…"
      फिर प्रतिक्रिया आती है, "आप सही कह रहे हैं!"
  • कुछ example hooks साझा किए गए
    hooks लिखने और workflow automation का उदाहरण
    यह देखकर अच्छा लगा कि Claude Code अब Cursor के बराबर code edits के बाद linting/type check support देने लगा है

  • काश Cursor में भी यह feature आ जाए
    अभी अस्थायी उपाय के तौर पर कई rules को मिलाकर किसी तरह काम चलाया जा रहा है

    • मैं Cursor इस्तेमाल नहीं करता, इसलिए अब भी यह सवाल है कि इसे इस्तेमाल करने की वजह बची भी है या नहीं
  • मुझे लगता है कि यह feature लंबे समय से मौजूद बड़े gap को भर देता है
    Claude Code commits जिस तरह बनाता है, उसकी वजह से आम Git hooks ज़्यादातर काम नहीं करते थे, इसलिए CLAUDE.md के ज़रिए Qlty CLI से code formatting automate करवाने का workaround अपनाना पड़ता था, लेकिन Claude इसे लगातार भरोसेमंद ढंग से नहीं कर पाता था, जो निराशाजनक था
    इस बदलाव से अब कहीं ज़्यादा निर्णायक नतीजे मिल सकते हैं
    फिलहाल hook किए जा सकने वाले events सीमित हैं, लेकिन उम्मीद है आगे Git commit और push events को भी आसानी से hook किया जा सकेगा
    Qlty CLI GitHub लिंक

    • वैसे Claude Java को बेहद अच्छी तरह संभालता है
      वह मेरी style guide, यहाँ तक कि indentation preference भी ठीक-ठीक समझ लेता है, और Java code को इस स्तर पर match करता है कि reformatting की ज़रूरत ही नहीं पड़ती
      JavaDoc तक को बड़े सटीक ढंग से मिला देता है, जो चौंकाने वाला है
      शायद बड़े enterprise Java code पर इसकी training बहुत भारी मात्रा में हुई होगी

    • जिज्ञासा है कि सामान्य git hooks, claude code में ठीक से क्यों काम नहीं करते

    • Husky और lint-staged ने ठीक काम किया, लेकिन Pre Commit Hooks ने काम नहीं किया

  • मेरी संक्षिप्त समझ के मुताबिक, यह feature context consume नहीं करता, और MCP की तरह ऐसा ढाँचा भी नहीं है जहाँ Claude तय करे कि कब चलाना है; इसके बजाय हर tool use पर user द्वारा तय किया गया automatic behavior चलता है