agentskills.codes
VE

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.zip

Installs 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. Для верификации, проверки перед мержем, инспекции кода, проверки роута.
330 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)

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 verdictCommit, 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 run passes

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

  1. Сбор контекста: 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.
  2. Чтение контекста — утверждённые AC, изменённые файлы, task description
  3. Проверка — прогон чеков соответствующего tier. Каждый: PASS/FAIL/BLOCKED/UNVERIFIED
  4. Вердикт — READY или BLOCKED. BLOCKED = конкретный чек + evidence
  5. Доклад — структурированный вердикт с 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>

Search skills

Search the agent skills registry