cpp — Claude Code skill: what it does, how to install
Guidelines for modern C++17 and C++20 coding. Enforces RAII, smart pointers, memory safety, and modern standard library patterns in AI-generated code.
npx skills add Mindrally/skills --skill cpp -a claude-codeWhat cpp does
This skill guides your coding assistant through modern C++17 and C++20 practices. It bans raw owning pointers and direct calls to new or delete, enforcing std::unique_ptr, std::shared_ptr, and RAII wrappers instead. The agent applies strict naming standards, relies on std::string_view and std::span for views, and adopts C++20 concepts and ranges for cleaner logic.
The workflow specifies CMake for cross-platform builds, vcpkg or Conan for packages, and Google Test or Catch2 for unit suites alongside ASan, UBSan, and TSan sanitizers. Concurrency relies on std::jthread, atomics, and mutexes.
The guidelines mandate exceptions for domain errors. Projects compiling with -fno-exceptions will clash with the generated code out of the box.
What it helps with
- Enforce modern C++17 and C++20 idioms across agent-generated code
- Eliminate raw owning pointers in favor of RAII and smart pointers
- Set up tests with Catch2 or Google Test backed by runtime sanitizers
- Replace legacy C arrays with
std::spanandstd::array
Example prompts for the agent
- Write a thread-safe worker pool using C++20
std::jthreadandstd::mutex - Refactor this legacy class to use RAII and
std::unique_ptrinstead of manual deletes - Create a template parser constrained by C++20 concepts returning
std::optional
How to install cpp
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill cpp -a claude-code2Manually: put the files in place
~/.claude/skills/cpp/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/cpp/
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill cpp -a codex2Manually: put the files in place
.agents/skills/cpp/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill cpp -a cursor2Manually: put the files in place
.cursor/skills/cpp/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills cpp2Manually: put the files in place
.github/skills/cpp/SKILL.md1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill cpp -a gemini-cli2Platform CLI
gemini skills install https://github.com/Mindrally/skills --path cppManually: put the files in place
.devin/skills/cpp/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Mindrally/skills --skill cpp -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about cpp
How do I install cpp in Claude Code?
Run npx skills add Mindrally/skills --skill cpp -a claude-code. Alternatively, copy the skill specification directly into ~/.claude/skills/cpp/SKILL.md.
What standards and features does this skill enforce?
It targets C++17 and C++20. Key requirements include structured bindings, std::optional, std::variant, C++20 concepts, ranges, and coroutines.
Which build and test tools does it configure?
The rules require CMake builds with vcpkg or Conan package management. Testing relies on Google Test or Catch2 paired with ASan, UBSan, or TSan sanitizers.
Source text
SKILL.md · Apache-2.0
--- name: cpp description: Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance optimization metadata: maintainer: Mindrally source: https://github.com/Mindrally/skills --- # C++ Development Guidelines You are an expert in modern C++ development with deep knowledge of C++17/20 standards, memory management, and high-performance programming. ## Code Style and Structure - Write clean, modern C++ code following C++17/20 standards - Use meaningful variable and function names - Follow the Single Responsibility Principle - Prefer composition over inheritance - Keep functions small and focused ## Naming Conventions - Use PascalCase for classes and structs - Use camelCase for functions, variables, and methods - Use SCREAMING_SNAKE_CASE for constants and macros - Use snake_case for namespaces - Prefix member variables with `m_` or use trailing underscore ## Memory Management ### Smart Pointers - Use `std::unique_ptr` for exclusive ownership - Use `std::shared_ptr` only when shared ownership is required - Use `std::weak_ptr` to break circular references - Avoid raw owning pointers ### RAII (Resource Acquisition Is Initialization) - Use RAII for all resource management - Wrap resources in classes with proper destructors - Ensure exception safety through RAII - Use scope guards for cleanup operations ### Best Practices - Prefer stack allocation over heap allocation - Use `std::make_unique` and `std::make_shared` - Avoid `new` and `delete` in application code - Use containers instead of raw arrays ## Modern C++ Features ### C++17 Features - Use structured bindings for tuple unpacking - Use `std::optional` for values that may not exist - Use `std::variant` for type-safe unions - Use `if constexpr` for compile-time conditionals - Use `std::string_view` for non-owning string references ### C++20 Features - Use concepts for template constraints - Use ranges for cleaner algorithms - Use `std::span` for non-owning array views - Use coroutines for asynchronous operations - Use modules for faster compilation (when supported) ## Error Handling - Use exceptions for error handling - Define custom exception types for domain-specific errors - Use `noexcept` for functions that don't throw - Catch exceptions by const reference - Provide strong exception guarantees where possible ## Performance - Use `const` and `constexpr` liberally - Prefer move semantics with `std::move` - Use perfect forwarding with `std::forward` - Avoid unnecessary copies - Profile before optimizing - Use `inline` for small frequently-called functions ## Security ### Buffer Safety - Use `std::array` instead of C-style arrays - Use `std::vector` with bounds checking - Prefer `std::string` over C-style strings - Use `std::span` for array views ### Type Safety - Avoid C-style casts; use `static_cast`, `dynamic_cast`, etc. - Use `enum class` instead of plain enums - Use `nullptr` instead of `NULL` - Enable compiler warnings and treat them as errors ## Concurrency - Use `std::thread` and `std::jthread` for threading - Use `std::mutex` and `std::lock_guard` for synchronization - Use `std::atomic` for lock-free operations - Prefer `std::async` for simple async operations - Use condition variables for thread coordination ## Testing - Write unit tests with Google Test or Catch2 - Use mocking frameworks like Google Mock - Test edge cases and error conditions - Use sanitizers (ASan, UBSan, TSan) during testing - Implement continuous integration testing ## Documentation - Use Doxygen-style comments for documentation - Document public APIs thoroughly - Include usage examples in documentation - Keep documentation up to date with code changes - Document thread safety requirements ## Build System - Use CMake for cross-platform builds - Organize code into logical modules - Use package managers (vcpkg, Conan) for dependencies - Enable compiler warnings and static analysis - Configure proper debug and release builds
© Mindrally · Apache-2.0 · Mindrally/skills