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

audit · rainmanjam — скилл для Claude Code: проверка ошибок и установка

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

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

Что делает audit

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

Для каждой находки нужно указать значение, строку и ситуацию, в которой возникает сбой, а затем предложить конкретное поведение: отклонить данные, пропустить операцию, подставить значение или передать ошибку дальше. Находки сортируются по последствиям, а проверки, которые не могут сработать, не считаются проблемой. Таймауты для сетевых вызовов, subprocess и блокировок без ограничений могут привести к зависанию — их стоит проверять отдельно.

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

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

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

  • Проведи аудит этого проекта и найди непроверенные входные данные.
  • Проверь сетевые вызовы, subprocess и блокировки на отсутствие таймаутов.
  • Отсортируй найденные проблемы по последствиям и предложи поведение для каждой.

Как установить audit

1Через Skills CLI (Vercel)

npx skills add rainmanjam/poka-yoke --skill audit -a claude-code

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

~/.claude/skills/audit/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/audit/

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

Вопросы о audit

Как установить audit в Claude Code?

Выполните npx skills add rainmanjam/poka-yoke --skill audit -a claude-code. Файл скилла находится по пути ~/.claude/skills/audit/SKILL.md.

Что делает audit?

Он помогает находить необработанные пути отказа в существующем коде и описывать, как система должна вести себя при сбое. Результаты предлагается ранжировать по последствиям.

Что проверяет audit на входах от других сервисов?

Он предлагает проверять неуспешные HTTP-ответы, ошибочные тела, некорректный JSON, пустые данные и вызовы, которые не возвращают результат.

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

SKILL.md · MIT
---
name: audit
description: >-
  Reviewing existing code for unchecked inputs, unguarded dereferences, unhandled failure paths,
  swallowed exceptions, missing timeouts and absent limits: the places where an unexpected value
  becomes an unhandled failure.
---

# Audit: Finding the Unhandled Paths

The code in front of you works on the inputs it has seen. The audit question is what happens on
the inputs it has not: the null, the empty list, the oversized upload, the dependency that
times out, the row that predates the current schema.

Work outside in. Start where untrusted data enters and follow it, noting every point where the
code assumes something it has not checked.

## Trace every input to its use

For each entry point, list what arrives and follow it:

**Request data.** Path parameters, query strings, bodies, headers, cookies. Every one is
attacker-controlled. Check type, presence, range and size before use.

**Configuration and environment.** Absent variables, empty strings, values of the wrong type,
and files that failed to parse into an empty dict rather than an error.

**Database rows.** Nullable columns, rows written before a constraint existed, and joins that
return nothing.

**Other services.** Non-200 responses, valid HTTP with an error body, malformed JSON, empty
payloads, and calls that never return.

**Other modules.** A function that returns `None` on failure will hand you `None`, and the type
annotation may not say so.

## What to look for

**Unguarded dereference.** `data["key"]`, `obj.attr`, `items[0]` where nothing established that
the key, attribute or element exists. Note the exception it would raise and how far from the
cause it would surface.

**Unchecked arithmetic.** Division without a zero check. Multiplication of values that could be
`None`. Currency in floats. Indexes computed from input.

**Swallowed exceptions.** `except: pass`, `except Exception: pass`, and empty catch blocks. The
failure happened and nobody will ever know.

**Over-broad catches.** A single handler around a long block. You cannot tell which operation
failed, and the recovery cannot be specific to it.

**Missing timeouts.** Any network call, subprocess or lock acquisition without a bound. This is
the most common cause of a hang that looks like a deadlock.

**Absent limits.** Unbounded uploads, unpaginated queries, list parameters with no maximum,
retries with no cap, recursion driven by input.

**Fallbacks that hide.** A default that fires silently and often. Note whether anything would
reveal it firing.

**Success reported without verification.** `return True` after an operation whose failure was
never checked.

**Partial writes.** A sequence of mutations with no transaction, where failing halfway leaves
inconsistent state.

## Ranking by blast radius

Order by what the failure reaches, not by how easy it is to fix.

- **High:** unchecked input reaching a write, a delete, a payment or an auth decision; missing timeouts on calls in a request path; swallowed exceptions around anything that mutates state; partial writes without a transaction.
- **Medium:** unguarded dereferences on a read path; missing limits on inputs that are large but bounded in practice; broad catches around mixed operations.
- **Low:** unchecked values that can only produce a clean crash on a page nobody depends on; defensive checks missing where the type genuinely excludes the case.
- **Not a finding:** guarding against conditions the language already prevents, or re-validating a value three frames after it was validated at the boundary. Both add lines the reader must evaluate and dismiss.

## For each finding, say what should happen

An audit that only says "unchecked" leaves the hard part undone. The decision is the deliverable:

> `orders.py:88` reads `customer["email"]` with no check. Imported customers can lack one.
> Skip the send, log at warning with the customer id, and return `False` so the caller can
> record it as unsent rather than believing it went out.

Reject, substitute, skip or propagate, and say what it costs when it fires.

## What good output looks like

- **Name the value, the line and the arriving case.** "`amount` may be a string when the form posts an empty field" beats "validate inputs".
- **Say how far the failure travels.** An exception three frames from its cause is a different problem from one caught locally.
- **State the chosen behaviour**, not just that one is needed.
- **Cover the dependency being unavailable**, not only the value being wrong.
- **Order by what the failure reaches.**

## What to avoid

**Blanket advice.** "Add error handling" is not a finding. Which value, which line, which
behaviour.

**Wrapping everything.** A try block around each statement is unreadable and makes real
handling harder to see.

**Validation without a decision.** Adding a check that logs and then proceeds with the bad
value is worse than no check, because it implies coverage that does not exist.

**Ignoring the happy-path cost.** Every guard is a line to read. Guards that cannot fire are
noise, and noise is what makes real guards get skimmed.

© rainmanjam · MIT · rainmanjam/poka-yoke

Похожие скиллы

Все скиллы по теме «Код-ревью и рефакторинг» →

Сначала — audit от других авторов.

audit jsmastery-pro Сканирует проект и создаёт файлы AGENTS.md для контекста ИИ-агентов. Помогает описать правила кодовой базы с нуля или дополнить пропущенные зоны. CX Codex +1 4 300установок audit educlopez Проводит технический аудит интерфейса: доступность, производительность, адаптивность. Отдаёт таблицу находок по приоритетам. CX Codex +1 929установок audit calm-north Скилл прогоняет сайт по пяти слоям SEO-аудита: техническая база, оптимизация страниц, качество контента, ссылочный профиль и позиция среди конкурентов. CX Codex +1 6 400установок audit официальный OpenAI Пошагово проходит интерфейсы, сохраняет проверенные скриншоты и формирует отчёт по UX и доступности прямо в чате. CX Codex GP ChatGPT 10установок audit aladicf Прогоняет код по пяти направлениям: доступность, производительность, темы, адаптивность и анти-паттерны. Выдаёт отчёт со скорингом и планом правок. CX Codex +1 625установок improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. 1 163 035установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. 1 141 062установок triage Matt Pocock Скилл проводит issue и внешние PR через роли триажа, проверку и подготовку брифа для агента. Подойдёт мейнтейнеру, который разбирает очередь задач. 990 453установок codebase-design Matt Pocock Скилл помогает проектировать модули с небольшим интерфейсом и скрытой внутри сложностью. Подходит для рефакторинга, тестируемости и поиска чистого seam. 850 344установок code-review Matt Pocock Проверяет изменения от выбранной точки по стандартам репозитория и требованиям задачи. Нужен для ревью ветки, PR или незавершённой работы. 789 521установок implement Matt Pocock Выполняет задачу по спецификации или тикетам, ведёт работу через тесты и завершает её ревью с коммитом. Подходит для задач, где нужен дисциплинированный цикл разработки. 774 700установок

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

design Помогает продумать интерфейс вместе с его отказами: что принимает каждый параметр, что вернётся вызывающему коду при сбое и где ставить проверки. CX Codex +1 ★ 24звёзд репо defensive Правила защитного программирования: валидация на границах систем, безопасные значения по умолчанию и обработка ошибок вместо аварийных падений. CX Codex +1 ★ 24звёзд репо ux Помогает агенту разложить экран на компоненты, определить владельца состояния и не смешивать вёрстку с бизнес-правилами. CX Codex +1 ★ 24звёзд репо retro Помогает разобрать инцидент, найти архитектурную причину сбоя в коде и сформулировать выводы для будущих разработчиков. CX Codex +1 ★ 24звёзд репо design Помогает продумать интерфейс, модуль, схему или тип до появления зависимого от них кода. Полезен, когда нужно заранее проверить форму вызова, границы ответственности и тестируемость. CX Codex +1 ★ 24звёзд репо clean-code Проверяет ваш код на связность, имена, дублирование и размер функций. Плюс подсказывает, как спроектировать новое, чтобы читалось без автора. CX Codex +1 ★ 24звёзд репо authz Помогает проектировать и проверять логику авторизации, отделяя принятие решений от их исполнения. CX Codex +1 ★ 24звёзд репо audit Скилл проверяет уже работающий код на структурные проблемы и ранжирует их по цене будущих изменений. Пригодится перед рефакторингом, когда важно отделить серьёзные риски от вопросов стиля. CX Codex +1 ★ 24звёзд репо

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

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