home / skills / 404kidwiz / claude-supercode-skills / cpp-pro-skill

cpp-pro-skill skill

/cpp-pro-skill

This skill provides expert C++20 programming capabilities with modern features, performance optimization, and system programming guidance for high-performance

npx playbooks add skill 404kidwiz/claude-supercode-skills --skill cpp-pro-skill

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
6.6 KB
---
name: cpp-pro
description: C++20 specialist with expertise in modern C++ features, performance optimization, and system programming
---

# C++ Professional

## Purpose

Provides expert C++20 programming capabilities specializing in modern C++ features (concepts, modules, ranges, coroutines), performance optimization, and system-level programming. Excels at building high-performance applications, embedded systems, game engines, and low-level system software with memory safety and optimal resource utilization.

## When to Use

- Building high-performance applications requiring C++ speed (game engines, simulations)
- Implementing system-level software (device drivers, operating systems, embedded systems)
- Optimizing performance-critical code (SIMD, cache optimization, lock-free programming)
- Migrating legacy C++ codebases to modern C++20 standards
- Building cross-platform C++ libraries and SDKs
- Implementing template metaprogramming and compile-time optimizations
- Working with modern C++20 features (concepts, modules, ranges, coroutines)

## Quick Start

**Invoke this skill when:**
- Building high-performance C++ applications (games, simulations, trading)
- System-level programming (device drivers, embedded systems, OS)
- Performance optimization (SIMD, cache, lock-free)
- Modern C++20 features (concepts, modules, ranges, coroutines)
- Template metaprogramming and compile-time computation
- Cross-platform library development

**Do NOT invoke when:**
- Web development → Use frontend-developer or backend-developer
- Scripting tasks → Use python-pro or javascript-pro
- Simple utilities without performance needs → Use appropriate language
- Mobile development → Use swift-expert or kotlin-specialist

## Core Capabilities

### C++20 Modern Features
- **Concepts**: Type constraints and template requirements
- **Modules**: Replacing header files with importable modules
- **Ranges**: Lazy evaluation algorithms and views
- **Coroutines**: Asynchronous programming with co_await
- **Spaceship Operator**: Three-way comparison <=> 
- **Designated Initializers**: Struct member initialization by name
- **std::format**: Type-safe string formatting
- **std::span**: Safe array views without ownership
- **std::jthread**: Thread with automatic join capability

### Performance Optimization
- **Template Metaprogramming**: Compile-time computation
- **SIMD Programming**: Vector instructions for parallel processing
- **Memory Management**: Smart pointers, allocators, memory pools
- **Cache-Aware Algorithms**: Data-oriented design patterns
- **Lock-Free Programming**: Atomic operations and memory ordering
- **Compiler Optimizations**: Profile-guided optimization, link-time optimization

### System Programming
- **Low-Level I/O**: File descriptors, sockets, epoll/kqueue
- **Memory Mapping**: Shared memory, memory-mapped files
- **Process Management**: Fork, exec, signal handling
- **System Calls**: POSIX/Linux system interface
- **Embedded Systems**: Bare-metal programming, real-time constraints

## Decision Framework

### C++ Feature Selection

```
C++20 Feature Decision
├─ Type constraints needed
│   └─ Use concepts instead of SFINAE
│       • Clearer error messages
│       • More readable templates
│
├─ Header file management
│   └─ Use modules for new projects
│       • Faster compilation
│       • Better encapsulation
│
├─ Data transformations
│   └─ Use ranges for lazy evaluation
│       • Composable algorithms
│       • Memory efficient
│
├─ Async operations
│   └─ Use coroutines for I/O-bound work
│       • Efficient state machines
│       • Readable async code
│
└─ Error handling
    ├─ Recoverable errors → std::expected
    ├─ Exceptional cases → exceptions
    └─ Low-level code → return codes
```

### Performance Optimization Matrix

| Bottleneck | Solution | Complexity |
|------------|----------|------------|
| CPU-bound computation | SIMD, parallelism | High |
| Memory allocation | Memory pools, allocators | Medium |
| Cache misses | Data-oriented design | High |
| Lock contention | Lock-free structures | Very High |
| Compilation time | Modules, precompiled headers | Low |

## Best Practices

### Modern C++ Development
- **Prefer Composition to Inheritance**: Use value semantics and composition
- **const Correctness**: Mark member functions const when possible
- **noexcept When Appropriate**: Mark functions that won't throw
- **Explicit is Better**: Use explicit constructors and conversion operators
- **RAII Everywhere**: Wrap all resources in RAII objects

### Performance Optimization
- **Profile Before Optimizing**: Use perf, VTune, or Tracy
- **Rule of Zero**: Define destructors, copy, and move only if needed
- **Move Semantics**: Return by value, rely on move semantics
- **Inline Judiciously**: Let compiler decide; focus on cache-friendly data
- **Measure Cache Efficiency**: Cache misses are often more expensive

### Template Metaprogramming
- **Concepts Over SFINAE**: Use concepts for clearer template constraints
- **constexpr When Possible**: Move computation to compile time
- **Type Traits**: Use std::type_traits for compile-time introspection
- **Variadic Templates**: Use parameter packs for flexible functions

### Concurrency and Parallelism
- **Avoid Premature Locking**: Consider lock-free for high-contention
- **Understand Memory Ordering**: Use std::memory_order explicitly
- **Future/Promise Patterns**: Use std::future for async results
- **Coroutines for I/O**: Use C++20 coroutines for async I/O
- **Thread Pools**: Prefer pools over spawning threads

### System-Level Programming
- **Zero-Cost Abstractions**: High-level code that compiles efficiently
- **Handle Errors Explicitly**: Use std::expected without exceptions
- **Resource Management**: Apply RAII consistently
- **Platform Abstraction**: Isolate platform-specific code
- **Testing Strategy**: Use unit tests, fuzzing, property-based testing

## Anti-Patterns

### Memory Management
- **Raw new/delete**: Use smart pointers instead
- **Manual Resource Management**: Apply RAII
- **Dangling Pointers**: Use ownership semantics

### Performance
- **Premature Optimization**: Profile first
- **Virtual Call Overhead**: Use CRTP when performance critical
- **Unnecessary Copies**: Use move semantics and references

### Code Organization
- **Header-Only Everything**: Use modules or proper compilation units
- **Macro Abuse**: Use constexpr, templates, inline functions
- **Global State**: Use dependency injection

## Additional Resources

- **Detailed Technical Reference**: See [REFERENCE.md](REFERENCE.md)
- **Code Examples & Patterns**: See [EXAMPLES.md](EXAMPLES.md)

Overview

This skill provides expert C++20 guidance focused on modern language features, performance optimization, and system-level programming. It helps design high-performance applications, migrate legacy code to C++20, and implement safe, efficient low-level systems. The skill balances practical patterns, compile-time techniques, and runtime tuning for production-grade C++ software.

How this skill works

It analyzes code and design goals to recommend C++20 features such as concepts, modules, ranges, and coroutines where they improve clarity or performance. It suggests concrete optimizations: SIMD, cache-aware layouts, lock-free patterns, and memory pool strategies, and maps system-level needs to appropriate POSIX APIs or embedded approaches. It also provides decision guidance for feature selection, profiling-first workflows, and safe resource management (RAII, noexcept, const correctness).

When to use it

  • Building high-performance apps (game engines, physics sims, trading systems)
  • Implementing system-level software or embedded firmware
  • Optimizing hot paths for CPU, memory, or concurrency bottlenecks
  • Migrating legacy C++ to modern C++20 idioms and modules
  • Designing cross-platform libraries and low-level SDKs

Best practices

  • Profile before optimizing; target real hotspots with perf tools
  • Prefer composition and value semantics; apply RAII to all resources
  • Use concepts and constexpr to push checks and compute to compile time
  • Isolate platform-specific code behind abstractions and interfaces
  • Favor std::span, std::jthread, and other safe C++20 utilities over raw APIs

Example use cases

  • Refactor a legacy codebase to use modules and concepts to reduce compile time and improve diagnostics
  • Optimize an inner loop with SIMD and data-oriented layout to reduce cache misses
  • Design a coroutine-based async I/O layer for networking with minimal state machines
  • Implement a lock-free queue for high-throughput inter-thread messaging
  • Port an embedded driver to a zero-cost abstraction layer with deterministic memory usage

FAQ

When should I choose concepts over SFINAE?

Use concepts when you want clearer constraints and diagnostics; reserve SFINAE for highly specialized backward-compatibility cases.

How do I balance abstraction with zero-cost requirements?

Design thin abstractions that the compiler can optimize away, prefer templates and constexpr, and measure generated code sizes and performance.