1. Субагент знаходить те, що пропустив автор
Тепер Тьома проходить усе сам і начисто — від файла ролі до знову викладеної гри. Розберімо крок за кроком, щоб повторити все один в один.
Крок 1. Додаємо роль субагента в проєкт. Усе в одному файлі — .claude/agents/reviewer.md:
---
name: reviewer
description: Проводить ревʼю гри на баги та шорсткості. Використовувати, коли просять подивитися на готову річ свіжим поглядом.
---
# Ревʼюер
Відкрий гру і її код уперше, без припущень «як задумано».
Знайди: баги, незручне керування, шорсткості.
Видай список знахідок по пунктах, у кожної — пріоритет (high / medium / low)
і точне місце (файл, що саме не так).
Не прав код сам — лише звіт.
Крок 2. Перевіряємо, що агент запрацював — набираємо в рядку символ @:
@
reviewer Ревʼює гру на баги та шорсткості… ← на місці
Якщо його видно після @, значить ця сесія його знає — можна працювати. Файл поклали, і за кілька секунд помічник доступний: перезапускати сесію не потрібно.
Якщо в списку порожньо — майже завжди справа в тому, що папки .claude/agents/ не було, коли ми починали розмову. Тоді перезапускаємося, попередньо зберігши його:
claude --continue
Крок 3. Пишемо бриф — коротке ТЗ для перевірника, REVIEW_BRIEF, щоб він зосередився лише на потрібному:
# REVIEW_BRIEF — Змійка v2
ПЕРЕВІРИТИ:
- поведінку хвоста на різкому повороті (щось сіпається)
- керування: чи немає затримки на поворотах
- шорсткості, помітні гравцеві після релізу
МОЖНА ЗАПРОПОНУВАТИ: покращення геймплею
НЕ ЧІПАТИ: основну механіку, базовий візуальний стиль
Крок 4. Делегуємо — однією фразою й забираємо руки з клавіатури:
Нехай reviewer розбере мою Змійку за REVIEW_BRIEF і знайде, що покращити.
Тьома відкидається й дивиться, як робота йде без нього. Ревʼюер сам відкриває файли, сам ганяє гру. Кілька секунд — і в чат прилітає не розпливчасте «десь не дуже», а розбір за пунктами:
РЕВʼЮ ЗМІЙКИ v2 — за REVIEW_BRIEF
[HIGH] Баг хвоста. game/index.html, функція checkCollision():
перевірка зіткнення виконується в той кадр, коли хвіст ще
не зрушив з місця, → заходження на клітинку хвоста, що відходить,
дає раптову «смерть», хоча клітинка в цей самий тик звільняється.
Проявляється на довгій змії + різкий розворот.
[MEDIUM] Керування. Поворот застосовується на наступному тику, а не одразу —
звідси відчуття затримки. Можна застосовувати ввід у той самий кадр.
[MEDIUM] Старт занадто швидкий: у перші секунди гравець не встигає
зорієнтуватися.
[LOW] Їжа зливається з фоном на темних клітинках — можна підсвітити.
[LOW] Немає лічильника рекорду — дрібна, але приємна деталь.
Механіку й стиль не чіпав (за брифом).
Тьома веде очима згори вниз — і на першому ж рядку завмирає.
— Та ну.
Першим пунктом, [HIGH], точне місце: game/index.html, checkCollision(), хвіст на різкому повороті. Той самий баг. Не «щось сіпається» — файл, функція, причина. Та сама діра, над якою Сашко зранку сидів і кивав: «Усе коректно».
А прискіпувачка, яка відкрила його Змійку вперше в житті, ткнула в неї одразу. Першим пунктом. За кілька секунд.
— І він же висів у опублікованій, — видихає Тьома, і його трохи коробить. — Я ж його тиждень тому гордо закинув у галерею. «Готово». А там ось що.
Тьома відкидається й кілька секунд мовчить. Льоха нещодавно товкмачив йому про свіжий погляд — складно, по поличках. Він кивав і думав: «Ну так, логічно». А зараз це вже не лекція. Зараз це його баг, його гра, і хтось сторонній ткнув у діру, повз яку він сам пройшов пів дня.
— Інші могли б його зловити, — каже він тихо. — Відкрили б із телефона — і все. А Сашко сто разів повз проходив. Звик, що «хвіст інколи чудить, ну й гаразд».
Він перечитує рядок ще раз — і не злиться, як зранку. Натомість у нього проскакує щось на кшталт поваги.
— Не тому, що вона розумніша за Сашку, — додає він сам собі. — Бо свіжа. Сашко пів дня не бачив цього впритул — а вона глянула вперше й тицьнула пальцем.
2. Що беремо в роботу, що відхиляємо
Крім бага, ревʼюер приніс ще жменю покращень геймплею. Зробити поворот чуйнішим. Зменшити швидкість на старті. Підсвітити їжу яскравіше. Додати лічильник рекорду.
Перший порив — старий, школярський: раз розумний ревʼюер нарадив, треба брати все, він же краще знає. Тьома вже тягнеться відповісти Сашкові «роби все підряд» — і зупиняє себе.
— Ні-ні, — каже він уголос. — Список порад — це ще не список наказів.
Вирішувати, що ляже в Змійку, — не ревʼюеру, а йому. І він іде по пунктах, як той, хто зважує кожен.
— Баг хвоста — лагоджу, без питань, сороміцька діра. Поворот чуйнішим — так, самого давно бісило, беру. Швидкість на старті зменшити… — він подумки прикидає, — ага, теж беру. А от «їжу яскравіше» — стоп.
Тьома дивиться на свою їжу й розуміє, що йому й так подобається.
— Це не баг. Смаківщина. У ревʼюера свій смак, у мене свій. Відхиляю. Лічильник рекорду — думка хороша, але не сьогодні, відкладемо.
Щось бере, щось відкладає, щось відхиляє — і вперше робить це з відчуттям права. Раніше він виконував чужі забаганки: сказали — зробив. А зараз він той, хто вирішує, що взагалі буде зроблено.
Вибрав — віддає в роботу. Головну діру першою, прямо словами, як Льоха вчив доручати:
Сашко, виправ баг хвоста в Змійці, який виявив ревʼюер.
---
[HIGH] Баг хвоста. game/index.html, функція checkCollision():
перевірка зіткнення виконується в той кадр, коли хвіст ще
не зрушив з місця, → заходження на клітинку хвоста, що відходить,
дає раптову «смерть», хоча клітинка в цей самий тик звільняється.
Проявляється на довгій змії + різкий розворот.
Агент іде в код Змійки й править ігрову логіку — ту саму, в якій Сашко зранку сидів і не розгледів.
— «Готово, виправив», — читає Тьома відповідь і хмикає. — Ну-ну. Виправив, кажеш? Зараз перевіримо.
Вірити на слово він не збирається. Відкриває гру локально, розганяє змію до пристойної довжини — тієї самої, на якій зранку ловив сіпання, — і навмисно робить той різкий розворот.
Секунда. Хвіст проходить поворот.
Чисто. Жодного сіпання. Ще раз, ще різкіше — чисто. Бага немає.
— От-о-о-о, — тягне Тьома із задоволенням. — Інша справа. Не «агент сказав, що виправив» — я власноруч перевірив.
3. Власне доопрацювання поверх знахідок
Поворот і старт Тьома докидає Сашкові тим самим способом — словами, одним завданням. А потім додає те, чого в списку прискіпувачки не було зовсім:
— А це вже від себе, — каже він. — Прискіпувачка про звук мовчала. А я хочу.
Додай у Змійку озвучення: короткий звук на поїдання їжі та фонову музику (web audio).
Сашко застосовує вибрані правки й підʼєднує Web Audio. Керування стало чуйнішим, старт — мʼякшим. А потім Тьома відкриває гру, веде змію до першого яблука — і динаміки видають короткий приємний хрум. Фоном вмикається бадьора музика.
— О! — Тьома мимоволі розпливається в усмішці. — Заграло.
Він ганяє змію по екрану просто, щоб послухати. Хрум, хрум на кожне яблуко. Саме цього він хотів зранку — для душі. Прискіпувачка зробила Змійку чистішою, а це — вже його, зі своїм голосом.
4. Перевіряємо і здаємо результат
Тьома відправляє оновлену Змійку назад у галерею. Туди, де вона й лежала, — тільки тепер це вже інша Змійка. Без дивного бага. Із живим керуванням. І зі звуком.
Він дивиться на неї в галереї й раптом ловить те нечітке, що крутилося ще зранку.
— Так, стоп, — каже він сам собі. — Я ж тиждень тому думав, що закрив її. Виклав — і все, забув, перейшов до наступної.
А вона, виявляється, не закрилася. До неї можна було повернутися — знайти діру, полагодити, додати звуку, подивитися чужими очима.
— Виходить, викласти — це не кінець, — повільно тягне він. — Це… якась середина. Зробив 90 % роботи, а попереду ще 90 % роботи.
Він проводить поглядом по своїй вітрині — Змійка, лендинг, іграшки — і вперше бачить їх не як купу готових і забутих саморобок. Це речі, які живуть. І хтось їх веде. Він.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ