Help us improve
Share bugs, ideas, or general feedback.
From cpp
C++ core conventions: C++20/23 language features, coding standards, best practices, modern idioms. Load before writing or reviewing any C++ code.
npx claudepluginhub lazygophers/ccplugin --plugin cppHow this skill is triggered — by the user, by Claude, or both
Slash command
/cpp:coresonnetThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
| Agent | When |
Enforces C++ Core Guidelines for writing, reviewing, and refactoring modern C++ code (C++17+), promoting RAII, immutability, type safety, and idiomatic practices.
Applies C++ Core Guidelines to write, review, or refactor C++ code. Enforces modern, safe, and idiomatic practices for C++17/20/23.
Writes, optimizes, and debugs C++ applications using modern C++20/23 features, template metaprogramming, and high-performance systems techniques. Use for performance bottlenecks, concurrency issues, and CMake build configuration.
Share bugs, ideas, or general feedback.
| Agent | When |
|---|---|
| Skills(cpp:dev) | All C++ development |
| Skills(cpp:debug) | Debugging with modern idioms |
| Skills(cpp:test) | Writing test code |
| Skills(cpp:perf) | Performance-critical code |
| Scenario | Skill | Description |
|---|---|---|
| Memory | Skills(cpp:memory) | Smart pointers, RAII, scope guards |
| Concurrency | Skills(cpp:concurrency) | jthread, coroutines, atomics |
| Templates | Skills(cpp:template) | Concepts, CTAD, fold expressions |
| Tooling | Skills(cpp:tooling) | CMake 3.28+, clang-tidy, sanitizers |
| Performance | Skills(cpp:performance) | Cache, SIMD, zero-copy |
auto operator<=>(const T&) const = default;| Feature | Usage | Example |
|---|---|---|
| Concepts | Constrain templates | template<std::integral T> |
| Ranges | Functional pipelines | data | views::filter(pred) | views::transform(fn) |
| Coroutines | Async/generators | co_await, co_yield, co_return |
| Modules | Replace headers | import std; export module mylib; |
| Three-way comparison | Auto-generate operators | auto operator<=>(const T&) const = default; |
| std::format | Type-safe formatting | std::format("{:.2f}", 3.14) |
| std::span | Non-owning view | void process(std::span<const int> data) |
| std::jthread | Auto-joining thread | std::jthread t(func); |
| std::latch/barrier | Synchronization | std::latch done(n); |
| Feature | Usage | Example |
|---|---|---|
| std::expected | Error handling | std::expected<int, Error> parse(str) |
| std::print | Simple output | std::print("Hello {}!\n", name) |
| std::mdspan | Multi-dim view | std::mdspan<float, std::extents<int, 3, 3>> mat(data) |
| std::generator | Lazy sequences | std::generator<int> range(int n) |
| Deducing this | Recursive lambdas, CRTP | void f(this auto&& self) |
| if consteval | Compile-time branch | if consteval { ... } else { ... } |
| std::flat_map | Cache-friendly map | std::flat_map<K, V> m; |
| Rationalization | Actual Check |
|---|---|
| "Raw pointers are faster" | Use unique_ptr -- zero overhead |
| "SFINAE works fine" | Use concepts -- clearer errors |
| "printf is simpler" | Use std::format/std::print |
| "Don't need ranges" | Use ranges pipeline over raw loops |
| "C cast is shorter" | Use static_cast/bit_cast |
| "Macros are convenient" | Use constexpr/consteval |