Active Storage Validations is a Ruby gem for adding validation rules to files attached through Rails Active Storage. Rails developers use it to check whether uploaded images, videos, audio files, PDFs, and other attachments meet requirements such as type, size, dimensions, duration, or quantity.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/igorkasyanchuk/active_storage_validationsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/igorkasyanchuk/active_storage_validations/git)<a href="https://agentmods.dev/rules/igorkasyanchuk/active_storage_validations/git"><img src="https://agentmods.dev/badge/rules/igorkasyanchuk/active_storage_validations/git/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/igorkasyanchuk/active_storage_validations/git"><img src="https://agentmods.dev/badge/rules/igorkasyanchuk/active_storage_validations/git.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.01347 | $0.01347 |
| Opus 5.5 | $0.00539 | $0.00539 |
| Sonnet 5.5 | $0.00269 | $0.00269 |
| Haiku 4.5 | $0.00135 | $0.00135 |
Grade A, and why
git scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 126 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Git — Commit Messages
When creating a commit, follow this rule — not ad-hoc styles from git log history.
Commit workflow
When the user asks to commit (or commit and push):
- Message format — use this file only. Do not run
git logor infer style from existing commits (many are merge commits or legacy types). - Inspect changes — in parallel:
git status,git diff(andgit diff --stagedif needed). - Draft — write subject (+ optional body) per the rules below; validate against Validations.
- Commit — stage relevant files, commit via HEREDOC, then
git statusto confirm. - Push — only when explicitly requested.
Format: Conventional Commits
<type>(<scope>): <brief description>
| Part | Rule |
|---|---|
<type> |
Required. One of: feat, fix, docs, style, refactor, test, chore, perf, build, ci |
<scope> |
Optional. Area affected — see Scope glossary |
<description> |
Required. Imperative mood, lowercase start, ≤ 72 characters, no trailing punctuation |
Subject line rules
- Imperative mood — write as a command:
add,fix,remove,update— notadded,fixes,removing - Length — keep the subject ≤ 72 characters (Git and GitHub truncate longer lines)
- No trailing punctuation — no period, exclamation mark, etc.
Examples
feat(matchers): add #except_on option for Rails :except_on
fix(content_type): reject spoofed mime types without file magic
refactor(attachable): drop obsolete download_chunk Rails version check
test(validators): cover size equal_to boundary
docs(readme): document form_builder accept inference
chore(deps): bump marcel to 1.0
ci(gemfiles): pin sqlite3 >= 2.9 for Ruby 4.0
Validations
Before committing, verify the subject line:
- Pattern —
^(feat|fix|docs|style|refactor|test|chore|perf|build|ci)(\(.+\))?: .+$ - Imperative, ≤ 72 chars, no trailing punctuation
- Optional body — blank line, then paragraphs with more context
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +6 tokens per session b0388f34ef66
- 1mo ago First seen · 126 lines · 1,341 tokens per session scan A f23c15be585c
git is a cursor rule published in the GitHub repository igorkasyanchuk/active_storage_validations (1,193 stars, last pushed 2d ago), licensed MIT. It adds 1,347 tokens to every session, about $0.0054 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other cursor rules, from other repositories
git
Git workflow — commit format, push policy, and PR process.
commit-sponsors
Every git commit message must acknowledge BetterDesk supporters.
no-ai-contributors
Never add AI tools as git authors or project contributors.
git-discipline
Commit, push, and branching rules. Owns ALL git behavior; other files state only their deviations.
git-commit-standards
Enforce structured Git commit messages.
conventional-commits
Use the Conventional Commit Messages specification to generate commit messages.