C++ Coding Standards
SkillFiles & storageEnforce C++ coding standards including camelCase or snake_case variables, PascalCase classes, and consistent file naming.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the C++ Coding Standards skill
What this skill tells your AI
The instructions your AI receives, as published by jdubray/puffin in .claude/skills/coding-standard-cpp/SKILL.md and read by ahel’s review.
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
Signals
- GitHub stars
- 27
- Forks
- 7
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
coding-standard-cpp- Source
- github.com/jdubray/puffin