К основному содержанию
скилл CX Codex

create-formal-verification-skill — скилл для Claude Code

Скилл создаёт проектную проверку для кода, где тесты редко находят ошибки. Он помогает проверить гонки, инварианты, автоматы состояний и парсеры.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add backnotprop/pstack --skill create-formal-verification-skill -a claude-code
Открыть на GitHub

Что делает create-formal-verification-skill

Скилл изучает кодовую базу, выбирает участок с дорогими ошибками и малым покрытием тестами, затем подбирает способ формальной проверки. Для порядка событий подходит модель-чекер, для поведения самого кода — верификатор с SMT, а для свойств без конечной границы может понадобиться доказательство. В качестве стандартного варианта для небольших моделей упоминается TLA+.

Результатом становится проектный скилл с frontmatter, описанием проверяемых файлов и функций, командой запуска, версией инструмента и коммитом синхронизации. Он должен уметь показать контрпример на сломанном варианте, отличить ошибку модели от дефекта и объяснить границы проверки. Для TLA+ результат нужно читать вместе со скиллом /statechart. Поскольку проверка покрывает только модель, границу и заданные допущения, это повод не переносить её вывод на всю систему без дополнительной проверки.

Перед передачей скилл прогоняется на реальном коде с намеренно нарушенным свойством, затем рабочее состояние возвращается. Для сопровождения после изменений предусмотрен /maintain-formal-verification-skill.

Какие задачи решает

  • найти участок кода, где тесты редко достигают ошибки
  • проверить порядок событий в конкурентном сценарии
  • доказать инвариант автомата состояний или структуры данных
  • получить короткий контрпример для нарушенного свойства
  • оставить команде повторяемую проектную проверку

Примеры запросов агенту

  • /create-formal-verification-skill для проверки гонки в модуле очереди
  • Создай скилл и докажи инвариант автомата состояний в src/state.ts.
  • Проверь парсер на граничных входах и покажи контрпример для сломанной проверки.

Как установить create-formal-verification-skill

1Через Skills CLI (Vercel)

npx skills add backnotprop/pstack --skill create-formal-verification-skill -a claude-code

2Вручную: положить файлы

~/.claude/skills/create-formal-verification-skill/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/create-formal-verification-skill/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора44

principle-foundational-thinking Набор принципов на этап до написания логики: выбрать типы и структуры данных, навести порядок в каркасе, проверить общее состояние у конкурентных акторов. CX Codex +1 5 100установок correct Находит повторяющиеся ошибки агентов в репозитории и устраняет их через архитектуру, типы или линтеры. Пригодится, когда ИИ раз за разом наступает на одни и те же грабли. CX Codex +1 4 200установок benchmark-checklist Скилл задаёт агенту список вопросов, которые нужно закрыть доказательствами из прогона, прежде чем докладывать об ускорении или регрессии. CX Codex +1 4 100установок principle-explain-the-number Скилл для проверки измеренных чисел: заставляет назвать лимитер и отмести версии, что замер поймал не ту работу. Пригодится до того, как ускорение или регрессия уедут в отчёт. CX Codex +1 4 100установок poteto-help Отвечает на вопросы про pstack: как настроить, как запустить /poteto-mode, какой скилл взять под задачу. Сама работу не начинает — выдаёт готовый промпт. CX Codex +1 3 700установок ketchup Пересказывает изменения в чате с момента последней реплики пользователя и собирает список решений, которые зависят только от человека. CX Codex +1 2 900установок sharpen Скилл разбирает вашу формулировку задачи по четырём вопросам и переписывает промпт так, чтобы работа шла глубже, а не шире. CX Codex +1 2 200установок maintain-formal-verification-skill Скилл приводит формальную верификацию в соответствие с кодом после мержей и рефакторингов: обновляет модель, перезапускает проверки и отличает дрейф от настоящего бага. CX Codex +1 1 100установок

Похожие

create-verification-skill michael-denyer Генерирует проектный скилл для сквозной проверки приложения от лица пользователя. Пригодится, когда у репозитория нет готовых сценариев запуска и фиксации поведения. CX Codex +1 890установок verification-gate sentimony Скилл не даёт объявить работу законченной без свежих доказательств: собирает матрицу проверок и выносит вердикт по конкретному набору утверждений. CX Codex +1 836установок verification-loop affaan-m Прогоняет работу сессии по шести фазам — сборка, типы, линт, тесты с покрытием, поиск секретов, разбор диффа — и выдаёт отчёт PASS/FAIL. CX Codex +1 5 000установок laravel-verification affaan-m Прогоняет проект на Laravel по фазам: окружение, линт, статический анализ, тесты с покрытием, аудит зависимостей и готовность к деплою. Пригодится перед PR и релизом. CX Codex +1 4 700установок godot-gdscript-patterns Seth Hobson Скилл помогает писать игры на Godot 4.x с GDScript: проектировать сцены, сигналы и состояния. Пригодится для игровых систем и разбора архитектуры. CX Codex 17 396установок om-auto-create-pr-loop open-mercato Создаёт PR по развёрнутому описанию задачи, ведёт план и фиксирует прогресс по шагам. Нужен для длинных изменений, которые важно продолжать без потери контекста. CX Codex +1 3 700установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о create-formal-verification-skill

Как установить create-formal-verification-skill в Claude Code?

Выполните npx skills add backnotprop/pstack --skill create-formal-verification-skill -a claude-code, затем повторите эту команду ещё раз. После установки откройте ~/.claude/skills/create-formal-verification-skill/SKILL.md.

Что делает create-formal-verification-skill?

Он выбирает важное свойство в коде, подбирает инструмент формальной проверки и создаёт проектный скилл для повторного запуска. Также он требует проверить скилл на намеренно сломанном варианте кода.

Какой инструмент выбирает скилл для проверки?

Инструмент зависит от вопроса: модель-чекер подходит для порядка событий, верификатор кода — для свойств вроде безопасности памяти и переполнения, а для свойств без конечной границы может понадобиться proof assistant. TLA+ указан как вариант по умолчанию для небольших моделей.

Исходный текст

SKILL.md · MIT
---
name: create-formal-verification-skill
description: "Generate a project-local skill that formally verifies the code where a bug costs the most and tests reach the least, in any language, with whichever verification tool fits. Use for /create-formal-verification-skill, \"model-check this race\", \"prove this invariant\", or when concurrency, retries, state machines, parsers, or unsafe code need more than tests."
disable-model-invocation: true
---

# Create a formal verification skill

A test checks the cases that someone thought to write. Formal verification checks every case in a stated scope: every order of steps in a model, every input up to a bound, or every input. This skill finds the part of the repo where that matters most, verifies one property of it, and leaves a project-local skill that lets the next agent check a change against that property. Write that skill for an agent who reads it cold, mid-change, and has never seen your work. The user must be able to trust the result and act on it without learning the verification language.

## Choose the target from the code

Answer from the codebase, and ask the user only what you cannot observe. If the user named an area or a bug, start there.

A good target is a promise the code makes, where a break harms users and tests rarely reach the case that breaks it. Choose the strongest such target in the repo, not the one that is easiest to verify.

## Let the question choose the tool

Pick the tool that answers the question at the lowest cost: a model checker, a proof assistant, an SMT-backed verifier, or another tool. Whether events can happen in a bad order usually suits a model checker over a small model of the design, and TLA+ is the default for that in any language. Whether the code itself behaves for every input, as with memory safety, overflow, or a data-structure invariant, usually suits a verifier that runs on the code. If no verifier runs on this language, say so, and test the real code with generated inputs, not a hand model of the function. A property that must hold at every size, where a bound is not enough, can need a proof. Prefer a tool that the repo's developers can install and run, and tell the user why you chose it.

## What makes it good

- **True to the code.** Every part of the model or proof points to code that a reviewer can open. What the verification treats as one indivisible step is one indivisible step in the code. Names come from this repo.
- **Able to fail.** A check that you have never seen fail proves nothing. Show each property failing on a broken variant of the code it guards, such as a removed check or a reordered step.
- **Findings stay findings.** When the current code breaks the property, report it with the counterexample in the code's terms. Do not weaken the property or the model until it passes, and do not change product code unless the user asks.
- **Honest about scope.** Say what is verified, under which bounds and assumptions, and what is left out. A pass covers the model or the bound, not the whole system.
- **Readable without the tool.** State the property and the harm in one plain sentence each. Tell a counterexample as a short sequence of steps in the code's words.
- **Cheap to rerun.** One command, a reproducible tool version, and a run short enough that the next agent will use it on every relevant change.
- **Kept in step with the code.** Record which files and functions each check covers, and the commit at which you last confirmed that the verification describes them. When the covered code changes after that commit, the next agent can see that the verification needs another look.

## Generate the verify skill

Write a project-local skill with frontmatter that names the area and says when to use it. Without frontmatter, the skill never registers. From the skill alone, the next agent must be able to tell whether a change touches the verified code, run the check, tell a real bug from a modeling error, and update the verification when a change is intended. Put the coverage record and the sync commit in the skill, and tell the next agent to move the sync commit forward only after it confirms that the verification describes the code at the new commit. Use this repo's real commands, paths, and nouns, and leave no placeholders.

If the check is a TLA+ model, tell the next agent to read every result with the pstack [`/statechart`](../statechart/SKILL.md) skill. It shows each invariant violation the checker finds as its shortest path in plain words, and which of those violations a change fixes. When the check passes, `/statechart` draws a chart of how the system moves between states. Refer to `/statechart` by name. Its commands, options, and file paths change between releases and machines, so copy none of them into the generated skill or its scripts.

## Prove it before you hand off

Follow the generated skill once, as the next agent would, on a scratch change that breaks the property in the real code. It must catch the break. Then drop the scratch change and confirm that the check is back where it started: passing, or failing only on the findings you will report. A verify skill that was never run is a draft. If the skill misses the break or a step does not run, fix the skill or the verification, not the scratch change.

## Hand off

Tell the user what you verified, which tool you used and why, the bounds, what the check found in plain words, how to run it, and what it does not cover. Suggest a second target only if you found a close one. Point the user at `/maintain-formal-verification-skill` for bringing the verification back in line after changes that did not recheck it.

© backnotprop · MIT · backnotprop/pstack

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой