নিজের agent skill কীভাবে লিখবেন
একটি বাস্তব ব্যর্থতা থেকে agent skill লিখুন: SKILL.md-এর গঠন, কখন skill চালু হবে ঠিক করা description line, এবং একই অনুরোধে test করার পদ্ধতি জানুন।
একটি বাস্তব ব্যর্থতা থেকে নিজের agent skill লিখুন
নিজের agent skill লেখার সবচেয়ে কার্যকর উপায় হলো একটি বাস্তব ব্যর্থতা থেকে এর মূল নিয়ম বের করে আনা। আপনার coding agent যে কাজটি দুইবার ভুল করেছে, এমন একটি কাজ খুঁজে নিন। দুইবার আপনি যে সংশোধন লিখেছিলেন, তা নোট করুন। এরপর সেই সংশোধনটি একটি SKILL.md ফাইল হিসেবে সংরক্ষণ করুন, যাতে agent নিজে থেকেই সেটি load করতে পারে। এরপরের সবকিছুই প্রয়োগের বিষয়: ফাইলের বিন্যাস এবং skill কখন চালু হবে কি না তা নির্ধারণ করা একমাত্র লাইন।
এই ক্রমটি গুরুত্বপূর্ণ। কল্পনা থেকে লেখা skill এমন একটি সমস্যার নথি তৈরি করে, যা আপনার কখনও হয়নি। তবু প্রতিটি session-এ এটি context ব্যবহার করে। আপনি যে ব্যর্থতা নিজে দেখেছেন, তা থেকে তৈরি skill-এর সঙ্গে নিজস্ব test-ও থাকে: একই অনুরোধ আবার করুন এবং দেখুন agent এবার সঠিকভাবে কাজ করে কি না। এই format আপনার কাছে নতুন হলে আগে agent skill কী এবং agent কীভাবে তা load করে পড়ুন। তারপর ফিরে এসে একটি skill লিখুন।
এমন একটি কাজ দিয়ে শুরু করুন, যেটি agent দুইবার ভুল করেছে
একবার ঘটলে তা কাকতালীয় হতে পারে। দুইবার ঘটলে তা একটি pattern, আর একটি pattern নথিবদ্ধ করার মতো বিষয়।
বাস্তব server-এ এমন ব্যর্থতা বারবার ঘটে। আপনি agent-কে nginx-এ একটি reverse proxy block যোগ করতে বলেন। সে /etc/nginx/conf.d/app.conf সম্পাদনা করে, তারপর sudo systemctl restart nginx চালায়। সম্পাদনায় typo থাকায় nginx চালু হতে অস্বীকার করে, এবং আপনি ঠিক না করা পর্যন্ত site বন্ধ থাকে:
nginx: [emerg] unknown directive "proxy_pas" in /etc/nginx/conf.d/app.conf:12
Job for nginx.service failed because the control process exited with error code.Chat-এ ভুলটি ঠিক করুন। service-এ কোনো পরিবর্তন করার আগে sudo nginx -t দিয়ে configuration test করুন, তারপর restart-এর বদলে reload দিয়ে তা প্রয়োগ করুন। এক সপ্তাহ পরে অন্য একটি কাজে একই ভুল আবার ঘটে। দ্বিতীয়বারের ঘটনাটিই signal।
ব্যর্থতাটি সামনে থাকতেই দুটি বিষয় লিখে রাখুন: আপনি যে request লিখেছিলেন এবং যে correction দিয়েছিলেন, ঠিক আপনার ব্যবহৃত শব্দে। এই দুটি লাইনই skill হয়ে ওঠে। Trigger-কে কী match করতে হবে, তা request জানায়। Correction-এ skill-এর সম্পূর্ণ content থাকে।
Anthropic-এর নিজস্ব authoring guidance-এও এটিকে প্রথমে রাখা হয়েছে। কোনো skill ছাড়া representative task-এ agent চালান, কোথায় ব্যর্থ হচ্ছে তা নথিবদ্ধ করুন, তারপর সেই ব্যর্থতাগুলো ঠিক করার জন্য ন্যূনতম instruction লিখুন। ব্যর্থতাগুলোই specification। তাই যে skill-এর সঙ্গে কোনো নির্দিষ্ট ব্যর্থতার যোগসূত্র দেখানো যায় না, সেটি সাধারণত এমন একটি skill, যার প্রয়োজন কারও ছিল না।
একই distillation-এর একটি সম্পূর্ণ worked example হিসেবে, Ponytail একটি বারবার ঘটতে থাকা ব্যর্থতা—আপনার অনুরোধের তুলনায় agent অনেক বেশি কিছু rewrite করে—কে কীভাবে একটি skill-এ রূপ দেয় নিজের skill লেখার আগে শুরু থেকে শেষ পর্যন্ত পড়ে নিতে পারেন।
একটি skill-এর গঠন
একটি skill হলো একটি directory, যাতে একটি বাধ্যতামূলক file থাকে।
.claude/skills/nginx-config-changes/
├── SKILL.md
├── reference/
│ └── proxy-headers.md
└── scripts/
└── check-and-reload.shSKILL.md একটি frontmatter block দিয়ে শুরু হয়। এতে YAML-এ লেখা কয়েকটি setting থাকে। Docker Compose file-এও একই configuration format ব্যবহৃত হয়। এই block-টি --- marker-এর মধ্যে থাকে। এর পরে markdown-এ instructions লেখা হয়। উপরের failure-এর সম্পূর্ণ skill নিচে দেখানো হলো।
---
name: nginx-config-changes
description: Tests and reloads nginx safely after a config edit. Use when editing files under /etc/nginx, adding a server block or a reverse proxy, or changing a TLS certificate path.
---
## Rules
Run `sudo nginx -t` after every edit under `/etc/nginx`. Do not touch the service until it prints `test is successful`.
Apply the change with `sudo systemctl reload nginx`. Never use `restart`. A reload keeps the running workers serving traffic until the new config parses, so a broken config leaves the site up. A restart stops nginx first, so a broken config takes the site down.
If `nginx -t` fails, fix the file and test again. Never reload a config that failed the test.
For the proxy header defaults this project expects, see [reference/proxy-headers.md](reference/proxy-headers.md).এই file-টি 20 line-এরও ছোট এবং এটিই একটি সম্পূর্ণ skill। এর অংশগুলো হলো:
name: সর্বোচ্চ 64 character। এতে শুধু lowercase letter, digit এবং hyphen থাকতে পারে। এতেclaudeবাanthropicশব্দ থাকতে পারবে না। personal বা project skill-এ এটি শুধু display label। আপনি যে command লিখবেন, তা directory name থেকে আসে। তাই এই skill-এর command হলো/nginx-config-changes।description: skill-টি কী করে এবং কখন ব্যবহার করতে হবে, তার বিবরণ। সর্বোচ্চ 1,024 character। এই line-টিই মূল কাজ করে। পরের section-এ শুধু এটি নিয়েই আলোচনা করা হবে।- Body: instructions। skill কার্যকর হলে তবেই এগুলো load হয়।
reference/: অতিরিক্ত file, যা agent প্রয়োজন অনুযায়ী পড়ে।SKILL.mdথেকে এই file-গুলোর link দিন এবং link এক level গভীরে রাখুন। কারণ একটি referenced file থেকে আরও একটি file reference করা হলে সেটির কিছু অংশই প্রায়ই পড়া হয়।scripts/: যেসব file agent পড়ার পরিবর্তে execute করে। শুধু সেগুলোর output context ব্যবহার করে। তাই 300 line-এর একটি script চালানো context-এর দিক থেকে ব্যয়বহুল নয়।
যে আচরণটি সংশোধন করতে হবে তা যথেষ্ট জেদি হলে একটি skill পূর্ণ layout-এ পরিণত হয়, এবং unlazy skill সেই পরিসরটি Depth Tree, gates ফাইলগুলোর একটি সেট এবং PLAN.md contract-এ ব্যবহার করে যাতে কাজের পুরো শাখাগুলো অনাবৃত পড়ে থাকা অবস্থায় কোনো agent নিজেকে সম্পন্ন ঘোষণা করতে না পারে।
Directory-টি কোথায় রাখবেন, তার ওপর নির্ভর করে কারা skill-টি ব্যবহার করতে পারবে।
- repository-তে
.claude/skills/<name>/SKILL.md: শুধু এই project-এর জন্য। repository clone করা প্রত্যেকের কাছে এটি পৌঁছে যাবে। ~/.claude/skills/<name>/SKILL.md: আপনার machine-এর প্রতিটি project-এর জন্য। অন্য কারও machine-এ এটি থাকবে না।<plugin>/skills/<name>/SKILL.md: একটি plugin-এর মধ্যে bundled থাকে। plugin-টি যেখানে enabled, সেখানেই এটি ব্যবহার করা যায়।
mkdir -p .claude/skills/nginx-config-changes দিয়ে একটি skill তৈরি করে file-টি লিখুন। Claude Code এই directory-গুলো monitor করে। তাই কোনো বিদ্যমান skill edit করলে running session-এর মধ্যেই পরিবর্তন কার্যকর হয়। session শুরু হওয়ার সময় top-level skills directory না থাকলে পরে সেটি তৈরি করার জন্য restart প্রয়োজন। কারণ session শুরু হওয়ার সময় monitor করার মতো কোনো directory ছিল না।
description field-ই ফাইলের সবচেয়ে গুরুত্বপূর্ণ লাইন
শুরু হওয়ার সময় agent প্রতিটি উপলভ্য skill-এর name এবং description তার context-এ লোড করে। skill-এর body লোড করে না। আপনার request আসার পর এই একটি লাইনই skill-টি প্রাসঙ্গিক কি না নির্ধারণের সম্পূর্ণ ভিত্তি। তাই অস্পষ্ট description-এর আড়ালে নিখুঁত body থাকলেও সেটি পড়া হয় না।
description তৃতীয় পুরুষে লিখুন। “Tests and reloads nginx safely” কার্যকর। “I can help you with nginx” কার্যকর নয়, কারণ এই text system prompt-এ inject করা হয়, যেখানে প্রথম পুরুষের বক্তব্য model নিজে বলছে বলে মনে হয়।
description-এ দুটি বিষয় রাখুন: skill-টি কী করে এবং কোন শর্তে এটি প্রযোজ্য। গুরুত্বপূর্ণ use case প্রথমে লিখুন, কারণ Claude Code listing entry-টি 1,536 অক্ষরে truncate করে। অতিরিক্ত trigger phrase ও example request-এর জন্য ঐচ্ছিক when_to_use field আছে। এটিও একই সীমার মধ্যে description-এর শেষে যুক্ত হয়।
এরপর আপনি বাস্তবে যে শব্দগুলো type করবেন, সেগুলো ব্যবহার করুন। description: Helps with nginx কোনো কিছুর সঙ্গে মেলে না, কারণ কেউ “helps with” type করে না। আগের version-এ /etc/nginx, server block, reverse proxy এবং TLS (transport layer security) certificate path উল্লেখ করা হয়েছে। যে request এটি trigger করবে, তার সাধারণ vocabulary মোটামুটি এমনই হবে।
description যাচাইয়ের পদ্ধতি হলো: body কখনও দেখেনি এমন কাউকে সেই একটি লাইন দিন এবং তার সঙ্গে আপনি যে request type করতে যাচ্ছেন সেটিও দিন। তারপর জিজ্ঞেস করুন skill-টি প্রযোজ্য কি না। সে যদি তা বুঝতে না পারে, model-ও বুঝতে পারবে না।
বডি ছোট রাখুন, কারণ এটি context-এ থেকে যায়
কোনো skill invoke হলে, তার rendered content একটি message হিসেবে conversation-এ যুক্ত হয় এবং session-এর বাকি সময় সেখানে থেকে যায়। Claude Code পরবর্তী turn-গুলোতে file-টি আবার পড়ে না। আপনি যে প্রতিটি line লেখেন, তার খরচ শুধু একটি answer-এর জন্য নয়, পুরো session-এর জন্য হয়।
Anthropic SKILL.md-কে 500 lines-এর মধ্যে রাখার এবং বিস্তারিত তথ্য আলাদা file-এ সরিয়ে নেওয়ার পরামর্শ দেয়। Compaction দেখায়, এই সংখ্যাটি কেন ইচ্ছেমতো নির্ধারিত নয়। Context খালি করার জন্য conversation summarize হলে Claude Code প্রতিটি skill-এর সর্বশেষ invocation আবার যুক্ত করে, প্রতিটির শুধু প্রথম 5,000 tokens রাখে, এবং সর্বশেষ invoke করা skill থেকে শুরু করে সম্মিলিত 25,000-token budget পূরণ করে। দীর্ঘ skill মাঝপথে কেটে যায়। একাধিক দীর্ঘ skill একে অন্যকে সম্পূর্ণভাবে বাদ দিতে পারে।
তাই model আগে থেকেই যা জানে, শুধু তা লিখুন। এটি জানে nginx কী এবং reverse proxy কীভাবে কাজ করে। এটি আপনার reload-এর ওপর restart সংক্রান্ত local rule জানে না, এবং এই rule-ই file-টি থাকার একমাত্র কারণ।
skill যদি agent-কে bundled script চালাতে বলে, তাহলে path-টি ${CLAUDE_SKILL_DIR} দিয়ে লিখুন, যাতে skill যেখানেই install করা থাকুক path সঠিকভাবে resolve হয়। একই command আগে থেকেই approve করুন, যাতে permission prompt-এ run থেমে না যায়।
---
name: nginx-config-changes
description: Tests and reloads nginx safely after a config edit. Use when editing files under /etc/nginx, adding a server block or a reverse proxy, or changing a TLS certificate path.
allowed-tools: Bash(${CLAUDE_SKILL_DIR}/scripts/check-and-reload.sh *)
---grant শুধু যে turn-এ skill invoke করা হয়েছে, সেই turn-এর জন্য প্রযোজ্য এবং আপনি পরের message পাঠালে এটি clear হয়ে যায়। তাই এটি নীরবে স্থায়ী permission হয়ে যায় না।
কৌশলটি সক্রিয় হচ্ছে—এটি কীভাবে প্রমাণ করবেন
কোনো skill load হতে দেখা থেকে বোঝা যায় যে agent সেটি খুঁজে পেয়েছে। এতে উত্তর পরিবর্তিত হয়েছে কি না, তা বোঝা যায় না। দুটি বিষয়ই পরীক্ষা করুন। নতুন session-এও পরীক্ষা করুন, কারণ skill লেখার সময় যে session ব্যবহার করেছিলেন, সেখানে লেখার সময় বলা সবকিছু আগে থেকেই context-এ থাকে। ওই অবশিষ্ট context skill file-এর ঘাটতিগুলো আড়াল করে।
- project-এ
claudeব্যবহার করে একটি নতুন session শুরু করুন। - কোনো সাধারণ কর্মদিবসে যেভাবে অনুরোধটি করতেন, নিজের ভাষায় সেভাবেই লিখুন। skill-এর নাম উল্লেখ করবেন না।
- skill invocation হচ্ছে কি না দেখুন। skill সক্রিয় না হলে description ঠিক করুন। এখনো body সমস্যা নয়।
- নিয়ন্ত্রণ হিসেবে
/nginx-config-changesদিয়ে skill-টি হাতে invoke করুন। হাতে invoke করলে আচরণ সঠিক, কিন্তু request থেকে invoke হলে আচরণ ভুল হলে বুঝবেন সমস্যা trigger-এ, instruction-এ নয়। - skill বন্ধ রেখে একই request চালান এবং দুটি উত্তর তুলনা করুন।
/skillsmenu-তে skill-টি highlight করুন,Spaceচাপুন এবং state-টিoff-এ পরিবর্তন করুন। এরপরEnterচাপলে সেটি সংরক্ষিত হবে। এতে.claude/settings.local.json-এ একটিskillOverridesentry লেখা হবে। কাজ শেষ হলে আবারSpaceচাপলে state-টিon-এ ফিরে যাবে। - এমন কয়েকটি request লিখুন, যেগুলোতে skill সক্রিয় হওয়ার কথা নয়। সেগুলোতে skill নীরব থাকে কি না পরীক্ষা করুন।
এই প্রক্রিয়াটি স্বয়ংক্রিয় করতে official marketplace থেকে skill-creator plugin install করুন।
/plugin marketplace add anthropics/claude-plugins-official
/plugin install skill-creator@claude-plugins-officialinstall output-এ Run /reload-plugins to activate. দেখা গেলে সেই command চালান। এরপর Claude-কে নাম ধরে আপনার skill মূল্যায়ন করতে বলুন। plugin-টি skill directory-এর evals/evals.json-এ test case সংরক্ষণ করে এবং প্রতিটি case নিজস্ব subagent-এ চালায়। ফলে প্রতিটি run clean context দিয়ে শুরু হয়। এরপর এটি with-skill এবং without-skill তুলনা লিখে। এটিই নির্ভরযোগ্য পরিমাপ: skill-এর কারণে pass rate কতটা বেড়েছে, তার সঙ্গে skill ব্যবহারে লাগা token এবং সময়ের তুলনা।
আলাদা eval run-এর ওপর নির্ভর না করে কোনো skill নিজের প্রমাণও বহন করতে পারে। Old Coder skill এটি করে: agent-এর কাছ থেকে এমন একটি evidence report নেওয়া হয়, যা আপনি নিজেই আবার চালিয়ে পরীক্ষা করতে পারেন।
ব্যর্থতার ধরন: skill কখনো সক্রিয় হয় না
আপনি অনুরোধ লিখলে agent আগের ভুল কাজটিই করে, এবং কোনো skill line দেখা যায় না। নিচের বিষয়গুলো ক্রমানুসারে পরীক্ষা করুন।
- Description-এ skill কী করে তা বলা আছে, কিন্তু কখন ব্যবহার করতে হবে তা বলা নেই। তাই আপনার অনুরোধের সঙ্গে কোনো মিল পাওয়া যায় না।
- Description-এ আপনার ব্যবহৃত শব্দগুলো নেই। আপনি যদি "nginx" বলেন, তবে description-এ nginx শব্দটিও থাকতে হবে।
- Frontmatter-এ
disable-model-invocation: trueসেট করা আছে। এর ফলে description সম্পূর্ণভাবে model-এর context-এর বাইরে থাকে, এবং শুধু/nameব্যবহার করে আপনিই skill invoke করতে পারেন। - Frontmatter-এ থাকা
pathsglob activation-কে মিল থাকা file-এ সীমাবদ্ধ করে, কিন্তু আপনি যে file-এ কাজ করছেন সেটি এর সঙ্গে মেলে না। - Skill-টি আপনার starting directory-এর নিচে nested
.claude/skills/directory-তে রয়েছে। Agent ওই subdirectory-র কোনো file পড়া বা সম্পাদনা করার পরই সেগুলো load করে। তাই তার আগে skill একেবারেই available নয়।
ব্যর্থতার ধরন: skill ক্রমাগত সক্রিয় হচ্ছে
বিপরীত সমস্যা হলো, বর্ণনা এত বিস্তৃত হওয়া যে skill সম্পর্কহীন কাজেও সক্রিয় হয়। “সার্ভারে কাজ করার সময় ব্যবহার করুন” — এই শর্তটি server repository-র প্রায় যেকোনো অনুরোধের সঙ্গে মিলে যায়। ফলে body এমন কাজেও লোড হয় যেখানে এটি সহায়ক নয়, এবং বাকি session জুড়ে এটি context-এ থেকে যায়।
শুধু যে শর্তটি বাস্তবে গুরুত্বপূর্ণ, সেটির মধ্যে বর্ণনা সীমাবদ্ধ রাখুন। এটি কোন file বা command-এর ক্ষেত্রে প্রযোজ্য, সেগুলোর নাম উল্লেখ করুন। skill শুধু নির্দিষ্ট file-এর ক্ষেত্রে প্রযোজ্য হলে একটি paths glob যোগ করুন। deploy বা commit-এর মতো side effect-যুক্ত কাজের জন্য disable-model-invocation: true সেট করুন এবং নিজে /name ব্যবহার করে এটি invoke করুন, যাতে agent নিজে সিদ্ধান্ত নিতে না পারে যে এখন deploy করার উপযুক্ত সময়।
ব্যর্থতার ধরন: এই দক্ষতাটি rules file-এ থাকা উচিত
CLAUDE.md বা AGENTS.md-এর মতো একটি rules file প্রতিটি session-এর শুরুতে load হয় এবং প্রতিটি task-এ প্রযোজ্য হয়। কোনো skill-এর body শুধু skill সক্রিয় হলেই load হয়। সিদ্ধান্তের মূল বিষয় হলো frequency। Repository-এর প্রতিটি task-এ প্রযোজ্য কোনো তথ্য, যেমন আপনি যে package manager ব্যবহার করেন, rules file-এ থাকা উচিত। অল্প কিছু task-এ প্রযোজ্য কোনো procedure, যেমন উপরের nginx rule, skill-এ থাকা উচিত। যেদিন কেউ nginx সম্পাদনা করে না, সেদিন এতে কোনো অতিরিক্ত খরচ হয় না।
আসল সমস্যা হলো একই নির্দেশনা দুই জায়গায় রাখা। দুটি copy ধীরে ধীরে আলাদা হয়ে যায়। Agent ভুল কাজ করলে কোন copy অনুসরণ করেছে তা বোঝা যায় না। প্রতিটি instruction-এর জন্য একটি নির্দিষ্ট স্থান বেছে নিন। কোনো rule যদি ইতিমধ্যে ঠিক একটি স্থানেই থাকে এবং তবুও এড়িয়ে যাওয়া হয়, সেটি ভিন্ন সমস্যা। সেটিকে skill-এ সরিয়ে নিলে সমাধান হবে ধরে নেওয়ার আগে উপেক্ষিত instruction-এর পেছনের প্রক্রিয়া পরীক্ষা করা মূল্যবান। skills, MCP servers এবং rules files-এর সীমারেখা আরও জটিল ক্ষেত্রগুলো ব্যাখ্যা করে। এর মধ্যে সেই পরিস্থিতিও আছে, যখন সঠিক সমাধান নতুন instruction নয়, বরং MCP (model context protocol) server, যা agent-কে একটি নতুন tool দেয়।
কাজে কার্যকর প্রমাণিত হলে শেয়ার করুন
বাস্তব কাজে এক সপ্তাহ টিকে থাকা কোনো skill commit করে রাখার মতো। .claude/skills/-এর project skill-গুলো code-এর মতো review করা হয় এবং repository-এর সঙ্গেই আসে। তাই কোনো teammate repository clone করলে setup ছাড়াই আপনার সংশোধন পেয়ে যায়। Copy এবং paste ছাড়া একটি repository থেকে অন্য repository-তে skill সরানো আলাদা একটি সমস্যা। এটি repository-গুলোর মধ্যে agent skill শেয়ার করার পদ্ধতি-তে ব্যাখ্যা করা হয়েছে।
Portability নিয়ে একটি বিষয় মনে রাখুন। Claude Code দীর্ঘ তালিকার frontmatter field গ্রহণ করে। কিন্তু Agent Skills standard-এ মাত্র ছয়টি field অনুমোদিত: name, description, license, compatibility, metadata এবং allowed-tools। frontmatter-এ অন্য কোনো field রেখে skill-টি claude.ai-তে upload করলে বা Skills API-এর জন্য package করলে, সেই field উপেক্ষা না করে সরাসরি ব্যর্থ হয়:
Unexpected key(s) in SKILL.md frontmatter: argument-hint. Allowed properties are: allowed-tools, compatibility, description, license, metadata, nameএই ছয়টি field-এর মধ্যেই থাকলে একই file Claude Code এবং standard পড়ে এমন অন্যান্য সিস্টেমেও load হয়। তবে file কোথায় load হচ্ছে, সেটি এখনও নির্ধারণ করে skill-টি কী করতে পারবে। কারণ Cowork Anthropic sandbox-এ চলে, আর Claude Code আপনার নিজের machine বা VPS-এ চলে। তাই উপরের nginx skill-টি teammate-এর checkout-এ নিয়ে যাওয়া কার্যকর। কিন্তু যে sandbox server-এ পৌঁছাতে পারে না, সেখানে এটি কোনো কাজে আসে না। অন্য model-এ স্থানান্তরের পরও instructions কার্যকর রাখার জন্য সেগুলো কীভাবে লিখতে হবে, তা আলাদা একটি কাজ। যেকোনো model-এর সঙ্গে কাজ করে এমন skill লেখা বিষয়টি ব্যাখ্যা করে।
FAQ
একটি SKILL.md ফাইল কত দীর্ঘ হওয়া উচিত?
এটি 500 লাইনের মধ্যে রাখুন। কার্যকর অধিকাংশ skill এর চেয়ে অনেক ছোট হয়। Skill invoke হলে এর body conversation-এ যুক্ত হয় এবং session-এর বাকি সময় সেখানে থাকে। তাই প্রতিটি লাইন একবারের খরচ নয়, বারবারের খরচ। দীর্ঘ reference material skill directory-এর আলাদা file-এ সরিয়ে নিন এবং SKILL.md থেকে সেগুলোর link দিন। এক স্তরের বেশি গভীরে যাবেন না, যাতে agent প্রয়োজন হলেই সেগুলো পড়ে। Bundled script পড়ার পরিবর্তে execute হয়, তাই শুধু script-এর output-এর জন্য খরচ হয়।
আমার skill কখনো trigger হয় না কেন?
সাধারণত description-ই কারণ। Model সিদ্ধান্ত নেওয়ার সময় skill-এর শুধু এই অংশটি context-এ থাকে। Description-এ শুধু skill কী করে তা নয়, কখন এটি ব্যবহার করতে হবে সেটিও লিখুন। আপনার request-এ বাস্তবে ব্যবহৃত শব্দগুলোও description-এ রাখুন। Description সঠিক মনে হলে frontmatter-এ disable-model-invocation: true আছে কি না পরীক্ষা করুন। এটি skill-টিকে model-এর কাছ থেকে সম্পূর্ণ আড়াল করে। এছাড়া এমন কোনো paths glob আছে কি না দেখুন, যা আপনি যে file-গুলোতে কাজ করছেন না শুধু সেগুলোর জন্য skill সীমাবদ্ধ করে। আপনার starting directory-এর নিচে nested .claude/skills/ directory-তে থাকা skill আরেকটি কারণ হতে পারে। Agent ওই subdirectory-এর কোনো file পড়া বা edit করার পরেই এটি load হয়।
এটি কি skill হওয়া উচিত, নাকি আমার rules file-এ একটি line?
এটি আপনার কত ধরনের task-এ প্রযোজ্য তা বিবেচনা করুন। Rules file প্রতিটি session-এ load হয়। তাই এতে এমন তথ্য থাকা উচিত, যা প্রতিটি task-এর জন্য সত্য, যেমন package manager বা branch naming convention। Skill কেবল trigger হলে load হয়। তাই অল্পসংখ্যক task-এ প্রয়োজনীয় procedure রাখার জন্য skill উপযুক্ত। একই instruction দুই জায়গায় লিখবেন না। দুটি copy আলাদা হয়ে যেতে পারে, এবং agent কোনটি অনুসরণ করেছে তা বোঝা কঠিন হবে।
কোনো skill সত্যিই সাহায্য করেছে কি না কীভাবে বুঝব?
একটি baseline-এর সঙ্গে তুলনা করুন। কয়েকটি বাস্তব request সংগ্রহ করুন। Skill available থাকা অবস্থায় প্রতিটি request fresh session-এ চালান। এরপর /skills menu থেকে skill বন্ধ করে আবার চালান। দুটি answer পাশাপাশি পড়ুন। Fresh session গুরুত্বপূর্ণ। কারণ skill লেখার সময়কার conversation-এ আপনার ব্যাখ্যা থাকে, ফলে অসম্পূর্ণ file-ও সম্পূর্ণ মনে হতে পারে। skill-creator plugin আপনার হয়ে এই comparison চালায় এবং token cost-এর পাশে pass rate দেখায়।
অন্য agent-এর সঙ্গে একই SKILL.md ব্যবহার করতে পারি?
হ্যাঁ, যদি Agent Skills standard-এ নির্ধারিত field-গুলোর মধ্যেই থাকেন: name, description, license, compatibility, metadata এবং allowed-tools। Claude Code আরও অনেক field গ্রহণ করে। এটি এমন body feature-ও সমর্থন করে, যেমন shell command injection, যা অন্য tool execute করে না। Standard-এর বাইরে কোনো field থাকা skill upload করলে allowed property-গুলোর তালিকা-সহ একটি স্পষ্ট error দেখিয়ে upload ব্যর্থ হয়। তাই শুরুতেই ঠিক করুন, skill-টি শুধু Claude Code-এ থাকবে, নাকি অন্য পরিবেশেও ব্যবহার করা হবে।