Claude-skill-registry coding-standard-cpp

Enforce C++ coding standards including camelCase or snake_case variables, PascalCase classes, and consistent file naming.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/coding-standard-cpp" ~/.claude/skills/majiayu000-claude-skill-registry-coding-standard-cpp && rm -rf "$T"
manifest: skills/data/coding-standard-cpp/SKILL.md
source content

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