# post-patch-validation

Скилл гоняет эксплойты и проверки на двух версиях кода — уязвимой и пропатченной — и показывает, что патч действительно закрывает баг.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 746 установок · ★ 7805
- Автор: trailofbits
- Лицензия: CC-BY-SA-4.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/trailofbits/skills/tree/HEAD/plugins/post-patch-validation/skills/post-patch-validation/SKILL.md
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/skills/post-patch-validation

## Что делает

Скилл ставит план проверки для уже готового патча: берёт уязвимый коммит и пропатченный, для незакоммиченной работы просит сначала собрать бинарный патч-файл. Собирая план, агент изучает находку, diff, вызывающий код, соседние пути и обработку ошибок, а затем расписывает набор проверок. Сам diff, автор правки и исходный proof of concept корректность не доказывают.

Внутри `scripts/post_patch_validation.py` с подкомандами `scaffold`, `print-schema`, `validate-plan` и `run`. Плану нужна хотя бы одна проверка каждого вида: контроль, исходный эксплойт, вариант той же корневой причины, сохранение поведения, регрессия, новая уязвимость рядом и штатный набор проекта. Команды передаются массивами argv, не строками шелла, раннер фиксирует локаль, таймзону и hash-seed и не трогает рабочий каталог. Эксплойты и варианты обязаны печатать маркер `PPV_REACHED` в stdout на обеих ревизиях, иначе в отчёте останется пробел `marker_missing`. Таймаут проверки по умолчанию 300 секунд, допустимо от 1 до 3600.

Для запуска нужен `uv`, а сложную подготовку надо вынести в скрипт и подключать через `{plan_dir}`. Скилл выполняет только локальный код: для удалённого или продакшен-стенда он не годится, и запускать тесты репозитория стоит лишь с разрешения владельца кода.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill post-patch-validation -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/post-patch-validation/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/post-patch-validation/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill post-patch-validation -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/post-patch-validation/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill post-patch-validation -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/post-patch-validation/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install trailofbits/skills post-patch-validation
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/post-patch-validation/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill post-patch-validation -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/trailofbits/skills --path plugins/post-patch-validation/skills/post-patch-validation
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/post-patch-validation/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill post-patch-validation -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/trailofbits/skills/tree/HEAD/plugins/post-patch-validation/skills/post-patch-validation/SKILL.md

## Когда брать
- Доказать, что патч закрывает исходный эксплойт, а не только компилируется
- Найти другие пути к той же корневой причине, которые патч пропустил
- Поймать регрессию в обычном поведении после правки безопасности
- Заметить новую уязвимость, которую внёс сам патч
- Отдать автору патча конкретные падения с логами до следующей ревизии

## Примеры запросов агенту
- Проверь патч в `patch.diff` против коммита `a1b2c3d`, собери план и прогони его
- Собери план валидации для PR с исправлением, добавь вариант эксплойта через другой вход
- Прогони валидацию прошлого рана и покажи, какие проверки оставили пробелы

## Похожие
- [git-guardrails-claude-code](https://affpapa.org/nevibecode/skills/git-guardrails-claude-code.md) — скилл · 499069 установок
- [ponytail-review](https://affpapa.org/nevibecode/skills/ponytail-review.md) — скилл · 57000 установок
- [ponytail-audit](https://affpapa.org/nevibecode/skills/ponytail-audit.md) — скилл · 45400 установок
- [security-audit](https://affpapa.org/nevibecode/skills/cloudflare-security-audit.md) — скилл · 54800 установок
- [security-and-hardening](https://affpapa.org/nevibecode/skills/security-and-hardening.md) — скилл · 70200 установок
- [supabase](https://affpapa.org/nevibecode/skills/supabase.md) — скилл · 8 установок

Из того же набора: [trailofbits/skills](https://affpapa.org/nevibecode/by/trailofbits/skills.md) — 77 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
