cpp
Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance optimization
Works with
--- name: cpp description: Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance optimization license: Apache-2.0 --- # 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
More Performance skills
seo-audit
coreyhaines31/marketingskills
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema. For AI search optimization, see ai-seo.
competitor-profiling
coreyhaines31/marketingskills
When the user wants to research, profile, or analyze competitors from their URLs. Also use when the user mentions 'competitor profile,' 'competitor research,' 'competitor analysis,' 'profile this competitor,' 'analyze competitor,' 'competitive intelligence,' 'competitor deep dive,' 'who are my competitors,' 'competitor landscape,' 'competitor dossier,' 'competitive audit,' or 'research these competitors.' Input is a list of competitor URLs. Output is structured competitor profile markdown files. For creating comparison/alternative pages from profiles, see competitors. For sales-specific battle cards, see sales-enablement.
vercel-optimize
vercel-labs/agent-skills
Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and version-aware Vercel/framework docs. Trigger for Vercel bill reduction, slow or expensive routes, caching opportunities, Function Invocations, Build Minutes, Fast Data Transfer, Core Web Vitals, Bot Management, Fluid compute, or cost breakdown requests.

