Почему это важно именно вам
Представьте: вы написали skill /анализ-договора. Он работает отлично — берёт договор, проверяет риски, выдаёт структурированный отчёт. Отличная заготовка. Но каждый раз перед запуском вы вручную переименовываете файл или копируете путь в промпт. Если у вас в очереди пять договоров — пять ручных операций. Это уже не автоматизация, это полуавтомат.
Или другой сценарий. Вы сделали skill /ревью-письма. Он полирует стиль, убирает канцелярит, делает текст живым. Но стиль письма директору и стиль письма подрядчику — это разные вещи. С директором нужен деловой, уважительный тон без малейшей фамильярности. С подрядчиком — конкретный, по делу, без лишних реверансов. Сейчас у вас два разных skill, которые делают одно и то же с минимальными отличиями. Дублирование кода — это всегда техдолг, даже в промптах.
Динамические параметры решают обе проблемы. Один skill, одна точка поддержки, но поведение меняется в зависимости от того, что вы передали при вызове. Это как функция в математике: f(x) всегда одна и та же функция, но результат зависит от x. После этого урока вы перепишете минимум два своих skill — и они станут в несколько раз полезнее.
Что это такое
Когда вы вызываете skill без аргументов, это статический шаблон. Он делает одно и то же каждый раз. Это полезно, но ограниченно.
Аргументы — это то, что вы пишете после имени skill. Всё, что стоит после /имя-скилла, попадает в переменную $ARGUMENTS внутри текста skill. Claude подставляет её туда, где нужно, и действует согласно переданному значению.
Хорошая аналогия из жизни — бланк документа. Сам бланк один и тот же: структура, поля, логика заполнения. Но каждый раз вы вписываете разные данные. $ARGUMENTS — это данные, которые вы вписываете в бланк при вызове.
Другая аналогия — брифинг сотрудника перед задачей. У вас есть стандартный процесс: собрать данные, подготовить выводы, оформить отчёт. Процесс не меняется. Меняется лишь один параметр: «за какую неделю» или «по какому проекту». Вы называете неделю — сотрудник делает всё остальное сам. $ARGUMENTS — это и есть тот момент, когда вы называете неделю.
Важный момент: $ARGUMENTS — это просто строка. Всё что угодно, что вы написали после команды. Это может быть имя файла (договор_пик.pdf), имя человека (Сергей Иванович, финансовый директор), дата (2026-07-01), короткая инструкция (строгий тон, максимум три абзаца), номер проекта или даже целая фраза. Skill сам решает, что с этим делать — в зависимости от того, как вы написали его текст.
Технически это работает так: когда вы вызываете skill, Claude Code берёт всё, что стоит после имени команды, и подставляет эту строку в каждое место текста skill, где встречается $ARGUMENTS. Это происходит до того, как Claude начинает обрабатывать промпт — то есть Claude видит уже готовый, заполненный текст с вашими данными.
Ключевая идея
$ARGUMENTS — это мост между вашей командой и логикой skill. Без него skill статичен. С ним — он превращается в инструмент с параметрами.
Как работает на практике
Разберём по шагам на двух реальных примерах.
Пример 1: /анализ-договора с именем файла
Сначала посмотрим, как skill устроен без аргументов:
.claude/skills/анализ-договора/SKILL.md
---
name: анализ-договора
description: Анализирует договор на юридические риски
---
Прочитай договор и выдели три блока:
1. Ключевые обязательства сторон
2. Риски и спорные формулировки
3. Что нужно уточнить перед подписанием
Проблема: этот skill не знает, какой файл читать. Вам нужно каждый раз объяснять это отдельно.
Теперь версия с аргументом:
.claude/skills/анализ-договора/SKILL.md
---
name: анализ-договора
description: Анализирует договор на юридические риски. Использование: /анализ-договора [имя файла]
---
Файл для анализа: $ARGUMENTS
Прочитай этот договор и выдели три блока:
1. Ключевые обязательства сторон
2. Риски и спорные формулировки
3. Что нужно уточнить перед подписанием
Если файл не указан или не найден — сообщи об этом явно, не пытайся угадать.
Теперь вызов выглядит так:
/анализ-договора договор_подряд_пик_июнь2026.pdf
Claude получит строку договор_подряд_пик_июнь2026.pdf в переменную $ARGUMENTS, подставит её в место, где написано Файл для анализа: $ARGUMENTS, и прочитает именно этот файл.
Вызов пяти договоров:
/анализ-договора договор_пик.pdf
/анализ-договора договор_самолет.pdf
/анализ-договора договор_подряд_отделка.pdf
/анализ-договора доп_соглашение_01.pdf
/анализ-договора договор_аренда_офис.pdf
Пять вызовов одного skill, пять файлов, один шаблон анализа. Никаких дублей, никаких ручных правок.
Пример 2: /ревью-письма с именем адресата
Это более тонкий случай: аргумент влияет не на файл, а на стиль и тон обработки.
.claude/skills/ревью-письма/SKILL.md
---
name: ревью-письма
description: Редактирует деловое письмо под конкретного адресата. Использование: /ревью-письма [имя и роль адресата]
---
Адресат письма: $ARGUMENTS
Отредактируй письмо, которое я пришлю следом, с учётом этого адресата:
- Подбери тон, уместный для данного человека и его роли
- Убери канцелярит и лишние слова
- Сохрани все ключевые факты и договорённости
- Если адресат — руководитель выше по иерархии, добавь формальности там, где она оправдана
- Если адресат — подрядчик или партнёр, держи стиль конкретным и деловым без лишних реверансов
Сначала покажи отредактированную версию, потом — три главных правки с объяснением почему.
Вызовы:
/ревью-письма "Андрей Николаевич, генеральный директор"
/ревью-письма "Иван, менеджер по работе с клиентами, агентство Медиапланет"
/ревью-письма "Алексей Петрович, финансовый директор, застройщик ПИК"
Каждый раз один и тот же skill, но Claude адаптирует тон под конкретного человека и его роль в вашей иерархии коммуникаций.
Обратите внимание на детали в примере skill: там нет просто «адаптируй под адресата». Там конкретно прописано, что делать с разными типами адресатов — руководитель выше по иерархии или подрядчик. Claude не телепат, он работает строго по инструкции. Чем точнее вы описали логику обработки аргумента, тем предсказуемее результат.
Это общий принцип: аргумент задаёт переменную, но skill определяет, что с ней делать. Хороший skill не просто получает $ARGUMENTS и «как-то использует», а явно прописывает ветки логики.
Порядок работы с письмом
После вызова /ревью-письма "имя адресата" Claude будет ждать письма. Вставьте текст письма в следующем сообщении или укажите файл: /ревью-письма "Андрей Николаевич, ГД" — текст письма ниже. Оба варианта работают.
Пример 3: /еженедельный-отчёт с датой
Ещё один практичный случай — когда аргумент задаёт временной контекст.
.claude/skills/еженедельный-отчёт/SKILL.md
---
name: еженедельный-отчёт
description: Готовит еженедельный отчёт по данным в папке. Использование: /еженедельный-отчёт [неделя, например "27-31 мая"]
---
Период отчёта: $ARGUMENTS
Собери данные из папки reports/ за указанный период и подготовь:
1. Ключевые показатели за неделю (числа, факты)
2. Что изменилось по сравнению с предыдущей неделей
3. Два-три вывода, которые требуют внимания
4. Предложения на следующую неделю
Формат: Markdown, заголовки H2, максимум две страницы.
Вызов:
/еженедельный-отчёт "27-31 мая 2026"
Параметр задаёт контекст для поиска данных и для формулировок в самом отчёте. Claude будет использовать эту дату везде — в заголовке отчёта, при фильтрации данных, при сравнении с предыдущим периодом.
Частые ошибки
Ошибка 1: Забыть добавить $ARGUMENTS в текст skill
Казалось бы, очевидно, но это самая частая проблема. Вы передаёте аргумент при вызове, но в тексте skill нет $ARGUMENTS. Аргумент при этом не пропадёт — Claude Code допишет его в конец содержимого как ARGUMENTS: <ваш текст>, так что модель его увидит. Но подставлять аргумент в нужное место всё равно надёжнее: тогда он попадёт туда, где нужен по смыслу, а не в хвост файла.
Как проверить: откройте файл skill и найдите слово $ARGUMENTS. Если его нет — аргумент уедет в конец файла, а не туда, где нужен.
Ошибка 2: Неоднозначная инструкция, что делать с аргументом
Если в тексте skill написано только Анализируй файл $ARGUMENTS, но не сказано как именно аргумент влияет на анализ — Claude будет угадывать. Иногда угадает правильно, иногда нет.
Правило: пишите явно. Не «используй $ARGUMENTS», а «это имя файла для чтения» или «это роль адресата, адаптируй тон» или «это период, фильтруй данные по нему».
Ошибка 3: Считать, что $ARGUMENTS — единственный способ получить аргументы
$ARGUMENTS — это вся строка целиком, но обращаться можно и к отдельным аргументам: $0, $1, $2 (полная форма — $ARGUMENTS[0]). Можно дать им имена: объявите arguments: [файл, тон] во frontmatter и используйте $файл и $тон. Многословное значение берите в кавычки. Если вы напишете /анализ-договора файл1.pdf файл2.pdf, в $ARGUMENTS попадёт файл1.pdf файл2.pdf — одна строка. Как с ней работать, зависит от того, как вы написали skill.
Если вам нужно передать два параметра — лучше передавать их явно с разделителем и объяснять в тексте skill: «первое слово — имя файла, остальное — дополнительные инструкции». Либо делайте два разных skill.
Ошибка 4: Не добавлять обработку случая «аргумент не передан»
Хороший skill предусматривает ситуацию, когда аргумент пустой. Добавьте в текст skill строчку: «Если аргумент не указан — спроси у меня, что именно нужно проанализировать». Это защитит от ситуации, когда вы случайно вызвали /анализ-договора без имени файла и получили анализ вообще непонятно чего.
Не путайте $ARGUMENTS с переменными окружения
$ARGUMENTS — это не переменная операционной системы. Она работает только внутри текста skill и только в рамках Claude Code. Если вы попытаетесь использовать её в bash-скрипте напрямую, она будет пустой.
Когда нужно / когда нет
Аргументы нужны, когда:
-
Один и тот же skill применяется к разным файлам. Без аргумента — вы либо дублируете skill под каждый файл, либо каждый раз правите его вручную. С аргументом — один skill, разные данные.
-
Поведение skill должно меняться в зависимости от контекста. Тон письма, глубина анализа, период отчёта, имя адресата — всё это хорошие кандидаты на аргументы.
-
Skill вызывается несколько раз подряд с разными входными данными. Если вы прогоняете пачку документов через один шаблон — аргументы экономят время.
-
Вы хотите, чтобы один skill мог работать в разных режимах. Например,
/отчёт краткийпротив/отчёт подробный— аргумент задаёт режим.
Аргументы не нужны, когда:
-
Skill всегда делает одно и то же с одними и теми же данными. Например,
/утренний-брифинг— он всегда смотрит на одни и те же папки и выдаёт стандартную сводку. Аргументы здесь только усложнят. -
Вариаций меньше двух. Если у вас есть
/анализ-договора-с-подрядчикоми больше ничего — делайте просто статический skill. Аргументы оправдывают себя, когда их реально несколько разных. -
Аргумент потребовал бы сложного объяснения внутри skill. Если для правильной работы skill нужна целая инструкция «как правильно передавать параметры» — это сигнал, что лучше сделать два отдельных skill с ясными названиями.
Хорошее правило
Если при вызове skill вы каждый раз думаете «а что мне нужно изменить в нём под эту задачу» — это сигнал, что нужен аргумент. Аргументы существуют именно для этого варьируемого элемента.
Связь с другими уроками
День 31 — что такое skills и как создавать первый skill. Аргументы — это расширение базового механизма. Если вы ещё не создали ни одного skill, вернитесь туда: сначала нужно понять структуру .claude/skills/, а потом добавлять параметры.
День 34 — библиотека skills. Когда у вас много скиллов с похожими функциями, аргументы помогают их объединить и сократить список. Вместо /ревью-письма-директору и /ревью-письма-подрядчику — один /ревью-письма с параметром. День 32 — про то, как навести порядок в библиотеке; этот урок даёт инструмент, который сокращает её.
День 35 — именованные сессии. Флаг --name относится к сессиям, а не к скиллам. Он даёт имя разговору, к которому потом возвращаются через --resume. Аргументы скилла и имя сессии — независимые механизмы.
Задание на сегодня
Возьмите один из ваших существующих skill, который вы вызываете с разными файлами или для разных адресатов, и добавьте в него поддержку $ARGUMENTS.
Конкретные шаги:
- Откройте файл skill в
.claude/skills/. - Найдите место, где жёстко указан файл или имя адресата.
- Замените это место на
$ARGUMENTS. - Добавьте одну строку с объяснением, что означает этот аргумент (например: «Файл для анализа: $ARGUMENTS» или «Адресат: $ARGUMENTS — адаптируй тон и формальность»).
- Добавьте строку-подстраховку: «Если $ARGUMENTS пустой — спроси, что именно нужно».
- Вызовите skill с двумя разными аргументами и убедитесь, что поведение отличается.
Критерий «выполнено»: один и тот же skill дал два разных результата при двух разных аргументах — и оба результата осмысленны.
Если у вас нет подходящего skill — создайте /ревью-письма по примеру из этого урока и проверьте на двух реальных письмах с разными адресатами.
Резюме
$ARGUMENTS— это всё, что вы написали после имени skill при вызове; переменная подставляется в текст skill в момент выполнения- Без
$ARGUMENTSаргумент дописывается в конец содержимого какARGUMENTS: …— работать будет, но менее предсказуемо — проверьте, что переменная там есть - Аргументы оправданы, когда skill применяется к разным файлам или требует разного поведения при разных вызовах
- Пишите явно, что означает аргумент: не просто «используй $ARGUMENTS», а «это имя файла» или «это роль адресата»
- Добавляйте обработку пустого аргумента — это защита от случайных вызовов без параметра