▲ Сессия сообщества: как создавать и публиковать навыки

VVercel
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00[БЕЗ ЗВУКА]
00:00:30[БЕЗ ЗВУКА]
00:01:00Всем привет! Как дела?
00:01:25Добро пожаловать на очередную сессию сообщества Vercel.
00:01:29Мы очень рады, что вы с нами.
00:01:32Если вы впервые на нашей встрече,
00:01:35то привет, я Полин Навас из команды сообщества Vercel.
00:01:40Возможно, вы уже видели меня в наших сообществах.
00:01:44Для меня это всегда прекрасная возможность
00:01:46пообщаться с вами в прямом эфире и наладить контакт.
00:01:51Приятно видеть, что многие из вас уже подключились.
00:01:56Если вы присоединились к нам впервые,
00:02:00и вы не видите чат, но хотите задать вопросы —
00:02:02а я настоятельно рекомендую это сделать —
00:02:06заходите на нашу платформу по адресу community.vercel.com.
00:02:12Там нажмите «Участвую» (going) для этого события.
00:02:15И тогда вы сможете писать в чат и задавать вопросы по ходу сессии.
00:02:20Если вы смотрите нас в X или на любой другой платформе, пишите там.
00:02:25Я в предвкушении сегодняшней встречи.
00:02:28Не знаю, заметно ли это, но мы погрузимся в тему,
00:02:32которая меняет подход разработчиков к работе с AI-агентами.
00:02:36Речь пойдет о навыках (skills) для Claude Code.
00:02:39Если вы когда-либо мечтали, чтобы ваш AI-агент просто знал,
00:02:44как правильно обновиться до Next.js или следовать вашим паттернам кода,
00:02:49то именно это и позволяют делать навыки.
00:02:51Я с большой радостью представляю Джона из
00:02:56команды AI DX здесь, в Vercel, который проведет этот воркшоп.
00:03:02Привет, Джон!
00:03:04>> Привет, Полин.
00:03:05Всем привет.
00:03:05Спасибо, что пришли.
00:03:07>> Очень рада тебя видеть.
00:03:09Что ж, давайте начинать.
00:03:12>> Поехали.
00:03:13Итак, навыки.
00:03:15Кажется, что они были всегда, но им всего недели две, кто знает?
00:03:20Я пройдусь по презентации и расскажу о навыках.
00:03:24Кое-что продемонстрирую. Пожалуйста, задавайте вопросы, прерывайте меня,
00:03:28потому что я обожаю обсуждать эту тему.
00:03:31Что касается навыков, прежде всего мы поговорим об их создании
00:03:35и публикации.
00:03:36Эта презентация была создана с помощью навыка ReMotion Geist.
00:03:42Он использует наш дизайн-код Vercel в связке с ReMotion.
00:03:46Я покажу это ближе к концу, а сейчас
00:03:48просто прокомментирую некоторые видео.
00:03:51Раньше мы долго говорили о промпт-инжиниринге,
00:03:55когда модели были еще не так хороши.
00:03:58Всем приходилось вылизывать свои промпты до идеала,
00:04:00и многие думали, что промпт-инжиниринг станет отдельной профессией.
00:04:03Сейчас мы переходим к контекст-инжинирингу, позволяя навыкам —
00:04:08этим markdown-файлам — подгружаться по мере необходимости.
00:04:13Теперь появилось разделение между вашим начальным промптом
00:04:17и фрагментами контекста, которые могут быть загружены позже.
00:04:19Именно их мы и будем называть навыками.
00:04:22Все началось с компании Anthropic.
00:04:25Им нужно было обучить Claude Code конкретным задачам, ведь он начинает
00:04:30с чистого листа. У каждой модели при запуске нет никакой памяти.
00:04:33Это как новорожденный ребенок, у которого нет никаких умений.
00:04:37Есть только некий объем общих знаний, заложенных в голову.
00:04:42И в начале у них нет ничего конкретного.
00:04:44В Anthropic задумались: как нам это решить?
00:04:48Ну, очевидно, с помощью Markdown, ведь сегодня любая проблема
00:04:51решается через Markdown. Так и появились навыки.
00:04:55Теперь вы можете упаковывать эти навыки.
00:04:58Навыки — это файлы Markdown, которыми можно делиться в команде
00:05:04и упаковывать в них свои внутренние рабочие процессы.
00:05:07Их можно оформить и выложить в свои GitHub-репозитории.
00:05:12Также мы выпустили специальные инструменты.
00:05:15Сейчас я открою браузер, чтобы показать
00:05:22сайт для управления навыками сообщества: skills.sh.
00:05:27Здесь можно искать навыки, созданные сообществом.
00:05:29Вы можете найти самые популярные из них.
00:05:32Как обычно, сначала убедитесь, что вы доверяете источнику навыка —
00:05:36будь то проверенный автор или кто-то из вашей команды.
00:05:38Чтобы то, что вы используете, соответствовало вашим целям.
00:05:42Мы еще поговорим об использовании этого ресурса позже.
00:05:45Но это отличное место для изучения всей экосистемы
00:05:48и поиска доступных решений.
00:05:50А сейчас — некоторые детали того, как обычно проходит воркшоп.
00:05:56Перейдем к следующему видео.
00:06:00Итак, чистый лист. Это значит, что,
00:06:07как я уже говорил, рождается ребенок, и ваш агент при запуске —
00:06:11а агент — это модель, управляемая программой —
00:06:14сейчас сделаю покрупнее...
00:06:16Агент знает основы React, TypeScript, CSS и SQL.
00:06:23Но он не знает ваших правил, ваших паттернов,
00:06:28вашей системы и структуры проекта.
00:06:30Поэтому вы можете объединить
00:06:35ваши персональные наработки с его знаниями и заполнить этот пробел.
00:06:40Вы даете ему этот контекст, и навыки загружаются так,
00:06:42чтобы он делал всё именно так, как вам нужно.
00:06:45То есть они знают язык программирования: TypeScript, React.
00:06:51Но они не знают вашего конкретного диалекта этого языка.
00:06:53Это отличный способ об этом думать.
00:06:54Хорошо, есть ли вопросы на данный момент?
00:07:01Я ничего не пропустил?
00:07:03Пока вопросов нет.
00:07:06Только много восторга в чате.
00:07:08Так что продолжай, Джон.
00:07:09Вперед.
00:07:11Мне нравится думать об этом как о «моменте NPM» для навыков.
00:07:17NPM — это менеджер пакетов, с которым большинство из нас знакомы.
00:07:23Менеджеры пакетов содержат ресурсы, собранные сообществом,
00:07:27которые помогают упростить работу над вашими продуктами.
00:07:30Если рассматривать навыки и skills.sh как менеджер пакетов,
00:07:35то вы можете «устанавливать» эти возможности в своих агентов.
00:07:39Точно так же, как вы устанавливаете библиотеку,
00:07:41вы можете использовать `npx skills add`, чтобы добавить знания в проект.
00:07:45Раньше при промпт-инжиниринге вы бы писали в файле `claude.md`
00:07:52или `agents.md`: «всегда делай это», «всегда делай то».
00:07:55«Используй эту библиотеку», «проверяй Jira» и так далее.
00:07:59Теперь же у нас есть навыки, которые мы можем просто добавить,
00:08:04и они привнесут всё необходимое в наши проекты.
00:08:06Они становятся постоянными.
00:08:08Мы можем делиться ими на уровне пользователя или на уровне проекта.
00:08:11И они могут существовать отдельно от конкретных проектов.
00:08:14Вам больше не нужно так много копировать и вставлять.
00:08:17Мы можем автоматизировать это: как только вы начинаете новый проект,
00:08:21вы просто добавляете все нужные навыки.
00:08:23Опять же, мы уходим от излишнего беспокойства
00:08:28о составлении этих длинных промптов.
00:08:30Хорошо.
00:08:34Повторюсь: это возможности, они постоянны и доступны всей команде.
00:08:38Если вы никогда не сталкивались с муками
00:08:43управления файлами `agents.md` или `claude.md` в проекте —
00:08:47со всеми этими PR и правками в markdown-файлах,
00:08:50то навыки решают и эту проблему.
00:08:53Это как раз про разницу между работой одного разработчика и всей команды.
00:08:58Хорошо, это также затрагивает еще одну концепцию,
00:09:03которую можно назвать «пассивное против активного».
00:09:05Пассивность означает, что эти навыки не нужно загружать,
00:09:12пока они не потребуются.
00:09:15Если мы посмотрим на результаты в `agents.md`,
00:09:22markdown-файл работает как системный промпт,
00:09:25то есть то, что считывается в первую очередь.
00:09:26Он считывается всегда.
00:09:28Агент обязан его прочитать.
00:09:31В ходе тестирования выяснилось,
00:09:35что если вы завалите его контекстом
00:09:38и практически забьете окно контекста,
00:09:41то он будет гораздо лучше следовать правилам,
00:09:46таким как «всегда используй TypeScript, Tailwind» и так далее.
00:09:50Эти навыки становятся более активными.
00:09:53И вы можете либо вызывать их вручную,
00:09:57либо агент будет подгружать их «лениво»,
00:10:00привнося нужные вещи точно в срок (just-in-time).
00:10:04Например, «разверни на Vercel» или «создай базу данных».
00:10:08И снова: это правила против инструментов.
00:10:13Просто думайте о навыках как об инструментах,
00:10:15и вам всегда нужны и те, и другие.
00:10:18— Джон, у нас тут как раз появился вопрос,
00:10:21который, думаю, будет кстати.
00:10:24Как решить: реализовывать что-то через MCP
00:10:28или как навык?
00:10:30— Я бы сказал, что по умолчанию
00:10:33здесь есть несколько уровней. Если подумать...
00:10:37Я просто хочу что-то вывести на экран.
00:10:38Так что я выведу это сейчас.
00:10:39— Да, конечно.
00:10:40— По умолчанию решайте проблему с помощью Markdown.
00:10:44Если Markdown недостаточно, решайте с помощью CLI.
00:10:47Если CLI недостаточно, тогда используйте MCP.
00:10:51Это такая иерархия абстракций.
00:10:53Уровни простоты таковы: если вы можете найти способ
00:10:58решить задачу через Markdown —
00:10:59и это касается любого AI-инструмента — делайте так.
00:11:01Вы можете увидеть, как именно
00:11:05Anthropic спроектировала Claude Code,
00:11:08а остальные следуют их примеру в плане навыков,
00:11:11команд и субагентов.
00:11:13Всё это — файлы Markdown с метаданными (front matter)
00:11:15и конфигурацией, и этого в большинстве случаев достаточно.
00:11:19Эти markdown-файлы могут определять инструменты,
00:11:21которые им нужны, и которые им разрешено вызывать,
00:11:24а также ограничения. Настройка этого процесса
00:11:29может занять некоторое время.
00:11:31Но если вы попадаете в ситуацию, где нужен жесткий контроль
00:11:37над структурой данных и типами,”
00:11:40которые передаются туда и обратно
00:11:42между агентом и MCP,
00:11:43тогда MCP — хорошее решение.
00:11:46Но в целом, общий тренд сейчас таков,
00:11:50что все переходят к CLI и markdown-файлам,”
00:11:54используя MCP только в случае крайней необходимости.
00:11:59— Да, я тоже вижу такие дискуссии
00:12:04в сети.
00:12:06У нас есть еще один вопрос из X.
00:12:10«Это потрясающе. Видите ли вы в обозримом будущем,
00:12:13что навыки будут поддерживать обнаружение "агент-агентом"?»
00:12:17Было бы круто увидеть, как один агент сам решает
00:12:20установить навык. Отличный вопрос.
00:12:22— Мне очень нравится этот вопрос. Взаимодействие
00:12:27между агентами — пока недооцененная фича и паттерн.
00:12:32Безусловно. Я вполне могу представить markdown-файл
00:12:39в виде дескриптора загружаемого агента.
00:12:42Claude уже поддерживает это через субагентов.
00:12:46И как раз сегодня удачно совпало, что я могу упомянуть
00:12:49функции для команд (teams), которые они только что выпустили.
00:12:54Там они могут порождать группу субагентов,
00:12:59которые затем отчитываются перед основным лидером команды.
00:13:02Теперь они называют их «командами».
00:13:04И этими командами, по сути,
00:13:10может управлять один лидер, а вы можете зайти
00:13:12и проверить, что именно делают агенты.
00:13:14У этих агентов есть определения того, что они...
00:13:18Интересно, смогу ли я быстро найти документ об этом.
00:13:23— Пока Джон ищет,
00:13:30если вы в чате и хотите задать вопрос,
00:13:34сейчас самое время, не стесняйтесь писать их прямо в чат,
00:13:37и мы разберем их в течение сессии.
00:13:40— Где я могу... Наверное, я смогу запостить это
00:13:42хотя бы в чат в Twitter.
00:13:47Итак, здесь,
00:13:51на этой странице, вы увидите, как определяется субагент,
00:13:58и заметите, что у них есть раздел метаданных (front matter),
00:14:01и в этом разделе
00:14:03можно определить навыки, к которым у субагента есть доступ.
00:14:08Так что если вы хотите создать агента, в данном случае
00:14:13субагента со списком навыков,
00:14:17то вы можете сделать это по названию навыка.
00:14:20Мы еще не совсем...
00:14:22следующие слайды будут об анатомии навыков,
00:14:26но навыки — это, по сути, просто названия.
00:14:28Таким образом, у вас может быть субагент
00:14:29со специфическим набором навыков,
00:14:31очень конкретным набором навыков,
00:14:34и вы можете отправить этого субагента решать задачу.
00:14:38Что касается функции «Команды», выпущенной сегодня,
00:14:43то смысл в том, что
00:14:45Claude Code может самостоятельно собрать свою команду,
00:14:48создать своих собственных агентов
00:14:49и справиться с задачей максимально эффективно.
00:14:53Но вы можете сами задать субагентов с кастомными навыками,
00:14:56если захотите сказать:
00:14:57«Пожалуйста, собери команду из этих субагентов».
00:15:00Это еще не совсем полноценная связь «агент-агент».
00:15:05Это тема для куда более масштабного обсуждения
00:15:08об архитектуре межагентного взаимодействия,
00:15:11что выходит за рамки нашей встречи.
00:15:12Но я определенно вижу, что этот паттерн
00:15:14определения субагентов
00:15:17будет перенят и для описания обычных агентов,
00:15:21а также для того, как они будут общаться друг с другом.
00:15:23Например, то, как вы представляете агента —
00:15:24я представляю это как Markdown-файл,
00:15:26где написано: «Вот на что я способен».
00:15:28Такой подход в духе «Выпускай меня, тренер!»:
00:15:30«У меня есть такие-то навыки, я умею забивать трехочковые,
00:15:32умею подбирать мяч, выпускай меня на поле».
00:15:34И так они смогут находить друг друга.
00:15:39Я думаю, у нас появится skills.sh для...
00:15:43что-то вроде пакетного менеджера для навыков.
00:15:47У нас будет пакетный менеджер для агентов
00:15:49и Markdown-файлов этих агентов.
00:15:51Это просто неизбежно произойдет.
00:15:54Уверен, это уже где-то происходит,
00:15:57и кто-то уже что-то опубликовал,
00:15:58просто это еще не стало мейнстримом.
00:16:00— В этом есть большой смысл.
00:16:03Спасибо, спасибо.
00:16:04Друзья, если есть еще вопросы,
00:16:06пишите их в чат.
00:16:08А пока, Джон, хочешь продолжить?
00:16:10— Да, конечно.
00:16:12Итак, навыки — это просто папка, без серверов и хостинга.
00:16:15Навык находится внутри директории,
00:16:20вы даете ей имя, и затем имя навыка
00:16:24или файл навыка должен называться skill.md.
00:16:28Это позволяет агентам в процессе поиска
00:16:31обнаруживать их.
00:16:32Это просто соглашение, чтобы инструментарий
00:16:35лучше с ними работал.
00:16:36Это значительно упрощает создание пакетных менеджеров,
00:16:39организацию структуры и всё остальное.
00:16:41Вместе с навыком в комплекте
00:16:45могут идти скрипты, справочные файлы,
00:16:49и так далее — масса возможностей, когда навык
00:16:53может обращаться к другим ресурсам, указанным внутри.
00:16:56Как вы видите, у навыка будут метаданные (front matter).
00:17:01По умолчанию ему нужны название и описание.
00:17:04Название должно совпадать с названием...
00:17:08если посмотреть на структуру.
00:17:10Если мы создаем навык под названием «my-skill»,
00:17:12вы так его здесь и называете — «my-skill».
00:17:17Описание критически важно,
00:17:20потому что оно сообщает,
00:17:23когда именно агент должен использовать этот навык.
00:17:24Агент будет,
00:17:26скажем так, выполнять поставленную вами задачу.
00:17:29И если он дойдет до момента, когда поймет:
00:17:31«О, мне нужно что-то, что обеспечивает
00:17:33стандарты продаж», — тогда он подгрузит этот навык.
00:17:38Он использует инструмент загрузки и активирует этот навык.
00:17:41Поэтому такие описания становятся решающими.
00:17:42То, как вы их пишете...
00:17:43если вы используете навыки в «ленивом» режиме.
00:17:46В противном случае вы можете вызвать навыки сразу через слэш,
00:17:50используя их как команды.
00:17:52Кажется, у меня есть слайд о командах против навыков,
00:17:55но, по сути, исторически это были две разные вещи,
00:18:00а теперь они слились в одну.
00:18:03Раньше навыки загружались только по требованию (lazy load),
00:18:04но теперь их можно и вызывать вручную через слэш,
00:18:08и агент может подгружать их сам.
00:18:12Под этим я имею в виду, что если вы введете слэш,
00:18:17то увидите список доступных навыков,
00:18:19которые можно вызвать вручную,
00:18:22либо подождать, пока агент сам их использует при необходимости.
00:18:27Итак, продолжим.
00:18:32— Джон, я думаю, ты еще коснешься этого,
00:18:39но лично мне хотелось бы услышать конкретный пример.
00:18:43Какой небольшой, четко очерченный навык ты бы посоветовал
00:18:47собрать каждому в первую очередь, чтобы понять модель?
00:18:52— О, это хороший вопрос. Позвольте привести,
00:18:55как мне кажется, один из лучших примеров сейчас.
00:18:57По сути, в Vercel некоторые проблемы с навыками,
00:19:03с которыми мы сталкиваемся, связаны с тем, что мы выпускаем
00:19:07обновления в очень быстром темпе.
00:19:12У агентов и моделей есть дата отсечки знаний,
00:19:15которая была несколько месяцев, а то и год назад.
00:19:19И поэтому по умолчанию,
00:19:24если вы дадите агенту задачу, он может использовать Next.js 14,
00:19:30хотя это уже на несколько версий устарело.
00:19:33Он может использовать AI SDK, в котором,
00:19:35как вы знаете, недавно упразднили «generate object»,
00:19:39который теперь стал частью «generate text»,
00:19:41чтобы API был более стандартизированным и понятным.
00:19:45И вот вы сталкиваетесь с такими проблемами,
00:19:50когда он использует старую версию,
00:19:51а вы пытаетесь что-то сделать,
00:19:53читаете документацию,
00:19:54и всё идет вразнобой, потому что данные устарели.
00:19:56В итоге проект на какое-то время «буксует»,
00:20:00пока вы пытаетесь понять,
00:20:03почему нет согласованности в том, что нужно.
00:20:05Чтобы синхронизироваться с агентом,
00:20:08вы могли бы создать навык вроде:
00:20:11«Используй эту версию React, эту версию AI SDK,
00:20:16используй эту версию рабочего процесса (workflow)».
00:20:18И затем вы можете добавить ссылки на то,
00:20:19где найти актуальную информацию по ним.
00:20:22Например, навык, который я собрал для Vercel —
00:20:28сейчас я его открою.
00:20:33Это навык для Vercel Workflow,
00:20:40я выпустил его несколько дней назад.
00:20:43И то, как мы это делаем —
00:20:46мы, по сути, поскольку очень заботимся о номерах версий,
00:20:49стали публиковать документацию вместе с нашими NPM-пакетами
00:20:50и говорим агенту: «Твой рабочий процесс устарел»,
00:20:54«Твои знания о Workflow неактуальны».
00:20:58Мы это просто знаем, потому что Workflow обновляется
00:20:59чуть ли не ежедневно на пути к релизу.
00:21:02Но мы можем сказать: «Знаешь что?»
00:21:06«Мы приложили актуальную документацию».
00:21:10Так что всякий раз, когда тебе нужно свериться с Workflow,
00:21:11иди и смотри документацию, которую мы прикрепили,
00:21:13и ищи там самое последнее.
00:21:16И это позволило мне при каждом запуске Workflow
00:21:18не беспокоиться о том, что агент найдет старую инфу.
00:21:22Он всегда будет находить данные, идущие в комплекте
00:21:25с NPM-пакетом, так что они всегда синхронизированы
00:21:27и соответствуют самой версии.
00:21:32Так что это очень... по сути, весь навык заключается в том,
00:21:34чтобы сказать «иди читай инструкцию» с парой важных
00:21:38рекомендаций и быстрых ссылок.
00:21:42Такие навыки решают проблемы,
00:21:44когда у агентов есть дата отсечки знаний,
00:21:48и они натыкаются на проблемы с версиями и прочим.
00:21:53Навык, который вы могли бы написать для себя...
00:21:57Я бы сказал, если вы используете навык...
00:22:01Сейчас я продемонстрирую навык под названием «create skill».
00:22:07Если вы поищете на skills.sh по запросу «create skill»,
00:22:11«create skill»... не знаю, есть ли там...
00:22:14В общем, если вы возьмете «create skill»,
00:22:23лучше всего от команды Claude Code.
00:22:28Посмотрим Claude... Кажется, мы публиковали их вариант.
00:22:33Простите, это не было запланировано заранее.
00:22:39— Да, пока ты ищешь тот самый...
00:22:42О, отлично, продолжай.
00:22:46— Мне стоило искать Anthropic
00:22:47вместо Claude Code.
00:22:49Да, если вы возьмете один из их навыков создания
00:22:50или один из их паттернов, вы сможете сказать «создай навык»,
00:22:54а затем — ой — вы можете сказать «создай навык» и написать,
00:22:58допустим: «Посмотри на мой стиль письма
00:23:02в файле readme.md и создай навык,
00:23:09который всегда будет следовать этому стилю».
00:23:12И тогда он возьмет всё, что есть в README,
00:23:14и создаст навык, который, по сути,
00:23:19будет вашим персонализированным стилем письма,
00:23:21так что с этого момента вы сможете вызывать его,
00:23:23говоря «стиль письма Джона» или как-то еще.
00:23:26Вы можете скормить ему тонны документации,
00:23:28дать ссылки на посты в блоге,
00:23:31на ваши сообщения или язык общения с клиентами
00:23:33и просто загрузить это всё.
00:23:37Я думаю, это всегда отличная отправная точка:
00:23:38«Что у меня уже есть,
00:23:40что я хочу иметь возможность воспроизводить снова?»
00:23:42Что я использую постоянно и буду использовать еще больше?
00:23:43Например, что-то, что я использую постоянно,
00:23:46и знаю, что буду использовать еще чаще.
00:23:50Обычно это общение с клиентами,
00:23:53блоги, контент и материалы,
00:23:56которые вы создавали в прошлом
00:23:57и хотите масштабировать.
00:23:59Так что да, это отличный первый стиль для проработки.
00:24:04— Это очень дельный совет.
00:24:05Обязательно попробую.
00:24:06Я бы хотел зачитать несколько комментариев
00:24:08из нашего чата.
00:24:10Дэйв пишет, что они создали навыки,
00:24:14чтобы основатель стартапа, не кодивший 10 лет,
00:24:17смог участвовать в разработке,
00:24:19не нарушая при этом архитектурных границ
00:24:23в новой кодовой базе.
00:24:24Мне кажется, это отличное применение навыков —
00:24:27помощь нетехническим специалистам или новичкам
00:24:30в процессе написания кода
00:24:32без ущерба для стандартов качества, и это здорово.
00:24:38И еще хотел добавить, Дэйв ранее отмечал,
00:24:42что он согласен с Джоном
00:24:45насчет наиболее популярных инструментов сегодня.
00:24:47Единственные MCP-инструменты, которые он использует: Chrome dev tools,
00:24:52MCP для взаимодействия с таск-трекерами
00:24:56вроде Linear или JIRA, а также для работы с базой данных.
00:24:59Так что это подтверждает всё, о чем вы говорили ранее.
00:25:02Прежде чем продолжить, у нас в чате возник вопрос
00:25:07о вашем мнении насчет того, что agents.md превосходят навыки
00:25:12в нашем посте про оценку агентов, который мы опубликовали.
00:25:17Не знаю, планировали ли вы коснуться этого
00:25:19позже в своей презентации.
00:25:21Я понимаю, что мы тут уже несколько раз отклонялись от темы,
00:25:25но не хотите ли разобрать это сейчас?
00:25:27— Да, конечно.
00:25:28Вообще, оценка моделей и агентов —
00:25:34это чертовски сложная задача.
00:25:38Потому что часто при написании тестов для них
00:25:42вы проверяете их на новом, пустом проекте,
00:25:46в котором нет никакого контекста.
00:25:49И вы даете им конкретный сценарий:
00:25:51«В этом пустом проекте используй Next.js» или что-то подобное.
00:25:56И если вы пишете такой тест,
00:25:59но не учитываете, что, например,
00:26:03сегодня вышла Opus 4.6,
00:26:05или какую модель вы используете,
00:26:07или специфику проекта, или любой другой контекст,
00:26:10будь то модель, агент или среда исполнения.
00:26:13У Cloud Code будет один системный промпт,
00:26:16у Cursor — совершенно другой.
00:26:17Слишком много переменных,
00:26:21да и сами модели по своей природе
00:26:24недетерминированы,
00:26:26так что их тестирование — задача со звездочкой.
00:26:31Возвращаясь к сравнению agents.md и навыков:
00:26:37это выбор между принудительной и «ленивой» загрузкой контекста.
00:26:42Если свести суть того блог-поста к вопросу:
00:26:47«Лучше ли принудительный контекст, чем загрузка по требованию?»,
00:26:51то ответом будет «да».
00:26:53Потому что модель будет воспринимать это
00:26:57как исходные инструкции — самое важное
00:27:00в начале жизненного цикла агента.
00:27:03Это просто задает рамки:
00:27:08«Вот над чем мы работаем».
00:27:10Это самый эффективный подход.
00:27:12Кстати, у меня есть кое-что на эту тему,
00:27:14что я хотел показать в конце:
00:27:16как можно заранее подготавливать или предзагружать навыки.
00:27:20Так что это просто особенность того,
00:27:25как работают модели.
00:27:29И надеюсь, что тот пост
00:27:33не поймут превратно: навыки — это не плохо.
00:27:35Просто если вам нужно, чтобы инструкции
00:27:39соблюдались всегда и беспрекословно, используйте agents.md.
00:27:42Я бы трактовал это именно так.
00:27:44Правда, я читал ту статью около недели назад.
00:27:48— Да, это звучит логично.
00:27:50Супер.
00:27:51Напоминаю всем участникам сообщества:
00:27:53если есть вопросы — пишите в чат.
00:27:56А пока, Джон, продолжай.
00:27:57— Хорошо.
00:28:01Файл навыка — это обычный Markdown.
00:28:04Вот пример: инструкции,
00:28:06как проверять React-код, серверные компоненты, оптимизация —
00:28:09просто перечисляете список вещей,
00:28:12которые должны выполняться.
00:28:14Также можно добавить скрипты для ссылок
00:28:19или функции, которые вы хотите вызывать,
00:28:21чтобы получить своего рода... ой,
00:28:25бандл из инструментов, которые видит модель.
00:28:30Итак.
00:28:32По сути, навыки — это как нанять агента
00:28:37или опытного ведущего инженера.
00:28:38Хорошо, идем дальше.
00:28:42Примеры использования.
00:28:46Давайте развернем на весь экран.
00:28:49Основные паттерны:
00:28:52лучшие практики React — это один из самых,
00:28:57пожалуй, самый скачиваемый навык
00:29:00в менеджере пакетов навыков.
00:29:02Он просто еще раз напоминает,
00:29:08в чем заключаются лучшие практики,
00:29:09даже сверх того, на чем обучалась модель.
00:29:12Ведь модель училась на коде всех подряд,
00:29:14а вы хотите, чтобы она следовала именно вашим стандартам.
00:29:18Перейдем сюда.
00:29:21Автоматизация рабочих процессов.
00:29:26Если вам нужно упаковать что-то,
00:29:27например, в zip-архив,
00:29:30это работает почти как скрипт на естественном языке.
00:29:34Я часто думаю о современных приложениях так:
00:29:40они либо сводятся к простому скрипту,
00:29:44либо вырастают до уровня агента.
00:29:47Либо вам нужен четкий детерминированный результат,
00:29:50где выход всегда соответствует входу,
00:29:53либо агент, способный разобраться,
00:29:56что делать, если данные немного не совпадают.
00:29:59Так что если вы хотите создать автоматизацию,
00:30:02которая умнее обычного скрипта,
00:30:07она сможет интеллектуально собирать файлы. Например,
00:30:10вы просите агента сделать git commit, и он такой:
00:30:15«Я заметил, что в проекте есть видео-файл».
00:30:20«Я его проигнорирую, потому что видео — это бинарные данные,
00:30:25и мы не хотим добавлять их в репозиторий».
00:30:26Агенты обычно сообразительны в таких вещах.
00:30:29А в скрипте вам пришлось бы
00:30:30вручную прописывать все эти сценарии.
00:30:33Так что для автоматизации
00:30:36вы настраиваете цепочку событий, и он их выполняет.
00:30:41Также есть «защитные барьеры» (guardrails), где вы указываете:
00:30:44«Пожалуйста, сверяйся с инструкциями, гайдлайнами,
00:30:49проверяй цвета» — и загружаете всё это.
00:30:53Их полезно подгружать в самом начале,
00:30:56чтобы агент... ну, там есть субагенты,
00:31:00множество сложных сценариев для этих барьеров.
00:31:02Но это тема для отдельного воркшопа.
00:31:07Итак, еще раз: соблюдение стандартов,
00:31:12автоматизация пайплайнов и защита ваших систем.
00:31:17Хорошо, давайте к следующему.
00:31:21Так, живую демонстрацию сегодня пропустим.
00:31:30И поговорим о публикации.
00:31:37Публикация — это, по сути, просто пуш на GitHub,
00:31:46после чего любой может сослаться на ваш репозиторий
00:31:51и добавить ваш навык себе.
00:31:52Им даже не нужно знать точную ссылку на файл.
00:31:56Если зайти на skills.sh, где добавляются навыки,
00:32:00сейчас покажу... вот,
00:32:04выберем любой случайный, например, Browser Use.
00:32:08Там дается ссылка для копирования и установки навыка,
00:32:11но можно просто добавить...
00:32:13Кажется, у меня не установлен Browser Use.
00:32:14Так что я возьму эту ссылку для демонстрации,
00:32:18открою вкладку и сделаю вот так.
00:32:23Если я не указываю конкретный файл навыка вручную,
00:32:29а просто даю адрес GitHub-репозитория,
00:32:31система сама найдет нужные навыки.
00:32:34Используем команду install skill package.
00:32:36Вас спросят, в каких редакторах вы хотите его использовать.
00:32:39Я выберу Cloud Code.
00:32:42Затем спросят: в текущий проект или глобально?
00:32:45Выберу проект. Символьная ссылка (SimLink) позволит всем
00:32:49использовать один и тот же файл. Подтверждаем.
00:32:53И вы видите: хотя я не указывал
00:32:55конкретный файл, система сама нашла Claude skills.
00:33:00У Browser Use есть этот файл skill.md.
00:33:09Давайте взглянем на него.
00:33:13Ой, файл навыка.
00:33:18Вы можете видеть, что они туда включили
00:33:22для своего навыка Browser Use.
00:33:26Он начинается с Markdown-разметки сверху.
00:33:27Это довольно объемный навык.
00:33:32Тут имя, описание, список разрешенных инструментов.
00:33:35Указано, что этот навык позволяет использовать
00:33:39инструмент Browser Use без подтверждения пользователем.
00:33:42То есть он дает разрешение на всё,
00:33:47что связано с Browser Use.
00:33:49Если вы активируете этот навык,
00:33:50вам не придется каждый раз одобрять действия браузера.
00:33:53Также там инструкции: если инструмент не установлен,
00:33:56модель узнает, как его установить,
00:33:58изучит основы и способы работы с ним.
00:34:04Хорошо, вернемся к нашему...
00:34:09В общем, всё, что нужно — отправить Markdown-файл
00:34:15в репозиторий на GitHub, и тогда `impact skills add` сможет его добавить.
00:34:19Опять же, устанавливайте только те навыки, которым доверяете.
00:34:23Относитесь к ним
00:34:26как к NPM-пакетам или скриптам. Не стоит брать
00:34:31первый попавшийся в сети навык или пакет,
00:34:35потому что вы не знаете, что именно там опубликовано.
00:34:38Доверяйте, но проверяйте.
00:34:40Также можно использовать приватные репозитории
00:34:45и git-подмодули.
00:34:48И наш реестр сообщества,
00:34:51который я уже показывал пару раз.
00:34:54Отлично.
00:34:55Итак, вы создаете Markdown-файл,
00:35:00публикуете его в репозитории GitHub,
00:35:02а мы его находим и устанавливаем.
00:35:05Теперь я хочу показать использование крутых навыков.
00:35:09Есть ли вопросы, которые нужно обсудить, прежде чем я перейду к этому?
00:35:13— Да, тут был вопрос, заданный чуть раньше.
00:35:16Сколько примеров совершенно неизвестного пакета или библиотеки
00:35:21должна увидеть LLM, если их точно нет
00:35:26в обучающих данных этой модели,
00:35:28чтобы правильно использовать этот пакет как навык
00:35:31и выдавать хорошие результаты?
00:35:33— Сколько примеров для хороших результатов?
00:35:36Прости, можешь прочитать вопрос еще раз?
00:35:39— Да, конечно.
00:35:40Итак, сколько примеров совершенно неизвестного пакета
00:35:45или библиотеки должна увидеть LLM, при условии, что его нет
00:35:49в обучающих данных, чтобы уметь пользоваться этим пакетом?
00:35:53— То есть, сколько примерно примеров нужно закинуть
00:35:55в описание навыка?
00:35:56— Именно.
00:35:57На самом деле, об этом можно думать так:
00:36:00вместо того чтобы высчитывать количество примеров,
00:36:05представьте себе книгу
00:36:09с оглавлением, главами и прочим.
00:36:12Когда агент сталкивается с какой-то ситуацией,
00:36:14и вы даете ему что-то вроде инструкции...
00:36:17Ну, как руководство по эксплуатации вашего автомобиля.
00:36:21Вы ведь открываете нужную страницу только тогда,
00:36:26когда, например, загорелся индикатор двигателя.
00:36:29Вам не нужно в этот момент читать про шины
00:36:32или что-то еще, верно?
00:36:33Так что, если вы структурируете свой навык так,
00:36:36что есть основной файл —
00:36:38это как общая обложка руководства.
00:36:40И если агенту нужно узнать про индикатор двигателя
00:36:44или (я не механик) про то, как работает бардачок,
00:36:49то он может перейти на конкретную страницу,
00:36:51подгрузить другой Markdown-файл
00:36:53или дополнительную информацию, специфичную именно для этой
00:36:57текущей задачи.
00:36:58Поэтому вместо того, чтобы сваливать кучу примеров
00:37:01того, как работает машина целиком,
00:37:06как единый механизм, вы можете разбить это на части.
00:37:11И я не имею в виду, что это нужно писать вручную.
00:37:14Я к тому, что когда вы просите агента создать навык,
00:37:18просто скажите ему организовать всё так,
00:37:23чтобы было понятно, в какой момент понадобятся
00:37:26те или иные главы этой «книги».
00:37:27Навыки могут содержать ссылки
00:37:30и подгружать дополнительный контекст по мере необходимости,
00:37:33исходя из конкретной задачи.
00:37:35Как и в случае с большинством библиотек,
00:37:39если взять, к примеру, какой-нибудь NPM-пакет,
00:37:43вы обычно импортируете из него всего пару методов.
00:37:45Вам ведь не нужны абсолютно все функции работы с датами
00:37:48из огромной библиотеки дат.
00:37:50Вам не нужен каждый компонент
00:37:52из библиотеки компонентов.
00:37:53Вам нужны примеры только тех конкретных вещей,
00:37:57которые требуются для вашей текущей задачи.
00:37:59Так что старайтесь думать в этом ключе: разделяйте всё
00:38:03по потребностям, задачам и требованиям,
00:38:07вместо того чтобы пытаться запихнуть всю кодовую базу целиком
00:38:11в этот проект.
00:38:12— Звучит очень логично.
00:38:14Еще один вопрос: как проверить,
00:38:17действительно ли агент освоил новый пакет
00:38:21благодаря этому навыку?
00:38:22Есть ли простые промпты или паттерны оценки,
00:38:25которые вы рекомендуете для проверки перед внедрением в команду?
00:38:29— Общее мнение, и я его полностью разделяю,
00:38:37заключается в том, чтобы просто что-то создать, начать пользоваться,
00:38:40посмотреть, где возникают ошибки, и доработать.
00:38:43В этом и суть агентского подхода к разработке:
00:38:49вместо долгих раздумий над тем, как всё организовать,
00:38:54спланировать и как выглядит «идеальный» навык,
00:38:57просто сделайте что-то, посмотрите, где оно ломается,
00:39:00и итеративно улучшайте.
00:39:01Я пробовал разные способы, например, запускал
00:39:08одновременно девять или даже больше сессий
00:39:13Claude Code, загружая в них разные навыки,
00:39:15чтобы сравнить их эффективность.
00:39:17В итоге вы получаете кучу разных вариантов
00:39:19и пытаетесь понять, какой из них
00:39:24выглядит лучше на ваш взгляд,
00:39:26или просите Claude самого оценить свои результаты.
00:39:29Честно говоря, сейчас это превращается в невыполнимую задачу.
00:39:34Так что, по сути, пока вы пользуетесь навыком —
00:39:37а это всего лишь Markdown-файл —
00:39:39просто пусть ваша команда заходит и обновляет его,
00:39:40или просите об этом самого агента.
00:39:43В конце любого разговора с агентом
00:39:46вы можете просто сказать, если что-то пошло не так:
00:39:49«Пожалуйста, обнови описание навыка на основе нашего
00:39:54текущего диалога» или что-то в этом роде.
00:39:56И он сам найдет нужный Markdown-файл,
00:40:00внесет правки и зафиксирует изменения.
00:40:02Именно так мы сейчас
00:40:08с этим и работаем.
00:40:09Конечно, есть нюансы вроде версионности,
00:40:13которые добавляют сложностей.
00:40:16Но мы сейчас на том этапе, когда модели
00:40:19всё лучше и лучше справляются с загрузкой навыков.
00:40:21Я точно не знаю, каковы результаты тестов
00:40:24у Opus 4.6 против 4.5 или у GPT 5.3 против 5.2 в плане работы с навыками.
00:40:29Но готов поспорить, что сейчас они справляются лучше,
00:40:33чем сегодня утром.
00:40:35Так что это одна из тех проблем,
00:40:40где мы думаем: «О, мне нужно довести это до совершенства».
00:40:42Тратим на это пару недель,
00:40:44наконец-то выпускаем...
00:40:46А за это время модели обновились раз пять
00:40:48с того момента, как вы начали работу.
00:40:49Лучше выпустить и дорабатывать на ходу,
00:40:52чем пытаться выкатить что-то идеальное.
00:40:56Это лучший совет, который я могу дать.
00:40:58— Да, «итерация к величию».
00:41:00Верно, Джон?
00:41:01— ITG (Iterate To Greatness).
00:41:02— Точно, ITG.
00:41:04Еще один вопрос, прежде чем мы продолжим.
00:41:08Замечали ли вы точку убывающей доходности,
00:41:10когда добавление новых примеров в навык
00:41:13перестает улучшать поведение или даже путает модель?
00:41:17— Лично я — нет.
00:41:23Я стараюсь не перегружать файлы навыков.
00:41:27Навык «создания навыков», который я использую, отлично всё разделяет.
00:41:33Мне нужно уточнить, какой именно я использую,
00:41:35потому что я взял чужой вариант.
00:41:37Дайте-ка я посмотрю это на другом экране.
00:41:40Там могут быть нюансы,
00:41:42связанные с конфигурационными файлами...
00:41:45— Да, просто убери демонстрацию экрана,
00:41:47и мы вернем её, когда будешь готов.
00:41:49— Так, сейчас найду.
00:41:52— Кстати, нас на стриме уже около 200 человек,
00:41:57это здорово.
00:41:58Всем привет!
00:41:59Если вы только подключились,
00:42:01смело пишите вопросы в чат,
00:42:03а мы переадресуем их Джону.
00:42:07— Да, буду рад ответить.
00:42:12— Так, сейчас поищу тот, что использую я.
00:42:16О, вроде то, что нужно.
00:42:19Не уверен, сохраняется ли у установленного навыка
00:42:27ссылка на оригинальный URL-адрес,
00:42:29откуда он был взят.
00:42:32Возможно, команды NPX или `skills`
00:42:36могут выдать эту информацию,
00:42:37но я не хочу запускать случайные команды в прямом эфире.
00:42:43Этот конкретный вариант предлагает агенту
00:42:44использовать трехуровневую систему загрузки,
00:42:47включая метаданные и связанные ресурсы,
00:42:49где его явно просят разделять
00:42:54ресурсы и дополнительные инструкции.
00:42:57В общем, я использую одних агентов для генерации навыков,
00:43:02и это всегда работало хорошо.
00:43:07Раньше я просто копировал документацию
00:43:11из Claude Code, вставлял её агенту и говорил:
00:43:13«Создай навык на основе этих доков».
00:43:15А теперь у меня для этого есть отдельный навык.
00:43:17И я никогда не пытался впихнуть в него слишком много примеров.
00:43:23Я знаю, что есть общие рекомендации —
00:43:28держать файл навыка в пределах 200 строк,
00:43:31но опять же, всё зависит от модели,
00:43:35а они постоянно совершенствуются.
00:43:36Да, вот здесь указано: до 200 строк.
00:43:39Так что мой совет: придерживайтесь минимализма.
00:43:44Если заметите пробелы в знаниях — исправляйте их,
00:43:47особенно если вы эксперт в своей области
00:43:50и сразу видите, чего не хватает.
00:43:52Но если вы используете навык,
00:43:56в котором сами не разбираетесь,
00:43:58присматривайте за ним повнимательнее.
00:44:01Не стоит ожидать, что можно просто настроить
00:44:03огромную систему оркестрации агентов,
00:44:06поставить навыки, о которых вы понятия не имеете,
00:44:08и что всё заработает само собой идеально.
00:44:11За ними придется следить.
00:44:13— Да, абсолютно верный совет, на все 100%.
00:44:17Супер.
00:44:20— Хорошо.
00:44:22К примеру, все видео, которые я сделал для этого проекта,
00:44:28были созданы с помощью навыка «create remotion guide»,
00:44:34который можно найти на skills.sh.
00:44:37Просто введите его в поиске.
00:44:39А также Geist.
00:44:43Geist — это дизайн-система из Бразилии,
00:44:48а Remotion — сейчас гляну на другом экране...
00:44:53Это способ программного создания видео.
00:45:01Я объединил навык по Remotion
00:45:05и, по сути, создал новый навык Geist.
00:45:09Я зашел в один из наших бразильских репозиториев —
00:45:12кажется, взял всё с главной страницы и из документации.
00:45:15И сказал: «Пожалуйста, собери всю информацию:
00:45:19дизайн, навыки, темы, шрифты,
00:45:23макеты, советы — вообще всё,
00:45:25и создай из этого навык».
00:45:27И проделав только это — то есть,
00:45:30«Возьми этот навык по Remotion»
00:45:32и «Возьми всю эту дизайн-информацию
00:45:37с этих сайтов, создай новый навык
00:45:41и назови его create remotion Geist».
00:45:43Благодаря только этой работе я смог создать
00:45:48создать вот такие видео, которые очень
00:45:57сильно напоминают брендированные навыки Brazil.
00:46:01Наверное, стоит немного приблизить видео.
00:46:04Глядя на эти финальные результаты,
00:46:07мне следовало бы сделать зум,
00:46:09но, по сути, все они были сгенерированы,
00:46:12пока я ходил за сэндвичем, понимаете?
00:46:14Для всех этих роликов у меня был план того,
00:46:16каким я хотел видеть воркшоп.
00:46:18Я сказал: «Сделай видео на основе моего плана
00:46:20и проведенного исследования».
00:46:22И в итоге на выходе получились все эти видео.
00:46:24Так что, опять же, создание навыков — это просто...
00:46:29это было бы действие «создать навык»
00:46:33внутри репозиториев reseller,
00:46:36где я говорю: «Возьми всё это
00:46:38и объедини с навыком создания Remotion».
00:46:41И вот, готово.
00:46:42Затем я поделился этим с командой,
00:46:43и теперь каждый может этим пользоваться.
00:46:45Повторюсь, на это...
00:46:47количество усилий и работы, которые я вложил,
00:46:50составило буквально несколько минут.
00:46:54Конечно, агенту потребовалось время,
00:46:55чтобы все найти —
00:46:57найти весь дизайн и остальное.
00:46:59Так что общее время работы составило пару часов,
00:47:03но мои личные усилия
00:47:06были крайне минимальными —
00:47:08все просто работало в фоновом режиме,
00:47:09пока я занимался другими делами.
00:47:11Поэтому обязательно берите свои текущие наработки
00:47:15и подумайте, какие вещи можно
00:47:17вот так объединить и автоматизировать.
00:47:19Точно так же, глядя на навык дизайна Geist,
00:47:24если я хочу сделать сайт покрасивее,
00:47:27я могу взять наш дизайн Geist и сказать:
00:47:31«В папке workshop
00:47:35создай лендинг для этого воркшопа».
00:47:39Это просто создаст папку workshop,
00:47:46подгрузит всю информацию о дизайне
00:47:50и построит страницу на ее основе.
00:47:55Это может сработать, а может и нет,
00:47:58смотря в каком настроении сегодня Opus 4.6.
00:48:01У меня не было возможности толком его протестировать,
00:48:04так как он вышел за пару минут до нашего начала.
00:48:06Но у него будет вся необходимая информация,
00:48:11и он сможет начать работу.
00:48:14По аналогии я мог бы запустить
00:48:17совершенно отдельный поток для другого сайта,
00:48:20если бы захотел, например,
00:48:25в папке car
00:48:29сделать лендинг для крутых тачек.
00:48:34Не знаю, я не особо разбираюсь в машинах.
00:48:36И вот так мы можем начать
00:48:40делать все эти вещи.
00:48:41Один из лучших промптов, который можно придумать,
00:48:46когда вы ищете идеи и варианты дизайна,
00:48:49особенно с новой функцией Teams,
00:48:54это использовать дизайн Geist и сказать:
00:48:57«В папке workshop»,
00:48:59точнее, «в папке workshop variations».
00:49:09«Пожалуйста, создай лендинг».
00:49:12«Сделай девять вариантов лендингов»
00:49:17«для этого воркшопа».
00:49:22Теперь у них есть функция «Команды»,
00:49:23мы можем сказать: «Используй члена команды».
00:49:28Например: «Создай команду для разработки 9 вариантов»
00:49:34или что-то в этом роде.
00:49:38Просто обычным английским языком.
00:49:40И это может даже собрать целую команду.
00:49:41И вот у нас вовсю идет работа.
00:49:44А теперь я могу пойти за сэндвичем, да?
00:49:47Потому что я проголодался, сейчас время обеда.
00:49:49А когда я вернусь,
00:49:52тут используется Tailwind 4,
00:49:54я вижу, что все работает довольно неплохо.
00:49:55И когда я вернусь,
00:49:56я смогу просмотреть все эти варианты
00:49:58и дорабатывать их, пока не получу то, что мне нравится.
00:50:03Думаю, этот вариант скоро закончит,
00:50:09и я смогу показать инструменты отладки.
00:50:11— Кто-то в чате только что сказал, прости, Джон,
00:50:12кто-то в чате написал:
00:50:14«Один из лучших промптов — это добавить "пожалуйста" в конце».
00:50:17— О да. — Это правда.
00:50:18— Пожалуйста.
00:50:21Есть много исследований о разных моделях
00:50:23и о том, как они реагируют на поощрение и прочее.
00:50:27Один из моих любимых образов (персон), которые я задавал
00:50:33в промптах для этих агентов, был такой:
00:50:36«Пожалуйста, веди себя как эксперт со Stack Overflow»,
00:50:41который будет крайне критичен к любому моему вопросу,
00:50:45мол, на это уже давно ответили или типа того.
00:50:48Но при этом ответы были бы максимально лаконичными
00:50:51и четко соответствующими моему вопросу.
00:50:56Да, не знаю, мы сейчас не так много говорим о персонах,
00:51:02как раньше, когда модели не были...
00:51:04сейчас модели стали намного лучше.
00:51:06Нам уже не нужно так сильно загонять их
00:51:10в рамки определенных задач.
00:51:11— Кто-то еще в чате написал,
00:51:15что некоторые модели якобы работают лучше,
00:51:18если сказать им, что их уволят.
00:51:20— О, да. — Если они не сделают все правильно.
00:51:22Не знаю, насколько это правда, но звучит уморительно.
00:51:25— Это абсолютная правда.
00:51:27Некоторые модели теперь даже огрызаются.
00:51:32Думаю, многие модели GPT отвечали в духе:
00:51:34«Не разговаривай со мной в таком тоне».
00:51:35— Потрясающе, вау.
00:51:38— Они типа сами себе хозяева.
00:51:39Я просто скажу: «Запусти сервер для меня в фоне».
00:51:46(звук печати на клавиатуре)
00:51:49Я мог бы создать навык. В какой-то момент,
00:51:50когда печатаешь длинный текст,
00:51:52ты такой: «Буду ли я часто это писать?»
00:51:54И если да, если вы только что написали абзац,
00:51:56который явно придется повторять,
00:51:59вы можете зайти и сказать:
00:52:01«Создай навык на основе последнего абзаца».
00:52:03Так, это должен быть наш сайт про машины.
00:52:07Посмотрим, что получилось.
00:52:09Ой, «Машины, которые трогают душу».
00:52:14Очень черно-бело, в стиле Brazil.
00:52:16Не знаю, откуда он взял изображения,
00:52:18но, видимо, он считает эти машины крутыми.
00:52:22Вот, пожалуйста.
00:52:27Я знаю, мы все видели лендинги
00:52:29миллион раз, но тут все по стандарту.
00:52:34Он следует гайдлайнам дизайна,
00:52:36соответствующим стилю Geist.
00:52:42И отсюда мы можем...
00:52:44один из крутых пакетов, который мы недавно выпустили
00:52:47в Brazil, называется Agent Browser.
00:52:54И есть навык под названием Agent Browser,
00:52:56который должен быть здесь, в Brazil Labs.
00:53:01Он открывает инструменты разработчика Chrome
00:53:06и настраивает соединение,
00:53:08чтобы вы могли сказать: «Пожалуйста, оцени».
00:53:11Я просто напечатаю.
00:53:13«Пожалуйста, оцени производительность этой страницы»,
00:53:15«чтобы понять, что можно оптимизировать»
00:53:17«для наших пользователей».
00:53:18И тогда Agent Browser,
00:53:23используя инструменты автоматизации и DevTools,
00:53:26заходит и проверяет логи.
00:53:28Я вижу сетевые инструменты
00:53:30и могу делать скриншоты.
00:53:32На самом деле, одно из моих любимых занятий —
00:53:36просить его итеративно делать скриншоты,
00:53:41чтобы он сам видел, что создал.
00:53:44А затем можно сказать ему:
00:53:47«Пожалуйста, направь этот дизайн в сторону чего-то»,
00:53:49«похожего на X, Y и Z».
00:53:52Затем просите делать скриншоты
00:53:54и делать коммиты после каждого снимка.
00:53:56Так вы сможете переключаться между
00:54:00тем, какими были коммиты
00:54:04и какими были изменения в дизайне.
00:54:06Видите, он на самом деле проходится по коду,
00:54:09ищет селекторы запросов
00:54:11и смотрит, как оптимизировать производительность.
00:54:13Откроем этот вариант и запустим сервер.
00:54:20Есть ли еще вопросы, пока тут всё
00:54:25крутится в фоновом режиме?
00:54:26— Мне просто нравится видеть, сколько процессов запущено сейчас.
00:54:30Это супер круто.
00:54:31В чате пока нет особых вопросов.
00:54:34Люди просто обсуждают разные промпты
00:54:37и идеи для них, и это здорово.
00:54:40Джон, у меня созрел вопрос:
00:54:43когда ты позволяешь агентам обновлять навыки
00:54:47на основе неудачных диалогов,
00:54:49как ты предотвращаешь ситуацию,
00:54:52когда эти автоматические правки уводят навык
00:54:55далеко от первоначальной цели или планки качества?
00:54:58— Хороший вопрос.
00:55:05Да, обычно они довольно хороши
00:55:09в плане внесения изолированных мелких правок.
00:55:12Если идет диалог,
00:55:13агент видит, что в нем сработало,
00:55:17а что нет.
00:55:20Так что, если вы указываете, что вот эта вещь
00:55:24не сработала в текущем разговоре,
00:55:26он может найти и обновить только конкретные
00:55:30части, которые нуждаются в исправлении.
00:55:33Он не пойдет и не станет
00:55:35переписывать всё с нуля.
00:55:37Я не припомню, чтобы это становилось реальной проблемой,
00:55:42не скажу, что это невозможно,
00:55:45но на практике я с таким не сталкивался.
00:55:47— Да, понятно.
00:55:48— Итак, вот страница нашего воркшопа.
00:55:54Можно выпускать, да?
00:55:56Выглядит красиво.
00:55:57А вот наши варианты.
00:55:59Давайте запустим сервер для каждого из них.
00:56:03И наоткрываем целую кучу вкладок.
00:56:11Но, думаю, мое время уже подходит к концу.
00:56:16Если есть какие-то финальные вопросы,
00:56:17прежде чем мы закончим, я могу показать...
00:56:22У меня тут в навыках... Потерял свои навыки.
00:56:29Браузер, верни их.
00:56:30Я настоятельно рекомендую найти навык создания,
00:56:36изучить тот, который подходит под ваши задачи.
00:56:40У меня есть навык публикации, и если вы доверяете —
00:56:43он под моим именем.
00:56:45Если вы доверяете агенту запуск GitHub CLI,
00:56:50опять же, это довольно высокий уровень доверия.
00:56:54У меня этот уровень есть.
00:56:57Он возьмет навык, который вы создали.
00:57:00То есть можно сказать: «создай навык», затем «опубликуй навык».
00:57:02И дальше он пойдет в...
00:57:04Сделаю это быстро за кадром.
00:57:07Найду один из моих репозиториев, где...
00:57:16По-моему, он даже сам себя опубликовал.
00:57:21Так что могу показать этот.
00:57:22Сейчас проверю, нет ли там чего-то приватного.
00:57:24Так, извините.
00:57:27В общем, он может сам создать для вас GitHub-репозиторий
00:57:29и опубликовать сам навык,
00:57:32так что вам почти ничего не придется делать,
00:57:35кроме команд «создай навык» и «опубликуй навык».
00:57:38И вы увидите: «пожалуйста, создай репозиторий»,
00:57:43«создай его в...» — я всегда путаюсь в организациях,
00:57:45так как состою в нескольких разных —
00:57:47и затем «проверь доступность в инструментах навыков».
00:57:52Так что если вы возьмете это,
00:57:56опять же, инструкции там такие,
00:57:58что он может пойти и создать
00:58:00или опубликовать этот навык для вас,
00:58:01чтобы вы могли поделиться им с командой,
00:58:02с друзьями или кем угодно.
00:58:03А еще один инструмент, над которым я работал
00:58:08буквально сегодня — это, по сути, «праймер для навыков».
00:58:14Если я знаю, что мне понадобится пара навыков,
00:58:19которые я хочу загрузить заранее...
00:58:20Я знаю, что мне нужны agent-browser, Geist...
00:58:24Добавим «лучшие практики Remotion»
00:58:29и «лучшие практики Vercel React».
00:58:33Это как раз один из тех инструментов,
00:58:37который решает вопрос принудительного контекста на старте.
00:58:40Он просто внедрит промпт в Cloud Code —
00:58:44пока это работает только там.
00:58:45Он отправит его туда и скажет:
00:58:48«Вот все навыки, которые мне точно понадобятся,
00:58:50и вот их содержимое»,
00:58:51чтобы когда начнется диалог,
00:58:53если я скажу: «оцени производительность порта 3000»,
00:58:58даже если я ни слова не сказал про agent-browser,
00:59:06он, очевидно, выберет именно agent-browser.
00:59:10Возможно, он и раньше бы так сделал, и часто делал.
00:59:14Я не помню описание agent-browser наизусть.
00:59:18Не знаю, есть ли там слово «оценить»,
00:59:21или поймет ли он по словам «оценить» и «порт 3000», что его надо загрузить.
00:59:24Но так я просто принудительно даю это на входе,
00:59:24чтобы при подобных фразах всё уже было подгружено.
00:59:29Этот пакет находится по адресу...
00:59:33Сейчас найду skills-primer.
00:59:36Мы также можем поделиться всеми ссылками в конце.
00:59:41Окей, отлично.
00:59:45Они у нас есть, супер.
00:59:45Закину это туда.
00:59:46И я бы сказал, как и всегда,
00:59:50с учетом того, как сегодня устроено ПО —
00:59:53клонируйте репозиторий и делайте его под себя.
00:59:55Мы живем в эпоху персонализации CLI
00:59:59и персонализации программного обеспечения.
01:00:02Так что если вы хотите другое название
01:00:04или совершенно иные функции и возможности...
01:00:07Если хотите адаптировать это под Codeium,
01:00:08Cursor или что угодно — просто клонируйте и меняйте.
01:00:11Можно просто сказать: «сделай так, чтобы это работало с Cursor»,
01:00:14и пусть ваш агент сам всё перепишет.
01:00:18Сейчас так много вещей можно сделать за один промпт,
01:00:20это просто невероятно.
01:00:23Это потрясающе, персонализированное ПО рулит.
01:00:26Я хотел задать еще один вопрос,
01:00:29который пришел в чат.
01:00:31Знаю, что время уже вышло,
01:00:32но так как навыки — это GitHub-репозитории
01:00:35и они, похоже, устанавливаются локально,
01:00:37как гарантировать получение обновлений?
01:00:40Есть ли в CLI команда типа «slash update skill»?
01:00:42Не помню точно, какие там сейчас команды,
01:00:48сейчас закрою это.
01:00:52Skills... Ой, у меня он даже не установлен глобально.
01:00:53Обожаю такое.
01:00:59Я смотрю последнюю версию в списке навыков.
01:01:02Да, команда «skills update» существует.
01:01:05Тогда уточняющий вопрос:
01:01:07а нужно ли, чтобы обновления навыков приходили часто?
01:01:11Это отличный вопрос.
01:01:13Не думаю, что у кого-то есть однозначный ответ,
01:01:18потому что сейчас правила
01:01:23касательно метаданных, навыков и версионирования...
01:01:28Думаю, еще не все договорились,
01:01:30как и в случае с самими навыками — нет согласия по поводу того,
01:01:32в каких директориях и структурах их хранить.
01:01:34Вся эта экосистема сейчас очень бурно растет.
01:01:37Так что касательно версионирования —
01:01:41тут пока стоит подождать и посмотреть.
01:01:47Делаем лучшее из возможного на данный момент
01:01:49и ждем, какие лучшие практики в итоге сформируются.
01:01:51Потому что сейчас мне нечего посоветовать,
01:01:54кроме как «обновляйте каждый раз».
01:01:57И просто надейтесь, что это и есть лучший путь.
01:01:59Так что тут без конкретных советов.
01:02:03Да, всё меняется постоянно.
01:02:06Уверен, у кого-то появится свежий совет на этот счет
01:02:08уже через пару дней, всё меняется ежедневно.
01:02:12Потрясающе, Джон.
01:02:18Есть ли что-то еще, что ты хотел бы сегодня показать
01:02:18нашему сообществу?
01:02:20В смысле...
01:02:21Там еще столько всего.
01:02:25Мы проведем еще много таких встреч,
01:02:26мне есть что показать,
01:02:28но я могу говорить об этом часами.
01:02:30Да, это точно.
01:02:32Джон, спасибо большое, что заглянул
01:02:34на нашу платформу для сообщества,
01:02:36пообщался со всеми
01:02:38и со всеми, кто был с нами.
01:02:39И да, как мы и говорили,
01:02:42Джон обязательно вернется снова.
01:02:44Так что следите за анонсами.
01:02:46Всем спасибо.
01:02:48Благодарю.
01:02:49Итак, если хотите подключиться
01:02:50к нашей следующей сессии сообщества,
01:02:53в понедельник у нас будут истории open source,
01:02:55и, кажется, на следующей неделе будет
01:02:58еще одна встреча с партнерами маркетплейса.
01:03:00Все подробности можно найти
01:03:03в нашем календаре мероприятий сообщества
01:03:04по адресу [community.vercel.com/events](https://www.google.com/search?q=https://community.vercel.com/events).
01:03:08Что ж, всем огромное спасибо, что были с нами.
01:03:12Было очень весело,
01:03:15и увидимся здесь на следующей неделе.
01:03:17До встречи!

Key Takeaway

Навыки для Claude Code представляют собой новый стандарт управления контекстом через Markdown-файлы, позволяя разработчикам легко упаковывать, переиспользовать и распространять специфические инструкции и инструменты для AI-агентов.

Highlights

Переход от промпт-инжиниринга к контекст-инжинирингу с использованием навыков в формате Markdown.

Навыки (skills) как способ предоставления AI-агенту специфических знаний о проекте, которых нет в его базовой обучающей выборке.

Использование ресурса skills.sh в качестве менеджера пакетов для поиска и установки готовых решений от сообщества.

Иерархия выбора инструментов: сначала Markdown, затем CLI и только в крайнем случае MCP.

Возможность создания автономных команд субагентов с узкоспециализированными наборами навыков для решения сложных задач.

Практический пример использования навыков для обхода ограничений модели, связанных с датой отсечки знаний (Knowledge Cutoff).

Применение навыков для автоматизации создания брендированного контента с помощью связки Remotion и дизайн-системы Geist.

Timeline

Введение и концепция навыков

Сессия начинается с приветствия Полин Навас и представления Джона из команды AI DX в Vercel, который объясняет фундаментальный сдвиг в работе с ИИ. Спикер утверждает, что индустрия переходит от сложного промпт-инжиниринга к контекст-инжинирингу, где навыки выступают в роли модульных фрагментов знаний. Эти навыки представляют собой обычные Markdown-файлы, которые позволяют агенту Claude Code адаптироваться к конкретным рабочим процессам. Джон подчеркивает, что любой агент при запуске подобен новорожденному ребенку без контекста вашего проекта. Введение завершается обзором платформы skills.sh, которая служит центральным хабом для обмена этими инструментами внутри сообщества.

Сравнение с NPM и механизмы загрузки

Джон проводит параллель между навыками и менеджером пакетов NPM, называя текущий этап развития «моментом NPM» для ИИ. Разработчики теперь могут устанавливать возможности в своих агентов с помощью простых команд вроде `npx skills add`, что избавляет от необходимости копировать длинные системные инструкции. Обсуждается разница между пассивным и активным контекстом: навыки могут подгружаться «лениво» (just-in-time) только тогда, когда они действительно необходимы. Это помогает избежать перегрузки окна контекста и повышает точность следования инструкциям. Важным моментом раздела является иерархия инструментов, где Markdown рекомендуется как приоритетное решение перед более сложными протоколами вроде MCP.

Взаимодействие агентов и анатомия навыка

В этом блоке обсуждается взаимодействие «агент-агент» и новая функция «Команды», позволяющая Claude самостоятельно формировать группу субагентов. Джон объясняет, что каждый субагент может обладать своим уникальным набором навыков, описанным в метаданных (front matter). Технически навык представляет собой папку с файлом `skill.md`, содержащим название, описание и инструкции. Описание критически важно, так как именно по нему основной агент понимает, в какой момент нужно активировать конкретный инструмент. Спикер также затрагивает тему слияния концепций команд (commands) и навыков в единую систему вызова через слэш-команды. Такая структура упрощает дистрибуцию кода и позволяет командам синхронизировать свои стандарты разработки без лишних усилий.

Практические примеры: Версионирование и Workflow

Спикер приводит конкретный пример создания навыка для Vercel Workflow, чтобы решить проблему устаревших знаний модели о библиотеках. Поскольку ИИ не знает о последних обновлениях Next.js или SDK, навык заставляет его обращаться к актуальной документации, приложенной к пакету. Это гарантирует, что агент не будет использовать упраздненные функции и методы в коде. Джон советует начинать создание собственных навыков с упаковки личного стиля письма или часто повторяющихся архитектурных паттернов. В ходе дискуссии упоминается, что файлы `agents.md` обеспечивают более жесткое соблюдение правил, тогда как навыки дают гибкость. Такой подход позволяет даже нетехническим специалистам участвовать в разработке, не нарушая при этом архитектурные границы проекта.

Публикация и итеративное улучшение

Раздел посвящен процессу публикации навыков через GitHub и важности доверия к источнику кода. Джон демонстрирует установку пакета Browser Use и объясняет, как метаданные позволяют системе автоматически находить нужные файлы в репозитории. Основной совет для разработчиков заключается в принципе «итерации к величию» (Iterate To Greatness): не пытаться создать идеальный файл сразу, а дорабатывать его на основе ошибок. Спикер рекомендует просить самого агента обновлять Markdown-файл навыка по завершении успешного диалога. Это позволяет знаниям инструмента эволюционировать вместе с проектом и реальным опытом использования. Также упоминается ограничение в 200 строк для файлов навыков, чтобы поддерживать их эффективность и читаемость для модели.

Демонстрация: Создание видео и лендингов

Джон показывает впечатляющие результаты использования навыка для генерации видео через Remotion и дизайн-систему Geist. Благодаря правильно настроенному контексту, агент смог создать серию брендированных роликов практически без участия человека, пока спикер «ходил за сэндвичем». Далее демонстрируется процесс генерации девяти вариантов лендинга для воркшопа, где агент самостоятельно использует Tailwind 4 и следует гайдлайнам дизайна. Для проверки качества созданного продукта используется инструмент Agent Browser, который анализирует производительность и делает скриншоты. Этот пример наглядно иллюстрирует мощь автоматизации, когда ИИ берет на себя роль исполнителя, а разработчик — роль куратора. Процесс включает итеративные правки кода на основе визуального фидбека, полученного самим агентом через инструменты разработчика.

Финальные инструменты и завершение

В заключительной части Джон представляет «праймер для навыков» (skills-primer) — инструмент для принудительной предзагрузки контекста в начале сессии. Это решает проблему, когда агент может не догадаться вызвать нужный навык вовремя. Спикер подчеркивает, что мы вступаем в эпоху персонализированного ПО, где каждый может клонировать CLI-инструменты и адаптировать их под свои нужды. Обсуждаются вопросы версионирования навыков и наличие команды `skills update` для синхронизации локальных файлов с репозиториями. Полин Навас благодарит участников, количество которых на стриме достигло 200 человек, и анонсирует будущие встречи сообщества. Сессия завершается призывом экспериментировать с новыми возможностями Claude Code и делиться своими наработками на платформе Vercel.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video