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/freshworks-developers/fw-dev-tools/complexity-reductiongit clone --depth 1 https://github.com/freshworks-developers/fw-dev-toolsWhat 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.01380 |
| Opus 5 | $0.00000 | $0.00690 |
| Sonnet 5 | $0.00000 | $0.00276 |
| Haiku 4.5 | $0.00000 | $0.00138 |
Grade A, and why
complexity-reduction 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.
How it starts
The opening of the file, as written. The whole thing — 204 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Function Complexity Reduction Patterns
When to use: fdk validate shows "Function 'X' has a complexity of Y. Maximum allowed is 7."
Target: Keep complexity ≤ 7 (aim for ≤ 5 for maintainability)
Quick Fixes (Most Common)
1. Sets for Multiple OR Comparisons
Problem: Each || or === adds +1 complexity
// [INVALID] WRONG: Complexity 12
function matchesPriority(ticket, filter) {
const p = (ticket.priority || ticket.urgency || 0).toString();
if (filter.includes('high') && (p === '2' || p === '3' || p === 'high' || p === 'urgent')) {
return true;
}
return false;
}
// [VALID] CORRECT: Complexity 3
const HIGH_PRIORITIES = new Set(['2', '3', 'high', 'urgent']);
function matchesPriority(ticket, filter) {
const p = (ticket.priority || ticket.urgency || 0).toString();
if (filter.includes('high') && HIGH_PRIORITIES.has(p)) {
return true;
}
return false;
}
2. Lookup Objects (Replace if/else chains)
// [INVALID] WRONG: Complexity 6+
function getPriorityLabel(priority) {
if (priority === 1) return 'Low';
else if (priority === 2) return 'Medium';
else if (priority === 3) return 'High';
else if (priority === 4) return 'Urgent';
else return 'Unknown';
}
// [VALID] CORRECT: Complexity 1
const PRIORITY_LABELS = { 1: 'Low', 2: 'Medium', 3: 'High', 4: 'Urgent' };
function getPriorityLabel(priority) {
return PRIORITY_LABELS[priority] ?? 'Unknown';
}
3. Guard Clauses (Reduce nesting)
// [INVALID] WRONG: Complexity 5+ (nested conditions)
function processTicket(ticket) {
if (ticket) {
if (ticket.status === 'open') {
if (ticket.priority >= 3) {
if (ticket.assignee) {
return handleUrgent(ticket);
}
}
}
}
return null;
}
// [VALID] CORRECT: Complexity 4 (early returns)
function processTicket(ticket) {
if (!ticket) return null;
if (ticket.status !== 'open') return null;
if (ticket.priority < 3) return null;
if (!ticket.assignee) return null;
return handleUrgent(ticket);
}
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 · 204 lines · 0 tokens per session scan A 3faf2ed97872
complexity-reduction is a cursor rule published in the GitHub repository freshworks-developers/fw-dev-tools (5 stars, last pushed 7d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,380 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
battle-tested-engineer
Battle-tested engineering judgment for code, refactors, tests, and frontend UI. Ultra-terse caveman style during code work.
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.
typescript
Changes to these high-fan-out internals can affect every message, delta, element, or rerun. Keep work in them minimal, and benchmark changes with representative stress-test apps.
coolify-ai-docs
Master reference to all Coolify AI documentation in .ai/ directory.
python_lib
Tips and guidelines specific to the development of the Streamlit Python library, not applicable to scripts and e2e tests.