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/juandoroteoflesiauni-lang/Market-options-stocks-ScannerWrote 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/juandoroteoflesiauni-lang/market-options-stocks-scanner/020-security)<a href="https://agentmods.dev/rules/juandoroteoflesiauni-lang/market-options-stocks-scanner/020-security"><img src="https://agentmods.dev/badge/rules/juandoroteoflesiauni-lang/market-options-stocks-scanner/020-security/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/juandoroteoflesiauni-lang/market-options-stocks-scanner/020-security"><img src="https://agentmods.dev/badge/rules/juandoroteoflesiauni-lang/market-options-stocks-scanner/020-security.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.00000 | $0.02148 |
| Opus 5 | $0.00000 | $0.01074 |
| Sonnet 5 | $0.00000 | $0.00430 |
| Haiku 4.5 | $0.00000 | $0.00215 |
Grade A, and why
020-security 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 12d 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 — 316 lines — stays where its author put it; the contents beside it link to each section on GitHub.
🔴 SEGURIDAD — TRADING TERMINAL
ESTAS REGLAS PROTEGEN DINERO REAL. NO NEGOCIABLES.
🔑 GESTIÓN DE SECRETOS — REGLA #1
JAMÁS en el código fuente:
# ❌ CRÍTICO — NUNCA HACER ESTO
BINANCE_API_KEY = "abc123xyz..."
db_password = "mi_password_secreta"
JWT_SECRET = "supersecret"
# ✅ SIEMPRE así
import os
from core.config import settings
BINANCE_API_KEY = settings.BINANCE_API_KEY # Lee desde .env
Archivo .env — Template obligatorio:
# ============================================================
# TRADING TERMINAL — VARIABLES DE ENTORNO
# NUNCA commitear este archivo. Está en .gitignore.
# ============================================================
# Base de datos
DATABASE_URL=postgresql://trading_user:CAMBIAR_PASSWORD@localhost:5432/trading_db
REDIS_URL=redis://localhost:6379/0
# Autenticación JWT
SECRET_KEY=GENERAR_CON_openssl_rand_hex_32
JWT_ALGORITHM=HS256
JWT_EXPIRE_MINUTES=60
# APIs de Trading (dejar vacío, completar manualmente)
BINANCE_API_KEY=
BINANCE_API_SECRET=
MT5_LOGIN=
MT5_PASSWORD=
MT5_SERVER=
# Entorno
ENVIRONMENT=development
DEBUG=false
ALLOWED_ORIGINS=http://localhost:5173
.gitignore obligatorio:
# CRÍTICO — NUNCA commitear
.env
.env.local
.env.production
*.pem
*.key
secrets/
🛡️ AUTENTICACIÓN Y AUTORIZACIÓN
JWT Implementation:
# core/security.py
from datetime import datetime, timedelta
from jose import JWTError, jwt
from passlib.context import CryptContext
from core.config import settings
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def create_access_token(data: dict) -> str:
"""Crear JWT con expiración."""
to_encode = data.copy()
expire = datetime.utcnow() + timedelta(minutes=settings.JWT_EXPIRE_MINUTES)
to_encode.update({
"exp": expire,
"iat": datetime.utcnow(),
"type": "access"
})
return jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.JWT_ALGORITHM)
def verify_token(token: str) -> dict:
"""Verificar JWT — lanza excepción si inválido."""
try:
payload = jwt.decode(token, settings.SECRET_KEY, algorithms=[settings.JWT_ALGORITHM])
if payload.get("type") != "access":
raise ValueError("Invalid token type")
return payload
except JWTError:
raise UnauthorizedError("Token inválido o expirado")
def hash_password(password: str) -> str:
return pwd_context.hash(password)
def verify_password(plain: str, hashed: str) -> bool:
return pwd_context.verify(plain, hashed)
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.
- 12d ago First seen · 316 lines · 0 tokens per session scan A 5dcad4b01c2f
020-security is a cursor rule published in the GitHub repository juandoroteoflesiauni-lang/Market-options-stocks-Scanner (11 stars, last pushed 2mo ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 2,148 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.
Other cursor rules, from other repositories
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.
angular-20
This rule provides comprehensive best practices and coding standards for Angular development, focusing on modern TypeScript, standalone components, signals, and performance optimizations.
dev-standard
Apache Superset development standards and guidelines for Cursor IDE.
cli-error-handling
CLI command error handling patterns.
prefer-direct-imports-over-module-mocks
Prefer extracting a testable core over vi.mock / vi.resetModules when unit tests need to reach production logic entangled with config, env, or singletons.
control-plane-descriptors
Control plane descriptor and instance implementation patterns.