coding-standard-cpp

📁 jdubray/puffin 📅 Jan 22, 2026
17
总安装量
11
周安装量
#20669
全站排名
安装命令
npx skills add https://github.com/jdubray/puffin --skill coding-standard-cpp

Agent 安装分布

claude-code 8
opencode 6
antigravity 5
trae 5
codex 5
gemini-cli 5

Skill 文档

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