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.
npx agentmods add rules/panozzaj/cursor-rules/rspec-let-do-blocksgit clone --depth 1 https://github.com/panozzaj/cursor-rulesWhat 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 | $0.00000 | $0.00658 |
| Opus 5 | $0.00000 | $0.00329 |
| Sonnet 5 | $0.00000 | $0.00132 |
| Haiku 4.5 | $0.00000 | $0.00066 |
Grade A, and why
rspec-let-do-blocks 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 2d 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.
What it actually says
RSpec: Use do...end for Multi-line let Declarations & Format Method Calls
-
Use
do...endfor Multi-linelet: When aletorlet!declaration's body spans multiple lines (e.g., defining a multi-line hash/array, or a method call with multiple arguments/lines), use thedo ... endblock syntax instead of curly braces{ ... }. -
Use
do...endfor Complex Single Lines: Even if aletbody is technically a single expression, usedo...endif the expression is long or complex (e.g., involves significant method chaining, complex interpolation, or nested structures) to improve readability. -
Format Multi-line Method Calls: When the body of a
letis a method call with keyword arguments or multiple arguments that make the line long, format the call across multiple lines with one argument per line, indented. -
Prefer Ruby Hashes for JSON: When creating JSON strings within
letblocks, prefer constructing them from Ruby hashes using.to_jsonfor better readability and maintainability.
Good:
# Multi-line array
let(:ignore_patterns) do
[
{ method: :get, path: %r{/ignored/.*} },
{ method: :post, path: %r{/other/} },
{ path: %r{/any_method/.*} }
]
end
# Multi-line method call with keyword args
let(:response) do
Faraday::Response.new(
status: 200,
body: { data: :test }.to_json, # Construct JSON from hash
response_headers: {
'Content-Type' => 'application/json'
}
)
end
# Multi-line hash definition
let(:ignored_env) do
{ method: :get, url: URI('http://example.com/ignored/path'), body: nil }
end
# Complex single line expression
let(:ignored_with_params_cache_key) do
"faraday_cache:#{Digest::MD5.hexdigest("#{ignored_env_with_params[:method]}:#{ignored_env_with_params[:url]}:#{ignored_env_with_params[:body]}")}"
end
Bad:
# Using { ... } for multi-line blocks
let(:ignore_patterns) { [
{ method: :get, path: %r{/ignored/.*} },
{ method: :post, path: %r{/other/} },
{ path: %r{/any_method/.*} }
] }
# Complex expression squeezed onto one line with { ... }
let(:ignored_with_params_cache_key) { "faraday_cache:#{Digest::MD5.hexdigest("#{ignored_env_with_params[:method]}:#{ignored_env_with_params[:url]}:#{ignored_env_with_params[:body]}")}" }
For simple single-line declarations, curly braces are acceptable.
let(:simple_value) { 123 }
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.
- 2d ago First seen · 69 lines · 658 tokens per session scan A 77713793bc05
rspec-let-do-blocks is a cursor rule published in the GitHub repository panozzaj/cursor-rules (3 stars, last pushed 1y ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 658 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-31.
Other cursor rules, from other repositories
writting-tests-rails
Minitest — estrutura; integração/request obrigatória e limitada (status + render); força → test-quality-rails.
specs
RSpec-specific rules for Ruby on Rails projects.
python_tests
We use the unit tests to cover internal behavior that can work without the web / backend counterpart. We aim for 95%+ unit test coverage of our Python code in lib/streamlit.
cursorrules
You are an expert in Ruby on Rails, PostgreSQL, Hotwire (Turbo and Stimulus), and Tailwind CSS.
unit-test-coverage-95
Unit test coverage ≥95% per Go package (binding rule).
workato-connector-sdk
Cursor rule "workato-connector-sdk" from rkawaishi/workato-dev-kit, covering workato connector sdk (connector.rb), file structure, top-level structure of connector.rb, authorization types and required keys for an action.