cpp-header-template

Generate C++ header files following Google Style Guide. Use when creating new header files or asking for a header template.

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.

Mais skills de clickhouse

clickhouse-best-practices
clickhouse
28 regras de melhores práticas do ClickHouse organizadas por design de esquema, otimização de consultas e estratégia de ingestão de dados. Abrange três áreas críticas: seleção de chave primária e tipo de dados (decisões de design imutáveis), otimização de JOIN e consultas, e agrupamento de inserções com prevenção de mutações. Inclui 28 regras priorizadas por impacto, com regras de design de esquema e otimização de consultas marcadas como CRÍTICAS devido ao armazenamento colunar e mecanismos de índice esparso do ClickHouse. Fornece procedimentos de revisão estruturados para...
official
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…
official
clickhousectl-cloud-deploy
clickhouse
Use quando um usuário deseja implantar o ClickHouse na nuvem, ir para produção, usar o ClickHouse Cloud, hospedar um serviço gerenciado do ClickHouse ou migrar de um ambiente local…
official
clickstack-otel-collector
clickhouse
Use when a user wants to wire an OpenTelemetry collector into a Managed ClickStack service on ClickHouse Cloud, either by deploying a new local collector…
official
infra-clickhouse
clickhouse
Sets up and manages ClickHouse using the clickhousectl CLI — installs and runs a local ClickHouse server for development, and creates managed ClickHouse Cloud…
official
infra-postgres
clickhouse
Configura e gerencia o Postgres usando a CLI do clickhousectl — executa um Postgres local com suporte a Docker para desenvolvimento, e cria e opera o ClickHouse gerenciado…
official
clickhouse-best-practices
clickhouse
DEVE SER USADO ao revisar esquemas, consultas ou configurações do ClickHouse. Contém 31 regras que DEVEM ser verificadas antes de fornecer recomendações. Sempre leia…
official
setup
clickhouse
Orienta os usuários na configuração da conexão do servidor ClickHouse MCP incluído neste plugin. Use quando o usuário instalar o plugin pela primeira vez ou tiver problemas…
official