Agent skill আসলে কী এবং MCP থেকে পার্থক্য কী
Agent skill হলো SKILL.md থাকা একটি folder, যা request মিললেই load হয়। একটি বিশাল prompt-এর বদলে progressive disclosure কীভাবে কাজ করে এবং MCP থেকে এটি কেন আলাদা, জানুন।
একটি agent skill আসলে কী
একটি agent skill হলো disk-এর একটি folder, যার ভেতরে SKILL.md নামের একটি file থাকে। ওই file-এ plain markdown-এ লেখা একটি নাম, সংক্ষিপ্ত বিবরণ এবং নির্দেশনা থাকে। Agent startup-এর সময় বিবরণটি load করে, এবং আপনার request-এর সঙ্গে সেই বিবরণের মিল থাকলেই নির্দেশনাগুলো পড়ে। Skill সম্পর্কে প্রায় সব বিষয়ই এই দুটি বাক্য থেকে বোঝা যায়।
Folder-এ শুধু ওই একটি file-ই থাকতে হবে এমন নয়। Agent Skills specification-এ তিনটি optional directory-এর নাম দেওয়া আছে: agent যে code চালায় তার জন্য scripts/, প্রয়োজন হলে যে document পড়ে তার জন্য references/, এবং template ও data-এর জন্য assets/। এগুলোর কোনোটিই বাধ্যতামূলক নয়। শুধু SKILL.md থাকা একটি folder-ই সম্পূর্ণ skill।
restore-drill/
SKILL.md
references/retention-policy.md
scripts/verify_snapshot.shDescription অংশটিকে অনেকে কম গুরুত্বপূর্ণ মনে করেন। Skill open করবে কি না সিদ্ধান্ত নেওয়ার আগে agent শুধু এই text-ই দেখে। তাই skill কী করে এবং কখন ব্যবহার করতে হবে, তা এমন ভাষায় লেখা উচিত যা মানুষ বাস্তবে type করবে।
একটি skill ব্যবহার না করা পর্যন্ত এর খরচ প্রায় নেই কেন
এই যুক্তিটিই format বোঝার কারণকে গুরুত্বপূর্ণ করে তোলে, এবং এটি feature নয়, context নিয়ে। Loading ধাপে ধাপে হয়, specification-এ যাকে progressive disclosure বলা হয়েছে।
শুরুতে agent প্রতিটি installed skill-এর name এবং description লোড করে, আর কিছু নয়। Agent Skills specification অনুযায়ী এর পরিমাণ প্রতি skill-এ প্রায় 100 tokens (প্রকাশিত নির্দেশনা, August 2026 অনুযায়ী)। এক ডজন skill install করলে আপনি প্রায় একটি দীর্ঘ paragraph-এর সমান context ব্যবহার করেন।
কোনো request-এর সঙ্গে একটি description মিলে গেলে agent সেই একটি SKILL.md-এর body পড়ে। Specification-এ body 5,000 tokens-এর মধ্যে এবং file 500 lines-এর মধ্যে রাখার পরামর্শ দেওয়া হয়েছে। এই পর্যায়ে references/ এবং scripts/-এর file-এর জন্য কোনো অতিরিক্ত খরচ হয় না। কোনো reference file কেবল instructions agent-কে সেখানে পাঠালেই load হয়। Bundled script-এর আচরণ আবার আলাদা: agent সেটি shell-এর মাধ্যমে চালায়, তাই script-এর source context window-এ ঢোকে না; শুধু তার output ঢোকে।
এবার মানুষের প্রথমে ব্যবহার করতে চাওয়া পদ্ধতিটির সঙ্গে তুলনা করুন: একটি বিশাল prompt। system prompt বা সবসময় সক্রিয় instructions file-এর প্রতিটি line প্রতিটি request-এ, প্রতিটি session-এ গণনা হয়, কাজটির প্রয়োজন থাকুক বা না থাকুক। একই সঙ্গে এটি প্রকৃত question-এর সঙ্গে attention-এর জন্য প্রতিযোগিতা করে। স্থায়ী instructions হিসেবে 10,000 tokens রাখা মানে শুধু সময় জিজ্ঞেস করলেও সেই খরচ দিতে হয়। এক ডজন skill স্থির অবস্থায় প্রায় 1,200 tokens ব্যবহার করে এবং কেবল যে task-এর প্রয়োজন, সেই task-এর সময় বড় হয়। Skills ব্যবহারের পক্ষে এটাই পুরো যুক্তি, এবং এ কারণেই একটি ছোট library দীর্ঘ prompt-এর চেয়ে কার্যকর।
একটি বিষয় অনেকের নজর এড়ায়। কোনো skill load হলে তার body session-এর বাকি সময় context-এ থেকে যায়। তাই একটি দীর্ঘ SKILL.md একবারের খরচ নয়, বারবারের খরচ। Detail references/-এ সরিয়ে নেওয়া শুধু গোছানোর বিষয় নয়। এটাই এই ব্যবস্থার পরিকল্পিত কার্যপদ্ধতি।
Agent skill কোনো tool call নয়
Tool, যাকে function call-ও বলা হয়, এমন কিছু যা model invoke করতে পারে। Harness model-কে একটি schema পাঠায়: একটি নাম, একটি বিবরণ এবং argument-এর কাঠামো। Model একটি call তৈরি করে, আপনার code সেটি চালায়, এবং ফলাফল message হিসেবে ফিরে আসে। Tool কাজ সম্পাদন করে।
Skill নিজে কোনো কাজ সম্পাদন করে না। Agent এটি পড়ে, তারপর আগে থেকেই থাকা tool ব্যবহার করে কাজ করে। Model যেভাবে tool-এ argument পাঠায়, সেভাবে skill-এ argument পাঠাতে পারে না। Skill যা করতে পারে তা হলো model-কে জানানো—কোন tool ব্যবহার করতে হবে, কোন ক্রমে ব্যবহার করতে হবে এবং পরে কী যাচাই করতে হবে।
সংক্ষেপে: tool agent-কে একটি নতুন সক্ষমতা দেয়, আর skill আগে থেকেই থাকা কোনো সক্ষমতা ব্যবহারের জন্য judgment দেয়। কোনো ধাপে প্রতিবার সঠিক ও validation-করা ফলাফল প্রয়োজন হলে tool বা script ব্যবহার করুন। কোনো ধাপে একই চিন্তাপদ্ধতি ধারাবাহিকভাবে প্রয়োগ করতে হলে skill ব্যবহার করুন।
একটি agent skill MCP server নয়
MCP (model context protocol) হলো agent-কে বাইরের কোনো সিস্টেমের সঙ্গে সংযুক্ত করার একটি protocol। MCP server হলো এমন একটি process, যা ওই protocol ব্যবহার করে এবং agent-এর কাছে tools প্রকাশ করে। সাধারণত এর জন্য configuration, credentials এবং একটি local command অথবা network endpoint প্রয়োজন হয়। অন্যদিকে, skill হলো একটি folder-এর মধ্যে থাকা একটি markdown file। এতে কোনো process, port বা protocol থাকে না।
Context-এর খরচও একইভাবে আলাদা। MCP server যে প্রতিটি tool প্রকাশ করে, তার একটি name, description এবং argument schema থাকে। এগুলো ডিফল্টভাবে পুরো session-এর request-এ ব্যবহৃত হোক বা না হোক, অন্তর্ভুক্ত থাকে। কিছু client এখন প্রয়োজন অনুযায়ী tool schema সংগ্রহ করা শুরু করেছে, তবে শুরুতেই এগুলো load করা এখনও স্বাভাবিক পদ্ধতি। স্থির অবস্থায় একটি skill হলো এক লাইন text।
দুটিই পরস্পরের পরিপূরক, এবং সবচেয়ে কার্যকর setup-গুলোতে উভয়ই ব্যবহৃত হয়। MCP server access দেয়। Skill procedure নির্ধারণ করে: আপনার team-এর বাস্তব workflow-এর জন্য কোন tool কখন এবং কোন ক্রমে call করতে হবে, এবং ভালো result কেমন হওয়া উচিত। আপনি নিজে এটি host করলে, VPS-এ MCP server চালানো অংশে এই দিকটি ব্যাখ্যা করা হয়েছে।
Agent skill কোনো system prompt বা AGENTS.md নয়
দুটিই Markdown-এ লেখা নির্দেশনা, তাই এই বিভ্রান্তি স্বাভাবিক। পার্থক্য হলো এগুলো কখন লোড হয়। AGENTS.md, CLAUDE.md এবং system prompt সব সময় সক্রিয় থাকে। Skill প্রয়োজন অনুযায়ী সক্রিয় হয়।
পরীক্ষাটি একটি প্রশ্নে করা যায়: যে কাজটির সঙ্গে এই অনুচ্ছেদের কোনো সম্পর্ক নেই, সেই কাজেও এটি উপেক্ষা করা কি ভুল হবে? House style, build command এবং branch naming rule প্রতিটি কাজের ক্ষেত্রে প্রযোজ্য। তাই এগুলো always-on file-এ থাকা উচিত, কারণ প্রতিবার লোড হওয়াই সেখানে রাখার উদ্দেশ্য। মাসে দুবার চালানো release checklist প্রতিটি কাজের ক্ষেত্রে প্রযোজ্য নয়। তাই এটি skill-এ থাকা উচিত। আপনার always-on file-এর কোনো section যখন numbered procedure-এ পরিণত হয়, তখন সেটি সরিয়ে নেওয়ার সংকেত পাওয়া যায়।
এই file-গুলোরও নিজস্ব কিছু convention আছে, যেগুলো সঠিকভাবে অনুসরণ করা উচিত। আমরা যে দুটি ব্যবহার করি, সেগুলোর জন্য AGENTS.md-এ কী থাকবে এবং human file-এ কী থাকবে এবং codebase-এর কাঠামো ব্যাখ্যা করে এমন design.md দেখুন।
একটি ন্যূনতম skill কেমন হয়
Claude Code-এ ব্যক্তিগত skill-গুলো ~/.claude/skills/<name>/SKILL.md-এ থাকে এবং আপনার সব project-এ প্রযোজ্য হয়। Project skill-গুলো .claude/skills/<name>/SKILL.md-এ থাকে এবং git-এ commit করা হয়। তাই ওই repository-তে কাজ করা প্রত্যেক ব্যক্তি ও agent সেগুলো পায়। GitHub Copilot এবং VS Code এর পরিবর্তে .github/skills/ থেকে workspace skill পড়ে। এর ভেতরের file-টি একই।
mkdir -p ~/.claude/skills/restore-drill---
name: restore-drill
description: Run a restic restore drill and report what was recovered. Use when the user asks to test backups, verify a restore, or check that a snapshot is readable.
---
# Restore drill
1. Run `restic snapshots` and pick the newest snapshot for the host in question.
2. Restore it into a scratch directory under `/tmp`, never over live data.
3. Compare the restored file count and total size against the snapshot summary.
4. Report the snapshot ID and anything that failed to restore.
If `restic snapshots` prints `Fatal: unable to open config file`, the repository path or the password is wrong. Stop and report that instead of guessing.এটাই একটি সম্পূর্ণ skill। Directory-এর নামই আপনি যে command টাইপ করবেন, সেটি হয়ে যায়। তাই এইটির command হলো /restore-drill। Claude Code-এ /skills menu-তে installed skill-গুলোর তালিকা থাকে। Fileটি গ্রহণ করা হয়েছে কি না যাচাই করার এটি দ্রুততম উপায়। এটি ওই menu-তে না থাকলে কোনো নাম ভুল আছে। Fileটির নাম অবশ্যই SKILL.md হতে হবে, এবং directory-এর নামে lowercase letter, digit ও single hyphen ব্যবহার করতে হবে। একই কাজ agent পুনরায় চালাতে পারে এমন procedure হিসেবে লিখলে VPS-এ নির্ধারিত restic backup-এর স্বাভাবিক সহায়ক হয়, কারণ backup চলা এবং backup restore হওয়া এক বিষয় নয়।
কখন skill-এর বদলে script ব্যবহার করবেন
যে ধাপের প্রতিবার একই সঠিক ফল পাওয়ার কথা, সেটি script হওয়া উচিত। skill-এ শুধু কখন এটি চালাতে হবে এবং output কীভাবে পড়তে হবে, তা কয়েকটি লাইনে লিখুন। এর দুটি কারণ আছে এবং দুটিই ব্যবহারিক।
প্রথমত, script-এর source কখনও context window-এ ঢোকে না। 300 লাইনের parser-এর ক্ষেত্রে শুধু তার output-এর জন্য context খরচ হয়। একই logic markdown নির্দেশনা হিসেবে লিখলে skill load হওয়ার প্রতিবার তার সম্পূর্ণ দৈর্ঘ্য context-এ খরচ হয়।
দ্বিতীয়ত, script একই input-এ একই output দেয়। কোনো model-কে প্রতিবার একই log parsing rule নতুন করে নির্ধারণ করতে দিলে খারাপ দিনে ফল সামান্য আলাদা হতে পারে। দুটি সংখ্যা না মেলা পর্যন্ত আপনি তা বুঝতেও নাও পারেন।
তাই কাজের ধরন অনুযায়ী ভাগ করুন। “CSV parse করে যেসব row-তে total এবং line item-এর যোগফল মেলে না, সেগুলো print করুন”—এটি একটি script-এর কাজ। “script যে row-গুলো print করেছে, সেগুলো দেখে কোনগুলো data entry mistake বলে মনে হচ্ছে তা ব্যাখ্যা করুন”—এটি skill-এর নির্দেশনা। বিচার-বিশ্লেষণ markdown-এ এবং নির্ধারিত ফলের কাজ code-এ রাখা হলো একই শৃঙ্খলা, যা আপনার নজরদারি ছাড়াই agent চালাতে পারে এমন loop তৈরি করার ক্ষেত্রেও প্রযোজ্য।
আমার skill কখনো trigger হয় না কেন?
কারণ এর description-এ skill-টি কী করে তা বলা আছে, কিন্তু কখন ব্যবহার করতে হবে তা বলা নেই। আপনার অনুরোধের সঙ্গে agent-কে মিলিয়ে দেখতে হয় শুধু ওই একটি লাইন। “Database নিয়ে কাজ করতে সাহায্য করে” কোনো নির্দিষ্ট অনুরোধের সঙ্গে মেলে না। “Staging database-এ schema migration চালায়। User কোনো table migrate করতে, column যোগ করতে বা schema পরিবর্তন করতে বললে ব্যবহার করুন”—এখানে মানুষ যে শব্দগুলো বাস্তবে লেখে, সেগুলো আছে। তাই skill-টি trigger হয়।
এর বিপরীত সমস্যাটি হলো এমন skill, যা সব সময় trigger হয়। “এই repository-তে যেকোনো code পরিবর্তনের জন্য ব্যবহার করুন”—এই ধরনের description সবকিছুর সঙ্গে মেলে। ফলে প্রতিটি task-এ body load হয় এবং session-এর বাকি সময় context-এ থেকে যায়। আপনি যে পরিস্থিতি বোঝাতে চেয়েছেন, description-টি শুধু সেই পরিস্থিতির মধ্যে সীমাবদ্ধ করুন। Claude Code-এ frontmatter-এ disable-model-invocation: true সেট করতে পারেন। এতে automatic loading বন্ধ হয় এবং skill-টি নাম লিখে ব্যবহার করার জন্য available থাকে।
তৃতীয় সমস্যা হলো এমন skill, যা কোনো tool-এর কাজ পুনরায় করে। Agent-কে এমন একটি API-তে curl করতে বলা, যা তার MCP server ইতিমধ্যে expose করে, অথবা harness-এ search tool থাকা সত্ত্বেও file-এর মধ্যে grep করতে বলা—এতে ধীর পদ্ধতি তৈরি হয় এবং পরস্পরের সঙ্গে অসামঞ্জস্যপূর্ণ হতে পারে এমন দুটি instruction set থাকে। Duplicate অংশটি মুছে ফেলুন এবং তার বদলে উদ্দেশ্যটি বর্ণনা করুন।
তিনটির মধ্যে কোন সমস্যাটি আপনার ক্ষেত্রে হচ্ছে, তা অনুমান করবেন না। একই prompt একটি fresh session-এ দুবার চালান: একবার skill available রেখে এবং একবার এটি switched off রেখে। এরপর উত্তর দুটি তুলনা করুন। Fresh session গুরুত্বপূর্ণ, কারণ skill লেখার সময় যে session ব্যবহার করেছেন, সেখানে skill-এ লেখা সব তথ্য আগে থেকেই থাকে। এতে লিখিত version-এর ঘাটতি আড়াল হয়। Anthropic-এর skill-creator plugin Claude Code-এর ভেতরে এই তুলনা স্বয়ংক্রিয় করে। এটি skill trigger হওয়া উচিত এবং না হওয়া উচিত—এমন prompt তৈরি করে এবং প্রতিটি ক্ষেত্রে কতবার skill trigger হয় তা মাপে।
এটি কি কোনো একটি vendor-এর format, নাকি একটি standard?
Anthropic 2025 সালের শেষ দিকে এই format প্রকাশ করে। পরে তারা এটি agentskills.io-তে hosted একটি open standard হিসেবে প্রকাশ করে। August 2026 অনুযায়ী, specification-এ প্রয়োজনীয় name এবং description field, ঐচ্ছিক license, compatibility, metadata এবং allowed-tools field, তিনটি ঐচ্ছিক directory এবং staged loading behaviour সংজ্ঞায়িত করা আছে। এটিতে একটি reference validator-ও রয়েছে। তাই শেয়ার করার আগে skills-ref validate ./my-skill একটি folder-কে specification-এর সঙ্গে মিলিয়ে পরীক্ষা করে।
Client-এর তালিকাই প্রকৃত সংকেত। একই folder Claude Code, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot, VS Code, Goose, OpenHands এবং opencode-সহ আরও অনেক client পড়তে পারে। Microsoft এই format-এ নিজস্ব skill প্রকাশ করে github.com/microsoft/skills-এ। তারা Skill Recorder নামে একটি desktop tool-ও প্রকাশ করে। এটি আপনাকে একবার কোনো কাজ করতে দেখার পর কাজটিকে একটি intent এবং ক্রমানুসারে সাজানো step হিসেবে পুনর্গঠন করে। তারপর ফলাফলটি একটি skill হিসেবে লিখে দেয়। কোনো vendor এমন একটি recorder তৈরি করছে, যার output format অন্য কারও specification অনুসরণ করে। এটি ভালোভাবে দেখায় যে format-টি আর একটি product-এর নিজস্ব feature হিসেবে সীমাবদ্ধ নেই।
প্রথমে কী লিখবেন
একটি library আগে থেকে পরিকল্পনা করবেন না। একই নির্দেশনা তৃতীয়বার chat-এ paste করতে গিয়ে নিজেকে ধরে ফেলুন, তারপর সেই লেখা একটি SKILL.md-এ সরিয়ে paste করা লেখাটি মুছে ফেলুন। আপনি ইতিমধ্যে যে পুনরাবৃত্তি অনুভব করেছেন, সেটিই রাখার মতো skill-এর একমাত্র নির্ভরযোগ্য সংকেত। Search procedure প্রথম skill হিসেবে ভালো, আর আপনার নিজস্ব SearXNG instance-নির্ভর search skill তার কাঠামো দেখায়।
দুটি অভ্যাস library-কে সুশৃঙ্খল রাখে। আপনি নিজে লেখেননি এমন প্রতিটি skill install করার আগে তা পড়ুন, scripts-সহ। কারণ skill হলো এমন নির্দেশনা, যা আপনার agent অনুসরণ করবে, এবং এমন code, যা এটি চালাতে পারে। তাই এটিকে অপরিচিত কারও কাছ থেকে software install করার মতো বিবেচনা করুন। আর credentials folder-এর বাইরে রাখুন, কারণ skill হলো এমন একটি text file, যা commit ও share করা হয়। আপনার agents থেকে secrets দূরে রাখা-এ ওই values কোথায় রাখা উচিত তা ব্যাখ্যা করা হয়েছে। এই বছরের agents শেখার road map-এ setup-এর অন্যান্য অংশের সঙ্গে skills-এর ক্রম দেখানো হয়েছে।
FAQ
একটি agent skill এবং একটি MCP server-এর মধ্যে পার্থক্য কী?
একটি MCP (model context protocol) server হলো একটি চলমান process, যা protocol-এর মাধ্যমে agent-এর কাছে tools উন্মুক্ত করে। তাই এর configuration ও credentials প্রয়োজন হয়। সাধারণত এর tool definitions পুরো session জুড়ে context দখল করে থাকে, সেগুলো ব্যবহার করা হোক বা না হোক। একটি agent skill হলো একটি folder, যাতে SKILL.md file থাকে। এতে কোনো process বা protocol থাকে না। Agent সেটি পড়ার সিদ্ধান্ত নেওয়া পর্যন্ত এর খরচ প্রায় 100 tokens। কোনো system-এ agent-এর access দিতে MCP server ব্যবহার করুন। সেই access সঠিকভাবে ব্যবহারের procedure জানাতে skill ব্যবহার করুন। অনেক setup-এ দুটিই চালানো হয়।
Agent skills কি শুধু Claude Code-এর সঙ্গেই কাজ করে?
না। Anthropic এই format তৈরি করে পরে agentskills.io-এ open standard হিসেবে প্রকাশ করেছে। একই folder Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot, VS Code, Goose, OpenHands এবং অন্যান্য client পড়তে পারে। পার্থক্য হলো প্রতিটি client কোথায় এটি খোঁজে এবং কোন অতিরিক্ত frontmatter field বোঝে। Claude Code ~/.claude/skills/ এবং .claude/skills/ পড়ে। GitHub Copilot এবং VS Code repository-তে .github/skills/ পড়ে। SKILL.md file নিজে কোনো পরিবর্তন ছাড়াই client-গুলোর মধ্যে ব্যবহার করা যায়।
ধীর হয়ে যাওয়ার আগে কতগুলো skill install করা যায়?
এখানে সীমাবদ্ধতা সংখ্যার বদলে startup budget। Specification-এর প্রকাশিত guidance অনুযায়ী প্রতিটি installed skill তার name ও description-এর জন্য প্রায় 100 tokens যোগ করে। তাই কোনো skill ব্যবহার করার আগেই ত্রিশটি skill-এর খরচ প্রায় 3,000 tokens। প্রথমে যে সমস্যা হয় তা speed নয়, matching। একই ধরনের description-সহ অনেক skill থাকলে model-এর পক্ষে সঠিকটি বেছে নেওয়া কঠিন হয়। একে অপরের সঙ্গে overlap করে না এমন description লিখুন। আর যেসব skill ব্যবহার করা বন্ধ করেছেন, সেগুলো মুছে দিন।
এই instruction কি skill-এ রাখা উচিত, নাকি AGENTS.md-তে?
এটি repository-এর প্রতিটি task-এর ক্ষেত্রে প্রযোজ্য কি না, তা বিবেচনা করুন। Build command, house style এবং naming rule সব task-এর জন্য প্রযোজ্য। তাই এগুলো always-on file-এ রাখা উচিত। এই file প্রতিবার load হওয়ার জন্যই তৈরি। কোনো release checklist বা restore drill-এর মতো মাঝে মাঝে চালানো procedure skill হওয়া উচিত। যেসব task-এ এটি প্রয়োজন হয় না, সেগুলোতে এর কোনো খরচ থাকে না। AGENTS.md-এর কোনো section numbered step-এ পরিণত হলে সেটি সাধারণত সরিয়ে skill-এ রাখার উপযুক্ত procedure।