Use when adding new error messages to React, or seeing "unknown error code" warnings.
npx skills add Mindrally/skills --skill "cpp"
Install specific skill from multi-skill repository
# Description
Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance optimization
# SKILL.md
name: cpp
description: Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance optimization
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_ptrfor exclusive ownership - Use
std::shared_ptronly when shared ownership is required - Use
std::weak_ptrto 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_uniqueandstd::make_shared - Avoid
newanddeletein application code - Use containers instead of raw arrays
Modern C++ Features
C++17 Features
- Use structured bindings for tuple unpacking
- Use
std::optionalfor values that may not exist - Use
std::variantfor type-safe unions - Use
if constexprfor compile-time conditionals - Use
std::string_viewfor non-owning string references
C++20 Features
- Use concepts for template constraints
- Use ranges for cleaner algorithms
- Use
std::spanfor 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
noexceptfor functions that don't throw - Catch exceptions by const reference
- Provide strong exception guarantees where possible
Performance
- Use
constandconstexprliberally - Prefer move semantics with
std::move - Use perfect forwarding with
std::forward - Avoid unnecessary copies
- Profile before optimizing
- Use
inlinefor small frequently-called functions
Security
Buffer Safety
- Use
std::arrayinstead of C-style arrays - Use
std::vectorwith bounds checking - Prefer
std::stringover C-style strings - Use
std::spanfor array views
Type Safety
- Avoid C-style casts; use
static_cast,dynamic_cast, etc. - Use
enum classinstead of plain enums - Use
nullptrinstead ofNULL - Enable compiler warnings and treat them as errors
Concurrency
- Use
std::threadandstd::jthreadfor threading - Use
std::mutexandstd::lock_guardfor synchronization - Use
std::atomicfor lock-free operations - Prefer
std::asyncfor 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
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.