پرش به محتوا
28/30فصل 28 از 30

Agent Skills و SKILL.md: افشای تدریجی، با اندازه‌گیری

پنج skill واقعی با 128,374 token دستورالعمل فقط 253 token از context را می‌گیرند؛ اما توضیح کوتاه باعث می‌شود agent پیدایشان نکند.

در این صفحه

پروژه‌ای را در نظر بگیرید که پنج skill منتشرشده در آن نصب شده است. هزینه‌شان این است.

terminalBASH
ls .claude/skills/
TEXT
next-best-practices  next-cache-components  vercel-composition-patterns
vercel-react-best-practices  vercel-react-native-skills
o200k_base tokens, measuredTEXT
skill                              level 1   level 2    level 3   files
next-best-practices                     40       966     19,374      19
next-cache-components                   28     2,334          0       0
vercel-composition-patterns             59       533     10,667      13
vercel-react-best-practices             68     1,670     53,670      75
vercel-react-native-skills              58       950     37,957      41
                                    ------   -------   --------
total                                  253     6,453    121,668

صد و بیست‌وهشت هزار token دستورالعمل، مثال و قاعده — بیش از چیزی که در یک context window 128,000-token جا می‌شود — و هزینه ثابتِ در دسترس داشتن هر پنج‌تا 253 token است، دو دهمِ یک درصد. هیچ چیز دیگری در این دوره چنین شکلی ندارد. تعریف یک ابزار، چه استفاده شود چه نشود، در هر درخواست پرداخت می‌شود، و فصل 26 یک MCP server را پیش از آنکه اصلاً کاری بکند 1,619 token اندازه گرفت: سی‌ودو برابر خط سطح 1 میانگین در جدول بالا.

این فصل درباره سازوکاری است که این نسبت را می‌سازد، درباره دو راهی که در آن می‌شکند، و درباره پرسشی که این سازوکار تحمیل می‌کند و تقریباً هیچ‌کس پاسخ نمی‌دهد: اگر تکه‌ای دانش داشته باشیم، جای آن در کدام‌یک از چهار محل است.

چرا این فصل زبان برنامه‌نویسی ندارد

لینک به بخش: چرا این فصل زبان برنامه‌نویسی ندارد

فصل 14 قانون نیمه دوم این دوره را تعیین کرد — connectionها، retryها و cancellation با TypeScript هستند — و پنج استثنا اعلام کرد. این یکی از آن‌هاست، و دلیلش سلیقه نیست.

یک skill یک فایل Markdown است. نه فایلی که یک برنامه را پیکربندی کند، نه فایلی که برنامه آن را کامپایل کند: سندی است که مدل می‌خواند، همان‌طور که پیامی را که شما تایپ کرده‌اید می‌خواند. اگر به این فصل زبان برنامه‌نویسی بدهیم یعنی قالب را نفهمیده‌ایم، و همین بدفهمی رایج‌ترین بدفهمی درباره skillهاست. هرچه در ادامه می‌آید Markdown و YAML است، به‌علاوه یک shell script کوچک که دقیقاً برای نشان دادن این وجود دارد که کد کجا داخل skill جا دارد و کجا ندارد.

صورتحسابی که حل می‌کند، و حسابِ فصل 16 است

لینک به بخش: صورتحسابی که حل می‌کند، و حسابِ فصل 16 است

این یک دستورالعمل واقعی است: اینکه یک شرکت release noteهایش را چطور می‌نویسد. این یک رویه است، نه ترجیح — مجموعه‌ای مرتب از گام‌ها، یک taxonomy، یک صدا، یک template و scriptی دارد که مواد خام را جمع می‌کند.

همه‌اش را مثل بیشتر تیم‌ها در system prompt بگذارید، و حسابِ فصل 16 شروع می‌شود. system prompt یک پیشوند است، و پیشوند در هر call پرداخت می‌شود. اندازه‌گیری‌شده با o200k_base روی پوشه‌ای که برای این فصل نوشته شده:

the same instruction, two ways, 40 turnsTEXT
whole thing pasted into the system prompt   1,716 x 40  =  68,640 input tokens   $0.1373
as a skill, activated once on turn 12          46 x 40
                                            + 324 (SKILL.md body)
                                            + 665 (two reference files read)
                                                        =   2,829 input tokens   $0.0057
as a skill, never activated at all             46 x 40  =   1,840 input tokens   $0.0037

وقتی استفاده می‌شود بیست‌وچهار برابر ارزان‌تر، وقتی استفاده نمی‌شود سی‌وهفت برابر ارزان‌تر. نرخ‌ها همان نرخ‌های فصل 16 هستند: $2.00 به‌ازای هر میلیون input token.

حالا اعتراض صادقانه، چون فصلی که از آن بگذرد تبلیغ است. prompt caching تقریباً شکاف پولی را می‌بندد. یک system prompt پایدار است و اول می‌نشیند، که آن را به بهترین نامزد cache تبدیل می‌کند؛ با $0.20 به‌ازای هر میلیون ورودی cacheشده، همان 68,640 token به‌جای $0.1373، $0.0168 هزینه دارد. هنوز سه برابر skill، اما دیگر از یک مرتبه بزرگی متفاوت نیست.

پول هیچ‌وقت قوی‌ترین استدلال نبود. این بود:

Caching یک پیشوند دائمی را ارزان‌تر می‌کند. کوچک‌ترش نمی‌کند.

در نوبت 40، نسخه system-prompt هنوز 1,716 token سیاست release-note را در context window نگه داشته، در گفت‌وگویی که درباره چیز کاملاً دیگری است، و با چیزی رقابت می‌کند که فصل 24 آن را بودجه attention مدل نامید. نسخه skill فقط 46 دارد. اگر چیز اشتباه را cache کنید، فقط برای یک حواس‌پرتی تخفیف خریده‌اید.

به‌صورت فرمول، با nn نوبت، L1L_1 metadata، L2L_2 body، L3L_3 کل بسته و RR مجموعه فایل‌های bundled که واقعاً خوانده شده‌اند:

system prompt=n(L1+L2+L3)skill=nL1+1[used](L2+iRL3(i))\text{system prompt} = n\,(L_1 + L_2 + L_3) \qquad \text{skill} = n\,L_1 + \mathbb{1}[\text{used}]\left(L_2 + \sum_{i \in R} L_3^{(i)}\right)

کل این فصل تفاوت میان ضرب کردن جمله دوم در nn و ضرب کردنش در یک یا صفر است.

یک skill یک directory است. مشخصات آن آن‌قدر کوتاه است که می‌شود کامل بیانش کرد:

the whole formatTEXT
release-notes/
├── SKILL.md          # required: YAML frontmatter + Markdown instructions
├── scripts/          # optional: executable code
├── references/       # optional: documentation read on demand
├── assets/           # optional: templates, schemas, examples
└── ...               # anything else you like

SKILL.md باید با YAML frontmatter شروع شود، و دقیقاً دو field الزامی است: name و description.1 چهار مورد دیگر اختیاری‌اند و هیچ مورد دیگری تعریف نشده است:

FieldRequiredConstraint
nameبله1–64 نویسه، حروف کوچک، رقم و خط تیره؛ بدون خط تیره در ابتدا، انتها یا دوتایی؛ باید با نام directory یکی باشد
descriptionبله1–1024 نویسه، غیرخالی؛ می‌گوید skill چه می‌کند و چه زمانی باید استفاده شود
licenseنهنام یک license، یا نام یک فایل license در bundle
compatibilityنهتا 500 نویسه: محصول هدف، packageهای لازم، دسترسی شبکه
metadataنهmap آزاد از keyهای string به valueهای string، برای tooling خودتان
allowed-toolsنهفهرست جداشده با فاصله از ابزارهای ازپیش‌تأییدشده؛ با برچسب آزمایشی

این هم skill مربوط به release-notes، کامل، با body کمتر از سی خط:

release-notes/SKILL.mdMARKDOWN
---
name: release-notes
description: Write the release notes for a tagged version in this company's house style. Use when preparing a release, drafting a changelog entry, or when someone asks for the notes for a version number or a tag.
allowed-tools: Bash(git log:*) Bash(git tag:*) Read
---

# Release notes

## Procedure

1. Run `scripts/collect.sh <previous-tag> <new-tag>`. It prints one line per merged
   pull request: number, title, author and the labels.
2. Drop every line whose labels contain `internal`, `ci` or `chore`.
3. Put each surviving line into exactly one of the four categories in
   [references/categories.md](references/categories.md). A change that seems to fit two
   belongs in the higher one; the order in that file is the order of precedence.
4. Rewrite each line as a sentence in the voice defined in
   [references/voice.md](references/voice.md). The pull request title is a note to
   the team; the release note is a note to a stranger.
5. Check the result against [references/examples.md](references/examples.md).

## The one rule that is not negotiable

Every note says what a person can now do, or what stopped happening to them. If a
sentence can only be understood by someone who has read the diff, it is not finished.

بخوانید این body چیست. policy نیست — فهرست مطالبی با ترتیب عملیات است. policy در سه فایلی زندگی می‌کند که نامشان را می‌آورد و در خود وارد نمی‌کند. و گام اول کار را به یک script می‌سپارد، چون کدِ script اصلاً وارد context window نمی‌شود: فقط خروجی‌اش وارد می‌شود.2

مدل بارگذاری یک نام و سه مرحله دارد. مشخصات، آن‌ها را همراه با بودجه token بیان می‌کند:1

  1. Metadata، حدود 100 token: name و description، هنگام startup برای هر skill نصب‌شده بارگذاری می‌شود.
  2. Instructions، توصیه‌شده زیر 5,000 token: bodyِ SKILL.md، وقتی skill فعال می‌شود بارگذاری می‌شود.
  3. Resources، در صورت نیاز: فایل‌های bundled، فقط وقتی چیزی به آن‌ها نیاز دارد بارگذاری می‌شوند.

مستندات مرجع یک ستون چهارم هم روی همان جدول می‌گذارد — زمان بارگذاری، هزینه token، محتوا — و سطری که مهم است سطر سوم است: هیچ، تا وقتی accessed شود.3 جمله‌ای که کل فصل را خلاصه می‌کند هم همان‌جاست:

فایل‌ها تا وقتی accessed نشوند context مصرف نمی‌کنند، بنابراین Skills می‌توانند مستندات جامع API، datasetهای بزرگ یا مثال‌های گسترده را شامل شوند. برای محتوای bundled که استفاده نمی‌شود، جریمه context وجود ندارد.3

جدول اندازه‌گیری‌شده ابتدای این فصل همان ادعاست که در برابر پنج skill که هیچ‌کس برای این مقاله ننوشته بررسی شده. دو ردیف ارزش دارند کنار هم خوانده شوند.

next-best-practices یک body 966-token دارد که به نوزده فایل با 19,374 token لینک می‌دهد. از آن بخواهید یک خطای hydration را درست کند و agent، body به‌علاوه hydration-error.md را می‌خواند: 1,409 token از 20,340، ضریب چهارده، و هجده فایل دیگر هرگز باز نمی‌شوند.

next-cache-components یک body 2,334-token دارد و هیچ فایل bundledی ندارد. skill معتبر و خوش‌نوشتی است، و سطح 3ی برای disclose کردن ندارد. این حد صادقانه تکنیک است: progressive disclosure فقط وقتی صرفه‌جویی است که چیزی برای به‌تعویق‌انداختن وجود داشته باشد. skillی که دانشش تجزیه نمی‌شود، هنگام فعال‌سازی کل body خود را می‌پردازد، و تنها اهرم باقی‌مانده فعال نکردنش است.

خرابش کنید: description کل interface است

لینک به بخش: خرابش کنید: description کل interface است

سطح 1 یک تصمیم routing است که از یک جمله گرفته می‌شود. هیچ چیز دیگری درباره یک skill روی اینکه اصلاً باز شود یا نه اثر ندارد — نه کیفیت body، نه مثال‌ها، نه scriptها. پس description مستندات نیست. query surface است، و می‌تواند غلط باشد.

مشخصات این را در قالب یک مثال خوب و یک مثال بد می‌گوید، و مثال بد چهار کلمه است: description: Helps with PDFs.1 ارزش دارد به‌جای پذیرفتن، اندازه‌گیری شود.

شش skill، هرکدام با descriptionی قابل‌قبول که می‌گوید چه می‌کند و چه زمانی باید استفاده شود. بیست‌وچهار درخواست، چهار مورد برای هر skill، با phrasingی که یک آدم به کار می‌برد و بدون نام بردن از skill. مدل شش خط را در system prompt خود می‌بیند و باید با یک نام یا با NONE پاسخ دهد. greedy decoding، پس بازتولیدپذیر است. سپس همان بیست‌وچهار درخواست با همان شش skill، و descriptionها کوتاه‌شده تا موضوع عریانشان.

the two system promptsTEXT
rich   - sql-review: Review a SQL migration for locks, missing indexes and unsafe
         defaults before it runs on the production database. Use when someone adds
         or changes a migration, an index, or a table column.
thin   - sql-review: Helps with SQL.
24 requests, Qwen2.5-0.5B-Instruct, greedy decodingTEXT
rich   295 tokens of level 1 for six skills   18/24 correct = 75.0 %  [55.1, 88.0]
thin    81 tokens of level 1 for six skills   10/24 correct = 41.7 %  [24.5, 61.2]

paired: rich only 9, thin only 1, two-sided sign test p = 0.0215
answered NONE: rich 1 of 24, thin 9 of 24

اول intervalها را بخوانید، همان‌طور که فصل 4 اصرار کرد و فصل 29 دوباره اصرار خواهد کرد: آن‌ها هم‌پوشانی دارند، و بیست‌وچهار case نمی‌تواند دو system را فقط بر اساس aggregateهایشان رتبه‌بندی کند. مقایسه paired چیزی است که تکلیف را روشن می‌کند، و ابزار فصل 15 است: از ده caseی که دو arm با هم اختلاف داشتند، نه‌تا به descriptionهای غنی رسید و یکی به descriptionهای نازک. این در آستانه معمول established است.

حالا خط آخر را بخوانید، که یافته واقعی است. با descriptionهای نازک، مدل در نه درخواست از بیست‌وچهار درخواست پاسخ NONE داد. نه skill اشتباه: هیچ skill. اینجا چهار مورد از آن‌ها، عیناً:

TEXT
"Check this migration before I run it against production."     -> release-notes
"Will this CREATE INDEX lock writes?"                          -> NONE
"Is this ALTER TABLE safe to deploy at peak traffic?"          -> NONE
"Is 'seamless and powerful' allowed in the app store listing?" -> next-best-practices

یک skill کاملِ sql-review نصب شده بود، با body و مثال‌ها و checklist، و هرگز باز نشد، سه بار پشت سر هم، روی سه پرسشی که برایشان نوشته شده بود. سطح‌های 2 و 3 برای skillی که سطح 1 هرگز به آن نمی‌رسد بی‌اهمیت‌اند.

هزینه درست کردنش: 214 token، تفاوت بین 295 و 81، پخش‌شده روی شش skill. این همان یافته فصل 18 است که از سوی دیگر می‌رسد. آنجا، فقط تغییر description یک tool، date formatting را از 2 درست از 24 به 24 درست از 24 رساند. اینجا، فقط تغییر description یک skill، activation را از 10 از 24 به 18 می‌رساند. در هر دو مورد ارزان‌ترین fix در system یک جمله است، و در هر دو مورد آن جمله باید trigger را نام ببرد و نه فقط موضوع را: نه اینکه چیز چیست، بلکه اینکه کاربر درست قبل از کاربردش چه گفته خواهد بود.

یک caveat که این فصل به استانداردهای خودش بدهکار است. این یک مدل نیم‌میلیارد-پارامتری است، و یک frontier model خیلی بهتر از 75٪ route می‌کند. سازوکار را بخوانید، نه بزرگی عدد را: سیگنال routing هر مدلی که آن را بخواند یک جمله طول دارد، و هیچ مدلی نمی‌تواند بر اساس اطلاعاتی که در آن جمله نگذاشته‌اید انتخاب کند.

دوباره خرابش کنید: escape hatchی که 26,362 token هزینه دارد

لینک به بخش: دوباره خرابش کنید: escape hatchی که 26,362 token هزینه دارد

شکست دوم برعکس اولی است. skill پیدا می‌شود، سطح‌ها درست جدا شده‌اند، و agent بااین‌حال همه‌اش را می‌خواند.

vercel-react-best-practices واقعاً skill خوش‌ساختی است. bodyِ 1,670-token آن یک جدول اولویت از هشت category و یک quick reference است که 70 فایل rule را، هرکدام در یک خط، نام می‌برد. ruleها کنار آن روی disk هستند: 70 فایل، کوچک‌ترین 132 token، میانه 319، بزرگ‌ترین 1,052. یک سؤال درباره barrel importها بپرسید و هزینه صادقانه body به‌علاوه یک فایل است — زیر 2,400 token در برابر bundleی با 53,670.

بعد خط آخر body این را می‌گوید:

the final section of SKILL.mdTEXT
## Full Compiled Document

For the complete guide with all rules expanded: `AGENTS.md`

AGENTS.md 26,362 token است. همان 70 فایل rule به‌هم‌چسبیده است: جمعشان 25,784 است، و تفاوت از headingهای بینشان می‌آید. بنابراین skill به agent انتخابی می‌دهد میان خواندن یک rule میانه با 319 token و خواندن همان محتوا، همه‌اش، با هشتادوسه برابر قیمت — و این انتخاب را در جمله‌ای عرضه می‌کند که هیچ هزینه‌ای به آن وصل نیست و هیچ شرطی برای اینکه چه زمانی باید سراغش رفت ندارد.

این bug نیست و فایل غلط نیست؛ یک سند کامپایل‌شده واقعاً برای انسان مفید است، و برای agentی که از او خواسته شده یک codebase کامل را audit کند. این یک فایل سطح 3 با دعوت سطح 2 است، و درس از این یک skill فراتر می‌رود: هر مسیر خروجی از SKILL.md باید بگوید چه هزینه‌ای دارد و چه زمانی ارزشش را دارد، چون مدل هیچ راهی ندارد بفهمد یک filename هشتادوسه برابر گران‌تر از filename بالای خودش است.

همان پوشه درس کوچک‌تری هم درباره کهنگی دارد. body می‌گوید «70 rule در 8 category» و 70 تا را فهرست می‌کند؛ directoryِ rules/ شامل 72 فایل است که دوتایش scaffolding هستند (_template.md و _sections.md)؛ و sidecarِ metadata.json می‌گوید «40+ rule». سه شمارش از یک مجموعه در یک پوشه، یکی درست، یکی حسابی، و یکی باقی‌مانده از نسخه‌ای قدیمی‌تر. skill یک سند است، و سندها دقیقاً مثل commentی در کد که از کدِ کنار خودش منحرف شده می‌پوسند — با این تفاوت که این یکی را ماشینی می‌خواند که ابرو بالا نمی‌اندازد.

fieldهایی که reference implementation اضافه می‌کند، و تله portability

لینک به بخش: fieldهایی که reference implementation اضافه می‌کند، و تله portability

مشخصات open شش field frontmatter تعریف می‌کند. reference implementation، یعنی Claude Code، بیست‌تا را می‌پذیرد.2 پنج گروه ارزش دارد با نام بشناسید، چون همان‌جاهاست که قالب دیگر فقط یک سند نیست:

Permission و invocation. allowed-tools ابزارها را برای نوبتی که skill را invoke کرده از قبل تأیید می‌کند و grant در پیام بعدی پاک می‌شود؛ disallowed-tools آن‌ها را حذف می‌کند. disable-model-invocation جلوی مدل را می‌گیرد که خودش آن را load کند، و skill را به commandی تبدیل می‌کند که انسان اجرا می‌کند. user-invocable: false برعکس عمل می‌کند: از آدم‌ها پنهان، فقط برای مدل در دسترس، برای دانش پس‌زمینه.

Isolation و cost. context: fork skill را در یک sub-agent context جدا با window خودش اجرا می‌کند — مرز sub-agent فصل 25](/learn/ai-from-scratch/multi-agent-orchestration-patterns) به‌صورت یک خط YAML — با agent که نوع را انتخاب می‌کند و background که تعیین می‌کند نوبت منتظر بماند یا نه. model و effort برای همان نوبت، مدلی را که هنگام active بودن skill اجرا می‌شود تغییر می‌دهند.

Arguments (arguments، argument-hint) به انسان اجازه می‌دهند valueهایی بدهد که در body جایگزین می‌شوند، و همین است که skill را به‌عنوان slash command قابل‌استفاده می‌کند. Scoping (paths) activation را به فایل‌هایی محدود می‌کند که با یک glob match می‌شوند. و dynamic context injection همان موردی است که mental model را تغییر می‌دهد: خطی به شکل !`git diff HEAD` پیش از فرستادن body اجرا می‌شود، و خروجی‌اش در متن جایگزین می‌شود. سند یک template است، و بخشی از آن هنگام خواندن محاسبه می‌شود.

حالا تله، و در همان مستندات بیان شده: بیرون از Claude Code — در محصول وب، از طریق Skills API، در packaging — فقط همان شش field مشخص‌شده مجازند، و هر field دیگری هنگام upload یک hard error است.2 پس skillی که در یک محصول کاملاً درست کار می‌کند، در محصول دیگری از همان vendor نصب نمی‌شود، و شکست در frontmatter رخ می‌دهد نه در چیزی که بتوانید با خواندن نثر test کنید. اگر قصد دارید skill قابل‌حمل باشد، شش field کل budget هستند. اگر ندارید، در compatibility بگویید، که دقیقاً برای همین وجود دارد.

جدولی که این فصل برای آن وجود دارد

لینک به بخش: جدولی که این فصل برای آن وجود دارد

چهار چیز مدام با هم اشتباه گرفته می‌شوند، و این سردرگمی وسواس واژگانی نیست: انتخاب اشتباه یا در هر نوبت برایتان پول هزینه دارد، یا تضمینی را از شما می‌گیرد که فکر می‌کردید دارید.

System promptSkillToolMCP server
چیستمتنی در هر درخواستپوشه‌ای که root آن یک SKILL.md استیک JSON Schema به‌علاوه endpointی در کد شماprocess یا serviceی که با protocol حرف می‌زند
مدل چه می‌کندهمیشه آن را می‌خواندوقتی تصمیم بگیرد description match است، آن را می‌خواندآن را call می‌کند، و منتظر نتیجه شما می‌مانداز طریق host آن را call می‌کند، یک client برای هر server
چه هزینه‌ای داردطول کاملش، هر نوبت، برای همیشهحدود 50 token در هر نوبت؛ body یک‌بار، اگر استفاده شودschema آن، هر نوبت؛ execution هنگام callهر schema به‌علاوه instructions خود server، هر نوبت
چه چیزی را می‌تواند تضمین کندهیچ — توصیه استهیچ — توصیه‌ای است که مدل ممکن است skip کندهر چیزی که کد شما پیش از عمل enforce کندهر چیزی که server enforce کند
چه کسی می‌نویسدشماشما، یک همکار، یا vendorشماشخصی دیگر، برای hostهای زیاد
فصل15همین فصل1826 و 27

دو ردیف bold کل تمایزند. skill خوانده می‌شود؛ tool invoke می‌شود. skill نثری است که وارد context window می‌شود و با هر چیز دیگری که آنجاست بر سر attention رقابت می‌کند؛ مدل می‌تواند آن را دنبال کند، بد بخواند، یا نادیده بگیرد، و هیچ چیز در system متوجه نمی‌شود. tool callی است که کاملاً از دست مدل خارج می‌شود: کد شما argumentها را دریافت می‌کند، validate می‌کند، permissionها را بررسی می‌کند و تصمیم می‌گیرد. فصل 18 این را این‌طور گفت که مدل پیشنهاد می‌دهد و کد شما تکلیف را مشخص می‌کند، و این تقسیم دقیقاً چیزی است که skill ندارد.

پس شش مورد واقعی، حل‌شده:

«به زبان کاربر پاسخ بده. هرگز قیمتی را که به تو داده نشده بیان نکن.»

لینک به بخش: «به زبان کاربر پاسخ بده. هرگز قیمتی را که به تو داده نشده بیان نکن.»

System prompt. در هر نوبت apply می‌شود، constraint است نه procedure، و دو جمله طول دارد. چیزی که همیشه apply می‌شود چیزی برای disclose شدن به‌صورت progressive ندارد، و پرداختن هزینه یک discovery line در هر نوبت برای پرهیز از پرداخت دو جمله در هر نوبت صرفه‌جویی نیست.

«ما اینجا release note را چطور می‌نویسیم.»

لینک به بخش: «ما اینجا release note را چطور می‌نویسیم.»

Skill. procedural است، شاید در یک نوبت از چهل نوبت لازم شود، به صدا، taxonomy و مثال‌ها قابل‌تجزیه است، و نثری است که انسان ویرایش خواهد کرد. این همان شکلی است که قالب برایش طراحی شده، و اندازه‌گیری بالا نشان می‌دهد چه چیزی ذخیره می‌کند.

«یک سفارش را با identifier آن در warehouse database پیدا کن.»

لینک به بخش: «یک سفارش را با identifier آن در warehouse database پیدا کن.»

Tool. پشت آن یک function deterministic وجود دارد و مدل نباید query را بداهه بسازد. نوشتن این به‌صورت skill — سندی که توضیح می‌دهد چطور از warehouse query بگیریم — schema را به مدل می‌دهد و امید می‌بندد. schema به‌علاوه endpoint به آن جواب می‌دهد.

«issueها را در tracker ما، از همه محصولات agentی که شرکت استفاده می‌کند، بخوان و بنویس.»

لینک به بخش: «issueها را در tracker ما، از همه محصولات agentی که شرکت استفاده می‌کند، بخوان و بنویس.»

MCP server. capability مال شما نیست، چند host به آن نیاز دارند، و داستان authentication دارد. این همان مسئله N×MN \times M است که فصل 26 با آن باز شد، protocol پاسخ آن است، و فصل 27 یکی را دو بار ship می‌کند. skill را hostی که هرگز filesystem شما را ندیده نمی‌تواند discover کند — و این دقیقاً همان شکافی است که کار استانداردها در انتهای این فصل دارد می‌بندد.

هیچ‌کدام از این چهار. دانشی است برای lookup، نه procedureی برای follow کردن، و جای آن در indexی است که agent search می‌کند: فصل 19. bundle کردنش به‌عنوان سطح 3 مجاز و وسوسه‌انگیز و غلط است، چون مدل باید فقط از روی نام‌ها حدس بزند کدام‌یک از چهل فایل پاسخ را دارد. آنچه skill خوبی است، procedure دوصفحه‌ای است که به agent می‌گوید چه زمانی آن index را search کند، similarity score پایین یعنی چه، و چطور چیزهایی را که پیدا می‌کند cite کند.

«هرگز بدون انسان بیش از دویست یورو refund نکن.»

لینک به بخش: «هرگز بدون انسان بیش از دویست یورو refund نکن.»

یک tool با approval gate، و هرگز skill. این مورد مهم است. اگر در SKILL.md نوشته شود، limit جمله‌ای است که مدل می‌خواند و معمولاً رعایت می‌کند؛ اگر در refund tool نوشته شود، branchی است که پیش از جابه‌جایی هر پولی اجرا می‌شود. حدی که اگر از آن عبور شود شما را شرمنده می‌کند مستندات نیست. قاعده‌ای که ارزش حفظ کردن دارد: اگر پیامد نادیده گرفتن دستورالعمل بدتر از یک پاسخ بدفرمت‌شده است، آن دستورالعمل به سند تعلق ندارد.

از jargon داخلی تا استاندارد، با اعداد

لینک به بخش: از jargon داخلی تا استاندارد، با اعداد

تاریخچه کوتاه است، به‌طور غیرمعمولی خوب تاریخ‌گذاری شده، و همان بخشی است که تقریباً هیچ‌کس تعریف نمی‌کند.

Agent Skills در 16 October 2025 به‌عنوان feature یک vendor منتشر شد، و در آن announcement به‌صورت «پوشه‌های سازمان‌یافته‌ای از دستورالعمل‌ها، scriptها و resourceها که agentها می‌توانند discover و به‌صورت dynamic load کنند تا در taskهای مشخص بهتر عمل کنند» تعریف شد، با سه سطحی که از طریق analogy ارزشمندی توضیح داده شدند: «مثل manualی خوش‌سازمان که با فهرست مطالب شروع می‌شود، بعد chapterهای مشخص، و در نهایت appendix مفصل».4

در 18 December 2025 همان صفحه update شد تا قالب را به‌عنوان open standard اعلام کند، با specification خودش در agentskills.io، governance باز برای contributionها، و reference validator.3 هنگام خواندن در 7 September 2026، showcaseِ clientهای استاندارد چهل‌وشش محصول را فهرست می‌کند — editorها، terminalها، cloud platformها و mobile runtimeها، از جمله coding agentهای first-party متعلق به Anthropic، OpenAI، Google و Mistral — که هرکدام به مستندات setup خودشان لینک می‌دهند.1

همگرایی با MCP به‌صورت open انجام می‌شود، با اعدادی که می‌توانید بررسی کنید:

What it isOpenedState on 7 Sep 2026
SEP-2076Agent Skills as a First-Class MCP Primitive: methodهای جدید skills/list و skills/get، capabilityِ skills، notificationِ list_changed13 January 2026closed، 24 February 2026
Skills Over MCP working groupتعریف می‌کند skillها چطور از طریق MCP «discovered, distributed, and consumed» می‌شوند؛ هفتگی جلسه دارد؛ هفده member فهرست‌شده، دو نفرشان leadinterest group در 1 February 2026؛ working group در 16 April 2026active
SEP-2640Skills Extension، Extensions Track: resource conventionِ skill://، extension identifierِ io.modelcontextprotocol/skills، discovery از طریق skills/list و content از طریق resources/read23 April 2026in review

بخش جالب closure است، نه proposalها. SEP-2076 خواستار primitive چهارمی کنار tools، resources و prompts شد. working groupی که از دل آن شکل گرفت تصمیم گرفت پاسخ نه است: skillها بر primitiveِ resources که از قبل وجود دارد سوار می‌شوند، به‌عنوان extensionی opt-in.5 فصل 26 همین instinct را در changelog خود protocol اندازه گرفت، جایی که sampling، roots و logging به‌جای نگه‌داشتن deprecated شدند. standards bodyای که proposalی را که خودش authored کرده حذف می‌کند، خوب رفتار می‌کند، و دلیل تعریف کردن این داستان با اعداد پیش رو این است که summaryهایی که جاهای دیگر می‌خوانید هنوز skillها را به‌عنوان MCP primitive توصیف می‌کنند.

حالا می‌توانید یک SKILL.md بنویسید، آن را به سه سطحی split کنید که هزینه خودشان را درمی‌آورند، frontmatter skill شخص دیگری را بخوانید و بدانید کدام fieldها از upload شدن در جای دیگر جان سالم به در نمی‌برند، و پرسشی را که کل فصل حول آن ساخته شده — system prompt، skill، tool، یا server — با دلیل پاسخ دهید نه از روی عادت.

کاری که نمی‌توانید بکنید این است که بفهمید مال شما کار می‌کند یا نه.

هر claim مهم در این فصل یک measurement بود، و مهم‌ترینش یک accuracy بود: 18 از 24 در برابر 10 از 24، با interval برای هرکدام و paired test بینشان، چون دو aggregate که هم‌پوشانی دارند هیچ چیز را تعیین نمی‌کنند. آن ابزار قرضی بود. description یک skill، routing key آن است، body آن procedureی است که مدل ممکن است follow کند یا نکند، و هر دو ویژگی‌هایی هستند که فقط با اجرای آن چیز بارها و امتیاز دادن به خروجی می‌توانید بفهمید — یعنی golden set، graderی که پیش از run نوشته‌اید، و metricی که می‌پرسد آیا هر بار کار کرد، نه اینکه حداقل یک بار.

فصل 29 همان است، و با عددی باز می‌شود که روش این فصل به آن وابسته است: agentی که از ده بار هفت بار موفق می‌شود شبیه 70٪ است، و pass^10 آن — احتمال اینکه در هر ده‌تا موفق شود — صفر است. همچنین سه grader را روی همان دویست transcript اندازه می‌گیرد و بدون بازتولید حتی یک token، 0٪، 13٪ و 26٪ می‌گیرد. پیش از آنکه به جمله‌ای که همین حالا در description نوشتید اعتماد کنید، به ابزاری نیاز دارید که بتواند به شما بگوید از جمله‌ای که جایگزینش کرده‌اید بدتر است.


هر token count در این فصل به‌صورت local با tiktoken 0.14.0 و encodingِ o200k_base، در 7 September 2026 تولید شد: روی پنج skillِ third-party که در ابتدای این فصل فهرست شدند، و روی skillِ release-notes که برای این فصل نوشته شد و متن کاملش تا حدی در بالا بازتولید شده است. سطح 1 به‌صورت خط واحد - name: description اندازه‌گیری شده که host در system prompt render می‌کند؛ سطح 2 bodyِ SKILL.md پس از frontmatter است؛ سطح 3 هر فایل دیگر در پوشه است. costها از نرخ‌های اندازه‌گیری‌شده فصل 16 برای gpt-5.6-terra استفاده می‌کنند، $2.00 به‌ازای هر میلیون input token و $0.20 به‌ازای هر میلیون cached input token، اعمال‌شده به آن countها — آن‌ها حساب روی tokenهای اندازه‌گیری‌شده‌اند، نه مشاهده bill زنده. هیچ API پولی برای نوشتن این فصل call نشد.

آزمایش activation، Qwen/Qwen2.5-0.5B-Instruct را با half precision روی یک consumer GPU، greedy decoding، 24 درخواست روی شش skill، دو بار اجرا کرد — یک‌بار با descriptionهایی که می‌گویند skill چه می‌کند و چه زمانی apply می‌شود، یک‌بار با descriptionهایی که به موضوع عریان در سبک «poor example» خود specification کوتاه شده بودند. intervalها Wilson در 95٪ هستند؛ مقایسه paired یک exact sign test دوسویه روی ده case discordant است؛ Wilson interval از فصل 4 و exact paired sign test از فصل 15 است، هر دو بدون تغییر reuse شده‌اند. بزرگی‌ها را property یک مدل بسیار کوچک بخوانید و method را قابل‌انتقال.

پنج skill اندازه‌گیری‌شده اینجا packageهای third-party هستند، نه نوشته‌شده برای این فصل: next-best-practices و next-cache-components از vercel-labs/next-skills، و vercel-composition-patterns، vercel-react-best-practices و vercel-react-native-skills از vercel-labs/agent-skills. countهای داخلی آن‌ها — 70 فایل rule، AGENTS.md با 26,362 token، metadata.json مورخ January 2026 و با claim «40+ rule» — از فایل‌های روی disk در 7 September 2026 خوانده شدند و ویژگی‌های همان نسخه منتشرشده‌اند، نه نقد نویسندگانشان: هرکدامشان همان نوع driftی است که در هر documentation tree که بیشتر از شمارش شدن ویرایش می‌شود ظاهر می‌شود.

  1. Agent Skills Specification و Overview، agentskills.io/specification و agentskills.io، خوانده‌شده در 7 September 2026. منبع directory layout؛ جدول frontmatter که بالا با همه constraintها بازتولید شد (name با 1–64 نویسه و match با directory، description با 1–1024 نویسه، compatibility تا 500، allowed-tools با برچسب experimental)؛ مثال‌های خوب و poor برای description؛ توصیف سه‌مرحله‌ای progressive-disclosure با budgetِ token آن (metadata حدود 100 token، instructions توصیه‌شده زیر 5,000، resources در صورت نیاز) و توصیه به نگه داشتن SKILL.md زیر 500 خط؛ note اینکه «agent وقتی تصمیم بگیرد skillی را activate کند، کل این فایل را load خواهد کرد»؛ conventionهای scripts/، references/ و assets/؛ commandِ skills-ref validate؛ statement اینکه قالب «originally developed by Anthropic, released as an open standard, and has been adopted by a growing number of agent products»؛ و client showcase که در تاریخ خواندن چهل‌وشش محصول را فهرست کرده بود. 2 3 4

  2. Skills در مستندات Claude Code، code.claude.com/docs/en/skills، خوانده‌شده در 7 September 2026. منبع جدول کامل fieldها که در بخش «fieldهایی که reference implementation اضافه می‌کند» استفاده شد — when_to_use، argument-hint، arguments، disable-model-invocation، user-invocable، allowed-tools، disallowed-tools، model، effort، context، agent، background، hooks، paths، shell، metadata، license، compatibility — و توصیف dynamic context injection که در آن !`command` پیش از فرستادن body اجرا می‌شود، rule اینکه grantِ allowed-tools در پیام بعدی پاک می‌شود، و compliance note اینکه بیرون از Claude Code فقط شش field مشخص‌شده پذیرفته می‌شود و هر مورد دیگر در upload یا packaging یک hard error ایجاد می‌کند. 2 3

  3. overviewِ Agent Skills، platform.claude.com/docs/en/agents-and-tools/agent-skills/overview، خوانده‌شده در 7 September 2026. منبع جدول سطح‌ها با چهار ستونش (Level 1 metadata، always، حدود 100 token برای هر skill؛ Level 2 instructions، when triggered، زیر 5k token؛ Level 3+ resources، as needed، none until accessed)؛ جمله‌ای که کامل نقل شد درباره اینکه bundled content جریمه context ندارد؛ عبارت «تا وقتی یک Skill triggered نشود، فقط name و description آن context را اشغال می‌کنند»؛ statement اینکه کدِ script هرگز وارد context window نمی‌شود و فقط خروجی‌اش می‌شود؛ و بخش security که می‌گوید skillها را فقط از منابع trusted استفاده کنید و warning می‌دهد که skill مخرب «can direct Claude to invoke tools or execute code in ways that don't match the Skill's stated purpose» — موضوع فصل 30، که از مسیر سند می‌آید نه از طریق description یک tool. 2 3

  4. Anthropic، Equipping agents for the real world with Agent Skills، 16 October 2025، anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills، خوانده‌شده در 7 September 2026. منبع تعریف نقل‌شده در بالا، analogy فهرست مطالب/chapterها/appendix، سه سطح آن‌طور که ابتدا توصیف شدند، و framing اینکه agentها برای دریافت domain expertise به راه‌هایی «more composable, scalable, and portable» نیاز دارند. announcement محصول همراه در claude.com/blog/skills تاریخ انتشار 16 October 2025 و updateِ 18 December 2025 را دارد که management در سطح organization و open standard را معرفی کرد.

  5. Skills Over MCP Charter، modelcontextprotocol.io/community/working-groups/skills-over-mcp، خوانده‌شده در 7 September 2026. منبع mission statement نقل‌شده در بالا، تاریخ‌های changelog (interest group در 1 February 2026 تشکیل شد، initial charter در 14 April 2026، تبدیل به working group در 16 April 2026، SEP-2640 در 25 April 2026 لینک شد)، leadership و هفده member فهرست‌شده، cadence جلسه هفتگی، و success criterion که draft Skills Extension را «a formal extension using existing Resources primitives» می‌نامد. SEP-2076، Agent Skills as a First-Class MCP Primitive، github.com/modelcontextprotocol/modelcontextprotocol/pull/2076، در 13 January 2026 opened و در 24 February 2026 closed شد؛ skills/list، skills/get، capabilityِ server با skills و notification با skills/list_changed را پیشنهاد کرد، و skill را «a named bundle of instructions plus references to tools, prompts, and resources that together teach an agent how to perform a domain-specific workflow» تعریف کرد. SEP-2640، Skills Extension، .../pull/2640، در 23 April 2026 روی Extensions Track opened شد و resource conventionِ skill:// و extension identifierِ io.modelcontextprotocol/skills را دارد. فصل 26 همان working group را میان optional extensionهای protocol فهرست می‌کند.


تهیه‌شده توسط

David Vicente Campos

بنیان‌گذار NeuraLIA Labs و هم‌بنیان‌گذار MyRealFood

من مهندس کامپیوتر و فارغ‌التحصیل دانشگاه لئون هستم. هم‌بنیان‌گذار MyRealFood بودم، جایی که به‌عنوان مدیر ارشد فناوری اپلیکیشنی را ساختم که میلیون‌ها نفر برای سالم‌تر غذا خوردن از آن استفاده کرده‌اند، و NeuraLIA Labs را بنیان‌گذاری کردم؛ جایی که محصولات هوش مصنوعی می‌سازم. اینجا از چیزهایی می‌نویسم که در طول مسیر باید می‌فهمیدم، همان‌طور که دوست داشتم کسی برایم توضیح می‌داد.

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

منتشرشده توسط NeuraLIA Labs.

پست‌های جدید را در ایمیل خود دریافت کنید

اخبار AI، راهنماها و به‌روزرسانی‌های محصول — هر وقت چیزی ارزشمند منتشر کنیم، یک ایمیل کوتاه می‌فرستیم.

فهرست دوره

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev12 دقیقه مطالعه

مدل هوش مصنوعی Jev برای تصمیم ساخته شده، نه نثر

Jev از TypeSafe AI توجه‌ها را جلب کرده چون هوشمندی نرم‌افزار را مسئله‌ای احتمالاتی می‌بیند: شاخه درست را انتخاب کنید، میزان اطمینان را کنار آن بگذارید، و وقتی کد به یک تصمیم نیاز دارد برای نوشتن متن به یک LLM پول ندهید.

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering13 دقیقه مطالعه

مهندسی کانتکست برای عامل‌های AI بلندافق

عامل‌های طولانی‌اجرا فقط به‌خاطر کوچک بودن پنجره شکست نمی‌خورند. وقتی فایل‌ها، خروجی ابزارها و تاریخچهٔ کهنه وظیفه‌ای را که عامل قرار بود تمام کند کنار می‌زنند، شکست رخ می‌دهد.

آماده‌اید انتخاب مدل را به LIA بسپارید؟

با همه مدل‌های هوش مصنوعی در یک جا بسازید — همین امروز رایگان شروع کنید.