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

authz · rainmanjam — скилл для Claude Code: что делает и как установить

Помогает проектировать и проверять логику авторизации, отделяя принятие решений от их исполнения.

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

Что делает authz

Скилл задаёт правила для кода разграничения доступа. Главный принцип прост: функция, отвечающая на вопрос «разрешено ли действие», не должна сама выполнять это действие. Такой подход убирает путаницу условий вроде длинных цепочек булевых флагов и собирает правила в единые именованные функции вроде canEditResource(user, resource) с запретом по умолчанию.

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

Правило оценки архитектуры строгое: если матрицу прав нельзя протестировать обычной таблицей кейсов без запуска сервера, значит, авторизация запутана с транспортом или сессиями.

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

  • Разделить вычисление прав и фактическое выполнение действия
  • Заменить разрозненные булевы проверки едиными правилами
  • Спроектировать проверяемые без сервера тесты на отказ в доступе
  • Исключить чтение текущего пользователя из неявного контекста

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

  • Проверь логику проверки прав в src/services/billing.ts по скиллу authz
  • Спроектируй функцию проверки прав для удаления документов без использования глобального контекста
  • Составь таблицу разрешений и отказов для ролей в модуле управления проектами

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

1Через Skills CLI (Vercel)

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

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

~/.claude/skills/authz/SKILL.md

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

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

Вопросы о authz

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

Выполните команду npx skills add rainmanjam/poka-yoke --skill authz -a claude-code в терминале.

Что делает скилл authz?

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

Какие требования скилл предъявляет к тестированию прав?

Логику доступа должно быть возможно протестировать без поднятия веб-сервера, обязательно покрывая сценарии с запретом действий.

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

SKILL.md · MIT
---
name: authz
description: >-
  Permission and access-control code. Structure, clarity and testability of authorisation
  logic: where the decision lives, how it is named, and keeping it separable from the code
  that acts on it.
---

# Authz: Structuring Access Control

Authorisation code is where structural sloppiness costs most, because a permission check that
is hard to read is a permission check nobody re-reads. The discipline here is the ordinary one,
applied somewhere the consequences are unusual.

## Put the decision in one place

**Separate deciding from enforcing.** A function that answers "may this actor do this thing to
this resource" should not also perform the thing. Once separated, the decision can be tested
exhaustively, listed, audited, and reused by a second caller without dragging the action along.

**One vocabulary for actors, actions and resources.** If some code says `user`, some says
`account`, and some says `principal`, a reader cannot tell whether they are the same concept.
Pick the words and use them everywhere, including in the database columns.

**Avoid boolean soup.** `if (user.isAdmin || (user.isOwner && !resource.locked))` scattered
across twelve call sites is twelve places to update and twelve chances to differ. Name the
rule once: `canEditResource(user, resource)`.

**Make the decision total.** A function returning `true`, `false` or `undefined` will be used
as though `undefined` is one of the other two. Return a decision that covers every case, and
make the default deny rather than allow, because a missing branch should fail closed.

## Structure that makes the check hard to skip

**Take the actor as a parameter, never from ambient context.** A function reaching for a global
`currentUser` can be called from a background job that has none, and the failure will be a
`null` reference in an unrelated place rather than an authorisation error.

**Pass the actor down the call chain rather than re-fetching it.** Re-fetching invites two
layers to disagree about who the actor is.

**Keep the resource identity typed.** A function taking two adjacent strings for
`resourceId` and `ownerId` accepts them in either order. Distinct types make the transposition
a compile error rather than a security incident.

## Make it testable, then test the negative cases

The structural test of an authorisation design is whether you can write a table of
`(actor, action, resource) -> expected` cases and run it without a server.

If you cannot, the decision is tangled with transport, persistence or session handling, and the
first thing to fix is that tangle rather than any individual rule.

The cases that matter are the ones that should be denied. A test suite that only covers
permitted actions passes just as happily against a function that returns `true` unconditionally.

## What good output looks like

- **Name the decision function and its signature.** Where the decision lives is most of the design.
- **Show one call site**, because whether the check is easy to skip is visible from the caller.
- **List the rules as a table** when there is more than one actor kind. Prose describing a matrix is harder to check than the matrix.
- **Say what is deliberately permitted.** A review that lists only denials leaves the reader unsure whether the permitted set was considered.

## What to avoid

**Checks distributed across layers with no owner.** A rule enforced in the controller, the
service and the query, differently, is three rules.

**Comments as enforcement.** `// only admins should call this` is not a check.

**Roles as a substitute for a decision.** `if (role === "admin")` scattered around means adding
a role requires finding every site. Ask what the role *permits* and name that.

**Reviewing the policy instead of the code.** Whether marketing should see billing data is a
question for whoever owns that; whether the code expresses the intended answer legibly is
this review.

© rainmanjam · MIT · rainmanjam/poka-yoke

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

Все скиллы по теме «Безопасность» →

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

authz rainmanjam Скилл ищет пути к межтенантным утечкам и помогает встроить проверку доступа в запросы, репозитории и маршруты. CX Codex +1 ★ 24звёзд репо git-guardrails-claude-code Matt Pocock Скилл ставит хук Claude Code, который останавливает опасные Git-команды до их запуска. Нужен, если агент не должен делать push или удалять изменения. 499 069установок ponytail-review DietrichGebert Скилл проверяет изменения глубже обычного diff: читает связанный код, ищет ошибки, риски, проблемы нагрузки и недостающие тесты. Пригодится для ревью PR и коммитов. CX Codex +1 57 000установок ponytail-audit DietrichGebert Проверяет репозиторий и ранжирует ошибки, риски и лишний код. Подойдёт, если нужен разовый разбор без автоматических правок. CX Codex +1 45 400установок security-audit cloudflare Проверяет кодовую базу на уязвимости и ищет нарушения границ доверия. Пригодится перед релизом или для точечного разбора опасных участков кода. CX Codex +1 54 800установок security-and-hardening addyosmani Помогает проектировать защиту и проверять код на уязвимости при работе с вводом, авторизацией, сессиями и внешними сервисами. Подойдёт перед релизом и при создании функций, которые обрабатывают недоверенные данные. CX Codex +1 70 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

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

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

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

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