Вы показали это один раз. Почему вы всё ещё делаете это вручную?
Skill Recorder — расширение Chrome, которое смотрит, как вы проходите браузерную задачу один раз, и затем пишет SKILL.md — спецификацию на чистом markdown, которую Claude Code (или любой агент на CLI browse) воспроизводит без селекторов, glue code и присмотра.
↑ пятиминутный поток создания заказа, записан один раз и воспроизводится вечно.
Анатомия
Три стадии, на расстоянии одного клика.
Мы поставляем небольшое расширение Chrome MV3 и пайплайн дистилляции на 4 КБ. Рекордер цепляется к chrome.debugger для DOM-уровня точности; дистилляция целиком работает в service worker; воспроизведение читает итоговый SKILL.md через CLI browse. Никакого сервера. Никакого glue code.
i.
Захват
Боковая панель
Skill RecorderREC
00:01click nav.Orders
00:02click btn.New
00:04focus #sku
00:05type "SKU-1029"
00:06blur #sku
00:08type "50" → #qty
00:09click btn.Submit
Порт на каждый фрейм в content script пересылает каждое DOM-событие в service worker. Shadow DOM и iframe того же источника прозрачно прокалываются.
Шестиуровневый резолвер селекторов (testid → id → aria → text → css → xpath)
tabPorts: Map<tabId, Map<frameId, Port>>
IME-совместимая буферизация ввода · paste · drag
23 события →
ii.
Дистилляция
Service worker · 30 с
✓dedupe consecutive clicks23 → 16
✓fold keystrokes into type()16 → 11
✓detect inputs as {{params}}conf 0.94
✓mark auth boundary+1 precondition
✓parameterize URL segments2 swapped
✓flag dynamic-list clicks1 ⚠ note
Шесть небольших проходов превращают шумный лог событий в детерминированную спецификацию. Автопараметризация срабатывает только выше уверенности 0,7; ниже рекордер спрашивает, а не угадывает.
paramConfidence(step) — эвристическая лестница
детекция auth-boundary — непрозрачный токен + cookies
UUID · числовой ID · email · ISO-дата · валюта
SKILL.md →
iii.
Воспроизведение
browse CLI
~/work $ claude
> create POs for these 50 rows
Reading ~/.claude/skills/create-purchase-order/SKILL.md
Loaded 4 steps · 2 params · 1 precondition
▸ resolving precondition: signed in to supplier portal
✓ cookie present, expires 2026-08-04
▸ running batch [50 rows]
✓ 50/50 in 3m 11s
✓ 0 retries, 0 manual rescues
CLI browse читает SKILL.md как чистый markdown — без схемы, без рантайма, без лазеек. Каждый шаг аудируем.
Что переживёт запись? Тринадцать сложных случаев от начала до конца.
Браузер полон ловушек для рекордеров — хешированные классы, ленивые модалки, Shadow DOM, потоки между вкладками, IME-композиция, drag-and-drop. Каждая строка ниже — реальная фикстура в playground; кликните по любой, чтобы записать против неё самому.
Тринадцать из шестнадцати. Плюс четыре составные фикстуры — Notion, Linear, Jira, Salesforce — которые связывают от двенадцати до пятнадцати этих техник в один связный поток. Смотрите playground →
Практический пример
Пятиминутный браузерный ритуал, дистиллированный до тридцати секунд.
Полевой блокнотЗаписано 2026-02-19, 16:42 UTCВоспроизведено 50× без вмешательства
Каждое утро в понедельник операционный инженер у небольшого поставщика открывает один и тот же портал, кликает Новый заказ, вставляет SKU из CSV, набирает количество и кликает Отправить. И снова. И снова. Двести строк в неделю, каждую неделю, последние четырнадцать месяцев. Это пятиминутный ритуал, повторяемый до конца таблицы.
Именно такому типу задач продают рекордер — и именно на таких задачах большинство рекордеров проваливается. Портал поставщика крутит хеши классов Tailwind при каждом деплое. Кнопка Отправить живёт внутри динамической строки таблицы, которая ре-рендерится после каждого сохранения. Auth-cookie истекает в полдень. Selenium-скрипты против этой страницы в среднем выживают две недели, а затем тихо начинают ломаться.
Запись
Инженер прикрепляет расширение к панели инструментов, открывает портал, кликает Начать запись и выполняет задачу ровно один раз. Восемь кликов, два введённых значения, одна отправка. Боковая панель показывает живой поток событий — включая шум: прокрутка, focus, blur, случайные mousemove над иконкой помощи. Двадцать три события за 4,6 секунды.
Сырой лог сохраняет всё; дистилляция решает, что важно.
Дистилляция
main.example.p4
before / after23 события → 4 шага
— BEFORE (raw)
type"S" → #sku
type"K" → #sku
type"U" → #sku
type"-" → #sku
type"1" → #sku
type"0" → #sku
type"2" → #sku
type"9" → #sku
+ AFTER (distilled)
fill"#sku" with {{sku}}
+ AUTO-DETECTED
// 8 chars · alphanumeric · prefix SKU-
// confidence 0.94
Восемь нажатий становятся одним параметризованным fill — та же форма при каждом воспроизведении.
Передача
Инженер кладёт получившийся markdown в ~/.claude/skills/create-purchase-order/SKILL.md и пишет одну фразу Claude Code. Агент находит skill по имени, разрешает предусловие (сохранённый cookie действителен до полудня), проходит пятьдесят строк CSV и докладывает. Через три минуты одиннадцать секунд работа сделана. Никто не наблюдал.
claude code · stdout3 м 11 с · 0 повторов
> create purchase orders for the rows in ~/Desktop/feb-orders.csv▸ Reading ~/.claude/skills/create-purchase-order/SKILL.md
✓ 4 steps · 2 params · 1 precondition
▸ Resolving precondition: signed in to supplier portal
✓ cookie present (expires 2026-02-19 12:00 UTC)
▸ Running batch (50 rows)
✓ 50/50 submitted
✓ 0 retries · 0 manual rescues
✓ median 3.8s per row · longest 5.1s
Одна фраза на входе, пятьдесят заказов на выходе. Агент не задал ни одного вопроса.
Постскриптум
Стоимость пятиминутного ритуала, амортизированная на рабочий год.
Бесплатно во время открытой беты. Без аккаунта, без загрузки, без телеметрии. Весь бандл — 4,5 МБ; записи живут на вашей машине, пока вы не решите их экспортировать.