coding-standard-cpp
SKILL.md
C++ Coding Standards
When reviewing or generating C++ code, follow these rules:
File Naming
- Source files: snake_case or PascalCase with
.cppextension (e.g.,user_service.cpporUserService.cpp) - Header files: Same base name with
.h,.hpp, or.hxxextension - Template files:
.tppor.inlfor template implementations - Be consistent within a project
Header Guards / Pragma
- Prefer
#pragma oncefor modern compilers - Or use traditional guards: UPPER_SNAKE_CASE with
_HPPsuffix
#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 namespacein headers
Variable Naming
- Local variables: snake_case or camelCase (e.g.,
user_countoruserCount) - Member variables: Prefix with
m_or suffix with_(e.g.,m_dataordata_) - Static members: Prefix with
s_(e.g.,s_instance) - Constants: UPPER_SNAKE_CASE or kPascalCase (e.g.,
MAX_SIZEorkMaxSize) - Global variables: Prefix with
g_(e.g.,g_config)
Function/Method Naming
- Free functions: snake_case or camelCase (e.g.,
calculate_total()orcalculateTotal()) - Member functions: camelCase or PascalCase (e.g.,
getUserId()orGetUserId()) - Getters/Setters:
get/setprefix or just property name (e.g.,getName()orname()) - Factory functions:
Create,Make, orBuildprefix (e.g.,CreateUser())
Class/Type Naming
- Classes: PascalCase (e.g.,
UserService,DataProcessor) - Structs: PascalCase (e.g.,
Point,Rectangle) - Interfaces: PascalCase with
Iprefix optional (e.g.,ISerializableorSerializable) - 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_ptrfor single ownership - Use
std::shared_ptrfor 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
Weekly Installs
22
Repository
jdubray/puffinGitHub Stars
17
First Seen
Jan 22, 2026
Security Audits
Installed on
opencode17
claude-code16
gemini-cli16
codex16
trae14
github-copilot14