"Експорт виправлено, лишилося перевірити" - і на цьому робота скінчилася. Наступного дня ви відкриваєте проєкт і не розумієте, які файли змінювалися, на якій версії дивилися вивантаження і де зупинилася перевірка.
Щоб продовжити без повторного дослідження, наступному етапу потрібні збережений результат, відомості про перевірки і найближчий крок. Розберемо таку передачу на одному завданні: його може вести одна сесія, кілька виконавців або ви самі за два заходи.
Передайте результат, який можна відкрити
У списку покупок зламався експорт у CSV. Вимога: вивантаження містить тільки показані рядки і зберігає їхній порядок. Для порожнього списку домовилися залишати рядок заголовків, без рядків даних. Формат колонок і роздільник змінювати не треба.
Замість "виправлено, лишилося перевірити" залишимо запис, за яким можна знайти зміни і продовжити роботу. Хеші та результати нижче умовні (це навчальний зразок, реальних прогонів за ним немає).
HANDOFF
Мета: CSV містить тільки показані рядки в їхньому поточному порядку.
Версія входу: базовий коміт 4f1c2ab.
Переданий стан: коміт 9d3e740 у гілці fix-export, додаткових правок немає.
Результат: src/export-csv.js - експорт бере список після фільтрації та сортування.
Перевірено вручну на 9d3e740: початкові записи A, B, C; на екрані C, A;
у CSV рядки даних C, A, запису B немає. Заголовок не вважаємо записом.
Не перевірено: порожній список; режим "тільки невиконані".
Рішення: формат колонок і роздільник не змінюємо.
Наступний крок: основна сесія перевіряє два сценарії, що лишилися.
Статус загального завдання: перевірку не завершено.Літерами позначено три записи списку. Сценарій перевіряє одразу дві властивості: прихований запис B не потрапив у вивантаження, а порядок C, A збігся з екраном. Просто отримати два рядки зі списку, де їх лише два, замало: такий результат дасть і експорт без фільтрації.
Запис можна зберегти в HANDOFF.md або дописати в наявний документ завдання. Якогось обов'язкового стандарту полів немає. Важливо, щоб наступний виконавець міг відкрити запис разом із потрібними файлами, навіть якщо попередня розмова йому недоступна.
Якщо перевірку виконувала команда, вкажіть її разом із фактичним результатом і версією коду. "12 з 12 пройшли" не пояснює, яку поведінку перевіряли. Для ручного сценарію потрібні початкові дані, дія і спостереження, як у прикладі вище.
Чернетку зручно доручити Claude Code: "Підготуй передачу на основі поточних файлів і виконаних перевірок. Відокрем факти від припущень. Вкажи, який стан перевіряли, що лишилося і з чого продовжити. Не оголошуй невиконані перевірки успішними". Перед використанням звірте версію з файлами, а результати - із записами ручної перевірки або виводом команд.
Задайте умови входу і виходу
Передача корисна, коли наступний етап розуміє, чи вистачає йому отриманих відомостей. Для нашого завдання вистачило трьох рядків.
| Етап | Вхід | Вихід | Умова прийняття |
|---|---|---|---|
| Уточнення | Вимога і поточні файли | Причина помилки з посиланням на код, очікувана поведінка | Визначено, які рядки вивантажуються, у якому порядку і що відбувається з порожнім списком |
| Зміна | Узгоджена поведінка і версія входу | Правка експорту і запис про локальну перевірку | Збережений стан доступний, змінені файли названо, перевірене відокремлено від неперевіреного |
| Перевірка | Переданий стан і сценарії | Спостереження щодо кожного сценарію, обмеження і зауваження | Результати стосуються переданої версії; кожен сценарій має підсумок, а для зауважень указано наступний крок |
Головний стовпець тут правий. На переході до перевірки він відповідає на запитання "чи можна починати перевіряти?". Навіть повністю описана правка ще може виявитися хибною. А завершена перевірка може повернути помилку на виправлення: придатний звіт не зобов'язаний повідомляти про успіх.
Якщо версію не вказано, спершу з'ясуйте поточний стан файлів. Перевірити його можна, але переносити на нього старий звіт без звіряння не можна. Етапи не вимагають окремих агентів і документів. невелике завдання може пройти всі три в одній сесії з однією нотаткою.
Збережіть прийнятий стан
Тут є три різні речі, які в передачі легко змішати:
- збережений стан коду - конкретна версія, яку можна відновити;
- нотатка про хід роботи - що робили, що перевірили, про що домовилися;
- прийняття результату - рішення, що зробленого достатньо для поставленої мети.
Коміт вказує на збережені в ньому файли. Але якщо після нього лишилися додаткові зміни, посилання вже не описує весь стан, який ви передаєте: ці правки теж треба зберегти і вказати окремо, включно з новими файлами. Коли передаєте набір змін, вкажіть і початкову версію, відносно якої їх розглядаєте. Посилання тільки на гілку замало, вона ж і далі змінюється.
Уявіть: у записі вказано 9d3e740, а файл експорту після нього вже відредагували. Отримувач бачить знайомий хеш, але працюватиме з іншим кодом. Спершу він з'ясовує, що змінилося. Якщо правка зачепила вибір або порядок рядків, попередня перевірка C, A не підтверджує поточну поведінку. Якщо змінився тільки текст коментаря, це саме по собі не привід повторювати сценарій.
Не обов'язково комітити після кожного кроку або збирати в один коміт свої й чужі правки. Важливо, щоб стан, який ви передаєте, існував цілком і був доступний отримувачу; спосіб збереження задають правила проєкту. Якщо файлів на місці немає, спершу перевірте збережену версію. Якщо зміни ніде не збереглися, одна нотатка їх не відновить.
Продовження розмови саме по собі не повертає файли до описаної версії. Знімки правок Claude Code теж охоплюють не всі зміни: правки через Bash не відстежуються, а відновлення змін інших виконавців має обмеження. Тому передача спирається на збережені файли та їхню версію. Докладніше: Checkpointing.
Розберіться з причиною зупинки
"Не вийшло" - це щонайменше три різні ситуації.
Перервався локальний прогін. Команда не завершилася або перевірка обірвалася посередині. Спершу з'ясуйте, що встигло виконатися і змінитися. Якщо причину усунуто і повтор не продублює вже виконану дію, можна повторити незавершений крок. Для нашого прикладу домовимося про одну повторну спробу; якщо вона теж обірветься, запишемо причину зупинки і що потрібно, щоб продовжити. Ліміт залежить від операції, а от нескінченний повтор нічого не пояснить.
Незрозуміла очікувана поведінка. Наприклад, виконавець не знає, які рядки вважати показаними, коли ввімкнено фільтр. Спершу він звіряється із записаною вимогою. Якщо відповіді там немає, формулює запитання відповідальному за вимогу. Продовжувати виправлення можна після відповіді; повторний запуск її не замінить.
Новий факт спростував ухвалене рішення. Скажімо, з'ясувалося, що CSV читає інша програма. Після уточнення погодили інший склад колонок, а вимогу до порядку зняли. Робота повертається до уточнення: треба записати новий критерій, переглянути залежну від нього правку і перевірки. Сценарій, пройдений раніше, може лишитися корисним, але вже не підтверджує все оновлене завдання.
Тут повернення веде до уточнення, бо змінилося початкове рішення. Якщо вимога лишилася та сама, а помилку знайшли в реалізації, досить повернутися до зміни. Переглядають ті результати, які залежать від зачепленого рішення.
Продовжте з актуальної точки
Коли повертаєтеся до роботи, кроків лише п'ять:
- прочитайте передачу цілком, включно з неперевіреним;
- звірте переданий стан із доступними файлами і додатковими змінами;
- з'ясуйте, чим скінчилася перервана операція, якщо вона була;
- визначте, які попередні результати ще чинні;
- виконайте найближчий незавершений крок і оновіть запис.
Повернімося до початкового прикладу, де вимоги не змінювалися. Наступна сесія відкрила передачу і звірила стан: коміт 9d3e740 доступний, додаткових правок немає, дані та умови перевірки ті самі. Сценарій C, A вже завершено, його результат і далі застосовний. Виправлення заново писати не треба.
Тепер отримувач перевіряє порожній список. За умовою завдання в CSV має лишитися рядок заголовків без даних. У нашому навчальному продовженні саме так і вийшло. У запис досить додати результат і замінити крок, що лишився:
Перевірено вручну на 9d3e740: експорт порожнього списку містить тільки заголовок.
Раніше перевірений сценарій C, A лишається актуальним.
Не перевірено: режим "тільки невиконані".
Наступний крок: основна сесія перевіряє цей режим.
Статус загального завдання: перевірку не завершено.Передача змінилася разом із роботою. Один із двох сценаріїв, що лишалися, виконано, другий досі на виду. Частковий результат не закриває початкову мету; перенесення перевірки в інше завдання потребує окремого рішення про зміну обсягу.
Якщо прогін обірвався, може знадобитися повторити перерваний сценарій з початку (не кожен інструмент уміє продовжувати його із середини). Раніше завершені перевірки зберігають чинність, доки актуальні їхній код, вхідні дані та умови.
Операція могла виконатися, навіть якщо відповідь про результат не надійшла. Перш ніж повторювати надсилання даних, публікацію або запис у файл, з'ясуйте, чи дія вже відбулася. Місце виконання нічого не гарантує: локальна команда теж може вдруге додати ті самі дані. Поки результат невідомий, повтор не повинен заміняти перевірку стану.
Хто готує передачу
Claude Code може зібрати факти, звірити вхід наступного етапу і виконати вже погоджений крок. Ви перевіряєте, що запис відповідає файлам і результатам прогонів. Спірні вимоги і зміну обсягу вирішує людина або призначений відповідальний; остаточне прийняття в нашому процесі лишається за людиною.
Збережена версія допомагає продовжити роботу, але не розширює повноважень виконавця. Якщо доручено перевірити експорт, наявність точки відновлення не дозволяє заразом змінювати формат колонок. Межі завдання нікуди не діваються і після передачі.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ