00:00:00При работе с Cloud Code, Codex или любым другим агентным инструментом разработки есть одна очень важная
00:00:05концепция, которую поддерживают все эти инструменты, и которую вам следует понять и использовать — это концепция
00:00:12навыков агента (agent skills). Их легко проигнорировать, потому что это просто набор markdown-файлов или потому что
00:00:18их настройка может быть громоздкой, но, по моему опыту, оно того стоит. И пару дней назад был
00:00:24пост от кого-то из команды Cloud Code, то есть от кого-то из Anthropic, где он поделился
00:00:31различными типами навыков, которые они используют внутри компании, потому что действительно можно выделить
00:00:37разные типы навыков, которые вы хотите создать. В конечном счете это всё просто markdown-файлы, хотя
00:00:42вы можете добавить в них чуть больше, я к этому еще вернусь, но, конечно, содержимое этого файла может
00:00:49сильно различаться. Это изображение здесь и весь этот пост могут показаться довольно сложными и могут привести
00:00:56к тому, что вы вообще ничего не сделаете, подумав: «Ладно, если мне нужно потратить неделю на настройку навыков, я лучше»
00:01:02«не буду их использовать вовсе». Именно поэтому в этом видео я хочу предложить альтернативу. Я считаю, что
00:01:08вам достаточно иметь три основных типа навыков, о которых стоит заботиться, и это приведет к лучшим
00:01:15результатам. Кстати, как я уже упоминал, все эти инструменты поддерживают навыки. Я рассказываю, как их настраивать, как
00:01:20активно их вызывать, как создавать навыки для Cloud Code и Codex в моих соответствующих курсах, и если вы
00:01:26хотите приобрести эти курсы или получить доступ ко всем моим курсам, включая будущие, прямо сейчас я
00:01:31провожу акцию, по которой вы можете получить годовое членство, дающее полный доступ ко всем моим
00:01:35курсам на время действия подписки по очень низкой цене. Ссылка внизу. Но что касается этих
00:01:41навыков, это просто markdown-файлы. Markdown-файлы, которые хранятся в специальном месте, и
00:01:46конкретное место зависит от используемого инструмента, но в итоге они служат шаблонами промптов или
00:01:52дополнительными контекстными данными, которые могут быть внедрены в ваши сессии агентной разработки. И
00:02:01первый тип навыка — это навык документации или, я бы сказал, навык знаний. Что я имею в виду?
00:02:09Сейчас я нахожусь в своем проекте academy.com, это проект моего веб-сайта, и там у меня есть ряд
00:02:15навыков агента, которые по сути являются своего рода документацией или знаниями, которые я открываю ИИ-агенту.
00:02:25Например, здесь есть знания по TypeScript, знания о более продвинутых функциях
00:02:33TypeScript, возможно, о каких-то новых фишках, таких как ключевое слово "satisfies", которого не было
00:02:40последние 10 лет. Это то, о чем я хочу, чтобы ИИ-агент знал или о чем ему нужно напомнить, потому что это может
00:02:50быть не первым, к чему он прибегнет, так как он мог не видеть так много подобного материала в своих данных
00:02:58для обучения. Так что это действительно то, что можно найти в официальной документации TypeScript. Проблема
00:03:04только в том, что если вы явно не скажете агенту об этом, он, скорее всего, не пойдет в ту официальную
00:03:11документацию, он не пойдет в документацию TypeScript, поэтому я предпочитаю иметь свой собственный навык, и
00:03:17у этого навыка здесь есть метаданные. Метаданные важны, потому что идея навыков в том,
00:03:24что не все доступные навыки загружаются в окно контекста каждый раз. Вместо этого только
00:03:30метаданные загружаются в контекстное окно, и затем ИИ-агент может решить, какой навык он хочет
00:03:37прочитать подробнее, в зависимости от вашего промпта и задач, которые вы ему дали. Вы также можете активно вызывать навыки
00:03:43в зависимости от используемого инструмента, но основная идея заключается в том, что агент загружает их самостоятельно
00:03:47на основе этих метаданных. Итак, здесь у меня есть метаданные, с помощью которых я пытаюсь дать агенту представление о том,
00:03:55когда использовать этот навык, и поэтому это один из типов навыков, когда вы предоставляете дополнительную документацию
00:04:02или знания, которых у агента может не быть. Возможно, вы работаете с какой-то библиотекой, которой
00:04:08не было в обучающих данных, потому что она совсем новая, или о которой, как вы знаете, он, возможно, видел мало
00:04:13информации, и вы хотите, чтобы он был в курсе — это первый тип навыка, я бы сказал.
00:04:18Второй тип навыков — это поведение, лучшие практики, подходы и всё в таком духе. И здесь идея
00:04:29действительно в том, что, конечно, когда вы работаете над проектом, у вас могут быть определенные предпочтения относительно
00:04:37стиля кода или того, как должны выполняться те или иные задачи. Так, например, у меня есть навык
00:04:45«чистый современный код React», который не столько документирует функции React, сколько
00:04:50устанавливает некоторые правила, которым агент должен следовать при написании кода React, чтобы гарантировать,
00:04:59что определенные антипаттерны будут встречаться реже. По крайней мере, для меня сейчас ИИ-агенты склонны генерировать
00:05:08код, который не всегда самого высокого качества, и можно спорить о том, важно ли вам качество
00:05:13кода вообще. Я создал отдельное видео об этом на другом канале. Я бы сказал, что это
00:05:18важно, потому что качество кода имеет значение для возможности его проверки. Это может иметь
00:05:23последствия для производительности, это может влиять на то, насколько легко код поддерживать или расширять, поэтому я считаю, что это
00:05:29важно. И если у вас есть определенные модели поведения или паттерны, которые вы хотите, чтобы агент использовал, то такой
00:05:36поведенческий навык, где вы объясняете ему, как писать хороший код React, чего ему следует избегать (например,
00:05:43использования useEffect) и как этого избежать, — такой навык может быть очень полезным. Здесь речь меньше о
00:05:50предоставлении дополнительной документации или знаний, а больше о предписании поведения. И что
00:05:55интересно в этом навыке, так это то, что здесь у меня есть связанные файлы с файлом, содержащим более подробную информацию
00:06:02об useEffect. Поскольку все эти файлы навыков загружаются «лениво», как я уже говорил, вы можете
00:06:09в файле навыка ссылаться на другой файл, например, на этот файл useEffect.md в папке references,
00:06:15и тогда ИИ может решить загрузить этот файл только тогда, когда он поймет, что работает с useEffect,
00:06:21что он делает что-то с useEffect. Таким образом, здесь у меня есть более подробные сведения об антипаттернах,
00:06:27о которых он должен знать. Настройка таких навыков может быть вполне оправдана еще и потому,
00:06:33что я, конечно, могу скопировать это в любой React-проект, мне не нужно переписывать всё каждый раз, и это
00:06:39может привести к улучшению кода. Это второй тип навыков, который я рекомендую использовать, и вам не нужно
00:06:45продумывать все возможные паттерны, которые вы хотите описать. Вместо этого просто действуйте шаг за шагом: если
00:06:52вы видите, что в вашем проекте ИИ-агент постоянно делает что-то, чего вы не хотите,
00:06:58добавьте навык, в котором продумайте хорошее описание, повышающее шанс загрузки навыка
00:07:04в нужное время, и поместите свои инструкции в этот навык. Используйте его для исправления ошибок, и со временем
00:07:11вы создадите библиотеку навыков со своими специфическими лучшими практиками и поведением, которые хотите внедрить,
00:07:17и сможете использовать это в будущих проектах. Так что не воспринимайте это как огромную предварительную задачу, которая
00:07:22пугает своей сложностью. Вместо этого стройте базу навыков постепенно. Теперь третий тип навыков, и
00:07:29это уже другой тип — навыки, ориентированные на функциональность. До сих пор мы говорили о документации
00:07:37и о навязывании специфического поведения. Но эти инструменты агентной разработки, такие как Cloud Code, Codex,
00:07:43могут делать самые разные вещи. Они могут писать код, очевидно, но вы не ограничены написанием
00:07:49кода в проектах. Поскольку они могут писать код, они могут делать всё что угодно на вашем компьютере, если захотите.
00:07:55Вы можете использовать их, например, для анализа PDF-документов. Или у меня есть глобальные навыки в системе,
00:08:03которые не относятся только к программированию (некоторые относятся, но не все). Вы могли бы настроить навык, который
00:08:09объясняет агенту, как сгенерировать изображение. Что я имею в виду? Существуют, конечно, различные
00:08:16сервисы или API, которые можно использовать для генерации изображений или видео с помощью ИИ, например, fal.ai. Это,
00:08:24кстати, не спонсируемое видео. Есть также Replicate и другие сервисы. И конечно,
00:08:29если вы хотите сгенерировать изображение, скажем, вам нужна заглушка для вашего сайта или
00:08:34для чего-то совершенно другого — изображение, которое вы хотите распечатать и повесить на стену — вы можете использовать эти
00:08:41сервисы. Вы могли бы использовать Codex, Cloud Code или Py-агента, который мне очень нравится, и попросить его сгенерировать
00:08:49изображение для вас. По умолчанию он, скорее всего, потерпит неудачу, потому что у этих агентных инструментов разработки
00:08:54нет встроенных возможностей генерации изображений. Но если вы дадите им подходящий навык, который по-прежнему
00:09:00является просто markdown-файлом, в нем вы сможете описать, как взаимодействовать с каким-либо сторонним
00:09:06API для генерации изображения. Простое описание этого взаимодействия может быть одним из способов, но вы можете пойти
00:09:12дальше: ваши навыки также могут сопровождаться скриптами. Не всем они нужны, но здесь мой навык генерации
00:09:18изображений это делает. Этот скрипт был, честно говоря, написан искусственным интеллектом, он был «vibe-coded» (написан на вайбе),
00:09:26и в нем у меня есть скрипты, взаимодействующие с API fal — сервисом генерации изображений.
00:09:34По сути, я взял их документацию, вставил её в промпт и сказал ИИ-агенту написать мне
00:09:40инструмент, который может использовать этот API от fal для генерации изображений. Так был написан небольшой CLI-инструмент,
00:09:49скрипт, который может обращаться к этому API и генерировать изображения с различными
00:09:56параметрами и так далее. И затем файл skill.md просто объясняет, как использовать этот скрипт,
00:10:02указывает на него и говорит агенту, как его запустить, какие параметры передать и так далее. И затем
00:10:08у меня есть файл .env с моим ключом fal, и когда этот скрипт вызывается через Bun (о чем я
00:10:18сообщаю ИИ в файле skill.md), этот файл .env загрузится автоматически. Так что мне не
00:10:23нужно давать агенту доступ к этому ключу, мне не нужно говорить: «Пожалуйста, сгенерируй изображение, и, кстати,
00:10:29вот ключ». Вместо этого я просто говорю ему сгенерировать изображение, и он, благодаря этому
00:10:34описанию, загрузит этот навык, когда нужно, и затем узнает, что ему просто нужно запустить
00:10:39скрипт, и ему не нужно беспокоиться о деталях реализации. И это еще один вид
00:10:45навыков, который кажется мне интересным, и он не связан только с программированием. У вас, конечно, также может быть
00:10:52навык на основе скрипта, который форматирует код или что-то еще, но в целом,
00:10:57поскольку вы действительно можете использовать этих агентов для чего-то большего, чем просто написание кода,
00:11:02это определенно еще одна категория навыков, о которой стоит знать. Но в целом, я бы сказал: не усложняйте,
00:11:08но и не игнорируйте это, а создавайте свою библиотеку навыков шаг за шагом. Стоит отметить, что,
00:11:14конечно, существуют реестры навыков, такие как skills.sh, где вы можете просматривать навыки, созданные другими людьми.
00:11:21Всего два важных замечания: это может быть очень полезно, но чего бы я не стал делать, так это говорить: «Так, я строю»
00:11:29«проект на React с Tailwind и Better Auth и чем-то еще, поэтому я найду все навыки,»
00:11:35«которые потенциально могут быть интересны, и установлю их все в свой проект». Это может
00:11:40быть контрпродуктивно, потому что вы загружаете всё больше и больше метаданных в свое контекстное окно,
00:11:47а некоторые из этих навыков могут просто не иметь значения. Это один из моментов, о которых стоит знать: я бы не стал всегда
00:11:53пытаться добавить все навыки, которые теоретически можно добавить. Вместо этого нужно быть избирательным и фокусироваться на
00:11:57тех вещах, в которых ИИ постоянно ошибается или где вы знаете, что потребуется дополнительная
00:12:04документация. Это один момент, а другой момент касательно этих реестров заключается в том, что вы
00:12:09включаете навыки, написанные другими людьми. Эти навыки, как мы узнали, являются просто промптами. Если
00:12:16в одном из этих промптов есть что-то вредоносное, это может стать проблемой. Это может привести к атаке
00:12:22типа «инъекция промпта» (prompt injection), и об этом следует знать. Некоторые реестры, такие как skills.sh, насколько мне известно,
00:12:28проводят какое-то сканирование, чтобы снизить опасность таких инъекций, но вы никогда не защищены на 100%,
00:12:36и об этом следует помнить. Поэтому всякий раз, когда вы используете навык, написанный
00:12:40кем-то другим, прочитайте его. Он доступен для ознакомления, посмотрите и проверьте, нет ли там чего-то
00:12:47вредоносного. Это просто предостережение. Но в остальном — используйте навыки, не думайте,
00:12:54что вам нужно строить суперсложную суперсистему прямо сейчас. Вместо этого поэкспериментируйте с ними и держите
00:13:00эти три основных типа навыков в уме.