Claude Code output styles কী এবং কীভাবে কাজ করে
output style Claude Code-এর system prompt বদলে প্রতিটি উত্তরকে প্রভাবিত করে। built-in style-এর transcript প্রভাব, session reload-এর gotcha এবং নিজের style লেখার পদ্ধতি জানুন।
Claude Code-এ output style কী
Claude Code-এ output style হলো এমন একটি নির্দেশনার ব্লক, যা Claude Code তার system prompt-এর সঙ্গে যুক্ত করে। এটি Claude আপনাকে কীভাবে উত্তর দেবে তা পরিবর্তন করে: Claude কোন ভূমিকা নেবে এবং কী ধরনের আউটপুট দেখাবে। এটি Claude-কে আপনার codebase সম্পর্কে কোনো তথ্য শেখায় না এবং কোনো কাজ চালানোর অনুমতিও দিতে পারে না।
Claude Code-এ পাঁচটি built-in style রয়েছে। আপনার নির্বাচন একটি settings key-তে সংরক্ষিত থাকে, outputStyle, এবং session শুরু হওয়ার সময় সেই key একবার পড়া হয়। এই একটি বিষয়ই এই feature নিয়ে অধিকাংশ বিভ্রান্তির কারণ। কারণ session-এর মাঝখানে style পরিবর্তন করলে সেটি সংরক্ষিত হয়, কিন্তু clear না করা পর্যন্ত উপেক্ষিত থাকে।
VPS-এ এটি শুধু বাহ্যিক পছন্দের বিষয় নয়। Transcript আপনি SSH (secure shell) সংযোগের মাধ্যমে পড়েন, সাধারণত একটি tmux window-এর মধ্যে। তাই Claude যে প্রতিটি লাইন দেখায়, তা পড়তে আপনার সময় লাগে এবং নির্দিষ্ট আকারের scrollback buffer-এ একটি লাইন দখল করে।
outputStyle সেটিং যেখানে থাকে
/config মেনুর Output style-এর অধীনে একটি style নির্বাচন করুন। আপনি যে project-এ কাজ করছেন, Claude Code সেখানে আপনার পছন্দ .claude/settings.local.json-এ লিখে রাখে।
স্বতন্ত্র /output-style command আর নেই। এটি v2.1.73-এ deprecated এবং v2.1.91-এ removed হয়েছে। তাই বর্তমান build-এ এটি একেবারেই কিছু করে না। পুরোনো কোনো guide অনুসরণ করার আগে আপনি কোন version চালাচ্ছেন তা পরীক্ষা করুন। এই page-এ থাকা version-গুলো August 2026-এ পরীক্ষা করা হয়েছে।
claude --versionআপনি key-টি হাতে লিখেও সেট করতে পারেন। মোট চারটি settings file-এ এটি থাকতে পারে। বেশি নির্দিষ্ট file, কম নির্দিষ্ট file-এর ওপর প্রাধান্য পায়।
~/.claude/settings.jsonআপনার user file। এটি ওই machine-এর প্রতিটি project-এ প্রযোজ্য।.claude/settings.jsonproject file। এটি git-এ commit করা হয়, তাই repository clone করা সবার জন্য প্রযোজ্য।.claude/settings.local.jsonlocal project file। এটি commit করা হয় না এবং উপরের দুটির ওপর প্রাধান্য পায়।/configmenu এই file-এ লেখে।- IT team system path থেকে, যেমন Linux-এ
/etc/claude-code/, managed settings deploy করতে পারে। এগুলো অন্য সব setting-এর ওপর প্রাধান্য পায়।
key-এর value হলো style-এর নাম:
{
"outputStyle": "Concise"
}শুধু একটি session-এর জন্য command line-এ একই key দিন। --settings flag একটি path অথবা inline JSON string গ্রহণ করে। এর value-গুলো ওই run-এ settings file-এর একই key-কে override করে:
claude --settings '{"outputStyle": "Concise"}'এই feature চালু হওয়ার পর menu label এবং slash command অন্তত একবার পরিবর্তিত হয়েছে। কিন্তু outputStyle key পরিবর্তিত হয়নি। কোনো guide-এর screenshot আপনার দেখা output-এর সঙ্গে না মিললে key-টি সরাসরি set করুন। এরপর /status দিয়ে সেটি নিশ্চিত করুন। এই command কার্যকর settings source-গুলোর তালিকা দেখায়।
নতুন output style clear না করা পর্যন্ত কেন কোনো পরিবর্তন করে না
Claude Code session শুরু হওয়ার সময় একবার system prompt তৈরি করে। Output style সেই system prompt-এর অংশ। তাই session চলার সময় setting পরিবর্তন করলে মানটি সংরক্ষিত হয়, কিন্তু দৃশ্যমান কোনো পরিবর্তন হয় না। কারণ চলমান session startup-এর সময় তৈরি করা prompt-ই পাঠাতে থাকে। নতুন style পরবর্তী /clear অথবা পরবর্তী launch-এ লোড হয়।
/clear
/context/context বর্তমানে context window-তে থাকা বিষয়বস্তু category অনুযায়ী দেখায়। এর মধ্যে system prompt-ও থাকে। প্রতিটি style ব্যবহার করে একটি নতুন session-এ এটি চালান। তুলনার input side হিসেবে system prompt-এর line ব্যবহার করুন। Custom style আদৌ লোড হয়েছে কি না প্রমাণ করার এটিই দ্রুততম উপায়। Context window কীভাবে পূর্ণ হয় তার বিস্তৃত ব্যাখ্যার জন্য দেখুন দীর্ঘ Claude Code session-এ context কীভাবে পূর্ণ হয়।
Setting-টি live apply না হয়ে অপেক্ষা করার একটি কারণ আছে। API এমন prompt cache ব্যবহার করে, যা প্রতিটি request-এর শুরুর অংশের সঙ্গে মিলে যাওয়া পুনরাবৃত্ত request পরিবেশন করে। System prompt একেবারে শুরুতেই থাকে। Conversation-এর মাঝখানে এটি পুনর্লিখলে এর পরের সবকিছু invalid হয়ে যেত। ফলে পরবর্তী turn-এ পুরো history নতুন input হিসেবে আবার process করতে হতো। Session শুরুতেই style নির্ধারণ করলে এই খরচ এড়ানো যায়। Style পরিবর্তন করা সস্তা। শুধু একটি clear দরকার।
প্রতিটি built-in output style transcript-এ কী পরিবর্তন করে
- Default হলো Claude Code-এর স্বাভাবিক system prompt, যা software engineering কাজের জন্য লেখা।
- Concise ফলাফল দিয়ে শুরু করে। এটি preamble ও ধাপে ধাপে narration বাদ দেয় এবং আপনি বিস্তারিত না চাওয়া পর্যন্ত উত্তর সংক্ষিপ্ত রাখে। এর পেছনের engineering কাজ অপরিবর্তিত থাকে। এটি কখনো error report বা security warning সংক্ষিপ্ত করে না এবং destructive action-এর আগে এখনও সম্পূর্ণভাবে অনুমতি চায়। এই style-এর জন্য Claude Code v2.1.237 বা পরবর্তী সংস্করণ প্রয়োজন।
- Explanatory কোনো task-এর ধাপগুলোর মধ্যে শিক্ষামূলক "Insights" যোগ করে। এতে implementation choice কেন নেওয়া হয়েছে এবং আপনার codebase-এ কোন pattern আগে থেকেই ব্যবহৃত হচ্ছে, তা ব্যাখ্যা করা হয়। ইচ্ছাকৃতভাবেই transcript দীর্ঘ হয়।
- Learning আরও এক ধাপ এগিয়ে যায়। Claude এই insights শেয়ার করার পর আপনাকে code-এর ছোট অংশ নিজে লিখতে বলে এবং file-এ প্রতিটি স্থান
TODO(human)comment দিয়ে চিহ্নিত করে। - Proactive প্রশ্ন করার পরিবর্তে Claude-কে কাজ করতে বলে। এটি routine সিদ্ধান্তে যুক্তিসঙ্গত assumption গ্রহণ করে, confirmation-এর জন্য থেমে থাকে না।
শেষের style-টি মনোযোগ দিয়ে পড়ুন, কারণ এটি নিয়েই সবচেয়ে বেশি ভুল বোঝাবুঝি হয়। Proactive হলো system prompt-এর guidance। এটি Claude কী করার চেষ্টা করবে তা পরিবর্তন করে। আপনার permission mode-ই এখনও নির্ধারণ করে আপনার কাছে না জিজ্ঞেস করে বাস্তবে কী চলবে। unattended অবস্থায় চালু রাখা server-এর ক্ষেত্রে এই setting-টিই গুরুত্বপূর্ণ। এটি auto mode এবং Claude Code-এর permission mode-এ ব্যাখ্যা করা হয়েছে।
একটি output style, CLAUDE.md, hook এবং subagent-এর মধ্যে পার্থক্য
এগুলো সবই Claude-কে কীভাবে আচরণ করতে হবে তা জানানোর উপায় মনে হতে পারে। তবে এগুলো ভিন্ন স্তরে কাজ করে।
- একটি output style system prompt-এ যোগ করা হয়। এটি মূল conversation-এর প্রতিটি উত্তরে প্রযোজ্য।
- CLAUDE.md system prompt-এর পরে user message হিসেবে যোগ করা হয়। এখানে project convention এবং codebase-এর তথ্য রাখা উচিত।
--append-system-promptকোনো কিছু সরানো ছাড়াই একটি নির্দিষ্ট invocation-এর জন্য system prompt-এ অতিরিক্ত text যোগ করে। এটি output style-এর একবারের সংস্করণ।- একটি hook হলো shell command, যা কোনো event ঘটলে Claude Code নিজে চালায়। এটি harness দ্বারা প্রয়োগ করা হয়। তাই Claude নিজে এটি চালানোর সিদ্ধান্ত নিক বা না নিক, command-টি চলবেই। Claude Code hook কী করতে পারে এবং কী করতে পারে না দেখুন।
- একটি subagent নিজের system prompt এবং নিজের tool set নিয়ে চলে।
একটি সংক্ষিপ্ত পরীক্ষা প্রথম দুটি স্তরের মধ্যে পার্থক্য নির্ধারণ করে। আপনার প্রকল্পের তথ্য CLAUDE.md-এ রাখুন, কারণ Claude-এর সেগুলো জানা প্রয়োজন। বাক্যবিন্যাস output style-এ রাখুন, কারণ এটি উত্তরের পাঠভঙ্গি নির্ধারণ করে। মডেল যাই সিদ্ধান্ত নিক না কেন, প্রতিবার অবশ্যই যে কাজটি ঘটতে হবে, সেটি hook। প্রতিটি surface কোন স্তরে থাকে, তা মডেলের নিজের নয়, বরং মডেল চালানো প্রোগ্রামটির বৈশিষ্ট্য। তাই একটি style কেবল প্রভাব ফেলতে পারে, কিন্তু একটি hook বাধ্যতামূলকভাবে কার্যকর করতে পারে।
Output style শুধু main conversation-এ প্রযোজ্য। কোনো subagent আপনার style উত্তরাধিকারসূত্রে পায় না, কারণ এটি নিজের system prompt দিয়ে আলাদা conversation শুরু করে। বর্তমান conversation-এর fork ব্যতিক্রম, কারণ fork parent-এর system prompt হুবহু উত্তরাধিকারসূত্রে পায়। কোনো subagent আপনার অপছন্দের ভঙ্গিতে লিখলে নিজের style পরিবর্তন না করে সেই agent-এর file সম্পাদনা করুন। একই box-এ চলমান দ্বিতীয় Claude Code session একই সীমারেখা অনুসরণ করে। এটি startup-এর সময় নিজের settings file পড়ে। তাই আপনার পাশাপাশি চলমান অন্য session-এ কাজ পাঠালে তার উত্তর আপনার session-এর style-এ নয়, বরং সেই session যে style load করেছে সেই style-এ ফিরে আসে।
নিজের output style কীভাবে লিখবেন
একটি custom output style হলো frontmatter-সহ একটি markdown file। এটি প্রতিটি project-এ ব্যবহার করতে home directory-তে রাখুন, অথবা code-এর সঙ্গে রাখতে repository-র ভিতরে সংরক্ষণ করুন। user directory হলো ~/.claude/output-styles/ এবং project directory হলো .claude/output-styles/।
mkdir -p ~/.claude/output-styles
cat > ~/.claude/output-styles/terse-ops.md <<'EOF'
---
name: Terse ops
description: Command first, explanation after, for SSH sessions
keep-coding-instructions: true
---
Lead with the command or the file change. Put the explanation after it, in two sentences or fewer.
Do not narrate what you are about to do. Report what you did.
When a command can fail, print the one check that proves it worked and say what a healthy result looks like.
EOFএকটি session শুরু করে /config খুলুন। আপনার style-টি আপনার লেখা description-সহ Output style তালিকায় দেখা যাবে। এটি না থাকলে file-টি পড়া হচ্ছে না: path পরীক্ষা করুন এবং দেখুন --- frontmatter block-টি file-এর একেবারে প্রথমে আছে কি না। frontmatter-এ name সেট না করলে file name-ই style name হয়। তাই এইটির নাম Terse ops, terse-ops নয়।
এটি নির্বাচন করুন, অথবা key-টি সেই exact name-এ সেট করে এটি খালি করুন:
{
"outputStyle": "Terse ops"
}আপনার file-টি adjustment নাকি replacement, তা একটি field নির্ধারণ করে। keep-coding-instructions-এর default মান হলো false। এর অর্থ হলো custom style Claude Code-এর built-in software engineering instructions বাদ দিয়ে শুধু আপনার text অনুযায়ী কাজ করে। এই built-in instructions-ই Claude-কে change-এর scope নির্ধারণ এবং কাজ যাচাই করতে নির্দেশ দেয়। Writing assistant বা data analyst-এর ক্ষেত্রে এই field বাদ দিন, কারণ সেখানে এগুলোর প্রয়োজন নেই। Code-এ কাজ করে এমন যেকোনো কিছুর জন্য এটি true সেট করুন। তা না হলে আপনি বুঝতে পারবেন না, কেন একজন সতর্ক engineer হঠাৎ নিজের কাজ যাচাই করা বন্ধ করে দিয়েছে। আপনার প্রকৃত লক্ষ্য যদি ভিন্ন voice নয়, বরং একটি task-এ কতটা কাজ প্রাপ্য তার আরও কঠোর সংজ্ঞা হয়, তাহলে সেটি style file-এ নয়, engineering instructions-এ থাকা উচিত: Ponytail skill একটি কার্যকর উদাহরণ। এটি একটি single rule, যা agent-কে কাজ করা সবচেয়ে ছোট change-এর দিকে পরিচালিত করে।
description হলো সেই line, যা /config picker name-এর পাশে দেখায়। ছয় মাস পরে নিজের দুটি style-এর মধ্যে নির্বাচন করার সময় এটি যেন কাজে লাগে, সেভাবে লিখুন।
SSH-এ সংক্ষিপ্ত স্টাইল কেন আলাদা
একটি VPS-এ আপনি যে transcript পড়েন, তা local terminal-এ না থাকা কয়েকটি স্তরের মধ্য দিয়ে আসে। প্রতিটি স্তর verbosity-এর জন্য আপনাকে মূল্য দিতে হয়।
প্রথম স্তরটি হলো scrollback। tmux-এ প্রতিটি pane নির্দিষ্ট সংখ্যক line সংরক্ষণ করে। এই সংখ্যা history-limit দিয়ে নির্ধারিত হয় এবং default হিসেবে 2000 থাকে। বর্ণনামূলক transcript এই buffer দ্রুত পূর্ণ করে। ফলে session-এর আগের অংশ দ্রুত বাদ পড়ে এবং যে output-এ ফিরে যেতে চেয়েছিলেন তা আর থাকে না। বেশি জায়গা চাইলে সীমা বাড়ান:
echo 'set -g history-limit 20000' >> ~/.tmux.conf
tmux source-file ~/.tmux.confএর পরে তৈরি হওয়া প্রতিটি pane 20000 line সংরক্ষণ করবে। এর বিনিময়ে প্রতিটি pane-এর জন্য বেশি memory লাগবে। আগে থেকে খোলা pane-গুলো পুরোনো সীমাই রাখবে, কারণ pane তৈরি হওয়ার সময় buffer size নির্ধারিত হয়। আপনি যদি এখনও session layout তৈরি করে থাকেন, VPS-এ tmux-এর মধ্যে Claude Code চালানো নিবন্ধে বিষয়টি ব্যাখ্যা করা হয়েছে।
দ্বিতীয় স্তরটি হলো latency। উত্তর তৈরি হওয়ার সঙ্গে সঙ্গে তা আপনার terminal-এ stream হয়। round-trip time বেশি হলে, উত্তর দেখা যাওয়ার আগে দীর্ঘ ভূমিকার text আসতে দেখতেই আপনার সময় চলে যায়।
তৃতীয় স্তরটি হলো output token। বর্ণনামূলক প্রতিটি line-এর জন্য output হিসেবে billing হয়। Explanatory এবং Learning ইচ্ছাকৃতভাবে দীর্ঘ। Concise ইচ্ছাকৃতভাবে ছোট, কারণ এটি Claude-কে default হিসেবে সংক্ষিপ্ত উত্তর দিতে নির্দেশ দেয়।
কারও দেওয়া percentage, এমনকি এই page-এর percentage-ও, যাচাই না করে বিশ্বাস করবেন না। পার্থক্যের পরিমাণ আপনার prompt, model এবং কাজের ধরন অনুযায়ী বদলায়। তাই পরিবর্তনের আগে ও পরে নিজেই পরিমাপ করুন। দুটি নতুন session-এ একই বাস্তব কাজ চালান। একটিতে Default এবং অন্যটিতে Concise ব্যবহার করুন। তারপর ফল তুলনা করুন। statusline সবচেয়ে সহজ meter, কারণ Claude Code stdin-এ আপনার script-কে একটি JSON object দেয়। এতে style name এবং token count দুটিই থাকে:
cat > ~/.claude/statusline.sh <<'EOF'
#!/bin/bash
input=$(cat)
style=$(echo "$input" | jq -r '.output_style.name // "default"')
out=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0')
cost=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
echo "style=$style out=$out cost=$cost"
EOF
chmod +x ~/.claude/statusline.shএটির দিকে statusLine setting নির্দেশ করুন:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}এখন session-এর নিচের bar-এ active style এবং সেটি তৈরি করা token count পাশাপাশি দেখা যাবে। আপনার প্রয়োজনীয় before-and-after তুলনা পাওয়ার জন্য এটিই যথেষ্ট। এই script-এর জন্য jq, অর্থাৎ command-line JSON parser, প্রয়োজন। তাই আগে sudo apt install -y jq দিয়ে এটি install করুন। bar খালি থাকলে script-টি হাতে চালিয়ে তাতে কিছু JSON pipe করুন। কারণ কোনো statusline non-zero exit করলে কিছু print করে না এবং কোনো report-ও দেয় না। Custom Claude Code statusline নিবন্ধে ওই object-এর বাকি field-গুলোর তালিকা আছে। session নয়, billing সম্পর্কিত তথ্যের জন্য Claude Code-এর token আসলে কোথায় যায় এবং Claude Code-এর খরচ track করার tools পড়ুন।
কোন output style আসলে লোড হয়েছে তা কীভাবে পরীক্ষা করবেন
অনুমান না করে এই পরীক্ষাগুলো ব্যবহার করুন।
/statusএই session-এর জন্য কার্যকর settings source-গুলো দেখায়। এর মধ্যে organisation থেকে managed settings প্রয়োগ হচ্ছে কি না, তাও দেখা যায়।/contextcontext window breakdown-এ loaded system prompt-কে একটি category হিসেবে দেখায়।claude doctorsession শুরু না করে shell থেকে চালালে installation ও settings diagnostics দেখায় এবং invalid settings file-এর রিপোর্ট দেয়।
কোনো style প্রয়োগ না হলে কারণ সাধারণত দুটির একটি। প্রথমত, আপনি session চলাকালে style পরিবর্তন করেছেন। তাই /clear চালান। দ্বিতীয়ত, precedence-এর কারণে সমস্যা হতে পারে: .claude/settings.local.json, .claude/settings.json-কে override করে, এবং উভয়ই ~/.claude/settings.json-কে override করে। /config picker local file-এ লিখে। তাই আপনার team .claude/settings.json-এ যে style commit করেছে, কোনো machine-এ কেউ একবার menu ব্যবহার করলে সেটি নীরবে override হয়ে যায়। কোন source কার্যকর হয়েছে, তা /status জানায়।
JSON syntax error হলে একই লক্ষণ দেখা যায়, তবে সমাধান আলাদা। কোন file parse করা যায়নি, claude doctor সেই file-এর নাম দেখায়। আরও জটিল কিছু খোঁজার আগে এটি চালানো উচিত।
FAQ
/output-style কমান্ড কাজ করা বন্ধ করল কেন?
v2.1.73-এ এটি deprecated করা হয় এবং v2.1.91-এ সরিয়ে ফেলা হয়। তাই mid-2026-এর build-এ কমান্ডটি আর নেই। আপনার কাছে কী আছে তা দেখতে claude --version চালান। Output style-এর অধীনে /config থেকে style বেছে নিন, অথবা একটি settings file-এ outputStyle key সেট করুন। এই key কমান্ডটির পরেও চালু আছে। তাই নিজের notes-এ সরাসরি key সেট করার নির্দেশটি লিখে রাখা বেশি কার্যকর।
আমি output style পরিবর্তন করেছি, কিন্তু কোনো পরিবর্তন দেখছি না। কেন?
Output style system prompt-এর অংশ। Claude Code session শুরু হওয়ার সময় একবার system prompt তৈরি করে। Session চলাকালে করা পরিবর্তন সংরক্ষিত হয়, কিন্তু প্রয়োগ হয় না। কারণ চলমান session startup-এর সময় তৈরি করা prompt-ই পাঠাতে থাকে। /clear চালান অথবা নতুন session শুরু করুন। এরপরও প্রয়োগ না হলে /status চালিয়ে দেখুন কোন settings source কার্যকর হয়েছে। কারণ .claude/settings.local.json, .claude/settings.json-কে override করে এবং উভয়ই ~/.claude/settings.json-কে override করে।
Concise output style কি খরচ কমায়?
এটি output token-এর পরিমাণ প্রত্যাশিত দিকেই কমায়। কারণ এটি Claude-কে ডিফল্টভাবে সংক্ষিপ্ত response দিতে নির্দেশ দেয়। কতটা কমবে তা আপনার prompt এবং model-এর ওপর নির্ভর করে। তাই প্রকাশিত যেকোনো percentage অন্য কারও কাজের measurement হিসেবে বিবেচনা করুন। নিজের ফলাফল মাপুন: input side-এর জন্য প্রতিটি style ব্যবহার করে fresh session-এ /context চালান। এরপর প্রতিটি style-এ একই task চালিয়ে output token count তুলনা করুন। Concise কখনো error report বা security warning সংক্ষিপ্ত করে না। তাই আপনার সবচেয়ে বেশি পড়া দরকার এমন অংশগুলো সম্পূর্ণই থাকে।
Output style কি আমার subagent-দের লেখার ধরন পরিবর্তন করবে?
না। Output style শুধু main conversation-এ প্রযোজ্য। কারণ subagent নিজের system prompt এবং নিজের tool set নিয়ে আলাদা conversation শুরু করে। বর্তমান conversation-এর fork ব্যতিক্রম। কারণ fork parent-এর system prompt হুবহু inherit করে। কোনো subagent কীভাবে response দেবে তা পরিবর্তন করতে হলে সেই agent-এর নিজস্ব file সম্পাদনা করুন।
Output style কি Claude-কে অনুমতি না চেয়ে কমান্ড চালাতে দিতে পারে?
না। Output style system prompt-এর text। তাই এটি শুধু Claude কী করার চেষ্টা করবে তা প্রভাবিত করতে পারে। Proactive style Claude-কে routine decision-এ থেমে না থেকে অনুমান করে কাজ করতে উৎসাহিত করে। তবুও এটি কোনো কমান্ড approve করতে পারে না। কোনো prompt ছাড়া কী চলবে তা আপনার permission mode নির্ধারণ করে। Server-এ কোনো session চালু রেখে যাওয়ার আগে এই setting-টি পরীক্ষা করুন।