Мастер Claude · Блок 4. Skills и автоматизация

Урок 33 из 93 · ~10 мин чтения

Динамические параметры в skills

Урок пока закрыт

Курс проходится последовательно.

К текущему уроку

Почему это важно именно вам

Представьте: вы написали 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 вы каждый раз думаете «а что мне нужно изменить в нём под эту задачу» — это сигнал, что нужен аргумент. Аргументы существуют именно для этого варьируемого элемента.

Связь с другими уроками

День 31 — что такое skills и как создавать первый skill. Аргументы — это расширение базового механизма. Если вы ещё не создали ни одного skill, вернитесь туда: сначала нужно понять структуру .claude/skills/, а потом добавлять параметры.

День 34 — библиотека skills. Когда у вас много скиллов с похожими функциями, аргументы помогают их объединить и сократить список. Вместо /ревью-письма-директору и /ревью-письма-подрядчику — один /ревью-письма с параметром. День 32 — про то, как навести порядок в библиотеке; этот урок даёт инструмент, который сокращает её.

День 35 — именованные сессии. Флаг --name относится к сессиям, а не к скиллам. Он даёт имя разговору, к которому потом возвращаются через --resume. Аргументы скилла и имя сессии — независимые механизмы.

Задание на сегодня

Возьмите один из ваших существующих skill, который вы вызываете с разными файлами или для разных адресатов, и добавьте в него поддержку $ARGUMENTS.

Конкретные шаги:

  1. Откройте файл skill в .claude/skills/.
  2. Найдите место, где жёстко указан файл или имя адресата.
  3. Замените это место на $ARGUMENTS.
  4. Добавьте одну строку с объяснением, что означает этот аргумент (например: «Файл для анализа: $ARGUMENTS» или «Адресат: $ARGUMENTS — адаптируй тон и формальность»).
  5. Добавьте строку-подстраховку: «Если $ARGUMENTS пустой — спроси, что именно нужно».
  6. Вызовите skill с двумя разными аргументами и убедитесь, что поведение отличается.

Критерий «выполнено»: один и тот же skill дал два разных результата при двух разных аргументах — и оба результата осмысленны.

Если у вас нет подходящего skill — создайте /ревью-письма по примеру из этого урока и проверьте на двух реальных письмах с разными адресатами.

Резюме

Следующий урок откроется после отметки.