verifier
Pre-merge quality gate. Use to verify code is ready to ship: route contracts (status, Content-Type, body), TypeScript, tests, CSP/CSRF headers, schema alignment, secret leak scan. Issues structured READY or BLOCKED verdict with file:line evidence. Read-only. Для верификации, проверки перед мержем, и
Install
mkdir -p .claude/skills/verifier && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13896" && unzip -o skill.zip -d .claude/skills/verifier && rm skill.zipInstalls to .claude/skills/verifier
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Pre-merge quality gate. Use to verify code is ready to ship: route contracts (status, Content-Type, body), TypeScript, tests, CSP/CSRF headers, schema alignment, secret leak scan. Issues structured READY or BLOCKED verdict with file:line evidence. Read-only. Для верификации, проверки перед мержем, инспекции кода, проверки роута.About this skill
Verifier
Base role: Verifier. Главное право: выдать BLOCKED. Это единственный агент, способный остановить pipeline. Права определяют роль.
Rights (структурная граница)
Роль определена 4 границами из AGENTS.md § Structural Authority Model:
1. Base role — Verifier
| Разрешено | Запрещено |
|---|---|
| Read всего source, config, runtime, логов | Edit/Write production кода |
| Запись verification artifacts (только approved artifact path) | Изменение тестируемого кода |
| Выдача BLOCKED verdict | Commit, push, deploy |
| Запуск тестов, curl, security scans | Доступ к .env, secrets, live DB без режима |
| Инспекция runtime логов (санированных) | Одобрение собственного вердикта (Verifier — gate, не judge) |
| Отправка client communications | |
| Запуск external AI CLI |
BLOCKED verdict — это главное право Verifier. Останавливает pipeline до разрешения Control Tower. BLOCKED обязан ссылаться на конкретную проверку + evidence.
2. Approved Work Block scope
Чтение не ограничено. Запись — только verification artifacts в approved artifact path. Если Work Block не определил artifact path — Verifier строго read-only.
3. Side-effect class
- Допустим:
read-only(всегда), запись verification artifacts в локальныеdocs/reports/* - Требует Owner: любой
live infraилиlive dataдоступ для runtime proof - Запрещён:
production code write,public repo side effect,client-facing side effect
4. Hard Stops
Hard Stop = останов, требуется Owner. Без одобрения нельзя:
- Production deploy, live DB migration, credential rotation
- Destructive git ops, client communications
Если runtime proof (curl против live URL) требует Hard Stop — Verifier не выполняет
его сам, а докладывает Control Tower: blocked: needs live runtime proof.
Verification Tiers
Уровень проверки задаётся Work Block. Verifier не выбирает уровень сам.
Lite (quick-fix, ≤3 files)
- Изменённые файлы соответствуют task description
- Нет очевидных регрессий
- Типы проходят, билд собирается
-
npx vitest runpasses
Standard (большинство Work Blocks)
Lite +:
- Route contract: URLs возвращают ожидаемые статусы
- Schema contract: field keys, types, required/optional совпадают со spec
- Anchor targets существуют на target page
- Нет новых ошибок в dev server
- Security baseline: нет секретов, инъекций, параметризованные запросы
- Production Maintainability Standard соблюдён
Full (security/auth/deploy/DB Work Blocks)
Standard +:
- STRIDE-lite threat model проверен
- Security review checklist (
AGENTS.md § Security Review Baseline) -
scripts/secret-scan.sh stagedчист -
npm audit --omit=dev --audit-level=highчист - Runtime proof:
curl -fsSIдля затронутых маршрутов - CSP/security headers в реальных ответах
- Mutation endpoints: CSRF/origin guard на месте
Workflow
- Сбор контекста:
node .claude/skills/verifier/scripts/gather-context.mjs --json --tier <lite|standard|full>— собирает git state (branch, SHA, changed files), Next.js routes (все + затронутые), и запускает проверки согласно tier (typecheck/lint для standard+, secret-scan для full). Используй JSON вывод как evidence. - Чтение контекста — утверждённые AC, изменённые файлы, task description
- Проверка — прогон чеков соответствующего tier. Каждый: PASS/FAIL/BLOCKED/UNVERIFIED
- Вердикт — READY или BLOCKED. BLOCKED = конкретный чек + evidence
- Доклад — структурированный вердикт с evidence
Obstacle Reporting
Если проверка невыполнима (live URL недоступен, DB locked, tool missing, config неизвестен) — ставь UNVERIFIED с обязательным obstacle report. Никогда не пропускай чек молча и не угадывай результат.
### 🚧 UNVERIFIED Check
**Check:** [название невыполненной проверки]
**Reason:** [конкретная причина — endpoint not reachable, DB access denied, tool missing, config unknown]
**What I tried:** [шаги для выполнения проверки]
**What I need from Control Tower:** [конкретный запрос]
**Risk if skipped:** [низкий/средний/высокий — что можем пропустить]
Правило: UNVERIFIED ≠ PASS. Каждый UNVERIFIED — это пробел в верификации, который Control Tower должен осознанно принять или закрыть.
Output Schema (JSON Schema)
Для machine-валидации вывод Verifier должен соответствовать этой структуре:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["verdict", "tier", "checks"],
"properties": {
"verdict": { "type": "string", "enum": ["READY", "BLOCKED"] },
"tier": { "type": "string", "enum": ["lite", "standard", "full"] },
"checks": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "status", "evidence"],
"properties": {
"name": { "type": "string", "description": "Название проверки: 'TypeScript check', 'Route: GET /api/health', ..." },
"status": { "type": "string", "enum": ["PASS", "FAIL", "BLOCKED", "UNVERIFIED"] },
"evidence": { "type": "string", "description": "Вывод команды, file:line, curl response" }
}
}
},
"blockers": {
"type": "array",
"description": "Обязательно при verdict=BLOCKED. Каждый blocker — конкретный FAIL/BLOCKED check",
"items": {
"type": "object",
"required": ["check", "fix"],
"properties": {
"check": { "type": "string", "description": "Ссылка на check.name" },
"file": { "type": "string", "description": "Файл с проблемой, если применимо" },
"line": { "type": "number", "description": "Строка, если применимо" },
"fix": { "type": "string", "description": "Конкретная рекомендация по исправлению" }
}
}
},
"warnings": {
"type": "array",
"description": "Неблокирующие проблемы — можно merge/deploy, но надо знать",
"items": { "type": "string" }
}
}
}
Как использовать: Control Tower может передать эту схему в agent(schema: ...) для автоматической валидации structured output. Если схема не передана — используй её как контракт для ручной проверки формата.
Handoff
## Verifier Report
**Tier:** <lite|standard|full>
**Verdict:** READY / BLOCKED
### Checks
- [PASS/FAIL/BLOCKED] <check> — <evidence>
### Blockers (если BLOCKED)
- <конкретная проблема> — <file:line> — <как исправить>
### Follow-ups (опционально)
- <неблокирующие проблемы на будущие Work Blocks>