Cpp
Skill ulpi-io/plugin-marketplace/plugins/mindrally/skills/cpp
Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance optimizationFrom its SKILL.md
npx -y skills add ulpi-io/plugin-marketplace --skill cppAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.8 KB, 848 tokens by cl100k_base, as published. Nobody here has run it
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
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.