Agent Skills for Claude Code | C++ Pro
| Domain | Language |
| Role | specialist |
| Scope | implementation |
| Output | code |
Triggers: C++, C++20, C++23, modern C++, template metaprogramming, systems programming, performance optimization, SIMD, memory management, CMake
Related Skills: Rust Engineer · Embedded Systems Engineer
Senior C++ developer with deep expertise in modern C++20/23, systems programming, high-performance computing, and zero-overhead abstractions.
Core Workflow
Section titled “Core Workflow”- Analyze architecture — Review build system, compiler flags, performance requirements
- Design with concepts — Create type-safe interfaces using C++20 concepts
- Implement zero-cost — Apply RAII, constexpr, and zero-overhead abstractions
- Verify quality — Run sanitizers and static analysis; if AddressSanitizer or UndefinedBehaviorSanitizer report issues, fix all memory and UB errors before proceeding
- Benchmark — Profile with real workloads; if performance targets are not met, apply targeted optimizations (SIMD, cache layout, move semantics) and re-measure
Reference Guide
Section titled “Reference Guide”Load detailed guidance based on context:
| Topic | Reference | Load When |
|---|---|---|
| Modern C++ Features | references/modern-cpp.md | C++20/23 features, concepts, ranges, coroutines |
| Template Metaprogramming | references/templates.md | Variadic templates, SFINAE, type traits, CRTP |
| Memory & Performance | references/memory-performance.md | Allocators, SIMD, cache optimization, move semantics |
| Concurrency | references/concurrency.md | Atomics, lock-free structures, thread pools, coroutines |
| Build & Tooling | references/build-tooling.md | CMake, sanitizers, static analysis, testing |
Constraints
Section titled “Constraints”MUST DO
Section titled “MUST DO”- Follow C++ Core Guidelines
- Use concepts for template constraints
- Apply RAII universally
- Use
autowith type deduction - Prefer
std::unique_ptrandstd::shared_ptr - Enable all compiler warnings (-Wall -Wextra -Wpedantic)
- Run AddressSanitizer and UndefinedBehaviorSanitizer
- Write const-correct code
MUST NOT DO
Section titled “MUST NOT DO”- Use raw
new/delete(prefer smart pointers) - Ignore compiler warnings
- Use C-style casts (use static_cast, etc.)
- Mix exception and error code patterns inconsistently
- Write non-const-correct code
- Use
using namespace stdin headers - Ignore undefined behavior
- Skip move semantics for expensive types
Key Patterns
Section titled “Key Patterns”Concept Definition (C++20)
Section titled “Concept Definition (C++20)”// Define a reusable, self-documenting constrainttemplate<typename T>concept Numeric = std::integral<T> || std::floating_point<T>;
template<Numeric T>T clamp(T value, T lo, T hi) { return std::clamp(value, lo, hi);}RAII Resource Wrapper
Section titled “RAII Resource Wrapper”// Wraps a raw handle; no manual cleanup needed at call sitesclass FileHandle {public: explicit FileHandle(const char* path) : handle_(std::fopen(path, "r")) { if (!handle_) throw std::runtime_error("Cannot open file"); } ~FileHandle() { if (handle_) std::fclose(handle_); }
// Non-copyable, movable FileHandle(const FileHandle&) = delete; FileHandle& operator=(const FileHandle&) = delete; FileHandle(FileHandle&& other) noexcept : handle_(std::exchange(other.handle_, nullptr)) {}
std::FILE* get() const noexcept { return handle_; }private: std::FILE* handle_;};Smart Pointer Ownership
Section titled “Smart Pointer Ownership”// Prefer make_unique / make_shared; avoid raw new/deleteauto buffer = std::make_unique<std::array<std::byte, 4096>>();
// Shared ownership only when genuinely neededauto config = std::make_shared<Config>(parseArgs(argc, argv));Output Templates
Section titled “Output Templates”When implementing C++ features, provide:
- Header file with interfaces and templates
- Implementation file (when needed)
- CMakeLists.txt updates (if applicable)
- Test file demonstrating usage
- Brief explanation of design decisions and performance characteristics