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 cppThis skill uses the workspace's default tool permissions.
| Agent | When |
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides MCP server integration in Claude Code plugins via .mcp.json or plugin.json configs for stdio, SSE, HTTP types, enabling external services as tools.
| 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 |