از Skill سازی تا Skill سنجی؛ بررسی Waza و skill-validator

یک قدم عقب‌تر…

قبل از معرفی ابزارها، یه مرور کنیم که: Agent Skill چیه و چرا اصلاً باید بهش اهمیت داد؟

هر بار که یه AI agent، مثل Claude Code، Copilot، یا Cursor داره روی کد شما کار می‌کنه، از یه context window محدود استفاده می‌کنه. این context می‌تونه شامل تاریخچهٔ مکالمه، کد پروژه، و یا «مهارت»‌هایی باشه که از قبل تعریف شدن. Agent Skill یه پکیجِ مستندشده‌ست که به agent می‌گه «وقتی با این نوع task روبرو شدی، این‌جوری رفتار کن.» یه نوع SOP (Standard Operating Procedure) برای agent. مثل «مهارت کدنویسی اصولی با جاوا» یا مثل «مهارت کامنت‌گذاری خوب روی کدها» یا «مهارت رعایت قوانین کدنویس تیم یا شرکت شما» و…

مشکل اینجاست که نوشتنِ یه skill خوب، ساده‌تر از validate و test کردنش به نظر می‌رسه. و دقیقاً همین‌جاست که ابزارهای نوظهوری مثل Waza و skill-validator وارد می‌شن.

Waza: یه Platform یکپارچه برای چرخهٔ حیاتِ Skill

Waza (به ژاپنی 技، به معنای «مهارت» یا «تکنیک») است. و یک CLI tool جدید که Microsoft با استفاده از زبان Go ساخته؛ پس یه binary واحد داره، و بدون dependency اضافی، روی Linux/macOS/Windows قابل استفاده است. هدفش اینه که کل lifecycle توسعهٔ skill رو در یه ابزار جمع کنه.

مشکلی که Waza حل می‌کنه

تصور کنید که یه skill جدید نوشتید. حالا چند تا سؤال پیش میاد:

آیا این skill واقعاً توسط ایجنت تشخیص داده می‌شه و در زمان مناسب مورد استفاده قرار گرفته می‌شه؟ آیا روی GPT و Claude هر دو به یه شکل عمل می‌کنه؟ آیا token budget رو به‌خوبی مدیریت می‌کنه؟ چجوری می‌تونم این رو به CI/CD pipeline وصل کنم؟ آیا ساختار frontmatter رو درست ساختم و ساختار کلی اسکیل درسته؟

قبل از Waza، جواب این سؤال‌ها یعنی چند ابزار جداگانه و تست دستی. Waza سعی می‌کنه این پراکندگی رو از بین ببره.

ساختار کار با Waza

چرخهٔ کار با Waza چهار مرحله داره:

Scaffold: یه ساختار منطق با اصول و استاندارد اولیه تولید می‌کنه تا از اول اشتباه نزنید.
Develop: با real-time compliance scoring، وقتی دارید محتوا می‌نویسید فیدبک می‌ده تا نهایتا یه اسکیل درست داشته باشین.
Test: با اجرای واقعی روی LLMها، رفتار ایجنت رو توی یک حلقه بررسی می‌کنه تا مطمئن شه همه چیز درسته.
Evaluate: مقایسهٔ cross-model با متریک‌های جامع و متنوع.

مثال عملی: مقایسهٔ دو مدل

فرض کنید یه skill نوشتید برای تولید کد مایگریشن روی PostgreSQL. می‌خواید ببینید Claude Sonnet 4.6 و GPT-4.4 چقدر متفاوت با این skill تعامل می‌کنن:

waza run eval.yaml --model claude-sonnet-4-6 -o claude.json
waza run eval.yaml --model gpt-4-4 -o gpt4.json
waza compare claude.json gpt4.json

این یعنی به‌جای اینکه با هر مدل دستی تست کنید و نتایج رو ذهنی مقایسه کنید، یه خروجی structured دارید که می‌گه کدوم مدل چقدر با skill شما همسوتره.

۱۱ نوع Validator

Waza برای ارزیابی خروجی، ۱۱ نوع validator داره: از text matching ساده گرفته تا Python assertion، JSON Schema validation، و حتی LLM-powered evaluation (جایی که یه LLM دیگه قضاوت می‌کنه). مهم‌ترینشون از نظر طراحی، «Action Sequence» و «Skill Invocation» هستن؛ یعنی می‌تونید بررسی کنید که ایجنت دقیقاً از چه ابزارهایی و با چه ترتیبی عبور کرده.

Roadmap فعلی

پروژه هنوز در حال توسعه‌ست. بخش‌های E2 (Sensei Engine برای compliance scoring) و E3 (Evaluation Framework با statistical analysis) هنوز کامل نشدن. اگه الان می‌خواید از Waza استفاده کنید، E1 (CLI پایه) و E6 (CI/CD integration) کامل و stable هستن.

skill-validator: وقتی «compliance» کافی نیست

skill-validator یه CLI tool مستقله. با Go نوشته‌شده، و ماهیتش سنجش سلامت و اعتبار اسکیل‌هاست. برای اینکه مطمئن بشیم یه اسکیل درست کار می‌کنه؛ هم باید ساختار درست داشته باشه، هم محتوای درست. مثلا frontmatter رو درست نوشته باشین (مثلا توی نسخه‌های اولیه اسکیل جای metadata با نسخه‌های فعلی فرق داره و مهمه که ساختار فایل درست باشه).
از طرف دیگه گاهی ساختار درست و کاملا منطبق با استاندارد است؛ ولی ولی لینک‌هاش سالم نیستن یا به یه فایل ۶۰ هزار کلمه‌ای رفرنس داده شده، از نظر فنی پاس می‌شه؛ ولی در عمل افتضاحه!

این ابزار فراتر از validation می‌ره و کیفیت محتوا رو هم اندازه می‌گیره.

چه فاکتورهایی رو چک می‌کنه؟

ساختار: آیا SKILL.md وجود داره؟ آیا فیلدهای frontmatter درسته؟ آیا token budget رعایت شده؟ (SKILL.md body نباید از ۵۰۰۰ توکن (کلمه) بیشتر بشه، هر reference file نباید از ۲۵۰۰۰ توکن عبور کنه.)

لینک‌ها: لینک‌های خارجی واقعاً resolve می‌شن؟ نکته: HTTP 403 رو به‌عنوان warning گزارش می‌ده نه error، چون خیلی از سایت‌ها هدر درخواست رو چک می‌کنن و چون درخواست از سمت یک مرورگر نیومده و از سمت یک ایجنت هوش‌مصنوعی اومده، بلاکش می‌کنن.

کیفیت محتوا: چند تا متریک داره: نسبت کد به متن، نسبت جملات imperative، «instruction specificity» (نسبت زبان directive مثل «must/always/never» به زبان advisory مثل «may/consider»)، و «information density».

Contamination: یکی از جالب‌ترین feature‌هاست. اگه یه skill که برای MongoDB نوشته شده، مثال‌های Python و JavaScript و Shell با هم داشته باشه، ممکنه agent رو گیج کنه. این ابزار این cross-language contamination رو detect می‌کنه.

LLM-as-judge: با استفاده از Claude یا GPT-4o، اسکیل شما رو روی ۶ بُعد امتیاز می‌ده: Clarity، Actionability، Token Efficiency، Scope Discipline، Directive Precision، و Novelty. مهم‌ترینشون از نظر تحقیقات آکادمیک، Novelty است؛ skillهایی که اطلاعاتی می‌دن که مدل قبلاً نمی‌دونسته، بیشترین value رو به agent اضافه می‌کنن.

مثال عملی: اجرای کامل check

skill-validator check --strict --emit-annotations ./my-skill/

خروجی چیزی شبیه اینه:

Validating skill: my-skill/

Structure
  ✓ SKILL.md found

Frontmatter
  ✓ name: "my-skill" (valid)
  ✓ description: (54 chars)

Tokens
  SKILL.md body:        1,250 tokens
  references/guide.md:    820 tokens
  ─────────────────────────────────────
  Total:                2,070 tokens

Result: passed

یکپارچه‌سازی با CI/CD

یه GitHub Actions workflow کامل این‌جوری به نظر می‌رسه:

name: Validate Skills
on:
  pull_request:
    paths:
      - "skills/**"
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install skill-validator
        run: brew install agent-ecosystem/tap/skill-validator
      - name: Validate skills
        run: |
          skill-validator check --strict --emit-annotations skills/
          skill-validator check --strict -o markdown skills/ >> "$GITHUB_STEP_SUMMARY"

نکتهٔ مهم: --strict یعنی هم error هم warning باعث fail شدن pipeline می‌شه. برای draft skillها می‌تونید --strict رو بردارید تا warning‌ها non-blocking بمونن.


مقایسه: کِی کدوم رو استفاده کنیم؟

این دو ابزار رقیب هم نیستن؛ مکمل هم هستن.

skill-validator برای validation و quality check طراحی شده. سریعه، بدون API key کار می‌کنه (به‌جز بخش LLM scoring)، و به‌عنوان pre-commit hook عالیه. اگه می‌خواید مطمئن بشین که skill شما از نظر ساختاری و محتوایی سالمه، ابزار خوبیه.

Waza برای اجرا، ارزیابی، و مقایسهٔ cross-model طراحی شده. می‌خواید بدونید skillی که ساختین واقعاً در کنار یه ایجنت چجوری رفتار می‌کنه؟ می‌خواید GPT و Claude رو مقایسه کنین؟ Waza برای پاسخ دادن به این سوال‌هاست.

اگر یه pipeline بالغ طراحی کنیم، هر دو تاشون کاربرد دارن: skill-validator توی مرحله pre-commit و PR validation، و Waza توی regression testing و benchmark tracking.


جمع‌بندی:

اگه می‌خواین skillها رو به صورت جدی توی فرایند توسعه‌تون پیاده کنین که دیگه این روزها یه موضوع بدیهیه، این ابزارها مستقیماً به کارتون می‌یاد. چون اسکیل بد، مثل کد بد می‌مونه ولی با سطح اثرگذاری گاها خیلی وسیع‌تر!

از یه زاویهٔ دیگه هم مهمه: ما داریم وارد دورانی می‌شیم که agent skillها به‌عنوان یه artifact مستقل؛ مثل یه پکیج یا لایبری شدن. همون‌طور که برای npm package یه linter و test suite داریم، برای skill هم به همین زیرساخت‌ها و ابزارها نیاز داریم. Waza و skill-validator اولین generation از این infrastructure هستن.

دیدگاهتان را بنویسید