coding-standard-cpp

When reviewing or generating C++ code, follow these rules:

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "coding-standard-cpp" with this command: npx skills add jdubray/puffin/jdubray-puffin-coding-standard-cpp

C++ Coding Standards

When reviewing or generating C++ code, follow these rules:

File Naming

  • Source files: snake_case or PascalCase with .cpp extension (e.g., user_service.cpp or UserService.cpp )

  • Header files: Same base name with .h , .hpp , or .hxx extension

  • Template files: .tpp or .inl for template implementations

  • Be consistent within a project

Header Guards / Pragma

  • Prefer #pragma once for modern compilers

  • Or use traditional guards: UPPER_SNAKE_CASE with _HPP suffix

#pragma once // or #ifndef USER_SERVICE_HPP #define USER_SERVICE_HPP #endif

Namespace Naming

  • Namespaces: all_lowercase or snake_case (e.g., myproject , data_processing )

  • Nested namespaces: Use C++17 syntax when possible (e.g., namespace project::utils {} )

  • Avoid using namespace in headers

Variable Naming

  • Local variables: snake_case or camelCase (e.g., user_count or userCount )

  • Member variables: Prefix with m_ or suffix with _ (e.g., m_data or data_ )

  • Static members: Prefix with s_ (e.g., s_instance )

  • Constants: UPPER_SNAKE_CASE or kPascalCase (e.g., MAX_SIZE or kMaxSize )

  • Global variables: Prefix with g_ (e.g., g_config )

Function/Method Naming

  • Free functions: snake_case or camelCase (e.g., calculate_total() or calculateTotal() )

  • Member functions: camelCase or PascalCase (e.g., getUserId() or GetUserId() )

  • Getters/Setters: get /set prefix or just property name (e.g., getName() or name() )

  • Factory functions: Create , Make , or Build prefix (e.g., CreateUser() )

Class/Type Naming

  • Classes: PascalCase (e.g., UserService , DataProcessor )

  • Structs: PascalCase (e.g., Point , Rectangle )

  • Interfaces: PascalCase with I prefix optional (e.g., ISerializable or Serializable )

  • Template parameters: Single letter or PascalCase (e.g., T , Container , KeyType )

  • Enums: PascalCase for type, UPPER_SNAKE_CASE or PascalCase for values

  • Type aliases: PascalCase (e.g., using StringList = std::vector<std::string>; )

Smart Pointers

  • Use std::unique_ptr for single ownership

  • Use std::shared_ptr for shared ownership

  • Avoid raw new /delete

Organization

  • Include guards / pragma once

  • System includes (alphabetical)

  • Project includes (alphabetical)

  • Forward declarations

  • Namespace opening

  • Class declarations

  • Inline/template implementations

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

coding-standard-python

No summary provided by upstream source.

Repository SourceNeeds Review
General

coding-standard-java

No summary provided by upstream source.

Repository SourceNeeds Review
General

coding-standard-javascript

No summary provided by upstream source.

Repository SourceNeeds Review
General

modularity-patterns

No summary provided by upstream source.

Repository SourceNeeds Review