Верификация артефакта

SkillDev tools

Verifies an artifact against a reference from the Pack. Loads role VR.R.001 (Verifier) with context isolation — it checks the result, not the process that created it.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Верификация артефакта skill

What this skill tells your AI

The instructions your AI receives, as published by tserentserenov/fmt-exocortex-template in .claude/skills/verify/SKILL.md and read by ahel’s review.

Роль: VR.R.001 Верификатор (PACK-verification) Принцип: Context isolation (VR.SOTA.002) — проверяю результат по эталону, НЕ процесс создания. Архитектура: Ядро (Pack, фиксированное) + Контекст (переменный) — AS.D.004.

Аргументы: $ARGUMENTS

When to use

Верификация артефакта по эталону из Pack. Загружает роль VR.R.001 (Верификатор) с context isolation — проверяет результат, а не процесс создания.

Algorithm

Extensions before

bash .claude/scripts/load-extensions.sh verify before

Код 0 → прочитать каждый путь в алфавитном порядке и выполнить инструкции до выбора типа проверки. Код 1 → расширений нет. Любой другой код или ошибка обязательного шага расширения → верификацию не начинать и показать настоящую причину.

Шаг 0. Определить тип проверки

АргументТипЧто проверяет
codeПроверка кодаКачество кода: логика, edge cases, безопасность, coupling
archgateПроверка реализации АрхГейтаКод соответствует ЭМОГССБ-оценке, принципы воплощены
captureПроверка capture-candidateUL, полнота, непротиворечивость с Pack
packПроверка Package-адекватностиПроверяет 11 координат E.4.DPF.DA seed-пакета (Ф1-Ф3 артефакты): SoTA, decision-record, seed-маркер, их достаточность. Используется из /verify pack или pack-creator Шаг 4
wpПриёмка рабочего продуктаКритерии done из WP context file
chainData flow checkПрочитаны ли downstream consumers? Контракты совпадают? (CoVe stage 3)
adversarialScope & bias checkScope определён анализом или выводом? Что НЕ прочитано? (Pre-mortem)
subsectionПроверка подраздела руководства (SS)🔴 v4-lint + 🟡 нарратив/дуга/практика/аналогия (G-L) по CHECKLIST-subsection-v1.md
sectionПроверка раздела руководства (S)🔴 v4-lint section + 🟡 связность SS, дуга по ступеням, охват темы (D-H) по CHECKLIST-section-v1.md
guideПроверка руководства целиком🔴 v4-lint guide + 🟡 целостность объекта, дуга, охват узлов мастерства, эпилог (E-I) по CHECKLIST-guide-v1.md
auto или пустоАвтоопределениеПо типу файла и контексту сессии

Автоопределение:

  • Был АрхГейт в текущей сессии → archgate
  • Указан путь к .py/.ts/.sh файлу → code
  • Указан путь к Pack-сущности → capture
  • Указан путь к WP context → wp
  • Изменения >1 файла + cross-component → предложить chain
  • После АрхГейта + код → предложить adversarial
  • Путь содержит subsection_id: PD.GUIDE.N.SX.SSY во frontmatter, или один файл подраздела руководства → subsection
  • Путь — папка раздела (S{N}-*/) или указан section_id во frontmatter → section
  • Путь — structure-guide-N.md или папка руководства целиком → guide
  • Не определился → спросить пользователя

Триггеры от пилота: «проверь подраздел X» / «проверь раздел S{N}» / «проверь руководство N» → соответственно subsection / section / guide.

Шаг 1. Запустить sub-agent Верификатора

Запустить Agent tool с context isolation:

Для code:

  • Прочитать git diff (или указанные файлы)
  • Прочитать CLAUDE.md затронутого репо
  • Передать sub-agent'у: diff + CLAUDE.md + чеклист code
  • Модель sub-agent'а: Sonnet

Для archgate:

  • Найти ЭМОГССБ-таблицу из текущей сессии (или запросить)
  • Прочитать изменённые файлы реализации
  • Прочитать DP.ARCH.001 §7 (21 принцип)
  • Передать sub-agent'у: файлы + таблица + принципы + чеклист archgate
  • Модель sub-agent'а: Opus

Для capture:

  • Прочитать capture-candidate
  • Прочитать manifest целевого Pack
  • Передать sub-agent'у: candidate + manifest + чеклист capture
  • Модель sub-agent'а: Sonnet

Для pack:

  • Прочитать WP-контекст пакета (WP-474.md или папка пакета)
  • Прочитать файлы артефактов Ф1-Ф3:
    • 06-sota/{slug}-sota-sheet.md (Ф1: SoTA-лист)
    • .pfad-decision.md (Ф2: decision record)
    • 01B-distinctions.md с маркером **Maturity:** seed (Ф3: seed-маркер + mature-lite чек-лист)
  • Передать sub-agent'у промпт: verify-pack-adequacy-subsection.md + данные из контекста
  • Модель sub-agent'а: Sonnet
  • Verdict: DPFPackageAdequacyStatusadmissibleForDeclaredDPFUse / seedOnly / repairBeforeDPFUse (авто) + эскалационные holdForPFADDecision / holdForCoreAmendmentDecision / refreshNeeded — по координатам D1-D11, порядковая шкала 0-5 (WP-474 Ф8.1/Ф8.3, пир-сессия 2026-09-05-27)

Для wp:

  • Прочитать WP context file ({{GOVERNANCE_REPO}}/inbox/WP-{N}-*.md)
  • Прочитать артефакт РП
  • Передать sub-agent'у: артефакт + критерии done + чеклист wp
  • Модель sub-agent'а: по verification_class

Для chain (CoVe — Chain-of-Verification, Meta ACL 2024):

  • Прочитать git diff изменённых файлов
  • Для каждого изменённого output: grep по codebase — найти все файлы, которые import/require/вызывают изменённые функции
  • Прочитать каждый downstream consumer
  • Передать sub-agent'у: diff + consumers + чеклист chain
  • Модель sub-agent'а: Sonnet
  • Чеклист chain:
    1. Для каждого изменённого output — кто потребляет?
    2. Прочитан ли каждый потребитель?
    3. Типы/формат output совпадают с ожиданиями потребителя?
    4. Переменные, используемые в предложенном коде — откуда определены? Существуют ли в scope?
    5. Env vars / конфиги, на которые опирается код — определены ли в том же файле или переданы явно?

Для adversarial (Pre-mortem + Devil's Advocate, PROClaim 2026):

  • Прочитать git diff изменённых файлов
  • Составить список файлов, которые автор НЕ прочитал, но которые могут быть затронуты (git diff --stat vs файлы из diff)
  • Прочитать описание задачи (из WP context или commit message)
  • Передать sub-agent'у: diff + unread files list + task description + чеклист adversarial
  • Модель sub-agent'а: Sonnet
  • Чеклист adversarial:
    1. Scope определён анализом кода или подогнан под заранее выбранный вывод?
    2. Какие файлы/компоненты НЕ прочитаны, но могут быть затронуты?
    3. Предположи, что этот фикс сломается в production. 3 наиболее вероятные причины?
    4. Есть ли альтернативные объяснения проблемы, которые не были рассмотрены?
    5. Заявленный scope («1 файл», «не архгейт», «простой фикс») — соответствует реальному?

Для subsection (один подраздел руководства, WP-322 Ф0.10):

Двухэтапная проверка: 🔴 машинная (оркестратор) → 🟡 семантическая (sub-agent). 🟢 пилот не делается агентом.

Переменные окружения:

  • IWE_ROOT — корень рабочей директории (default: $HOME/IWE). Используется для путей к Pack и DS-principles-curriculum.

Hotfix-исключение: если последний коммит содержит [hotfix] в message — запускается только 🔴, без 🟡 (см. CHECKLIST-subsection-v1.md §«Правило»).

Auxiliary-режим: если frontmatter подраздела содержит format_version: 4.1-aux — это auxiliary-подраздел (.08-concepts, .09-exercises, .10-review-questions, .11-section-conclusions). Применяется упрощённая проверка: только 🔴 B (минимальный frontmatter: subsection_id, title, order) + 🟡 проверка типа содержимого (concepts = сводка, exercises = практики, review = вопросы, conclusions = выводы). Полный G-L НЕ применяется (auxiliary не вводит понятий, не имеет цепочки мем→метод→мировоззрение).

  • Этап 🔴 (оркестратор, локально):

    IWE_ROOT="${IWE_ROOT:-$HOME/IWE}"
    cd "$IWE_ROOT/DS-principles-curriculum"
    PACK_FORM_089="$IWE_ROOT/PACK-personal/pack/personal-development/02-domain-entities/formalizations/PD.FORM.089-learner-rcs.md"
    # 1. Структура (A.1-A.11) + контракт Портного (B.1-B.9)
    python3 tools/v4-lint.py porter <subsection.md>
    # 2. Кросс-руководная согласованность
    python3 tools/v4-lint.py cross-guide specs/v4-reference/
    # 3. Pack-drift (cp/bh)
    python3 tools/v4-lint.py pack-drift specs/v4-reference/ --pack "$PACK_FORM_089"
    # 4. Граф понятий
    python3 tools/v4-lint.py graph build specs/v4-reference/ --out-json /tmp/graph.json
    # 5. Блок F (Git-целостность + F.4 формат степеней) — вне v4-lint:
    git -C "$IWE_ROOT/DS-principles-curriculum" status --porcelain specs/v4-reference/   # F.1 чисто
    grep -l "$(basename <subsection.md>)" "$IWE_ROOT/aisystant/docs" 2>/dev/null || \
      echo "F.3 WARN: файл может быть не в правильном репо"
    # F.4 (формат «Степени мастерства» — таблица, не список) проверяется вручную или в 🟡
    
    • Любой FAIL → verdict FAIL с диагностикой из stderr, sub-agent НЕ запускается
    • Все PASS → перейти к 🟡
  • Этап 🟡 (два специализированных sub-agent, Opus, context isolation) — WP-322 Ф14:

    Разделение на два субагента: смешанный промпт снижает качество обеих веток. FPF-агент видит только FPF; педагог-агент видит только педагогику.

    Пропустить auxiliary: если format_version: 4.1-aux — Этап 🟡 заменяется упрощённой проверкой типа содержимого.

    Порядок: FPF → педагог (FPF-нарушения часто блокируют педагогическую оценку).

    Sub-agent 1 — verify-fpf (промпт: verify-fpf-subsection.md):

    • Вход: файл подраздела
    • Промпт: .claude/skills/verify/verify-fpf-subsection.md
    • Модель: Opus
    • Проверяет: G (границы понятий, A.6), H (нарратив мем→метод→мировоззрение), L (Pack-согласованность), border-objects
    • Если FPF-Verdict = FAIL → остановиться, вернуть FAIL автору, Sub-agent 2 не запускать

    Sub-agent 2 — verify-pedagogy (промпт: verify-pedagogy-subsection.md):

    • Вход: файл подраздела
    • Промпт: .claude/skills/verify/verify-pedagogy-subsection.md
    • Модель: Opus
    • Проверяет: I (дуга по ступени, нет дидактических запрещённых слов), J (практика и время), K (аналогия), transfer test
  • Итоговый Verdict (агрегированный):

    • PASS = FPF-PASS + Педагог-PASS → готов к 🟢 пилот-тесту (вывести шаблон issue pilot-feedback.yml)
    • CONDITIONAL = любой CONDITIONAL без FAIL → можно к 🟢 с оговорками
    • FAIL = любой FAIL → диагностика автору с разбивкой по блокам

Для section (раздел руководства S, WP-322 Ф0.10):

Предусловие: ВСЕ подразделы раздела уже прошли verify subsection (🔴+🟡 PASS). Если нет — остановиться, попросить сначала закрыть SS.

Hotfix-исключение: если последний коммит содержит [hotfix] в message И затронут только один SS — запускается verify subsection для этого SS, без полного verify section.

  • Этап 🔴 (оркестратор):

    IWE_ROOT="${IWE_ROOT:-$HOME/IWE}"
    cd "$IWE_ROOT/DS-principles-curriculum"
    # 1. Структурная полнота раздела (A.1-A.4, B.1-B.3, C.1-C.2)
    python3 tools/v4-lint.py section --id <section-id> specs/v4-reference/
    # 2. Связность prerequisites внутри раздела (отдельная проверка B.1-B.3, дублирует часть section)
    python3 tools/v4-lint.py prerequisites-graph --scope section --id <section-id> specs/v4-reference/
    
    • Любой FAIL → verdict FAIL
    • PASS → перейти к 🟡
  • Этап 🟡 (sub-agent, Opus, context isolation):

    • Прочитать: ВСЕ SS раздела (в порядке оглавления) + frontmatter раздела + CHECKLIST-section-v1.md §🟡 (D-H)
    • Объём: типично 5-12 SS × 0.5-1.5K слов = 3-20K слов
    • Передать sub-agent'у промпт: все SS подряд + frontmatter + чек-лист §D-H
    • Модель: Opus — по эталону CHECKLIST-section-v1.md §🟡 («Claude Opus, context isolation»). Sonnet справляется по объёму, но связность нарратива и согласованность метафор раздела требуют глубокого анализа — Opus.
    • Чеклист D-H (5 блоков по 3-4 пункта):
      • D. Нарративная связность подразделов (логический переход, нет «висящих» SS, нет повторов)
      • E. Дуга по ступеням внутри раздела (stage_relevant согласован, тональность, сложность нарастает)
      • F. Охват темы (обещанное раскрыто, нет «дыры» в зоне раздела, нет «лишнего»)
      • G. Аналогии в разделе (согласованность сквозных метафор, нет конкурирующих)
      • H. Связь с другими разделами (ссылки корректны, нет противоречий)
    • Sub-agent для каждого пункта: PASS/FAIL + конкретные SS-ссылки
  • Verdict: PASS = 🔴+🟡 PASS → готов к 🟢 пилот-тесту раздела (≥3 пилота × 6/6). FAIL = диагностика по конкретным SS.

Для guide (руководство целиком, WP-322 Ф0.10):

Предусловие: ВСЕ разделы руководства уже прошли verify section. Если нет — остановиться. Это самый дорогой тип проверки — Opus, объём 20-100K слов.

Hotfix-исключение: при [hotfix] в коммите — только verify subsection затронутых файлов; полный verify guide не запускается. Полный запуск guide — ежеквартально (content-аудит) или при релизе нового руководства.

  • Этап 🔴 (оркестратор):

    IWE_ROOT="${IWE_ROOT:-$HOME/IWE}"
    cd "$IWE_ROOT/DS-principles-curriculum"
    PACK_FORM_089="$IWE_ROOT/PACK-personal/pack/personal-development/02-domain-entities/formalizations/PD.FORM.089-learner-rcs.md"
    GUIDE_ID="<guide-id>"   # PD.GUIDE.<N> или N (1-4)
    # 1. Структурная полнота руководства (A.1-A.5, B.1-B.4, C.1-C.3)
    python3 tools/v4-lint.py guide --id "$GUIDE_ID" --pack "$PACK_FORM_089" specs/v4-reference/
    # 2. Кросс-руководная согласованность (внутри guide + между guides)
    python3 tools/v4-lint.py cross-guide --scope guide --id "$GUIDE_ID" specs/v4-reference/
    # 3. Граф понятий руководства
    python3 tools/v4-lint.py graph build --scope guide --id "$GUIDE_ID" --out-json /tmp/guide-graph.json specs/v4-reference/
    # 4. Pack-drift на масштабе руководства (если не прошло через cmd_guide --pack)
    python3 tools/v4-lint.py pack-drift --scope guide --id "$GUIDE_ID" --pack "$PACK_FORM_089" specs/v4-reference/
    
    • Любой FAIL → verdict FAIL
    • PASS → перейти к 🟡
  • Этап 🟡 (sub-agent, Opus, context isolation):

    • Прочитать: ВСЕ S/SS руководства + структуру (structure-guide-N.md) + README + CHECKLIST-guide-v1.md §🟡 (E-I) + frontmatter руководства
    • Объём: типично 4-8 разделов × 5-12 SS × 0.5-1.5K слов = 20-100K слов — нужен Opus с большим контекстом
    • Стратегия для большого объёма (20-100K слов):
      • Если объём ≤ 30K слов — передать всё руководство одним промптом Opus с extended thinking
      • Если объём > 30K — батчинг: sub-agent читает разделы по 2-3 за раз, аккумулирует findings, в финале — meta-pass на согласованность дуги (E-I критерии требуют видения всего руководства)
      • Альтернатива: разделить guide-чек-лист на «целостность объекта + дуга» (E, F — требуют целостного видения, один проход) и «охват + связность + эпилог» (G, H, I — можно по частям)
    • Передать sub-agent'у промпт: руководство целиком + структура + чек-лист §E-I
    • Модель: Opus (объём + глубина анализа мировоззренческого сдвига)
    • Чеклист E-I (5 блоков по 3-4 пункта):
      • E. Целостность объекта (с первого раздела ясно, не подменяется, границы соблюдены)
      • F. Дуга нарратива (прогрессия 1-2 → 3-5, нет «прыжков», мировоззренческий сдвиг отчётлив, тональность согласована)
      • G. Охват узлов мастерства (cp/bh-измерения покрыты, нет «дыр» по ступеням, bottleneck-узлы помечены)
      • H. Связность с другими руководствами (cross-references, нет дублирования, точки сопряжения объяснены)
      • I. Эпилог и навигация (эпилог есть, связь со ступенями, README с картой)
    • Sub-agent для каждого пункта: PASS/FAIL + конкретные S/SS-ссылки
  • Verdict: PASS = 🔴+🟡 PASS → готов к 🟢 пилот-тесту руководства (≥3 пилота × 6/6, типично 2-4 недели). FAIL = диагностика по конкретным S/SS.

Шаг 2. Sub-agent: промпт

Sub-agent получает промпт с заполненными данными из шага 1.

⛔ Sub-agent НЕ получает:

  • Историю обсуждения текущей сессии
  • Задание создателя
  • Промежуточные рассуждения

Для code, capture, wp, archgate — определить эталон:

Тип артефактаЭталон
Pack-сущностьSPF pack-template + доменные принципы Pack
Описание методаSPF process/07 + Pack
Код (DS)CLAUDE.md репо + Pack-описания сервисов
Архитектурное решениеDP.ARCH.001 §7 (→ используй /archgate вместо /verify)
План (WeekPlan/DayPlan)Протоколы Open/Close
Подраздел руководства (SS)DS-principles-curriculum/specs/v4-reference/CHECKLIST-subsection-v1.md (v1.2+)
Раздел руководства (S)DS-principles-curriculum/specs/v4-reference/CHECKLIST-section-v1.md
Руководство целикомDS-principles-curriculum/specs/v4-reference/CHECKLIST-guide-v1.md

Если эталон не определяется → СТОП. Сообщи: «Эталон не найден. Нужен рецензент, не верификатор.»

Для chain, adversarial — эталон = сам код (downstream consumers, scope analysis). Чеклисты встроены в шаг 1.

Шаг 3. Verdict

До формирования итогового verdict выполнить Extensions checks:

bash .claude/scripts/load-extensions.sh verify checks

Код 0 → прочитать и выполнить каждый файл поверх результатов основного проверяющего. Код 1 → дополнительных проверок нет. Любой другой код или провал проверки → итог не может быть PASS; вернуть FAIL с именем расширения и наблюдаемой причиной.

Sub-agent возвращает verdict:

## Verdict: [PASS / FAIL / CONDITIONAL]

**Контекст:** [тип проверки]
**Артефакт:** [что проверялось]
**Эталон:** [по чему проверялось]

### Несоответствия

| # | Severity | Файл | Строка | Что | Почему (reasoning) | Эталон |
|---|----------|------|--------|-----|-------------------|--------|
| 1 | критический / высокий / средний / низкий | path | N | описание | почему проблема | принцип/правило |

### Сводка

- **Критических:** N
- **Высоких:** N
- **Средних:** N
- **Низких:** N

### Рекомендация

[1-3 предложения]

Правила verdict:

  • PASS: 0 критических, 0 высоких
  • CONDITIONAL: 0 критических, ≥1 высоких
  • FAIL: ≥1 критических

Шаг 4. Показать пользователю

Вывести verdict. Пользователь решает:

  • Принять → продолжить работу
  • Исправить → внести изменения по рекомендациям
  • Отклонить verdict → аргументировать почему (→ feedback для обучения)

После показа результата выполнить Extensions after:

bash .claude/scripts/load-extensions.sh verify after

Код 0 → прочитать и выполнить файлы в алфавитном порядке. Код 1 → расширений нет. Ошибка after не переписывает уже показанный verdict, но обязательно выводится отдельным предупреждением с именем расширения и причиной.

Signals

GitHub stars
54
Forks
150
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
verify-tserentserenov
Source
github.com/tserentserenov/fmt-exocortex-template