AI-translated from English; not yet reviewed by a fluent editor.

# Claude Code সেশন শুরুতে সীমাবদ্ধ প্রকল্প-প্রসঙ্গ hook যোগ করুন

> ছোট একটি প্রকল্পভিত্তিক SessionStart hook বসান, যা বর্তমান Git শাখা Claude Code-এর প্রসঙ্গে যোগ করে। সরাসরি আউটপুট, শুরু, পুনরায় চালু ও ব্যর্থতার আচরণ পরীক্ষা করুন।

By BIG CHANGE Editorial

Published: 2026-10-20T00:22:54.831Z
Updated: 2026-10-20T00:22:54.831Z
Canonical: https://bigchange.ai/blog/claude-code-session-start-branch-context-hook-guide

![Conceptual charcoal illustration of an unbranded desktop monitor with one short orange stroke above two soft charcoal strokes; a keyboard rests in front.](https://bigchange.ai/api/media/file/claude-code-session-start-context-hero-v2.png)
AI-generated conceptual illustration by BIG CHANGE; no actual Claude Code interface, hook execution or model result is depicted.

Claude Code hook হলো সেশনের নির্দিষ্ট সময়ে অ্যাপ চালায় এমন একটি কমান্ড। এই নির্দেশিকায় প্রকল্পের পরিসরে একটি `SessionStart` hook যোগ করা হবে, যা বর্তমান Git শাখা পড়ে কথোপকথন শুরু বা পুনরায় চালুর সময় প্রসঙ্গের ছোট একটি লাইন দেয়। এর ভিত্তি [Anthropic-এর বর্তমান hook নির্দেশিকা](https://code.claude.com/docs/en/hooks), যা ১৯ অক্টোবর ২০২৬-এ পরীক্ষা করা হয়েছে। 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-এর ডেটা ব্যবহারের নথি](https://code.claude.com/docs/en/data-usage) সেবার ডেটা ব্যবস্থাপনা ব্যাখ্যা করে; নিজের প্রকল্পের অনুমতিও প্রয়োগ করুন।

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 দেয়।

2. আপনার বর্তমান `.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 পরীক্ষা করুন

3. Claude Code খোলার আগে প্রকল্পের টার্মিনালে স্ক্রিপ্ট চালিয়ে আউটপুটের সঙ্গে Git মিলিয়ে দেখুন। PowerShell-এ:

```powershell
$env:CLAUDE_PROJECT_DIR = (Get-Location).Path
node .claude/hooks/session-context.cjs
git branch --show-current
```

Bash-এ:

```bash
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-এর বিকল্প সোর্সে দেখেছি, তবে ওই পরিস্থিতি চালাইনি।

4. বিশ্বস্ত প্রকল্পে নতুন একটি **ইন্টারঅ্যাকটিভ** Claude Code প্রসেস `claude --debug-file STARTUP_PRIVATE_LOG` দিয়ে চালু করুন এবং নিজের নিয়ন্ত্রণে থাকা ব্যক্তিগত পাথ ব্যবহার করুন। workspace trust মেনে নেওয়ার আগে প্রকল্প ও ব্যবহারকারীর hook দেখুন। debug লগে `SessionStart` ইভেন্ট, উৎস `startup`, নির্বাচিত স্ক্রিপ্ট পাথ, এক্সিট অবস্থা ও আউটপুট ব্যবস্থাপনা দেখুন। কোনো টুল ব্যবহার বা নিজে Git পড়তে না দিয়ে Claude-কে জিজ্ঞেস করুন সে শাখার কী প্রসঙ্গ পেয়েছে। উত্তর ও debug রেকর্ড সরাসরি ফলের সঙ্গে তুলনা করুন। Hook stdout Claude-এর প্রসঙ্গে যায়; দৃশ্যমান UI-তে বার্তা হিসেবে দেখা যাবে এমন প্রতিশ্রুতি নেই।
5. ওই সেশন থেকে বের হন। আলাদা প্রসেসে `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-এর খরচ নির্দেশিকায়](https://code.claude.com/docs/en/costs) বর্তমান শর্ত আছে। এখানে নির্দিষ্ট দাম বা অর্থের বিনিময়ে সেশন পরীক্ষার দাবি নেই।

কথোপকথন শুরু হওয়ার পরের আলাদা কাজের জন্য আমাদের [Claude Code সেশনের প্রসঙ্গ দেখা ও চালিয়ে যাওয়ার নির্দেশিকা](https://bigchange.ai/blog/claude-code-session-context-continue-guide) প্রসঙ্গ পরীক্ষা ও চালিয়ে যাওয়া ব্যাখ্যা করে। এটি শুরুর এই hook সেট করে না।

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

- [Anthropic, Claude Code hook নির্দেশিকা](https://code.claude.com/docs/en/hooks) — বর্তমান প্রাথমিক স্পেসিফিকেশন ১৯ অক্টোবর ২০২৬-এ পরীক্ষা করা হয়েছে। এতে `SessionStart` উৎস ও matcher, exec রূপ `args`, পাথ placeholder, stdout প্রসঙ্গ, সেটিংস আবার লোড, বিশ্বাস, debug লগ ও বাধাহীন ব্যর্থতা নথিভুক্ত আছে। এটি নথি, BIG CHANGE-এর hook চালানো নয়।
- [Anthropic, hook দিয়ে কাজ স্বয়ংক্রিয় করুন](https://code.claude.com/docs/en/hooks-guide) — hook বসানো ও পরীক্ষার আনুষ্ঠানিক নির্দেশনা। ওপরের নির্দিষ্ট স্ক্রিপ্ট ও সেটিংস এই নির্দেশিকার জন্য পর্যালোচিত সীমাবদ্ধ BIG CHANGE উদাহরণ; সরবরাহকারীর নকল পরীক্ষার ফল নয়।
- [Anthropic, Claude Code সেটআপ](https://code.claude.com/docs/en/setup) — ইনস্টলেশন ও পরিবেশের চাহিদা। উদাহরণ ব্যবহারের আগে প্ল্যাটফর্মের বর্তমান নির্দেশনা দেখুন।
- [Anthropic, Claude Code ডেটা ব্যবহার](https://code.claude.com/docs/en/data-usage) — শাখার তথ্য মডেলের প্রসঙ্গে পাঠানোর আগে দেখার জন্য প্রদানকারীর বর্তমান ডেটা ব্যবস্থাপনার শর্ত; প্রকল্পের অনুমতি আলাদা সিদ্ধান্ত।
- [Anthropic, কার্যকরভাবে খরচ নিয়ন্ত্রণ করুন](https://code.claude.com/docs/en/costs) — ইন্টারঅ্যাকটিভ পরীক্ষার বর্তমান অ্যাকাউন্ট ও ব্যবহার নির্দেশনা। স্থানীয় Git স্ক্রিপ্ট নিজে মডেল বা নেটওয়ার্কে অনুরোধ করে না।

## Sources

- [Claude Code hook নির্দেশিকা](https://code.claude.com/docs/en/hooks) — Anthropic-এর বর্তমান প্রাথমিক ম্যানুয়াল, ১৯ অক্টোবর ২০২৬-এর অনুমোদিত স্ন্যাপশটের সঙ্গে ও লেখার সময় আবার মিলিয়ে দেখা। SessionStart startup/resume উৎস ও matcher-এর অর্থ, exec রূপ command ও args, প্রকল্প-রুট placeholder, সাধারণ stdout প্রসঙ্গ, সেটিংস পর্যবেক্ষক, workspace trust, debug-file দেখা, Windows-এর বাস্তব executable নিয়ম ও বাধাহীন SessionStart ত্রুটি নির্ধারণ করে। এটি পণ্যের আচরণ ব্যাখ্যা করে; BIG CHANGE Claude দ্বারা চালু hook চালায়নি। ম্যানুয়ালের নির্দিষ্ট সংশোধন তারিখ ছিল না।
- [hook দিয়ে কাজ স্বয়ংক্রিয় করুন](https://code.claude.com/docs/en/hooks-guide) — Anthropic-এর আনুষ্ঠানিক সেটআপ ও পরীক্ষার ধাপ। পাঠকের hook কনফিগারেশন ও ত্রুটি শনাক্তকরণে ভিত্তি দেয়, BIG CHANGE Claude Code-এর মধ্যে উদাহরণ চালিয়েছে এমন দাবি নয়। লেখার নির্দিষ্ট সীমাবদ্ধ Node স্ক্রিপ্ট ও সেটিংস আলাদাভাবে পর্যালোচিত স্থানীয় বাস্তবায়ন প্যাকেট থেকে এসেছে।
- [Claude Code-এর উন্নত সেটআপ](https://code.claude.com/docs/en/setup) — স্থানীয় Claude Code সেটআপ দেখার আনুষ্ঠানিক ইনস্টলেশন ও পরিবেশ নির্দেশনা। প্রস্তুতিতে শুধু সংস্করণ 2.1.301 দেখা গেছে; এই উৎস সেটিকে ন্যূনতম চাহিদা করে না।
- [Claude Code ডেটা ব্যবহার](https://code.claude.com/docs/en/data-usage) — অ্যাকাউন্টভেদে আনুষ্ঠানিক ডেটা ব্যবস্থাপনার শর্ত। Git শাখার তথ্য মডেলের প্রসঙ্গে দেওয়ার আগে পাঠককে তা দেখতে বলা হয়েছে; ছাঁকনি ও ছোট করা শাখার নাম থেকে গোপন গ্রাহক বা ঘটনার তথ্য প্রকাশ আটকায় না। সার্বিক গোপনীয়তার নিশ্চয়তা ধরে নেওয়া হয়নি।
- [কার্যকরভাবে খরচ নিয়ন্ত্রণ করুন](https://code.claude.com/docs/en/costs) — ইন্টারঅ্যাকটিভ শুরু/পুনরায় চালুর প্রশ্ন পরীক্ষার আনুষ্ঠানিক অ্যাকাউন্ট ও মডেল ব্যবহার নির্দেশনা। স্থানীয় স্ক্রিপ্ট নিজে মডেল বা নেটওয়ার্কে অনুরোধ করে না; বাস্তব Claude সেশন প্ল্যান, প্রদানকারী বা API বরাদ্দ খরচ করতে পারে। নির্দিষ্ট মূল্য বা অর্থের বিনিময়ে পরীক্ষার দাবি নেই।
- [Claude Code সেশনের প্রসঙ্গ কীভাবে দেখবেন ও চালিয়ে যাবেন](https://bigchange.ai/blog/claude-code-session-context-continue-guide) — আগের BIG CHANGE নিবন্ধ 414, শুধু প্রাসঙ্গিক অভ্যন্তরীণ লিংক ও সম্পর্ক শ্রেণিবিন্যাসের জন্য। এটি বর্তমান কথোপকথন দেখা ও তার কাজ চালিয়ে যাওয়া বোঝায়; এই hook-এর বাস্তবায়নের প্রমাণ বা একই ঘটনার সরাসরি তারিখযুক্ত পূর্বসূরি নয়।
