dykyi-roman/awesome-claude-code/create-access-control
Trust tier 3
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
Generates Access Control components for PHP 8.4. Creates RBAC/ABAC components with PermissionInterface, RoleInterface, VoterInterface, AccessDecisionManager. Includes unit tests.
Install
npx vskill@latest install dykyi-roman/awesome-claude-code/create-access-controlSKILL.md
Access Control Generator
Creates access control infrastructure for RBAC/ABAC authorization patterns.
When to Use
| Scenario | Example | |
|---|---|---|
| Role-based access | Admin, editor, viewer roles | |
| Resource ownership | Users can only edit own resources | |
| Attribute-based rules | Access based on resource state or user attributes | |
| Complex authorization | Multiple voters with different strategies |
Component Characteristics
Permission
- Enum defining available permissions
- Hierarchical: parent permissions include children
- Type-safe, no magic strings
Role
- Value Object encapsulating role with permissions
- Supports role hierarchy (admin inherits editor permissions)
- Immutable, self-validating
VoterInterface
- Symfony-style voter contract
- Returns GRANT, DENY, or ABSTAIN
- Single responsibility: one voter per concern
AccessDecisionManager
- Aggregates multiple voters
- Strategies: affirmative (one grant), unanimous (all grant), consensus (majority grants)
- Configurable per security context
ResourceOwnerVoter
- Checks if authenticated user owns the resource
- Works with any entity implementing OwnableInterface
- Returns ABSTAIN for non-ownable resources
RoleVoter
- Checks if user has required role for the permission
- Supports role hierarchy traversal
- Returns ABSTAIN when permission not role-based
Generation Process
Step 1: Generate Core Components
Path: src/Infrastructure/Security/AccessControl/
Permission.php— Permission enumRole.php— Role value object with hierarchyAccessSubject.php— Value object wrapping the authenticated user context
Step 2: Generate Voter System
Path: src/Infrastructure/Security/AccessControl/
VoterInterface.php— Voter contract with GRANT/DENY/ABSTAINVote.php— Vote result enumAccessDecisionManager.php— Voter aggregation with strategiesDecisionStrategy.php— Strategy enum (affirmative, unanimous, consensus)
Step 3: Generate Concrete Voters
Path: src/Infrastructure/Security/AccessControl/Voter/
RoleVoter.php— Role hierarchy voterResourceOwnerVoter.php— Resource ownership voter
Step 4: Generate Tests
RoleTest.php— Role hierarchy testsAccessDecisionManagerTest.php— Strategy decision testsRoleVoterTest.php— Role voter tests
File Placement
| Component | Path | |
|---|---|---|
| Core Classes | src/Infrastructure/Security/AccessControl/ | |
| Voters | src/Infrastructure/Security/AccessControl/Voter/ | |
| Unit Tests | tests/Unit/Infrastructure/Security/AccessControl/ |
Naming Conventions
| Component | Pattern | Example | |
|---|---|---|---|
| Permission | Permission | Permission::Edit | |
| Role | Role | Role | |
| Voter Interface | VoterInterface | VoterInterface | |
| Concrete Voter | {Context}Voter | RoleVoter | |
| Decision Manager | AccessDecisionManager | AccessDecisionManager | |
| Strategy Enum | DecisionStrategy | DecisionStrategy::Affirmative | |
| Vote Enum | Vote | Vote::Grant | |
| Test | {ClassName}Test | AccessDecisionManagerTest |
Quick Template Reference
Permission
VoterInterface
AccessDecisionManager
Usage Example
Decision Strategies
Anti-patterns to Avoid
| Anti-pattern | Problem | Solution | |
|---|---|---|---|
| String permissions | Typos, no IDE support | Use Permission enum | |
| Inline auth checks | Scattered, unmaintainable | Centralize in voters | |
| God voter | Single voter with all logic | One voter per concern | |
| No ABSTAIN support | Voter must decide everything | ABSTAIN when not applicable | |
| Flat roles | No inheritance, duplication | Role hierarchy | |
| Missing resource check | Only role-based, no ownership | Add ResourceOwnerVoter |
References
For complete PHP templates and examples, see:
references/templates.md— Permission, Role, VoterInterface, AccessDecisionManager, Voter templatesreferences/examples.md— Authorization examples and tests
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/create-access-control/SKILL.md
Popularity
- Repository stars
- 96
- Repository forks
- 25
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/dykyi-roman/awesome-claude-code/create-access-control)