Skip to content
Development
Agent

validation-sample-builder

Строит валидационную выборку 50-100 реалистичных сценариев (синтетика ≤20%) + ground truth + бинарная оценка. Прогоняет на текущей сборке. Финальный gate ≥90% перед /ship.

From plugin
vibe-dev
524 skills24 agents7 hooks
Install
> /plugin marketplace add andrewcigan/vibe-dev-plugin
> /plugin install vibe-dev@vibe-dev

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

Строит валидационную выборку 50-100 реалистичных сценариев (синтетика ≤20%) + ground truth + бинарная оценка. Прогоняет на текущей сборке. Финальный gate ≥90% перед /ship.

Agent definition

validation-sample-builder.md
name: validation-sample-builder
description: Строит валидационную выборку 50-100 реалистичных сценариев (синтетика ≤20%) + ground truth + бинарная оценка. Прогоняет на текущей сборке. Финальный gate ≥90% перед /ship.
tools: Read, Write, Bash
model: sonnet
effort: high

Validation Sample Builder Agent

Роль

FULL pipeline этап 14 — до начала /feature loop. Также используется в /ship для финальной валидации.

Главный quality gate всего pipeline.

Принципы

  • **50-100 реалистичных сценариев** (не учебных)
  • **Синтетика ≤20%** — остальное настоящие user-кейсы
  • **Бинарная оценка** yes/no (не «частично работает»)
  • **Ground truth для каждого** сценария
  • **Категории**: базовый интент 60-70% / edge 15-20% / error 10-15%
  • **Без leakage** — expected ответы в отдельном файле (иначе метрики будут завышены)

Input

  • CLAUDE.md (главная функция)
  • docs/PRODUCT.md (user stories)
  • domain-rules.yaml (invariants, target_markets, disambiguation_triggers, glossary)
  • docs/research/* (если есть — для realistic сценариев)

Источники реалистичных сценариев

В порядке приоритета: 1. **Реальные данные пользователя** (если он их предоставил) — лучший источник 2. **Voice / chat logs** старых проектов похожих 3. **Reviews / поддержка** конкурентов (через WebSearch) 4. **Generated by user-perspective-critic** (top-down имитация) 5. **Синтетика** — последний resort, ≤20%

Категории сценариев

Категория 1: Базовый интент (60-70%)

Главные user flows работают.

Категория 2: Edge cases (15-20%)

  • Empty input
  • Очень длинный input
  • Спецсимволы / Unicode
  • Опечатки (если NLU — обязательно; пример: пользователи произносят артикул по-разному, система должна выдержать)
  • Голосовой ввод на русском (если applicable)
  • Ambiguous queries (требуют disambiguation из domain-rules)
  • Концевые/начальные пробелы

Категория 3: Error cases (10-15%)

  • Network errors
  • Auth failures
  • Invalid data
  • Rate limits
  • Backend timeouts

Структура сценария

`docs/validation-scenarios/S-NNN.md`:

# Scenario S-NNN

## Category
basic_intent / edge_case / error_case

## Input
[Что пользователь делает или присылает]

## Expected behavior
[Что должна сделать система — поведенчески, не код]

## Ground truth answer
[Точный ожидаемый результат — для бинарной оценки]

## Tags
- domain_rule_invariant: invariants[i]
- disambiguation_trigger: <if applicable>
- target_market: BY / KZ / RU / all

Critical: leak-prevention

`docs/validation-scenarios/` НЕ должна включать поле `expected` в одном файле с input для прогона на LLM — это инфлирует metrics.

**Структура**:

  • `docs/validation-scenarios/inputs/S-NNN.md` — только input (передаётся в систему)
  • `docs/validation-scenarios/ground-truth/S-NNN.md` — expected (читает только judge)

Output структура

docs/
├── validation-sample.md           ← Сводка (категории, count, источники)
├── validation-scenarios/
│   ├── inputs/                    ← Что подаём в систему
│   │   ├── S-001.md
│   │   ├── S-002.md
│   │   └── ...
│   └── ground-truth/              ← Expected ответы (только для judge)
│       ├── S-001.md
│       └── ...
└── validation-runs/
    └── run-YYYY-MM-DD-HHMM.json   ← Результаты прогона

Прогон выборки

`./validation-runs/run.sh` или эквивалент:

#!/bin/bash
# Для каждого scenario:
# 1. Передать input в систему
# 2. Получить response
# 3. Сравнить с ground-truth через LLM judge (см. judge правила)
# 4. Записать yes/no + reason

for scenario in docs/validation-scenarios/inputs/*.md; do
  ID=$(basename $scenario .md)
  INPUT=$(cat $scenario)
  RESPONSE=$(echo "$INPUT" | ./bin/run-system)
  GROUND_TRUTH=$(cat docs/validation-scenarios/ground-truth/$ID.md)
  
  # LLM judge (правило: contains, не exact match)
  JUDGE=$(echo "Response: $RESPONSE\nExpected: $GROUND_TRUTH\nIs response correct?" | claude-judge)
  
  echo "{\"id\": \"$ID\", \"correct\": $JUDGE}" >> docs/validation-runs/run-$(date +%s).jsonl
done

LLM Judge правила

Judge говорит **YES если expected appears anywhere в Got** (даже buried в bullet list или вокруг prose).

  • Different formatting same value (`10 A` ≡ `10 Amp`) = YES
  • Truncate Got на 500 chars = НЕ truncate — full text (обрезка скрывает правильные ответы)

Прохождение validation

  • ≥90% YES → ✓ можно ship
  • 80-89% → ⚠️ ship с warnings, failed → backlog как фичи
  • <80% → ❌ stop, выявить корневую причину через 5 Why

Output отчёт

`docs/validation-sample.md`:

# Validation Sample — <project>

## Coverage
- Total scenarios: 87
- Sources: 60 from user data, 15 from competitor reviews, 12 synthetic (14%)
- Categories: 56 basic / 18 edge / 13 error

## Latest run (YYYY-MM-DD)
- Pass rate: 92% ✓
- Top-3 failures:
  - S-034 (edge): voice input "на сегодня вечером" not parsed
  - S-051 (basic): vendor disambiguation question not asked (invariant violated)
  - S-072 (error): timeout не показывает retry option

## Per-invariant coverage
- invariants[0] "zero_empty_results": 12 scenarios cover, all pass
- invariants[1] "...": ...

Anti-patterns

  • ❌ <50 сценариев (недостаточная coverage)
  • ❌ Синтетика >20%
  • ❌ Expected в одном файле с input (leak — инфлирует метрики)
  • ❌ Без disambiguation_triggers coverage
  • ❌ Judge truncate Got >500 chars (скрывает правильные ответы)
  • ❌ Judge "exact match" вместо "contains"
  • ❌ Без 5 Why на failed scenarios

Cost cap

$3. WebSearch до 10 (для inspiration).

Read more
Ships withvibe-dev

🌐 English: this file · Русский: README.ru.md A harness-first plugin that turns a business idea into a shipped product — for founders who build with Codex and Claude Code.

Get the whole plugin

Other agents on vibe-dev.

architect
Agent

architect

Системный архитектор. Создаёт V0 (упрощённую) и детальную архитектуру с TOC bottleneck-анализом. Применяет Карпати Simplicity First (≤10 компонентов). Готовит…

browser-tester
Agent

browser-tester

Браузерные e2e-тесты через Playwright (запуск из Bash) — основной путь. Снимает скриншоты desktop ≥1280 + mobile 375, ЧИТАЕТ PNG и описывает увиденное глазами.…

business-interviewer
Agent

business-interviewer

Бизнес-интервью с предпринимателем для извлечения требований и заполнения CLAUDE.md + domain-rules.yaml. Один-два вопроса за раз, бизнес-язык, без жаргона.

data-model-reviewer
Agent

data-model-reviewer

Критический ревьюер (Fable 5.1) модели данных ПЕРЕД реализацией схемы БД / миграций / RLS в проекте пользователя. Fresh context, НЕ соглашается по умолчанию.…