3
0
# Install this skill:
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_ptr for exclusive ownership
  • Use std::shared_ptr only when shared ownership is required
  • Use std::weak_ptr to 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_unique and std::make_shared
  • Avoid new and delete in application code
  • Use containers instead of raw arrays

Modern C++ Features

C++17 Features

  • Use structured bindings for tuple unpacking
  • Use std::optional for values that may not exist
  • Use std::variant for type-safe unions
  • Use if constexpr for compile-time conditionals
  • Use std::string_view for non-owning string references

C++20 Features

  • Use concepts for template constraints
  • Use ranges for cleaner algorithms
  • Use std::span for 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 noexcept for functions that don't throw
  • Catch exceptions by const reference
  • Provide strong exception guarantees where possible

Performance

  • Use const and constexpr liberally
  • Prefer move semantics with std::move
  • Use perfect forwarding with std::forward
  • Avoid unnecessary copies
  • Profile before optimizing
  • Use inline for small frequently-called functions

Security

Buffer Safety

  • Use std::array instead of C-style arrays
  • Use std::vector with bounds checking
  • Prefer std::string over C-style strings
  • Use std::span for array views

Type Safety

  • Avoid C-style casts; use static_cast, dynamic_cast, etc.
  • Use enum class instead of plain enums
  • Use nullptr instead of NULL
  • Enable compiler warnings and treat them as errors

Concurrency

  • Use std::thread and std::jthread for threading
  • Use std::mutex and std::lock_guard for synchronization
  • Use std::atomic for lock-free operations
  • Prefer std::async for 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.