Claude Code hook হলো সেশনের নির্দিষ্ট সময়ে অ্যাপ চালায় এমন একটি কমান্ড। এই নির্দেশিকায় প্রকল্পের পরিসরে একটি SessionStart hook যোগ করা হবে, যা বর্তমান Git শাখা পড়ে কথোপকথন শুরু বা পুনরায় চালুর সময় প্রসঙ্গের ছোট একটি লাইন দেয়। এর ভিত্তি Anthropic-এর বর্তমান hook নির্দেশিকা, যা ১৯ অক্টোবর ২০২৬-এ পরীক্ষা করা হয়েছে। BIG CHANGE সরাসরি Node দিয়ে স্ক্রিপ্ট ও সেটিংস JSON পরীক্ষা করেছে; আমরা Claude Code hook চালাইনি বা মডেলের উত্তর পরীক্ষা করিনি।

বড় পরিবর্তন

  • কী বদলেছে: প্রকল্পের এই SessionStart hook Claude Code কথোপকথন শুরু বা পুনরায় চালু করলে Git শাখার ছোট একটি লাইন দেয়।
  • কেন গুরুত্বপূর্ণ: প্রতিবার হাতে পেস্ট না করেও শুরু বা পুনরায় চালুর সময় বর্তমান শাখা সেশনের প্রসঙ্গে পৌঁছায়।
  • কী খেয়াল রাখবেন: প্রসঙ্গ কোনো নিয়ম বাধ্যতামূলক করে না বা মডেলের উত্তর নিশ্চিত করে না। নিজের বিশ্বস্ত প্রকল্পে শুরু ও পুনরায় চালুর সময় আসল সরবরাহ যাচাই করুন।

বসানোর আগে

যে Git প্রকল্প পরিবর্তনের অনুমতি আছে সেটি ব্যবহার করুন। একই টার্মিনালে Claude Code, Node.js ও Git থাকতে হবে এবং প্রকল্পের .claude/settings.json ফাইল বদলানোর অনুমতি লাগবে। পরীক্ষা করুন node --version, git --version এবং claude --version। প্রস্তুতির কম্পিউটারে Claude Code 2.1.301 ও Node 24.19.0 ছিল; দেখা এই সংস্করণগুলো ন্যূনতম চাহিদা নয়।

মডেলে পাঠানোর আগে শাখার নাম দেখুন। শাখার নামে গ্রাহক, টিকিট বা ঘটনার নাম থাকতে পারে। অক্ষর ছাঁকা ও লেখা ছোট করা সেই অর্থ দূর করে না। শাখার নাম মডেলের প্রসঙ্গে ব্যবহারের অনুমোদন থাকলেই উদাহরণটি বসান। নইলে স্ক্রিপ্ট বদলে অনুমোদিত অসংবেদনশীল অবস্থা দেখান এবং বসানোর আগে পরিবর্তন পর্যালোচনা করুন। Anthropic-এর ডেটা ব্যবহারের নথি সেবার ডেটা ব্যবস্থাপনা ব্যাখ্যা করে; নিজের প্রকল্পের অনুমতিও প্রয়োগ করুন।

Hook কমান্ড আপনার ব্যবহারকারীর অধিকার নিয়ে চলে। চালু করার আগে বর্তমান প্রকল্প ও ব্যবহারকারীর hook, প্রতিষ্ঠানের নীতি ও পুরো স্ক্রিপ্ট দেখুন। প্রকল্পের সেটিংস রিপোজিটরিতে কমিট হতে পারে; .claude/settings.local.json স্থানীয় থাকে। এই উদাহরণ প্রকল্পের সেটিংস ফাইল ব্যবহার করে, যাতে কনফিগারেশন ওই প্রকল্পেই সীমিত থাকে।

দুটি ফাইল বসান

  1. প্রকল্পের ভেতরে .claude/hooks/ তৈরি করুন। পুরো ব্লকটি .claude/hooks/session-context.cjs নামে সংরক্ষণ করুন।
JavaScript
'use strict';

const { execFileSync } = require('node:child_process');

const project = process.env.CLAUDE_PROJECT_DIR;
if (!project) {
  process.stderr.write('CLAUDE_PROJECT_DIR is unavailable\n');
  process.exit(1);
}

try {
  const raw = execFileSync('git', ['-C', project, 'branch', '--show-current'], {
    encoding: 'utf8',
    timeout: 1500,
    maxBuffer: 4096,
    stdio: ['ignore', 'pipe', 'pipe'],
  }).trim();
  const branch = raw ? raw.replace(/[^A-Za-z0-9._/-]/g, '_').slice(0, 80) : 'detached HEAD';
  process.stdout.write(`Current project branch: ${branch}\n`);
} catch {
  process.stderr.write('Could not read the project branch; check Git and project path\n');
  process.exit(1);
}

Git-এর চাইল্ড প্রসেসে ১.৫ সেকেন্ড সময়সীমা ও ৪,০৯৬ বাইট আউটপুট বাফার আছে। detached HEAD-এর মতো অবস্থায় শাখার ফল ফাঁকা হলে তা হয় detached HEAD। প্রকল্পের পাথ না থাকলে বা Git ব্যর্থ হলে ছোট stderr বার্তা ও এক্সিট কোড 1 দেয়।

  1. আপনার বর্তমান .claude/settings.json খুলুন। নিচের hooks.SessionStart এন্ট্রি অন্য সেটিংস ও hook গোষ্ঠীর সঙ্গে মেলান; আগের এন্ট্রি অক্ষুণ্ণ রাখুন। ব্লকটিতে পর্যালোচিত প্যাকেটের সম্পূর্ণ settings.example.json দেখানো হয়েছে। ফাইলে আগে থেকেই SessionStart এন্ট্রি থাকলে অ্যারে পাল্টে না দিয়ে তার মধ্যে এই গোষ্ঠী যোগ করুন।
JSON
{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "node",
            "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/session-context.cjs"],
            "timeout": 5
          }
        ]
      }
    ]
  }
}

Matcher নতুন ও পুনরায় চালু করা সেশন ধরে। Anthropic clear, compact ও fork কেও SessionStart উৎস হিসেবে নথিভুক্ত করেছে; উদাহরণে সেগুলো ইচ্ছাকৃতভাবে বাদ। args ফিল্ড exec রূপ বেছে নেয়: Claude Code node চালায়, সমাধান করা প্রকল্প স্ক্রিপ্টের পাথ একটিমাত্র আর্গুমেন্ট হিসেবে দিয়ে; shell quoting বা parsing হয় না। Windows-এ node.exe কে বাস্তব executable হিসেবে পাওয়া যেতে হবে; .cmd shim exec রূপের জন্য উপযুক্ত নয়। কমান্ডের পাঁচ সেকেন্ডের hook সময়সীমা স্ক্রিপ্টের ১.৫ সেকেন্ডের Git সময়সীমা থেকে আলাদা।

আগে স্ক্রিপ্ট, তারপর Claude Code পরীক্ষা করুন

  1. Claude Code খোলার আগে প্রকল্পের টার্মিনালে স্ক্রিপ্ট চালিয়ে আউটপুটের সঙ্গে Git মিলিয়ে দেখুন। PowerShell-এ:
PowerShell
$env:CLAUDE_PROJECT_DIR = (Get-Location).Path
node .claude/hooks/session-context.cjs
git branch --show-current

Bash-এ:

Terminal
CLAUDE_PROJECT_DIR="$PWD" node .claude/hooks/session-context.cjs
git branch --show-current

স্ক্রিপ্টের stdout-এ ঠিক একটি লাইন আশা করুন, Current project branch: BRANCH, যেখানে BRANCH হলো স্ক্রিপ্টের অক্ষর ছাঁকনি ও ৮০-অক্ষরের সীমার পর Git-এর ফল। Detached HEAD ছাপে Current project branch: detached HEAD। সরাসরি পরীক্ষা শুধু এই টার্মিনালে স্থানীয় স্ক্রিপ্ট কাজ করা প্রমাণ করে। আমাদের প্রস্তুতির পরীক্ষায় সাধারণ শাখার ফল Git-এর সঙ্গে মিলেছে; অনুপস্থিত ও ভুল প্রকল্প পাথে ফাঁকা stdout, stderr বার্তা ও এক্সিট 1 এসেছে। লম্বা নামের সীমা ও detached HEAD-এর বিকল্প সোর্সে দেখেছি, তবে ওই পরিস্থিতি চালাইনি।

  1. বিশ্বস্ত প্রকল্পে নতুন একটি ইন্টারঅ্যাকটিভ Claude Code প্রসেস claude --debug-file STARTUP_PRIVATE_LOG দিয়ে চালু করুন এবং নিজের নিয়ন্ত্রণে থাকা ব্যক্তিগত পাথ ব্যবহার করুন। workspace trust মেনে নেওয়ার আগে প্রকল্প ও ব্যবহারকারীর hook দেখুন। debug লগে SessionStart ইভেন্ট, উৎস startup, নির্বাচিত স্ক্রিপ্ট পাথ, এক্সিট অবস্থা ও আউটপুট ব্যবস্থাপনা দেখুন। কোনো টুল ব্যবহার বা নিজে Git পড়তে না দিয়ে Claude-কে জিজ্ঞেস করুন সে শাখার কী প্রসঙ্গ পেয়েছে। উত্তর ও debug রেকর্ড সরাসরি ফলের সঙ্গে তুলনা করুন। Hook stdout Claude-এর প্রসঙ্গে যায়; দৃশ্যমান UI-তে বার্তা হিসেবে দেখা যাবে এমন প্রতিশ্রুতি নেই।
  2. ওই সেশন থেকে বের হন। আলাদা প্রসেসে claude --debug-file RESUME_PRIVATE_LOG --resume দিয়ে আবার চালু করুন, তারপর SessionStart resume ইভেন্ট দেখুন এবং টুল বা Git আবার না পড়ে প্রশ্নের পরীক্ষা পুনরাবৃত্তি করুন। দুই debug লগ ব্যক্তিগত রাখুন; প্রকল্পের তথ্য প্রকাশ পেতে পারে। নন-ইন্টারঅ্যাকটিভ -p বা SDK চালালে একই workspace-trust প্রশ্ন আসে না এবং রিপোজিটরির hook নিজে থেকে চলতে পারে, তাই এই পরীক্ষায় ইন্টারঅ্যাকটিভ পদ্ধতি নিন। Anthropic জানায় ফাইল পর্যবেক্ষক সাধারণত hook সেটিংসের পরিবর্তন ধরে, তবে নতুন প্রসেসে শুরু ও পুনরায় চালুর পরীক্ষা বেশি পরিষ্কার হয়।

পরে স্বাভাবিক প্রকল্পের কাজে শাখা বদলালে সরাসরি পরীক্ষা ও নতুন সেশন চালিয়ে দেখুন লাইন বদলায় কি না। শুধু এই নির্দেশিকা পরীক্ষা করা হয়েছে বলতে শাখা বদলাবেন না।

না চললে

স্ক্রিপ্টের সরাসরি ফল থেকে শুরু করুন, তারপর JSON মেলানো, SessionStart বানান, startup|resume matcher, প্রকল্প-রুট পাথ, node ও git পাওয়া যায় কি না, workspace trust ও debug ত্রুটি দেখুন। CLAUDE_PROJECT_DIR না থাকলে CLAUDE_PROJECT_DIR is unavailable stderr-এ ছাপে। খারাপ প্রকল্প পাথ বা Git ব্যর্থতায় Could not read the project branch; check Git and project path ছাপে। উভয়ই এক্সিট 1 দেয়, কোনো প্রসঙ্গ লাইন নয়। SessionStart ব্যর্থতা ত্রুটি বোঝায়, কাজ আটকায় না; এটি কোনো পদক্ষেপের অনুমতির বাধা হতে পারে না। টুলের কাজ নিয়ন্ত্রণের জন্য Anthropic PreToolUse নথিভুক্ত করেছে; এটি আলাদা ইভেন্ট এবং আলাদাভাবে পর্যালোচিত নকশা দরকার।

স্ক্রিপ্ট শুধু স্থানীয় Git চালায়, নেটওয়ার্ক অনুরোধ বা মডেল কল করে না। Claude Code শুরু, পুনরায় চালু ও প্রশ্নের পরীক্ষা অ্যাকাউন্ট, প্রদানকারী বা মডেলের বরাদ্দ খরচ করতে পারে; Anthropic-এর খরচ নির্দেশিকায় বর্তমান শর্ত আছে। এখানে নির্দিষ্ট দাম বা অর্থের বিনিময়ে সেশন পরীক্ষার দাবি নেই।

কথোপকথন শুরু হওয়ার পরের আলাদা কাজের জন্য আমাদের Claude Code সেশনের প্রসঙ্গ দেখা ও চালিয়ে যাওয়ার নির্দেশিকা প্রসঙ্গ পরীক্ষা ও চালিয়ে যাওয়া ব্যাখ্যা করে। এটি শুরুর এই hook সেট করে না।

উৎস ও আরও পড়ুন

  • Anthropic, Claude Code hook নির্দেশিকা — বর্তমান প্রাথমিক স্পেসিফিকেশন ১৯ অক্টোবর ২০২৬-এ পরীক্ষা করা হয়েছে। এতে SessionStart উৎস ও matcher, exec রূপ args, পাথ placeholder, stdout প্রসঙ্গ, সেটিংস আবার লোড, বিশ্বাস, debug লগ ও বাধাহীন ব্যর্থতা নথিভুক্ত আছে। এটি নথি, BIG CHANGE-এর hook চালানো নয়।
  • Anthropic, hook দিয়ে কাজ স্বয়ংক্রিয় করুন — hook বসানো ও পরীক্ষার আনুষ্ঠানিক নির্দেশনা। ওপরের নির্দিষ্ট স্ক্রিপ্ট ও সেটিংস এই নির্দেশিকার জন্য পর্যালোচিত সীমাবদ্ধ BIG CHANGE উদাহরণ; সরবরাহকারীর নকল পরীক্ষার ফল নয়।
  • Anthropic, Claude Code সেটআপ — ইনস্টলেশন ও পরিবেশের চাহিদা। উদাহরণ ব্যবহারের আগে প্ল্যাটফর্মের বর্তমান নির্দেশনা দেখুন।
  • Anthropic, Claude Code ডেটা ব্যবহার — শাখার তথ্য মডেলের প্রসঙ্গে পাঠানোর আগে দেখার জন্য প্রদানকারীর বর্তমান ডেটা ব্যবস্থাপনার শর্ত; প্রকল্পের অনুমতি আলাদা সিদ্ধান্ত।
  • Anthropic, কার্যকরভাবে খরচ নিয়ন্ত্রণ করুন — ইন্টারঅ্যাকটিভ পরীক্ষার বর্তমান অ্যাকাউন্ট ও ব্যবহার নির্দেশনা। স্থানীয় Git স্ক্রিপ্ট নিজে মডেল বা নেটওয়ার্কে অনুরোধ করে না।