coding-standard-c

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

Agent 安装分布

claude-code 5
windsurf 3
trae 3
opencode 3
antigravity 3

Skill 文档

C Coding Standards

When reviewing or generating C code, follow these rules:

File Naming

  • Source files: snake_case with .c extension (e.g., user_service.c, data_parser.c)
  • Header files: snake_case with .h extension (e.g., user_service.h, data_parser.h)
  • Keep names short but descriptive (max ~20 characters)

Header Guards

  • Format: UPPER_SNAKE_CASE with _H suffix
  • Include path in guard: (e.g., PROJECT_MODULE_FILE_H)
#ifndef USER_SERVICE_H
#define USER_SERVICE_H
// content
#endif /* USER_SERVICE_H */

Variable Naming

  • Local variables: snake_case (e.g., user_count, buffer_size, is_valid)
  • Global variables: snake_case with g_ prefix (e.g., g_config, g_instance_count)
  • Static variables: snake_case with s_ prefix (e.g., s_initialized, s_cache)
  • Pointers: Include p or ptr suffix when helpful (e.g., user_ptr, buffer_p)

Constant/Macro Naming

  • Macros: UPPER_SNAKE_CASE (e.g., MAX_BUFFER_SIZE, DEFAULT_TIMEOUT)
  • Enum values: UPPER_SNAKE_CASE (e.g., STATUS_OK, ERROR_INVALID_INPUT)
  • Compile-time constants: UPPER_SNAKE_CASE with #define

Function Naming

  • Functions: snake_case (e.g., calculate_total(), parse_input())
  • Module prefix: Use module name prefix (e.g., user_create(), user_destroy())
  • Static functions: snake_case, no prefix needed (internal to file)
  • Init/cleanup pairs: Use _init() and _cleanup() or _create() and _destroy()

Type Naming

  • Structs: snake_case with _t suffix or PascalCase (e.g., user_data_t or UserData)
  • Typedefs: snake_case with _t suffix (e.g., user_id_t, callback_fn_t)
  • Enums: snake_case with _e suffix for type (e.g., status_e)

Organization

  • Header includes at top (system headers, then project headers)
  • Macro definitions after includes
  • Type definitions (structs, enums, typedefs)
  • Function prototypes
  • Global/static variable declarations
  • Function implementations