Claude Code Hook से मैंने एक डेस्कटॉप पेट बनाया
(github.com/IMMINJU)मैं कंपनी में कई Claude Code sessions एक साथ चलाकर काम करता हूँ, और अक्सर यह छूट जाता था कि कौन-सा session input का इंतज़ार कर रहा है। ऑफिस में होने की वजह से sound भी चालू नहीं कर सकता था.
Claude Code में Hook का इस्तेमाल करके tool call से पहले और बाद में external command चलाए जा सकते हैं। आम तौर पर इसे lint या logging के लिए इस्तेमाल किया जाता है, लेकिन मैंने इससे थोड़ा अलग कुछ किया।
मैंने एक widget बनाया जो Hook events लेकर उन्हें desktop पर emoji character के रूप में दिखाता है। अगर कई sessions चल रहे हों, तो यह हर एक को अलग-अलग track करके साथ-साथ दिखाता है।
emoji से states map करते-करते हँसते, घबराते और ऊँघते हुए expressions काफ़ी मज़ेदार लगे, इसलिए मैंने इसे बस pet कहना तय किया।
Claude Code hooks → claude-pet --hook → TCP(:19876) → Tauri(Rust) → WebView
Hook में हर event पर process बनता है और फिर खत्म हो जाता है, इसलिए state बनाए रखना संभव नहीं होता। इसलिए मैंने app की तरफ़ एक TCP server रखा, और हर बार Hook होने पर उसमें JSON भेजने वाली संरचना बनाई। यह Tauri 2 + Rust से बना है, इसलिए binary लगभग 8MB की है, और curl ... | sh की एक line से install करने पर Hook registration भी अपने-आप हो जाता है।
इसमें 3 built-in themes हैं (robot, cat, fruit), JSON से custom theme भी बनाई जा सकती है, मैं इसे Windows पर इस्तेमाल कर रहा हूँ, और macOS/Linux builds भी हैं, लेकिन अभी उन्हें सीधे test नहीं कर पाया हूँ। MIT.
GitHub: https://github.com/IMMINJU/claude-pet
feedback का स्वागत है.
अभी कोई टिप्पणी नहीं है.