ia-cpp-systems

ia-cpp-systems is a skill for Claude Code from iliaal/whetstone. It costs 80 tokens per session (1,289 once invoked), scanned A, a copy of cpp-systems, MIT.

A set of modern C++ practices for resource ownership, errors, interfaces, templates, and CMake builds. It covers C++17 as a baseline and accounts for project rules such as compiler settings and ABI compatibility.

In plain words
What is it for?
Use it when writing, reviewing, refactoring, or debugging C++ code, including smart-pointer usage, templates, CMake configuration, and GoogleTest work.
Why use it?
It helps prevent memory leaks, invalid object lifetimes, incompatible public interfaces, and code that does not match the project's C++ version or build settings.

Skill for Claude Code

Written for Claude Code: paths in frontmatter.

Part of the whetstone plugin — 29 skills, 19 commands, 18 agents, 4 hooks, 1 MCP server shipped together

Good fit Use it when writing, reviewing, refactoring, or debugging C++ code, including smart-pointer usage, templates, CMake configuration, and GoogleTest work.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/iliaal/whetstone/ia-cpp-systems
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.

Any agent
npx skills add iliaal/whetstone --skill ia-cpp-systems
Clone the repo
git clone --depth 1 https://github.com/iliaal/whetstone

Made for: Claude Code.

Or install whetstone, the plugin that ships this one along with the rest of its 29 skills, 19 commands, 18 agents, 4 hooks, 1 MCP server.

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 ia-cpp-systems

README.md
[![agentmods](https://agentmods.dev/badge/skills/iliaal/whetstone/ia-cpp-systems/github.svg)](https://agentmods.dev/skills/iliaal/whetstone/ia-cpp-systems)
Your own site
<a href="https://agentmods.dev/skills/iliaal/whetstone/ia-cpp-systems"><img src="https://agentmods.dev/badge/skills/iliaal/whetstone/ia-cpp-systems/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.

agentmods 80×15 button for ia-cpp-systems

Your own site · 80×15
<a href="https://agentmods.dev/skills/iliaal/whetstone/ia-cpp-systems"><img src="https://agentmods.dev/badge/skills/iliaal/whetstone/ia-cpp-systems.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 80 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,289 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin 92% copy Near-identical to another mod 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.00080 $0.01289
Opus 5.5 $0.00032 $0.00516
Sonnet 5.5 $0.00016 $0.00258
Haiku 4.5 $0.00008 $0.00129

Measured 11d ago against content hash 88e00629a618, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

ia-cpp-systems 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 11d 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.

Origin

This is a copy

92% identical to cpp-systems — 2 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

plugins/whetstone/skills/ia-cpp-systems/SKILL.md · 90 lines

How it starts

The opening of the file, as written. The whole thing — 90 lines — stays where its author put it; the contents beside it link to each section on GitHub.

C++ Systems & Libraries

Covers C++17 as the baseline, with C++20 features called out where a project's standard allows them. For plain C (manual lifetimes, status enums, native extensions), see the ia-c-systems skill.

Working rules

  • Make resource ownership explicit and use RAII for release on every exit path.
  • Keep borrowed views within backing-storage lifetimes and review copy/move behavior when special members change.
  • Follow the project's error model and supported language standard.
  • Preserve ABI and avoid invoking unknown callbacks while holding locks or invalidatable container iterators.

Repo conventions outrank this skill

Check CMakeLists.txt for CXX_STANDARD, read .clang-format and .clang-tidy, and read two adjacent translation units before writing. Where they conflict with the rules below, they win.

The conflicts that actually happen:

Local constraint Consequence
-fno-exceptions Error handling is codes or expected-alikes. Constructors cannot report recoverable failure, so use a fallible factory or construct a valid fallback state. new (std::nothrow) only where the project's OOM policy is to observe null and recover; plain new is fine where the policy is termination
Standard pinned below C++17 No std::optional/string_view/structured bindings/if constexpr; check before using any
Public header is ABI-stable No layout changes, no inline-function changes, no added virtuals: load the ABI reference
Embedded or freestanding target No RTTI, no dynamic allocation in hot paths, possibly no STL containers

Ownership and RAII

Every resource has exactly one owner, and that owner is an object whose destructor releases it. A raw new or delete in application code is a defect.

  • std::unique_ptr<T> for sole ownership. It is the default; it costs nothing over a raw pointer.
  • std::shared_ptr<T> only where lifetime is genuinely shared and cannot be expressed as "the owner outlives the users". Reach for it third, not first.
  • std::weak_ptr<T> to break ownership cycles. LeakSanitizer does report a cycle that is unreachable from any root, but not one still reachable from a global or other registered root, and detection varies by platform and configuration. Do not rely on the sanitizer to find these.
  • Raw T* and T& mean non-owning observation, and are correct in that role. A parameter taking unique_ptr by value is announcing that it consumes ownership; one taking T* is announcing it does not.
  • std::span<T> (C++20) or a pointer-plus-length pair for a borrowed contiguous range in a new public API, since const std::vector<T>& there refuses every other container. On a C++17 baseline, or for internal code whose callers all hold vectors anyway, const std::vector<T>& is fine and simpler.

Read the full file on GitHub · 90 lines

Files

What ships with it

6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

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. 11d ago Changed · +8 lines 88e00629a618
  2. 27d ago Changed 560aef94b2b7
  3. 1mo ago Changed · -66 lines 9d38c6c40239
  4. 1mo ago First seen · 148 lines · 80 tokens per session scan A 20a2d0abc5e4

Subscribe to this mod's changes

ia-cpp-systems is a skill published in the GitHub repository iliaal/whetstone (35 stars, last pushed today), licensed MIT. It adds 80 tokens to every session and 1,289 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 92% identical to cpp-systems, differing in 2 lines, and is treated as a copy.

Related

Other skills, from other repositories

agent-cpp-expert

Specialist subagent: C and C++ development, modern C++ (C++17/20/23), CMake, systems programming, and memory management specialist. Use when writing C/C++ code, debugging memory issues, or building systems-level software. Trigger phrases: C++, C language, CMake, modern C++, systems programming, memory management…

travisjneuman/.claude · 88 tokens

rubber-ducky

Use when you've planned a non-trivial change and are about to implement it, finished a complex or multi-file piece of work, just wrote tests, or are stuck on repeated failures — and any time the user says "rubber duck this", "rubber ducky", "get a second opinion", "sanity-check my plan", "poke holes in this", "what am…

harnessprotocol/harness-kit · 186 tokens

project-setup

Setup and hardening review for cross-platform modern-C++ (C++17) native projects, especially Node.js addons built with node-gyp / node-addon-api. Use when asked to "set up a native addon", "harden a C/C++ build", "review my binding.gyp", "add compiler hardening flags", "wire up AddressSanitizer/UBSan/TSan/clang-tidy"…

photostructure/coding-skills · 170 tokens

lsp-investigate

Investigate code using LSP tools. Register a project, then use definitions, references, call hierarchies, type hierarchies, hover, and diagnostics to understand code structure, trace bugs, and assess change impact.

karellen/karellen-lsp-mcp · 45 tokens

TypeScript Null Safety Guardrails

Enforce null/undefined safety for changed TypeScript code and suggest safer patterns.

s977043/river-review · 23 tokens

TypeScript Strictness Guard

Enforce TypeScript strictness by reducing any/unsafe assertions and ensuring null handling.

s977043/river-review · 23 tokens