spec-analyzers

spec-analyzers is a cursor rule for Cursor from igorkasyanchuk/active_storage_validations. It costs 0 tokens per session (301 once invoked), scanned A, original, MIT.

A set of RSpec rules for testing file and image metadata analyzers in a Rails application. It defines shared names, helpers, processor-specific test filtering, timeout checks, and metadata expectations.

In plain words
What is it for?
Use it when adding or reviewing analyzer specs, testing timeouts and validation failures, checking cached blob metadata, or sharing behavior across attachments and multi-page PDFs.
Why use it?
It keeps analyzer tests consistent across image-processing setups and prevents tests from reporting skipped cases incorrectly in continuous integration. It also separates command-running tests from individual analyzer behavior.

Cursor rule for Cursor

Install

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.

agentmods
npx agentmods add rules/igorkasyanchuk/active_storage_validations/spec-analyzers
Clone the repo
git clone --depth 1 https://github.com/igorkasyanchuk/active_storage_validations

Made for: Cursor.

Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 301 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.00301
Opus 5 $0.00000 $0.00151
Sonnet 5 $0.00000 $0.00060
Haiku 4.5 $0.00000 $0.00030

Measured 3d ago against content hash 3c5ac1665cc7, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

spec-analyzers 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 3d 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.

.cursor/rules/spec-analyzers.mdc · 16 lines

What it actually says

Analyzer specs

  • Follow shared conventions in spec.mdc (named subject, describe/context, described_class).
  • Boot via rails_helper; AnalyzerHelpers is auto-included for spec/analyzers.
  • Gate processor-specific examples with metadata image_processor: :vips / :mini_magick (filtered in rails_helper when IMAGE_PROCESSOR is set). Do not use skip for matrix gating — that reports pending in CI. Keep skip only for capability checks (missing gem / API).
  • Stub external commands with RSpec mocks (allow / allow_any_instance_of), not Minitest .stub / stub_any_instance.
  • Timeouts fail closed (empty metadata / validation errors) and may emit timeout.active_storage_validations — assert that per analyzer under describe "timeouts" (use timed_out_command_result from AnalyzerHelpers). Keep process-group / run_command mechanics in commandable_spec.rb.
  • Metadata is cached on blobs as string keys asv_* via ASVBlobMetadatable; blobs are treated as immutable once keys exist.
  • Prefer shared examples "returns the right metadata for any attachable" and "works fine with 2 pages pdf" when applicable.
Changes

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.

  1. 3d ago First seen · 16 lines · 0 tokens per session scan A 3c5ac1665cc7

Subscribe to this mod's changes

spec-analyzers is a cursor rule published in the GitHub repository igorkasyanchuk/active_storage_validations (1,191 stars, last pushed 11d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 301 tokens. 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.