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/hamzaamjad/cursor-rules/201-no-version-bloatgit clone --depth 1 https://github.com/hamzaamjad/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.02928 | $0.02928 |
| Opus 5 | $0.01464 | $0.01464 |
| Sonnet 5 | $0.00586 | $0.00586 |
| Haiku 4.5 | $0.00293 | $0.00293 |
Grade A, and why
201-no-version-bloat 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 — 231 lines — stays where its author put it; the contents beside it link to each section on GitHub.
No Version Bloat Rule
-
Purpose: Maintain clean architecture by preventing creation of duplicate "enhanced", "v2", or "_new" versions of existing files. Empirical Impact: Projects with version bloat show 45% higher maintenance costs and 3x longer onboarding time.
-
Principle: Integrate improvements into existing files rather than creating parallel versions.
-
Requirements:
- Before Creating New Files: Check if functionality belongs in existing file
- Naming Convention: Never use suffixes like "_enhanced", "_v2", "_new", "_improved"
- Consolidation First: If prototyping created temporary versions, consolidate immediately
- Git Strategy: Use branches for experimental features, not duplicate files
- Directory Organization: Enforce logical grouping to prevent file scatter:
/project/ ├── core_files.py # Main functionality ├── /tests/ # All testing files ├── /scripts/ # Deployment & utilities ├── /utils/ # Helper functions ├── /services/ # Business logic ├── /schemas/ # Data definitions └── /docs/ # Documentation - Stigmergic Version Tracking: Leave evolution markers in files:
# EVOLUTION_TRAIL: basic_impl.v1 -> optimized.v2 -> current # DEPRECATED_FEATURES: old_method (removed 2025-01-02) # ENHANCEMENT_MARKER: Added caching support - 30% faster - Version Decay Pattern: Temporary files auto-expire after 7 days:
# TEMPORARY_FILE: expires 2025-01-09 # PURPOSE: Testing new algorithm approach # MERGE_TARGET: main_module.py - Duplicate Detection: Regularly scan for similar files:
find . -name "*webhook*" | sort # Find potential duplicates wc -l file1.py file2.py # Compare file sizes
-
Debugging Scenario Protocol (NEW):
- Temporary File Naming: Use
debug_*,temp_*, ortest_*prefixes for debugging files - Immediate Cleanup Strategy: Set cleanup reminder when creating debugging files
- Consolidation Timeline: Consolidate within 24 hours of debugging completion
- Purpose-Specific Naming:
test_official_spec.py>test_v2.py - Test File Organization:
/tests/ ├── test_component_name.py # Main component tests ├── test_integration.py # Integration tests ├── test_debug_specific.py # Specific debugging (temporary) └── conftest.py # Shared fixtures
- Temporary File Naming: Use
-
Cleanup Protocol:
- Identify Duplicates: Use file size comparison and naming patterns
- Determine Primary: Choose most recent, feature-complete version
- Move Supporting Files: Organize tests, utils, scripts to proper directories
- Remove Obsolete: Delete older versions after verification
- Update Documentation: Reflect new organization in README/docs
- Test Consolidation: Merge related test files into comprehensive suites
-
Validation:
- Check: Are there any duplicate versions of core files?
- Check: Do new features extend existing infrastructure?
- Check: Is the codebase free of abandoned prototype files?
- Check: Are files organized in logical directories?
- Check: Do similar-named files serve distinct purposes?
- Check: Are debugging/test files consolidated after completion?
-
Examples:
- ❌ BAD: Creating
safir_enhanced.pyalongsidesafir.py - ✅ GOOD: Adding enhanced methods to existing
safir.py - ❌ BAD:
llm_service_v2.pyfor new features - ✅ GOOD: Extending
llm_service.pywith new capabilities - ❌ BAD:
webhooks/webhook_handler.py+webhook_handler.py(duplicates) - ✅ GOOD: Single
webhook_handler.pywith all functionality - ❌ BAD:
test_webhook.py,test_webhook_v2.py,webhook_test_focused.py - ✅ GOOD:
test_official_specification.py,test_production_integration.py(distinct purposes)
- ❌ BAD: Creating
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 · 231 lines · 2,928 tokens per session scan A da6d19a9ccc9
201-no-version-bloat is a cursor rule published in the GitHub repository hamzaamjad/cursor-rules (2 stars, last pushed 1y ago), licensed MIT. It adds 2,928 tokens to every session, about $0.0146 per session on Opus 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-31.
Other cursor rules, from other repositories
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.
family-instance-domain-actions
Family instance domain action implementation patterns.