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/thesethrose/devrules/cpp20git clone --depth 1 https://github.com/TheSethRose/DevRulesWhat 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.02561 |
| Opus 5 | $0.00000 | $0.01281 |
| Sonnet 5 | $0.00000 | $0.00512 |
| Haiku 4.5 | $0.00000 | $0.00256 |
Grade A, and why
CPP20 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 yesterday.
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 — 209 lines — stays where its author put it; the contents beside it link to each section on GitHub.
C++20/23 Programming Guidelines
Core Principles & Philosophy
- RAII (Resource Acquisition Is Initialization): Manage resources (memory, files, locks, sockets) through objects whose destructors automatically release the resource.
- Value Semantics: Prefer passing and returning objects by value when copying is cheap and makes sense, promoting clarity and avoiding lifetime issues.
- Const Correctness: Use
constextensively for variables, pointers/references, and member functions that do not modify observable state. - Type Safety: Leverage the C++ type system. Avoid C-style casts; use C++ casts (
static_cast,dynamic_cast,const_cast,reinterpret_cast) appropriately and sparingly. - Standard Library First: Prefer using components from the C++ Standard Library (
std) over custom implementations or C-style approaches. - Zero-Overhead Principle: Don't pay for what you don't use. Use language features efficiently.
Modern C++ Features (C++11/14/17/20/23)
- Use
autofor type deduction where it improves readability, but use explicit types for clarity in interfaces or complex expressions. - Range-Based
forLoops: Use for iterating over containers (for (const auto& item : container)). - Smart Pointers: Use
std::unique_ptrfor unique ownership andstd::shared_ptrfor shared ownership. Avoid rawnewanddeletefor owning pointers. - Move Semantics: Understand and utilize move constructors and move assignment operators (often implicitly generated) for efficient resource transfer. Use
std::moveexplicitly when transferring ownership. - Lambdas: Use lambda expressions for inline functions, especially with standard library algorithms.
nullptr: Usenullptrinstead of0orNULLfor null pointers.enum class: Prefer strongly-typed, scoped enumerations (enum class) over unscopedenum.- Structured Bindings (C++17): Use for unpacking tuples, pairs, or struct/class members (
auto [key, value] = myMap.begin();). if constexpr(C++17): Use for compile-time conditional code based on template parameters.std::optional(C++17): Use for representing optional values, replacing nullable pointers or magic values.std::variant(C++17): Use for type-safe unions.std::string_view(C++17): Use for non-owning, read-only views of character sequences, avoiding unnecessary string copies.std::filesystem(C++17): Use for portable filesystem operations.- Concepts (C++20): Use to constrain template parameters, improving template error messages and expressing design intent.
- Ranges (C++20): Utilize the ranges library (
std::ranges) for more composable and expressive algorithms. - Coroutines (C++20): Use for cooperative multitasking and asynchronous operations (generators, async/await patterns).
- Modules (C++20): Consider using modules for better encapsulation and potentially faster compile times (compiler/build system support varies).
std::format(C++20): Prefer over iostreams or C-style formatting for type-safe and efficient string formatting.std::span(C++20): Use for non-owning views of contiguous sequences (like arrays, vectors).std::expected(C++23): Consider for functions that can return either a value or an error, as an alternative to exceptions orstd::optional+ error code.
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.
- yesterday First seen · 209 lines · 2,561 tokens per session scan A e4087b428962
CPP20 is a cursor rule published in the GitHub repository TheSethRose/DevRules (25 stars, last pushed 1y ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,561 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
creating-cursor-rules
Meta-rule for creating effective Cursor IDE rules with best practices, patterns, and examples.
prpm-json-best-practices
Best practices for structuring prpm.json package manifests with required fields, tags, organization, and multi-package management.
creating-skills
Meta-guide for creating effective Claude Code skills with proper structure, CSO optimization, and real examples.
beanstalk-deploy
Robust deployment patterns for Elastic Beanstalk with GitHub Actions, Pulumi, and edge case handling.
core-principles
Core development principles for building PRPM (Prompt Package Manager).
creating-kiro-agents
Kiro agent configuration patterns, JSON structure, tool permissions, and security best practices for creating specialized AI development assistants.