cpp-header-template

Tạo các tệp tiêu đề C++ theo Google Style Guide. Sử dụng khi tạo tệp tiêu đề mới hoặc yêu cầu một mẫu tiêu đề.

npx skills add https://github.com/clickhouse/pg_stat_ch --skill cpp-header-template

C++ Header File Template Generator

Generate header files following Google C++ Style Guide conventions.

Usage

Provide: class name, namespace, and file path to generate a compliant header.

Template

// Copyright [year] [copyright holder]
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.

#ifndef [PROJECT]_[PATH]_[FILENAME]_H_
#define [PROJECT]_[PATH]_[FILENAME]_H_

// C system headers (if needed)
// #include <sys/types.h>

// C++ standard library headers
#include <memory>
#include <string>
#include <vector>

// Other library headers
// #include "other/library.h"

// Project headers
// #include "project/base.h"

namespace [namespace] {

// Forward declarations (avoid when possible)

/// Brief description of the class.
///
/// Detailed description if needed. Include:
/// - Purpose and responsibilities
/// - Thread safety guarantees
/// - Example usage (for complex classes)
class [ClassName] {
 public:
  // Types and type aliases
  using ValueType = int;

  // Static constants
  static constexpr int kDefaultSize = 100;

  // Factory functions (if needed)
  static std::unique_ptr<[ClassName]> Create();

  // Constructors
  [ClassName]();
  explicit [ClassName](int value);

  // Rule of five - be explicit about copy/move
  [ClassName](const [ClassName]&) = default;
  [ClassName]& operator=([const ClassName]&) = default;
  [ClassName]([ClassName]&&) noexcept = default;
  [ClassName]& operator=([ClassName]&&) noexcept = default;

  // Destructor
  ~[ClassName]();

  // Public methods
  void Process();

  // Accessors and mutators
  int value() const { return value_; }
  void set_value(int value) { value_ = value; }

 protected:
  // Protected members (only if needed for inheritance)

 private:
  // Private methods
  void InternalHelper();

  // Data members (always private for classes)
  int value_ = 0;
  std::string name_;
};

}  // namespace [namespace]

#endif  // [PROJECT]_[PATH]_[FILENAME]_H_

Include Guard Format

Convert path to uppercase with underscores:

File PathGuard
foo/bar/baz.hFOO_BAR_BAZ_H_
src/http/parser.hSRC_HTTP_PARSER_H_
my_project/utils.hMY_PROJECT_UTILS_H_

Struct Template

For passive data with public members and no invariants:

namespace [namespace] {

/// Brief description.
struct [StructName] {
  int field_one;           // No trailing underscore for structs
  std::string field_two;
  float field_three = 0.0f;  // Default values OK
};

}  // namespace [namespace]

Include Order

  1. Related header (for .cc files)
  2. Blank line
  3. C system headers (<unistd.h>)
  4. Blank line
  5. C++ standard library (<string>, <vector>)
  6. Blank line
  7. Other libraries
  8. Blank line
  9. Project headers

Each section sorted alphabetically.

Thêm skills từ clickhouse

clickhouse-best-practices
clickhouse
28 quy tắc thực hành tốt nhất cho ClickHouse được tổ chức theo thiết kế lược đồ, tối ưu hóa truy vấn và chiến lược nhập dữ liệu. Bao gồm ba lĩnh vực quan trọng: lựa chọn khóa chính và kiểu dữ liệu (các quyết định thiết kế không thể thay đổi), tối ưu hóa JOIN và truy vấn, cũng như gộp lô chèn và tránh đột biến. Bao gồm 28 quy tắc được ưu tiên theo mức độ tác động, với các quy tắc thiết kế lược đồ và tối ưu hóa truy vấn được đánh dấu QUAN TRỌNG do cơ chế lưu trữ cột và chỉ mục thưa của
clickhouse-js-node-coding
clickhouse
Tham khảo: https://clickhouse.com/docs/integrations/javascript
clickhouse-js-node-coding
clickhouse
Write idiomatic application code with the ClickHouse Node.js client (`@clickhouse/client`). Use this skill whenever a user is *building* against the Node.js…
clickhousectl-cloud-deploy
clickhouse
Sử dụng khi người dùng muốn triển khai ClickHouse lên đám mây, chuyển sang môi trường sản xuất, sử dụng ClickHouse Cloud, lưu trữ dịch vụ ClickHouse được quản lý, hoặc di chuyển từ hệ thống cục bộ…
clickstack-otel-collector
clickhouse
Sử dụng khi người dùng muốn kết nối một bộ thu thập OpenTelemetry vào dịch vụ Managed ClickStack trên ClickHouse Cloud, bằng cách triển khai một bộ thu thập cục bộ mới…
infra-clickhouse
clickhouse
Thiết lập và quản lý ClickHouse bằng CLI clickhousectl — cài đặt và chạy máy chủ ClickHouse cục bộ cho môi trường phát triển, đồng thời tạo các phiên bản ClickHouse Cloud được quản lý…
infra-postgres
clickhouse
Thiết lập và quản lý Postgres bằng CLI clickhousectl — chạy Postgres cục bộ dựa trên Docker cho mục đích phát triển, đồng thời tạo và vận hành ClickHouse được quản lý…
clickhouse-best-practices
clickhouse
PHẢI SỬ DỤNG khi xem xét lược đồ ClickHouse, truy vấn hoặc cấu hình. Chứa 31 quy tắc PHẢI được kiểm tra trước khi đưa ra khuyến nghị. Luôn đọc…