cpp-idioms

cpp-idioms is a skill for Claude Code, Codex, Gemini CLI from irahardianto/rugged-gemini. It costs 0 tokens per session (540 once invoked), scanned A, original, MIT.

A guide to modern C++ coding patterns for versions 17, 20, and 23, including safe resource ownership, value-based design, and standard library types.

In plain words
What is it for?
Use it when choosing smart pointers, handling errors, applying move semantics, naming code, and writing modern C++ tests.
Why use it?
It helps avoid manual memory-management errors and makes C++ code more predictable, readable, and efficient.

Skill for Claude CodeCodexGemini CLI

Install

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.

agentmods
npx agentmods add skills/irahardianto/rugged-gemini/cpp-idioms
Any agent
npx skills add irahardianto/rugged-gemini --skill cpp-idioms
Clone the repo
git clone --depth 1 https://github.com/irahardianto/rugged-gemini

Made for: Claude Code, Codex, Gemini CLI.

Wrote 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.

agentmods badge for cpp-idioms

README.md
[![agentmods](https://agentmods.dev/badge/skills/irahardianto/rugged-gemini/cpp-idioms.svg)](https://agentmods.dev/skills/irahardianto/rugged-gemini/cpp-idioms)
Your own site
<a href="https://agentmods.dev/skills/irahardianto/rugged-gemini/cpp-idioms"><img src="https://agentmods.dev/badge/skills/irahardianto/rugged-gemini/cpp-idioms.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 540 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.00540
Opus 5 $0.00000 $0.00270
Sonnet 5 $0.00000 $0.00108
Haiku 4.5 $0.00000 $0.00054

Measured 5d ago against content hash a328b5ed7bab, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

cpp-idioms 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 5d 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.

.gemini/skills/cpp-idioms/SKILL.md · 58 lines

What it actually says

C++ Idioms and Patterns

Modern C++ (17/20/23) rewards RAII, value semantics, and zero-cost abstractions. Lean into the type system and smart pointers. Idiomatic C++ = safe, deterministic, performant.

Scope: C++ coding idioms. Test naming: GEMINI.md § Testing Strategy.

Ownership and Memory

  1. RAII — resources tied to object lifetime. No manual new/delete.
  2. std::unique_ptr for exclusive ownership, std::shared_ptr only when sharing is necessary.
  3. Move semantics — prefer moving over copying for expensive types.

Error Handling

  1. std::expected (C++23) or Result types for expected failures.
  2. Exceptions for exceptional conditions only. Never for control flow.
  3. noexcept on move constructors and destructors.

Modern Features

  1. std::string_view for read-only string parameters (no allocation).
  2. constexpr for compile-time evaluation.
  3. Structured bindings: auto [id, title] = getTask();
  4. std::optional for nullable values.

Naming

  1. PascalCase for types. camelCase or snake_case for functions (project-consistent).
  2. _ suffix for private members: storage_, logger_.
  3. No Hungarian notation.

Testing

Google Test or Catch2. Google Mock for interface mocking.

Formatting and Static Analysis

Tool Purpose Command
clang-format Formatting clang-format -i src/**/*.cpp
clang-tidy Static analysis clang-tidy src/*.cpp --
cppcheck Bug detection cppcheck --enable=all src/
AddressSanitizer Memory errors -fsanitize=address
ThreadSanitizer Race conditions -fsanitize=thread

Related

  • Code Idioms and Conventions GEMINI.md § Code Idioms and Conventions
  • Resources and Memory Management @.gemini/skills/resources-and-memory-management/SKILL.md
  • Concurrency and Threading Principles @.gemini/skills/concurrency-and-threading-principles/SKILL.md
Changes

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.

  1. 5d ago First seen · 58 lines · 0 tokens per session scan A a328b5ed7bab

Subscribe to this mod's changes

cpp-idioms is a skill published in the GitHub repository irahardianto/rugged-gemini (5 stars, last pushed 3mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 540 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.

Related

Other skills, from other repositories

zoom-meeting-sdk-unreal

Zoom Meeting SDK for Unreal Engine wrapper integrations. Use when building Unreal projects that embed Zoom meetings with C++ and Blueprint wrappers, including wrapper-to-SDK mapping concerns.

anthropics/knowledge-work-plugins · 41 tokens

new-cpp-lint

Create a new C++ lint rule, test it, run it across the codebase, and selectively apply fixes. Usage - /new-cpp-lint.

FastLED/FastLED · 41 tokens

doca-argp

Use this skill for hands-on DOCA Arg Parser CLI work on a shipped sample or new DOCA-using app — adding / removing / renaming flags; wiring docaargpinit → register params → docaargpstart → docaargpdestroy in order; picking a parameter type from the full public enum (DOCAARGPTYPESTRING, INT, BOOLEAN, DEVICE, DEVICEREP…

NVIDIA/skills · 267 tokens

ax-cpp-gen

Use when writing C++ code with axllm for AxGen programs, forward calls, indexed multi-sampling, result pickers, streaming, tools, assertions, traces, usage, and output parsing.

ax-llm/ax · 48 tokens

add-uint-support

Add unsigned integer (uint) type support to PyTorch operators by updating ATDISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.

pytorch/pytorch · 60 tokens

cuda-index-width

Choose 32-bit vs 64-bit index math in PyTorch CUDA kernels. Use when fixing large-tensor indexing overflows, deciding whether to use int64t, canUse32BitIndexMath, CUDAKERNELLOOPTYPE, or ATDISPATCHINDEXTYPES, and when considering binary-size or performance impact of index-type templating.

pytorch/pytorch · 71 tokens