Agent Skills و SKILL.md: افشای تدریجی، با اندازهگیری
پنج skill واقعی با 128,374 token دستورالعمل فقط 253 token از context را میگیرند؛ اما توضیح کوتاه باعث میشود agent پیدایشان نکند.
در این صفحه
پروژهای را در نظر بگیرید که پنج skill منتشرشده در آن نصب شده است. هزینهشان این است.
ls .claude/skills/next-best-practices next-cache-components vercel-composition-patterns
vercel-react-best-practices vercel-react-native-skillsskill 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 روی پوشهای که برای این فصل نوشته شده:
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 کنید، فقط برای یک حواسپرتی تخفیف خریدهاید.
بهصورت فرمول، با نوبت، metadata، body، کل بسته و مجموعه فایلهای bundled که واقعاً خوانده شدهاند:
کل این فصل تفاوت میان ضرب کردن جمله دوم در و ضرب کردنش در یک یا صفر است.
skill واقعاً چیست
لینک به بخش: skill واقعاً چیستیک skill یک directory است. مشخصات آن آنقدر کوتاه است که میشود کامل بیانش کرد:
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 likeSKILL.md باید با YAML frontmatter شروع شود، و دقیقاً دو field الزامی است: name و description.1 چهار مورد دیگر اختیاریاند و هیچ مورد دیگری تعریف نشده است:
| Field | Required | Constraint |
|---|---|---|
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 کمتر از سی خط:
---
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
- Metadata، حدود 100 token:
nameوdescription، هنگام startup برای هر skill نصبشده بارگذاری میشود. - Instructions، توصیهشده زیر 5,000 token: bodyِ
SKILL.md، وقتی skill فعال میشود بارگذاری میشود. - 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ها کوتاهشده تا موضوع عریانشان.
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.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. اینجا چهار مورد از آنها، عیناً:
"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 این را میگوید:
## 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 prompt | Skill | Tool | MCP 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 | همین فصل | 18 | 26 و 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 دارد. این همان مسئله است که فصل 26 با آن باز شد، protocol پاسخ آن است، و فصل 27 یکی را دو بار ship میکند. skill را hostی که هرگز filesystem شما را ندیده نمیتواند discover کند — و این دقیقاً همان شکافی است که کار استانداردها در انتهای این فصل دارد میبندد.
«brand manual چهارصدصفحهای.»
لینک به بخش: «brand manual چهارصدصفحهای.»هیچکدام از این چهار. دانشی است برای 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 is | Opened | State on 7 Sep 2026 | |
|---|---|---|---|
| SEP-2076 | Agent Skills as a First-Class MCP Primitive: methodهای جدید skills/list و skills/get، capabilityِ skills، notificationِ list_changed | 13 January 2026 | closed، 24 February 2026 |
| Skills Over MCP working group | تعریف میکند skillها چطور از طریق MCP «discovered, distributed, and consumed» میشوند؛ هفتگی جلسه دارد؛ هفده member فهرستشده، دو نفرشان lead | interest group در 1 February 2026؛ working group در 16 April 2026 | active |
| SEP-2640 | Skills Extension، Extensions Track: resource conventionِ skill://، extension identifierِ io.modelcontextprotocol/skills، discovery از طریق skills/list و content از طریق resources/read | 23 April 2026 | in 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 که بیشتر از شمارش شدن ویرایش میشود ظاهر میشود.
ارجاعات
لینک به بخش: ارجاعات-
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 -
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 -
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 -
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 را معرفی کرد. ↩ -
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 فهرست میکند. ↩