Skip to main content

cpp-coding

Write or review Timeplus/Proton C++20 code covering naming conventions, Proton fences, clang-format, IProcessor patterns, and checkpointing. Make sure to use this skill for any C++ code changes, additions, or reviews in this codebase, including small fixes, new functions, refactoring, or style questions, even if the user doesn't explicitly mention coding conventions.

ソース情報

リポジトリ
timeplus-io/proton
ソースの最終更新活動
2026年3月31日 03:19
検出された SKILL.md の言語
英語
スター
2,269
フォーク
112

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
cpp-coding
description
Write or review Timeplus/Proton C++20 code covering naming conventions, Proton fences, clang-format, IProcessor patterns, and checkpointing. Make sure to use this skill for any C++ code changes, additions, or reviews in this codebase, including small fixes, new functions, refactoring, or style questions, even if the user doesn't explicitly mention coding conventions.
# C++ Coding ## Language C++20. Prefer standard library over custom implementations when appropriate. ## Naming conventions | Element | Style | Example | |---------|-------|---------| | Functions | `lowerCamelCase` | `processStreamData()`, `handleWindowClose()` | | Variables | `lowercase_with_underscores` | `event_count`, `window_start` | | Classes | `PascalCase` | `StorageStream`, `AggregatedDataVariants` | | Constants | `PascalCase` or `UPPER_CASE` | Per existing codebase convention | | Namespaces | `PascalCase` | `DB::Streaming` | ## Proton fences ```cpp /// proton: starts if (isStreamingQuery()) { handleStreamingPath(); } /// proton: ends ``` - [ ] Use ONLY in ClickHouse-inherited code (upstream-synced files) - [ ] NEVER fence in `src/Storages/Stream/` or `namespace DB::Streaming` - [ ] NEVER nest fences ## IProcessor pattern (streaming transforms) All streaming transforms in `src/Processors/Transforms/Streaming/` follow: ```cpp class MyTransform : public IProcessor { Status prepare() override; // O(1), non-blocking, check readiness void work() override; // Do actual processing }; ``` Stateful processors MUST also implement: - [ ] `hasState()` → return true - [ ] `checkpoint(CheckpointContextPtr)` → serialize state - [ ] `recover(CheckpointContextPtr)` → restore from checkpoint ## Formatting Only formats changed code blocks (not entire files). Uses `.clang-format` config at repo root. The configured brace style is Allman-like: opening braces normally go on a new line. ```bash git clang-format # format unstaged changes in-place git clang-format --staged # format staged changes in-place git clang-format --diff # dry-run: show what would change git clang-format <commit> # format changes since <commit> ``` ## Comments Use `///`. Explain **why**, not what: ```cpp /// Use 10 seconds to allow late events watermark_delay = 10; ```
GitHubで見る