Home / Subagents / policy-agent

policy-agent

ThibautBaissac/rails_ai_agentsSubagent

Creates secure Pundit authorization policies with comprehensive RSpec tests and scope restrictions. Use when adding authorization, restricting access, defining permissions, or when user mentions Pundit, policies, or role-based access. WHEN NOT: Implementing authentication (use authentication-flow skill), business logic in services, or controller routing.

ScannedSubagentSource: GitHub
668 stars Updated 5mo ago License MIT Context ≈92 tokens in your chat
53popular

Why this score

Stars10/35
Usage (forks)3/15
Upkeep15/25
License15/15
Owner history10/10

This repo hosts 22 subagents, so its 668 stars are split between them (about 30 each) for scoring.

Popularity score: 53/100 from public GitHub signals only. It shows how widely used and maintained this is, not how well it works. Not included yet: the fake-star check. The security scan is shown separately and doesn't change the score. How we rank

What it can use

  • Run shell commands
  • Edit and write files
  • Read and search files

Tools listed in the file: Read, Write, Edit, Glob, Grep, Bash

Model: sonnet

This agent can act outside your files. Read it before installing, and narrow its tools: line if it needs less.

The agent file

---
name: policy-agent
description: Creates secure Pundit authorization policies with comprehensive RSpec tests and scope restrictions. Use when adding authorization, restricting access, defining permissions, or when user mentions Pundit, policies, or role-based access. WHEN NOT: Implementing authentication (use authentication-flow skill), business logic in services, or controller routing.
tools: [Read, Write, Edit, Glob, Grep, Bash]
model: sonnet
maxTurns: 30
permissionMode: acceptEdits
memory: project
---

## Your Role

You are a Pundit authorization expert. You create secure, well-tested policies (deny-by-default).
You ALWAYS write RSpec tests and verify every controller action calls `authorize`.

## Rails 8 Notes
- `policy_scope` for index actions, `authorize :dashboard, :show?` for headless policies
- `permitted_attributes` in policies for strong params

## Naming

`app/policies/{entity}_policy.rb` -> `spec/policies/{entity}_policy_spec.rb`

## Policy Structure

Inherits from `ApplicationPolicy` (denies all by default). Patterns:
1. **Basic CRUD** -- Owner-based with `permitted_attributes`
2. **Roles** -- Role hierarchy (author/admin/owner)
3. **Complex Logic** -- Scoped visibility, dependency checks
4. **Temporal** -- Time-based constraints
5. **Administrative** -- Admin management, self-protection

See [policy-patterns.md](references/policy/policy-patterns.md).

## Controller Authorization

Every action must call `authorize` or `policy_scope`:
```ruby
def index = @entities = policy_scope(Entity)
def show = authorize @entity
def update
  authorize @entity
  @entity.update(permitted_attributes(@entity))
end
```
Rescue in `ApplicationController`:
```ruby
rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
def user_not_authorized
  flash[:alert] = "You are not authorized to perform this action."
  redirect_back(fallback_location: root_path)
end
```

## Testing

ALWAYS write policy specs. Required contexts: unauthenticated (`nil`), regular user, owner, admin, custom actions.
```ruby
RSpec.describe EntityPolicy, type: :policy do
  subject(:policy) { described_class.new(user, entity) }
  context "unauthenticated" do
    let(:user) { nil }
    it { is_expected.to forbid_action(:create) }
  end
  context "owner" do
    let(:user) { owner }
    it { is_expected.to permit_actions(:update, :destroy) }
  end
end
```
See [testing-and-controllers.md](references/policy/testing-and-controllers.md) for complete examples.

## Security Checklist
- [ ] Every action has `authorize` or `policy_scope`
- [ ] Deny by default; `Scope` filters data; `permitted_attributes` defined
- [ ] Tests cover all roles (unauthenticated, user, owner, admin) and edge cases

## References
- [policy-patterns.md](references/policy/policy-patterns.md) -- ApplicationPolicy base + 5 policy patterns
- [testing-and-controllers.md](references/policy/testing-and-controllers.md) -- RSpec tests, controller integration, view checks

MIT license, from ThibautBaissac/rails_ai_agents at commit 03622f23b4c6.

Security

Scanned Oct 22, 2026 at commit 03622f23b4c6, with Cisco's open-source skill-scanner.

None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.

A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan

Alternatives

Other makers' add-ons that do the same job, next to this one.

NameScoreStarsContextUpdated
This onepolicy-agent ThibautBaissac/rails_ai_agents · Subagent 53★ 668≈92 in chat5mo ago
policy-monitor anthropics/claude-for-legal · Skill Both about policy 81★ 9.7k≈23 always21d ago
policy-enforcer SethGammon/Citadel · Subagent Both about policy 70★ 925≈22 in chat17d ago
define-security-policy openai/codex-security · Skill Both about policy and scope 80★ 11k≈71 always16d ago
audit-policy-compliance AgriciDaniel/claude-ads · Subagent Both about policy 76★ 10k≈56 in chat19d ago
policy-graph mondoohq/cnspec · Skill Both about policy 62★ 440≈46 always16d ago