Skip to content

Цикл верификации: Checkpoint и Evals

Чему вы научитесь

После изучения механизма цикла верификации вы сможете:

  • Использовать /checkpoint для сохранения и восстановления состояния работы
  • Использовать /verify для запуска комплексных проверок качества кода
  • Освоить концепцию Eval-Driven Development (EDD), определять и запускать evals
  • Построить непрерывный цикл верификации, поддерживая качество кода в процессе разработки

Ваша текущая проблема

Вы завершили функцию, но боитесь создавать PR, потому что:

  • Не уверены, не сломали ли существующие функции
  • Боитесь снижения покрытия тестами
  • Забыли начальную цель, не знаете, не отклонились ли от курса
  • Хотите вернуться к стабильному состоянию, но нет записи

Если бы был механизм, который мог бы «сделать снимок» в ключевые моменты и непрерывно верифицировать в процессе разработки, эти проблемы решались бы сразу.

Когда использовать этот подход

  • Перед началом новой функции: создайте checkpoint, зафиксируйте начальное состояние
  • После завершения этапа: сохраните прогресс для возможности отката и сравнения
  • Перед отправкой PR: запустите полную верификацию, убедитесь в качестве кода
  • При рефакторинге: частая верификация, чтобы не сломать существующие функции
  • При совместной работе: делитесь checkpoint, синхронизируйте состояние работы

🎒 Подготовка

Предварительные требования

В этом руководстве предполагается, что вы уже:

  • ✅ Прошли изучение Рабочий процесс TDD
  • ✅ Знакомы с базовыми операциями Git
  • ✅ Понимаете, как использовать базовые команды Everything Claude Code

Основная концепция

Цикл верификации — это механизм обеспечения качества, который превращает цикл «написание кода → тестирование → верификация» в систематизированный процесс.

Трёхуровневая система верификации

Everything Claude Code предоставляет три уровня верификации:

УровеньМеханизмНазначениеКогда использовать
Реальное времяPostToolUse HooksНемедленное перехватывание ошибок типов, console.log и т.д.После каждого вызова инструмента
Периодическая/verify командаКомплексная проверка: сборка, типы, тесты, безопасностьКаждые 15 минут или после значительных изменений
На этапах/checkpointСравнение различий состояния, отслеживание трендов качестваПосле завершения этапа, перед отправкой PR

Checkpoint: «точки сохранения» кода

Checkpoint делает «снимок» в ключевые моменты:

  • Фиксирует Git SHA
  • Фиксирует процент прохождения тестов
  • Фиксирует покрытие кода
  • Фиксирует временную метку

При верификации вы можете сравнить текущее состояние с любым checkpoint.

Evals: «юнит-тесты» AI-разработки

Eval-Driven Development (EDD) рассматривает evals как юнит-тесты AI-разработки:

  1. Сначала определите критерии успеха (напишите evals)
  2. Затем пишите код (реализуйте функцию)
  3. Непрерывно запускайте evals (верифицируйте правильность)
  4. Отслеживайте регрессии (убедитесь, что не сломали существующие функции)

Это соответствует философии TDD (Test-Driven Development), но ориентировано на AI-поддерживаемую разработку.


Пошаговое руководство: использование Checkpoint

Шаг 1: Создайте начальный checkpoint

Перед началом новой функции создайте checkpoint:

bash
/checkpoint create "feature-start"

Зачем Зафиксировать начальное состояние для последующего сравнения.

Вы должны увидеть:

VERIFICATION: Running quick checks...
Build:    OK
Types:    OK

CHECKPOINT CREATED: feature-start
Time:     2026-01-25-14:30
Git SHA:  abc1234
Logged to: .claude/checkpoints.log

Checkpoint выполнит:

  1. Сначала запустит /verify quick (только проверит сборку и типы)
  2. Создаст git stash или commit (название: checkpoint-feature-start)
  3. Запишет в .claude/checkpoints.log

Шаг 2: Реализуйте основную функцию

Начните писать код, завершите основную логику.

Шаг 3: Создайте checkpoint этапа

После завершения основной функции:

bash
/checkpoint create "core-done"

Зачем Зафиксировать этап для возможности отката.

Вы должны увидеть:

CHECKPOINT CREATED: core-done
Time:     2026-01-25-16:45
Git SHA:  def5678
Logged to: .claude/checkpoints.log

Шаг 4: Верификация и сравнение

Проверьте, отклонилось ли текущее состояние от цели:

bash
/checkpoint verify "feature-start"

Зачем Сравнить изменения метрик качества от начала到现在.

Вы должны увидеть:

CHECKPOINT COMPARISON: feature-start
=====================================
Files changed: 12
Tests: +25 passed / -0 failed
Coverage: +15% / -2% (from 60% to 75%)
Build: PASS
Status: ✅ Quality improved

Шаг 5: Просмотр всех checkpoints

Просмотрите историю checkpoints:

bash
/checkpoint list

Вы должны увидеть:

CHECKPOINTS HISTORY
===================
Name           | Time             | Git SHA  | Status
---------------|------------------|----------|--------
feature-start  | 2026-01-25-14:30 | abc1234  | behind
core-done      | 2026-01-25-16:45 | def5678  | current

Проверка ✅: проверка понимания

  • Checkpoint автоматически запускает /verify quick? ✅ Да
  • Checkpoint записывается в какой файл? ✅ .claude/checkpoints.log
  • /checkpoint verify сравнивает какие метрики? ✅ изменения файлов, процент прохождения тестов, покрытие

Пошаговое руководство: использование команды Verify

Шаг 1: Запуск быстрой верификации

В процессе разработки часто запускайте быструю верификацию:

bash
/verify quick

Зачем Только проверяет сборку и типы, самая быстрая скорость.

Вы должны увидеть:

VERIFICATION: PASS

Build:    OK
Types:    OK

Ready for next task: YES

Шаг 2: Запуск полной верификации

Перед отправкой PR запустите полную проверку:

bash
/verify full

Зачем Комплексная проверка всех quality gates.

Вы должны увидеть:

VERIFICATION: PASS

Build:    OK
Types:    OK
Lint:     OK (2 warnings)
Tests:    120/125 passed, 76% coverage
Secrets:  OK
Logs:     3 console.logs found in src/

Ready for PR: NO

Issues to Fix:
1. Remove console.log statements before PR
   Found in: src/utils/logger.ts:15, src/api/client.ts:23, src/ui/button.ts:8
2. Increase test coverage from 76% to 80% (target)
   Missing coverage in: src/components/Form.tsx

Шаг 3: Запуск верификации перед PR

Самая строгая проверка, включает сканирование безопасности:

bash
/verify pre-pr

Вы должны увидеть:

VERIFICATION: FAIL

Build:    OK
Types:    OK (1 error)
Lint:     OK
Tests:    120/125 passed, 76% coverage
Secrets:  ❌ FOUND (2 API keys)
Logs:     3 console.logs

Security Issues Found:
1. Hardcoded API key in src/api/config.ts:10
2. Secret key in .env.example

Ready for PR: NO

Critical Issues:
1. Remove hardcoded secrets
2. Fix type error in src/components/Form.tsx:45
3. Remove console.logs
4. Increase coverage to 80%

Шаг 4: Повторная верификация после исправления

После исправления проблем снова запустите верификацию:

bash
/verify full

Вы должны увидеть:

VERIFICATION: PASS

Build:    OK
Types:    OK
Lint:     OK
Tests:    125/125 passed, 81% coverage
Secrets:  OK
Logs:     OK

Ready for PR: YES

Проверка ✅: проверка понимания

  • /verify quick проверяет только что? ✅ Сборку и типы
  • /verify full проверяет какие элементы? ✅ Сборка, типы, Lint, тесты, Secrets, Console.log, состояние Git
  • Какой режим верификации включает сканирование безопасности? ✅ pre-pr

Пошаговое руководство: использование Evals (Eval-Driven Development)

Шаг 1: Определение Evals (перед написанием кода)

Перед началом кодирования сначала определите критерии успеха:

markdown
## EVAL: user-authentication

### Capability Evals
- [ ] User can register with email/password
- [ ] User can login with valid credentials
- [ ] Invalid credentials rejected with proper error
- [ ] Sessions persist across page reloads
- [ ] Logout clears session

### Regression Evals
- [ ] Public routes still accessible
- [ ] API responses unchanged
- [ ] Database schema compatible

### Success Metrics
- pass@3 > 90% for capability evals
- pass^3 = 100% for regression evals

Зачем Сначала определите критерии успеха, заставляет задуматься «какой критерий завершения».

Сохраните в: .claude/evals/user-authentication.md

Шаг 2: Реализация функции

Пишите код на основе evals.

Шаг 3: Запуск capability evals

Проверьте, удовлетворяет ли новая функция evals:

markdown
[CERTAIN CAPABILITY EVAL: user-authentication]

Test 1: User can register with email/password
Task: Call registration API with valid credentials
Expected: User account created, token returned
Actual: PASS

Test 2: User can login with valid credentials
Task: Call login API with registered credentials
Expected: JWT token returned
Actual: PASS

Test 3: Invalid credentials rejected
Task: Call login API with wrong password
Expected: 401 Unauthorized with error message
Actual: PASS

Overall: 3/3 passed

Шаг 4: Запуск regression evals

Убедитесь, что не сломали существующие функции:

bash
npm test -- --testPathPattern="existing"

Вы должны увидеть:

PASS  existing/auth.test.ts
PASS  existing/api.test.ts
PASS  existing/db.test.ts

All regression tests: 15/15 passed

Шаг 5: Генерация отчёта Eval

Сводка результатов:

markdown
EVAL REPORT: user-authentication
================================

Capability Evals:
  register-user:       PASS (pass@1)
  login-user:          PASS (pass@2)
  reject-invalid:      PASS (pass@1)
  session-persistence: PASS (pass@1)
  logout-clears:       PASS (pass@1)
  Overall:             5/5 passed

Regression Evals:
  public-routes:       PASS
  api-responses:       PASS
  db-schema:           PASS
  Overall:             3/3 passed

Metrics:
  pass@1: 80% (4/5)
  pass@3: 100% (5/5)
  pass^3: 100% (3/3)

Status: READY FOR REVIEW

Проверка ✅: проверка понимания

  • Когда следует определять evals? ✅ Перед написанием кода
  • В чём разница между capability evals и regression evals? ✅ Первые тестируют новые функции, вторые обеспечивают, что не сломаны существующие функции
  • Что означает pass@3? ✅ Вероятность успеха в пределах 3 попыток

Остерегайтесь проблем

Проблема 1: Забыли создать checkpoint

Проблема: после некоторого времени разработки хотите вернуться к определённому состоянию, но нет записи.

Решение: перед началом каждой новой функции создайте checkpoint:

bash
# Хорошая привычка: перед началом новой функции
/checkpoint create "feature-name-start"

# Хорошая привычка: каждый этап
/checkpoint create "phase-1-done"
/checkpoint create "phase-2-done"

Проблема 2: Evals определены слишком размыто

Проблема: Evals написаны слишком размыто, невозможно верифицировать.

Неправильный пример:

markdown
- [ ] пользователь может войти

Правильный пример:

markdown
- [ ] User can login with valid credentials
  Task: POST /api/login with email="[email protected]", password="Test123!"
  Expected: HTTP 200 with JWT token in response body
  Actual: ___________

Проблема 3: Вертификация запускается только перед отправкой PR

Проблема: обнаруживаются проблемы только перед PR, стоимость исправления высока.

Решение: постройте привычку непрерывной верификации:

Каждые 15 минут: /verify quick
После каждой функции: /checkpoint create "milestone"
Перед отправкой PR:   /verify pre-pr

Проблема 4: Evals не обновляются

Проблема: после изменения требований evals остаются старыми, верификация становится недействительной.

Решение: Evals — это «первоклассный код», обновляйте одновременно при изменении требований:

bash
# Изменение требований → обновление Evals → обновление кода
1. Измените .claude/evals/feature-name.md
2. Измените код в соответствии с новыми evals
3. Снова запустите evals

Итог урока

Цикл верификации — это систематизированный метод поддержания качества кода:

МеханизмНазначениеЧастота использования
PostToolUse HooksНемедленное перехватывание ошибокКаждый вызов инструмента
/verifyПериодическая комплексная проверкаКаждые 15 минут
/checkpointЗапись этапов и сравнениеКаждый этап функции
EvalsВерификация функций и регрессионное тестированиеКаждая новая функция

Основные принципы:

  1. Сначала определите, затем реализуйте (Evals)
  2. Частая верификация, непрерывное улучшение (/verify)
  3. Запись этапов, возможность отката (/checkpoint)

Следующий урок预告

В следующем уроке мы изучим Пользовательские Rules: создание спецификаций проекта.

Вы научитесь:

  • Как создавать файлы пользовательских Rules
  • Формат файла Rules и написание чеклистов
  • Определение специфических правил безопасности проекта
  • Интеграция стандартов команды в процесс код-ревью

Приложение: исходный код

Нажмите, чтобы развернуть местоположение исходного кода

Время обновления: 2026-01-25

ФункцияПуть к файлуСтроки
Определение команды Checkpointcommands/checkpoint.md1-75
Определение команды Verifycommands/verify.md1-60
Verification Loop Skillskills/verification-loop/SKILL.md1-121
Eval Harness Skillskills/eval-harness/SKILL.md1-222

Ключевые процессы:

  • Процесс создания Checkpoint: сначала запустите /verify quick → создайте git stash/commit → запишите в .claude/checkpoints.log
  • Процесс верификации Verify: Build Check → Type Check → Lint Check → Test Suite → Console.log Audit → Git Status
  • Рабочий процесс Eval: Define (определение evals) → Implement (реализация кода) → Evaluate (запуск evals) → Report (генерация отчёта)

Ключевые параметры:

  • /checkpoint [create\|verify\|list] [name] - операции Checkpoint
  • /verify [quick\|full\|pre-commit\|pre-pr] - режимы верификации
  • pass@3 - цель успеха в пределах 3 попыток (>90%)
  • pass^3 - 3 последовательных успеха (100%, для критического пути)