اسکیل (Skill) در ایجنت هوش مصنوعی چیست؟ + آموزش ساخت Skill در Hermes Agent
اسکیل (Skill) در ایجنتهای هوش مصنوعی چیست؟ و چطور برای Hermes Agent میسازیم
اگر این روزها با ایجنتهای هوش مصنوعی مثل Claude، Hermes Agent، Codex یا Gemini CLI کار کرده باشید، احتمالاً به کلمهی Skill برخوردهاید. اسکیل هوش مصنوعی، سادهترین تعریفش این است: یک پوشهی کوچک روی دیسک که به ایجنت یاد میدهد «چطور» یک کار مشخص را بهدرستی و همیشه یکجور انجام دهد ؛ بدون اینکه مجبور باشید هر بار همان دستورالعمل طولانی را در پرامپت تایپ کنید.
در این مقاله سه چیز را با هم مرور میکنیم: اول اینکه مفهوم اسکیل از کجا آمد و چرا الان یک استاندارد باز بین چند شرکت است؛ دوم اینکه Hermes Agent (محصول متنباز Nous Research) دقیقاً چطور این مفهوم را پیاده کرده؛ و سوم، قدمبهقدم یک Skill واقعی و کاربردی برای Hermes میسازیم.
اسکیل با ابزار (Tool) و حافظه (Memory) چه فرقی دارد؟
قبل از هر چیز باید سه مفهوم را از هم جدا کرد، چون در بحث ایجنتها زیاد قاطی میشوند:
| مفهوم | نقش | مثال |
|---|---|---|
| Tool (ابزار) | یک قابلیت اجرایی مستقیم؛ چیزی که ایجنت میتواند انجام دهد | جستوجوی وب، اجرای کد، خواندن فایل |
| Memory (حافظه) | واقعیتهای کوچک و شخصی که باید یادآوری شوند | «ایمیل کاری کاربر فلان است» |
| Skill (اسکیل) | دانش رویهای؛ چطور از ابزارها برای رسیدن به یک نتیجه استفاده کنیم | «برای بررسی PR گیتهاب اول تستها را چک کن، بعد استایل کد را، بعد امنیت را» |
یک قانون سرانگشتی ساده و کاربردی که در مستندات Hermes هم آمده این است: اگر چیزی را در یک سند مرجع مینوشتید، اسکیل است؛ اگر آن را روی یک یادداشت چسبان مینوشتید، حافظه است. اسکیل باید متمرکز باشد؛ یک Skill که بخواهد «کل DevOps» را پوشش دهد، هم طولانی میشود هم مبهم. اما Skillی که فقط «دیپلوی یک اپ Python روی Fly.io» را پوشش میدهد، دقیقاً بهاندازهای مشخص است که واقعاً کاربردی باشد.
استاندارد باز Agent Skills از کجا آمد؟
مفهوم Skill به شکل فعلیاش را در ابتدا Anthropic برای Claude طراحی کرد، اما در تاریخ ۱۸ دسامبر ۲۰۲۵ آن را بهعنوان یک استاندارد باز در آدرس agentskills.io منتشر کرد. طی همان چند هفته اول، مایکروسافت (VS Code / GitHub Copilot) و OpenAI (ChatGPT، Codex CLI) هم از آن پشتیبانی کردند، و در ماههای بعد ابزارهایی مثل Gemini CLI، Cursor، JetBrains و از جمله همین Hermes Agent هم به این استاندارد پیوستند. نتیجه این شده که یک Skill که برای یک ابزار مینویسید، معمولاً بدون تغییر در ابزار دیگری هم کار میکند ؛ فقط مسیر پوشه فرق دارد.
ساختار پایهی یک اسکیل
طبق مشخصات رسمی، هر اسکیل یک پوشه است که حداقل شامل یک فایل SKILL.md است:
my-skill/ ├── SKILL.md # الزامی: متادیتا + دستورالعمل ├── scripts/ # اختیاری: کد قابلاجرا (پایتون، بش، جاوااسکریپت) ├── references/ # اختیاری: مستندات مرجع برای مطالعهی بیشتر └── assets/ # اختیاری: قالبها و فایلهای کمکی
فایل SKILL.md از دو بخش تشکیل شده: یک Frontmatter به فرمت YAML بین دو خط ---، که حداقل باید دو فیلد name و description را داشته باشد، و زیرش متن Markdown دستورالعمل. طبق مشخصات، نام اسکیل باید حروف کوچک، اعداد و خطتیره باشد (حداکثر ۶۴ کاراکتر، بدون خطتیره در ابتدا/انتها)، و description هم سقف ۱۰۲۴ کاراکتری دارد و باید هم «چه کاری میکند» و هم «چه زمانی استفاده شود» را توضیح دهد.
مدل سهلایهی بارگذاری تدریجی (Progressive Disclosure)
مهمترین ایدهی طراحی اسکیل همین است و دلیل اصلی محبوبیتش هم همین است: ایجنت هیچوقت همهی اسکیلها را کامل در حافظه نگه نمیدارد.
- لایهی کشف (در حدود ۱۰۰ توکن): فقط
nameوdescriptionهر اسکیل، در زمان شروع مکالمه بارگذاری میشود. - لایهی فعالسازی (سقف پیشنهادی حدود ۵۰۰۰ توکن): وقتی کار کاربر با description یک اسکیل همخوانی داشته باشد، کل بدنهی SKILL.md خوانده میشود.
- لایهی اجرا (فقط در صورت نیاز): فایلهای داخل
scripts/،references/وassets/تنها زمانی بارگذاری میشوند که دستورالعمل صریحاً به آنها ارجاع دهد.
نتیجهی عملی این طراحی این است که میتوانید دهها اسکیل نصبشده داشته باشید بدون اینکه هیچکدام هزینهی توکن اضافهای تحمیل کنند ؛ تا وقتی که واقعاً به آنها نیاز پیدا شود.
اسکیل در Hermes Agent دقیقاً چطور کار میکند؟
Hermes Agent، ساختهی Nous Research، سیستم Skills خودش را کاملاً بر همین استاندارد باز agentskills.io بنا کرده، اما چند لایهی خاص خودش را هم روی آن اضافه کرده است.
محل ذخیرهسازی
تمام اسکیلهای Hermes در مسیر ~/.hermes/skills/ زندگی میکنند؛ این پوشه، منبع اصلی و اولیهی حقیقت است. در نصب اولیه، اسکیلهای همراه (bundled) از مخزن کپی میشوند و هر بار که Hermes آپدیت شود، اسکیلهای جدید هم اضافه میشوند. علاوه بر این، میتوانید یک یا چند پوشهی خارجی هم به Hermes معرفی کنید (مثلاً ~/.agents/skills/) تا بین چند ابزار به اشتراک بگذارید؛ اگر نام یک اسکیل هم در پوشهی محلی و هم خارجی تکرار شود، نسخهی محلی اولویت دارد.
~/.hermes/skills/ # محلی - منبع اصلی، قابل خواندن/نوشتن
├── devops/deploy-k8s/
│ └── SKILL.md
└── mlops/axolotl/
└── SKILL.md
~/.agents/skills/ # خارجی - مشترک بین چند ابزار
├── my-custom-workflow/
└── team-convention/
فرمت کامل Frontmatter در Hermes
Hermes روی فرمت پایهی استاندارد باز، چند فیلد اختصاصی هم زیر کلید metadata.hermes اضافه کرده:
---
name: my-skill
description: Brief description (shown in skill search results)
version: 1.0.0
author: Your Name
license: MIT
platforms: [macos, linux] # اختیاری - محدود کردن به سیستمعامل خاص
metadata:
hermes:
tags: [Category, Subcategory, Keywords]
related_skills: [other-skill-name]
requires_toolsets: [web] # فقط وقتی این toolset فعال است نمایش داده شود
requires_tools: [web_search]
fallback_for_toolsets: [browser] # وقتی این toolset فعال است، مخفی شود
fallback_for_tools: [browser_navigate]
config: # تنظیمات غیرمحرمانه در config.yaml
- key: my.setting
description: "توضیح تنظیم"
default: "sensible-default"
prompt: "متن راهنما هنگام تنظیم اولیه"
blueprint: # اختیاری - این اسکیل را به یک اتوماسیون زمانبندیشده تبدیل میکند
schedule: "0 9 * * *"
deliver: origin
prompt: "دستور اجرای هر بار"
required_environment_variables: # کلیدهای API یا توکنهای محرمانه
- name: MY_API_KEY
prompt: "کلید API خود را وارد کنید"
help: "از این آدرس بگیرید: https://example.com"
required_for: "دسترسی به API"
---
نکتهی کاربردی: فیلدهای requires_toolsets/requires_tools اسکیل را وقتی ابزار موردنیازش موجود نیست مخفی میکنند، و فیلدهای fallback_for_* برعکسش عمل میکنند ؛ یعنی یک اسکیل جایگزین را فقط وقتی ابزار اصلی در دسترس نیست نشان میدهند. برای مثال یک اسکیل جستوجوی جایگزین با DuckDuckGo را میتوان طوری تنظیم کرد که فقط وقتی ابزار جستوجوی اصلی (که نیاز به کلید API دارد) پیکربندی نشده، فعال شود.
بدنهی استاندارد SKILL.md در Hermes
بعد از Frontmatter، بدنهی توصیهشده معمولاً این بخشها را دارد:
- When to Use
؛چه زمانی ایجنت باید این اسکیل را بار کند - Quick Reference
؛جدول دستورات یا فراخوانیهای پرکاربرد - Procedure
؛مراحل گامبهگام - Pitfalls
؛خطاهای رایج و راهحلشان - Verification
؛چطور مطمئن شویم کار درست انجام شده
چند قابلیت خاص Hermes که ارزش دانستن دارد
/learn: یک دستور زنده که خودِ ایجنت با ابزارهای خودش (خواندن فایل، جستوجوی فایلها، استخراج وب) منبع را جمعآوری میکند و یک SKILL.md استاندارد مینویسد؛ وقتی از طریق/learnنوشته میشود، Hermes یک قاعدهی سختگیرانهتر هم اعمال میکند: description زیر ۶۰ کاراکتر و ترتیب بخشبندی استاندارد.- نوشتن خودکار توسط ایجنت: بعد از یک کار پیچیدهی چندمرحلهای، Hermes معمولاً پیشنهاد میدهد همان روش را بهعنوان اسکیل ذخیره کند ؛ این اسکیلهای خودنوشته، دقیقاً مسیر واقعی حل مسئله از جمله مشکلاتی که در راه پیدا شده را ثبت میکنند.
- گیت تأیید (
write_approval): بهطور پیشفرض Hermes آزادانه اسکیل مینویسد؛ اگر میخواهید هر تغییر ابتدا تأیید شما را بگیرد،write_approval: trueرا فعال کنید تا نوشتهها staged شوند و با/skills pending،/skills diff،/skills approveبررسی و تأیید شوند. - Blueprint: یک اسکیل معمولی که یک بلوک
blueprintهم در Frontmatterاش دارد، به یک اتوماسیون زمانبندیشده (cron) تبدیل میشود؛ نصبش هرگز بهصورت خودکار زمانبندی نمیشود، بلکه بهعنوان یک پیشنهاد در/suggestionsمینشیند تا خودتان تأیید کنید.
Skill بسازیم یا Tool؟
مستندات رسمی Hermes یک قاعدهی روشن دارد: اگر قابلیت را میتوان با «دستورالعمل + دستورات شل + ابزارهای موجود Hermes» پیاده کرد (مثلاً کار با یک CLI یا API از طریق terminal)، آن را Skill بسازید. فقط وقتی به یکپارچهسازی عمیق، مدیریت پیچیدهی کلید API، پردازش دادهی باینری یا رویدادهای بیدرنگ نیاز دارید (مثل اتوماسیون مرورگر یا تبدیل گفتار به متن)، سراغ ساخت Tool بروید.
قدمبهقدم: ساخت یک اسکیل ساده برای Hermes Agent
بیایید یک اسکیل واقعی و کاربردی بسازیم: اسکیلی که یک خروجی CSV از Google Search Console (فایلهای Pages، Queries، Countries، Devices) را میگیرد و یک جدول اولویتبندیشده از فرصتهای سئو تحویل میدهد. این دقیقاً همان نوع اسکیلی است که مستندات Hermes توصیه میکند: مشخص، تکرارپذیر، و روی ابزارهای موجود (terminal, execute_code) سوار است ؛ نه یک قابلیت مبهم و کلی.
گام ۱ – تصمیم بگیرید Skill است یا Tool
این کار فقط خواندن CSV، محاسبهی چند شاخص، و تولید جدول است ؛ هیچ کلید API یا پردازش بیدرنگی لازم ندارد. پس طبق قاعدهی بالا، Skill انتخاب درستی است.
گام ۲ – مسیر و دستهبندی را انتخاب کنید
اسکیلهای Hermes معمولاً داخل زیرپوشههایی بر اساس حوزهی کاری سازماندهی میشوند (برای نمونه در مخزن رسمی: research/arxiv، productivity/ocr-and-documents، devops/deploy-k8s). برای این اسکیل، دستهی منطقی productivity یا یک دستهی اختصاصی seo است:
~/.hermes/skills/productivity/gsc-quick-audit/
├── SKILL.md
└── scripts/
└── analyze_gsc.py
گام ۳ – Frontmatter را بنویسید
---
name: gsc-quick-audit
description: Audits Google Search Console CSV exports (Pages, Queries, Countries, Devices) and returns a prioritized table of quick-win SEO opportunities. Use when the user shares GSC export files and asks for an SEO audit, quick wins, or optimization priorities.
version: 1.0.0
author: your-name
license: MIT
metadata:
hermes:
tags: [seo, search-console, audit, reporting]
related_skills: [content-brief-writer]
requires_toolsets: [terminal]
---
گام ۴ – بدنهی اسکیل را بنویسید
# بررسی سریع گزارش Search Console ## When to Use وقتی کاربر فایلهای خروجی Google Search Console (Pages.csv، Queries.csv، Countries.csv، Devices.csv) را میفرستد و میخواهد بداند کدام صفحات یا کوئریها بیشترین پتانسیل بهبود را دارند. ## Quick Reference | فایل | ستونهای کلیدی | |---|---| | Pages.csv | Top pages, Clicks, Impressions, CTR, Position | | Queries.csv | Top queries, Clicks, Impressions, CTR, Position | | Countries.csv | Country, Clicks, Impressions, CTR, Position | | Devices.csv | Device, Clicks, Impressions, CTR, Position | ## Procedure 1. هر CSV را با pandas بخوان. 2. ستون CTR را از رشتهی درصدی (مثلاً "3.2%") به عدد اعشاری تبدیل کن. 3. ردیفهایی را جدا کن که Impressions بالا اما CTR پایینتر از میانگین کلی دارند - اینها «برندههای پنهان»اند. 4. ردیفهایی با Position بین ۵ تا ۱۵ را مشخص کن - نزدیکترینها به صفحهی اول، بیشترین بازگشت را برای بهینهسازی دارند. 5. یک جدول ۱۰ ردیفی بساز، مرتبشده بر اساس Impressions × (۱ − CTR). 6. برای سه ردیف اول، یک پیشنهاد عملی یکخطی بنویس. ## Pitfalls - ستون CTR رشته است، نه عدد؛ حتماً قبل از محاسبه تبدیلش کن. - ردیفهایی با Impressions زیر ۱۰ را نادیده بگیر (نویز آماری). - اگر Search Appearance.csv خالی بود، آن را کامل رد کن. ## Verification جدول خروجی باید دقیقاً ۱۰ ردیف داشته باشد، همهی مقادیر CTR بین ۰ و ۱ باشند، و امکان مرتبسازی صعودی بر اساس Position را داشته باشد.
گام ۵ – یک اسکریپت کمکی اضافه کنید (اختیاری اما توصیهشده)
مستندات Hermes صریحاً توصیه میکند برای پردازشهای ساختاریافته (مثل تبدیل CSV یا JSON)، بهجای اینکه هر بار از مدل بخواهید کد را از نو بنویسد، یک اسکریپت آماده در scripts/ بگذارید. کافیست در SKILL.md به آن ارجاع دهید:
برای تحلیل، این اسکریپت را اجرا کن:
python ${HERMES_SKILL_DIR}/scripts/analyze_gsc.py <مسیر-پوشه-csv>
توکن ${HERMES_SKILL_DIR} بهصورت خودکار با مسیر مطلق پوشهی اسکیل جایگزین میشود، پس ایجنت مسیر را حدس نمیزند.
گام ۶ – اسکیل را تست کنید
hermes chat --toolsets skills -q "با اسکیل gsc-quick-audit این فایلهای Search Console را بررسی کن"
اگر خروجی جدول ۱۰ ردیفی و پیشنهادهای عملی را دید، اسکیل درست کار میکند. اگر اسکیل اصلاً فعال نشد، اولین جای بررسی description است، نه Procedure ؛ چون فعالسازی صرفاً بر اساس تطابق description با درخواست کاربر انجام میشود.
گام ۷ – به اشتراک بگذارید
اگر میخواهید این اسکیل را با تیم یا عموم به اشتراک بگذارید:
# انتشار در Skills Hub hermes skills publish skills/gsc-quick-audit --to github --repo owner/repo # یا افزودن یک مخزن اختصاصی بهعنوان tap hermes skills tap add owner/repo
اشتباهات رایجی که باید از آنها دوری کنید
- description مبهم: اگر description دقیق و با کلمات کلیدی روشن نباشد، اسکیل تقریباً هیچوقت فعال نمیشود؛ فعالسازی خودکار کاملاً به همین یک فیلد وابسته است.
- اسکیل خیلی کلی: اسکیلی که میخواهد «همهی سئو» یا «کل DevOps» را پوشش دهد، هم طولانی میشود هم غیرقابلاتکا. آن را به چند اسکیل کوچک و متمرکز بشکنید.
- نداشتن بخش Verification: بزرگترین اشتباه این است که فرض کنیم ایجنت خودش میداند «انجامشدن درست» یعنی چه؛ همیشه یک معیار قابلبررسی مشخص کنید.
- وابستگی غیرضروری به پکیج خارجی: تا جای ممکن از کتابخانهی استاندارد پایتون، curl، و ابزارهای ازپیشموجود Hermes استفاده کنید؛ اگر واقعاً به یک پکیج نیاز دارید، مراحل نصبش را داخل خود اسکیل مستند کنید.
سؤالات متداول
فرق Skill با Tool چیست؟ Tool یک قابلیت اجرایی است (مثل جستوجوی وب)؛ Skill دانش رویهای است که به ایجنت میگوید چطور از آن ابزارها برای رسیدن به یک نتیجهی مشخص استفاده کند.
آیا اسکیلهای ساختهشده برای Hermes با Claude یا Codex هم کار میکنند؟ تا جایی که فقط از فرمت پایهی استاندارد (Frontmatter با name و description + بدنهی Markdown) استفاده کنید، بله؛ چون Hermes با استاندارد باز agentskills.io سازگار است. فیلدهای اختصاصی زیر metadata.hermes فقط در خود Hermes معنا دارند.
اسکیلها کجا ذخیره میشوند؟ در Hermes، مسیر اصلی ~/.hermes/skills/ است؛ میتوان پوشههای خارجی اضافه (مثل ~/.agents/skills/) را هم برای اشتراکگذاری بین چند ابزار معرفی کرد.
آیا خودِ Hermes میتواند اسکیل بسازد؟ بله، به دو شکل: دستور /learn که از منابع مشخصشده (فایل، URL، مکالمه) یک SKILL.md مینویسد، و پیشنهاد خودکار بعد از یک کار پیچیده که اگر بپذیرید، همان روند کاری را بهعنوان اسکیل ذخیره میکند.
جمعبندی
اسکیل، لایهای است که ایجنتهای هوش مصنوعی را از «دستیارهای عمومی با پرامپتهای تکراری» به «همکارهایی با رویهی مشخص و قابلاعتماد» تبدیل میکند. چون این مفهوم الان یک استاندارد باز است، یک بار درستنوشتن یک SKILL.md، سرمایهای میشود که در Hermes Agent، Claude، Codex و دهها ابزار دیگر همانطور کار میکند. اگر تازه شروع کردهاید، بهترین نقطهی شروع دقیقاً همان چیزی است که در این مقاله ساختیم: یک اسکیل کوچک، با description دقیق، و یک بخش Verification روشن.
دیدگاهتان را بنویسید