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

rbac-permissions-builder — скилл для Claude Code: как установить

Проектирует ролевую модель доступа на TypeScript: от матрицы прав и Express middleware до классов политик и проверок в интерфейсе. Пригодится при настройке авторизации в API.

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

Что делает rbac-permissions-builder

Скилл создаёт готовую структуру контроля доступа на основе ролей (RBAC). В её основе лежит перечисление прав вида resource:action и таблица сопоставления с ролями. Для бэкенда шаблон генерирует Express middleware requirePermission, возвращающий статус 401 или 403, и функцию requireOwnership для разделения прав владельца объекта и администратора.

Сложные правила выносятся в классы политик с изолированными статическими методами. Для клиентской части скилл предлагает эндпоинт /api/me со списком разрешений и фронтенд-хелпер usePermission для скрытия кнопок в интерфейсе.

Шаблон ориентирован на TypeScript и Express. Если в вашем проекте нет промежуточного слоя аутентификации, заполняющего req.user, сгенерированные гарды сразу заблокируют запросы с ошибкой 401.

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

  • связать роли пользователей с гранулярными правами доступа
  • закрыть эндпоинты Express с помощью route guards
  • разграничить действия владельца записи и администратора
  • скрыть недоступные кнопки в интерфейсе по правам пользователя

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

  • Спроектируй систему RBAC для сервиса с ролями пользователя, модератора и админа
  • Напиши Express middleware для проверки прав на удаление пользователя
  • Создай класс политики UserPolicy для правил редактирования профиля

Как установить rbac-permissions-builder

1Через Skills CLI (Vercel)

npx skills add patricio0312rev/skills --skill rbac-permissions-builder -a claude-code

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

~/.claude/skills/rbac-permissions-builder/SKILL.md

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

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

Вопросы о rbac-permissions-builder

Как установить rbac-permissions-builder в Claude Code?

Выполните команду npx skills add patricio0312rev/skills --skill rbac-permissions-builder -a claude-code. Файл скилла сохранится по пути ~/.claude/skills/rbac-permissions-builder/SKILL.md.

Что делает скилл rbac-permissions-builder?

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

Какие требования нужны для работы сгенерированного кода?

Код рассчитан на TypeScript и веб-фреймворк Express. Для работы мидлваров требуется предварительная аутентификация, которая записывает объект текущего пользователя в req.user.

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

SKILL.md · MIT
---
name: rbac-permissions-builder
description: Implements role-based access control with permission matrix, route guards, policy functions, and UI permission hints. Provides middleware/guards, helper utilities, test suggestions, and permission checking patterns. Use when building "RBAC", "permissions", "access control", or "authorization".
---

# RBAC/Permissions Builder

Implement flexible role-based access control systems.

## Permission Matrix

```typescript
// Define permissions
export enum Permission {
  USER_READ = "user:read",
  USER_WRITE = "user:write",
  USER_DELETE = "user:delete",
  POST_READ = "post:read",
  POST_WRITE = "post:write",
  ADMIN_ACCESS = "admin:access",
}

// Define roles
export const ROLE_PERMISSIONS = {
  user: [Permission.USER_READ, Permission.POST_READ, Permission.POST_WRITE],
  moderator: [...userPermissions, Permission.POST_DELETE],
  admin: Object.values(Permission), // All permissions
};

// Check permission
export const hasPermission = (user: User, permission: Permission): boolean => {
  return ROLE_PERMISSIONS[user.role]?.includes(permission) ?? false;
};
```

## Route Guards (Express)

```typescript
export const requirePermission = (...permissions: Permission[]) => {
  return (req: Request, res: Response, next: NextFunction) => {
    if (!req.user) {
      return res.status(401).json({ error: "Unauthorized" });
    }

    const hasAllPermissions = permissions.every((p) =>
      hasPermission(req.user, p)
    );

    if (!hasAllPermissions) {
      return res.status(403).json({ error: "Forbidden" });
    }

    next();
  };
};

// Usage
router.delete(
  "/users/:id",
  authenticate,
  requirePermission(Permission.USER_DELETE),
  controller.delete
);
```

## Policy Pattern

```typescript
// policies/user.policy.ts
export class UserPolicy {
  static canUpdate(currentUser: User, targetUser: User): boolean {
    // Users can update themselves
    if (currentUser.id === targetUser.id) return true;

    // Admins can update anyone
    if (hasPermission(currentUser, Permission.USER_WRITE)) return true;

    return false;
  }

  static canDelete(currentUser: User, targetUser: User): boolean {
    // Can't delete yourself
    if (currentUser.id === targetUser.id) return false;

    // Only admins can delete
    return hasPermission(currentUser, Permission.USER_DELETE);
  }
}

// Usage in controller
if (!UserPolicy.canUpdate(req.user, targetUser)) {
  return res.status(403).json({ error: "Cannot update this user" });
}
```

## Resource Ownership

```typescript
export const requireOwnership = (
  getResourceUserId: (req: Request) => Promise<string>
) => {
  return async (req: Request, res: Response, next: NextFunction) => {
    const resourceUserId = await getResourceUserId(req);

    // Owner can access
    if (req.user.id === resourceUserId) {
      return next();
    }

    // Admin can access anything
    if (hasPermission(req.user, Permission.ADMIN_ACCESS)) {
      return next();
    }

    return res.status(403).json({ error: "Forbidden" });
  };
};
```

## UI Permission Hints

```typescript
// Return permissions with user
GET /api/me
{
  "user": { ... },
  "permissions": ["user:read", "post:write"]
}

// Frontend helper
export const usePermission = (permission: Permission): boolean => {
  const { user } = useAuth();
  return user?.permissions?.includes(permission) ?? false;
};

// Usage
{usePermission('user:delete') && <DeleteButton />}
```

## Best Practices

- Define permissions granularly (resource:action)
- Check at multiple layers (route, controller, UI)
- Use policies for complex rules
- Cache permission checks
- Log permission denials
- Test all permission paths

## Output Checklist

- [ ] Permission enum/constants
- [ ] Role-to-permission mapping
- [ ] Route guard middleware
- [ ] Policy classes for complex rules
- [ ] Ownership checking utilities
- [ ] Permission checking helpers
- [ ] UI permission hints endpoint
- [ ] Test cases for all permission paths

© patricio0312rev · MIT · patricio0312rev/skills

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

Все скиллы по теме «Безопасность» →
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установок

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

visual-regression-tester Скилл настраивает визуальное регрессионное тестирование: снимает скриншоты, сравнивает их с базовыми и ловит случайные изменения интерфейса. CX Codex +1 330установок form-wizard-builder Скилл собирает многошаговые формы: схемы валидации, шаги, общее состояние, индикатор прогресса и шаг проверки перед отправкой. CX Codex +1 328установок skill-creator Скилл, который пишет новые скиллы по конвенциям репозитория: структура, frontmatter, воркфлоу и примеры кода. CX Codex +1 321установок cost-latency-optimizer Скилл разбирает, куда уходят деньги и время в LLM-приложении, и предлагает кеш, выбор модели, батчинг и сжатие промптов. CX Codex +1 322установок storybook-setup Настраивает Storybook для документации компонентов, интерактивных контролов, accessibility-проверок и визуальной регрессии. CX Codex +1 319установок rate-limiting-abuse-protection Скилл добавляет в проект ограничение частоты запросов: политики на маршрут, лимиты по IP и пользователю, скользящее окно и понятные ответы об ошибке. CX Codex +1 319установок load-test-builder Собирает нагрузочные и стресс-тесты на k6, Artillery или autocannon и помогает встроить их в CI как проверку производительности. CX Codex +1 316установок core-web-vitals-tuner Скилл помогает улучшить показатели LCP, INP и CLS с помощью структурированных правок в коде. Они ускоряют рендеринг и отклик страниц. CX Codex +1 308установок

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

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