Цикл верификации: 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-разработки:
- Сначала определите критерии успеха (напишите evals)
- Затем пишите код (реализуйте функцию)
- Непрерывно запускайте evals (верифицируйте правильность)
- Отслеживайте регрессии (убедитесь, что не сломали существующие функции)
Это соответствует философии TDD (Test-Driven Development), но ориентировано на AI-поддерживаемую разработку.
Пошаговое руководство: использование Checkpoint
Шаг 1: Создайте начальный checkpoint
Перед началом новой функции создайте checkpoint:
/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.logCheckpoint выполнит:
- Сначала запустит
/verify quick(только проверит сборку и типы) - Создаст git stash или commit (название:
checkpoint-feature-start) - Запишет в
.claude/checkpoints.log
Шаг 2: Реализуйте основную функцию
Начните писать код, завершите основную логику.
Шаг 3: Создайте checkpoint этапа
После завершения основной функции:
/checkpoint create "core-done"Зачем Зафиксировать этап для возможности отката.
Вы должны увидеть:
CHECKPOINT CREATED: core-done
Time: 2026-01-25-16:45
Git SHA: def5678
Logged to: .claude/checkpoints.logШаг 4: Верификация и сравнение
Проверьте, отклонилось ли текущее состояние от цели:
/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:
/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: Запуск быстрой верификации
В процессе разработки часто запускайте быструю верификацию:
/verify quickЗачем Только проверяет сборку и типы, самая быстрая скорость.
Вы должны увидеть:
VERIFICATION: PASS
Build: OK
Types: OK
Ready for next task: YESШаг 2: Запуск полной верификации
Перед отправкой PR запустите полную проверку:
/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
Самая строгая проверка, включает сканирование безопасности:
/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: Повторная верификация после исправления
После исправления проблем снова запустите верификацию:
/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 (перед написанием кода)
Перед началом кодирования сначала определите критерии успеха:
## 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:
[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
Убедитесь, что не сломали существующие функции:
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
Сводка результатов:
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:
# Хорошая привычка: перед началом новой функции
/checkpoint create "feature-name-start"
# Хорошая привычка: каждый этап
/checkpoint create "phase-1-done"
/checkpoint create "phase-2-done"Проблема 2: Evals определены слишком размыто
Проблема: Evals написаны слишком размыто, невозможно верифицировать.
Неправильный пример:
- [ ] пользователь может войтиПравильный пример:
- [ ] 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 — это «первоклассный код», обновляйте одновременно при изменении требований:
# Изменение требований → обновление Evals → обновление кода
1. Измените .claude/evals/feature-name.md
2. Измените код в соответствии с новыми evals
3. Снова запустите evalsИтог урока
Цикл верификации — это систематизированный метод поддержания качества кода:
| Механизм | Назначение | Частота использования |
|---|---|---|
| PostToolUse Hooks | Немедленное перехватывание ошибок | Каждый вызов инструмента |
/verify | Периодическая комплексная проверка | Каждые 15 минут |
/checkpoint | Запись этапов и сравнение | Каждый этап функции |
| Evals | Верификация функций и регрессионное тестирование | Каждая новая функция |
Основные принципы:
- Сначала определите, затем реализуйте (Evals)
- Частая верификация, непрерывное улучшение (
/verify) - Запись этапов, возможность отката (
/checkpoint)
Следующий урок预告
В следующем уроке мы изучим Пользовательские Rules: создание спецификаций проекта.
Вы научитесь:
- Как создавать файлы пользовательских Rules
- Формат файла Rules и написание чеклистов
- Определение специфических правил безопасности проекта
- Интеграция стандартов команды в процесс код-ревью
Приложение: исходный код
Нажмите, чтобы развернуть местоположение исходного кода
Время обновления: 2026-01-25
| Функция | Путь к файлу | Строки |
|---|---|---|
| Определение команды Checkpoint | commands/checkpoint.md | 1-75 |
| Определение команды Verify | commands/verify.md | 1-60 |
| Verification Loop Skill | skills/verification-loop/SKILL.md | 1-121 |
| Eval Harness Skill | skills/eval-harness/SKILL.md | 1-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%, для критического пути)