code-quality
tursodatabase/turso
一般的な正しさのルール、Rustのパターン、コメントの書き方、過度な設計を避けること。コードを書く際は常にこれらの点を考慮するようにしましょう。
...すべて拡張しますコード品質について
code-qualityは、Turso(Limbo)データベースプロジェクト向けの簡潔なコーディング規約リファレンスであり、コードを記述する際に貢献者が守るべき正しさのルールやRust特有の慣習、コメントの書き方、過度な設計を避けるためのガイダンスがまとめられている。この文書の基本理念は、ここが本番環境で使用されるデータベースであり正確性が最優先事項であり、データ破損よりもクラッシュの方がまだマシであるという点にある。そのため、コードベースを安全に保つための習慣が明文化されている。
このガイドでは、正しさのルール(ワークアラウンドや即席の対処法は禁止、頻繁にassertを使用し、データ整合性を損なう可能性のある不正な状態ではクラッシュさせる、エッジケースも考慮する)やRust特有のパターン(不正な状態を表現不可能にする、網羅的なパターンマッチングを行う、文字列やセンティネルよりもenumを優先する、ヒープ割り当てを最小限に抑える、CPUに優しいコードを書く)が示されている。また、実際のif文の使い方として、決して実行されるはずのない分岐に対してはassert!、エラーの返却、unreachable!を使用し、無視するのではなく明確に処理するよう指導している。コメントのルールでは、何を記述するかよりもなぜそうするのかを記録することを推奨し、AIとの対話の記録や「追加された」や「第1フェーズ」といった時間的なマーカーの使用は禁止している。さらに、一貫性を欠くことがないようにSQLiteとのインデックス変更の順序を再確認するよう注意喚起し、関連する非同期I/Oモデルのスキルや、不要なコードや後方互換性のための対処法を残さないためのクリーンアップルールも記載されている。
この文書は、Turso/LimboのRustコードベースに貢献する人々を主な対象としているが、より広く、システムレベルでRustを利用し、簡潔な正しさチェックリストを求めるすべての人にも役立つ。完全に助言的なドキュメントであり、スクリプトやコマンド、認証情報、副作用は含まれていないため、全く害のないものとなっている。
よくある質問
核心理念とは何ですか?
ここは本番環境で使用されるデータベースであり正確性が最優先事項であるため、データ破損よりもクラッシュの方がまだマシなのだ。そのため、定義されていない状態で動作を続けるよりも、明確にエラーを発生させるようルールが設定されている。
決して発生すべきでない分岐はどのように処理すればよいですか?
無視するのではなく、不変条件を示すメッセージ付きのassert!を使用したり、エラーを返したり、unreachable!を使用したりする。両方の分岐が想定されるパスである場合にのみ、通常のif/else文を利用する。
コメントのルールは何ですか?
何を記述するかよりもなぜそうするのかを記録し、関数や構造体、enum、variantについて説明する。また、コードの繰り返しやAIとの対話の参照、『追加された』や『第1フェーズ』といった時間的なマーカーを含むコメントは避ける。
Turso以外でも適用されますか?
この文書はTurso/LimboのRustコードベース向けに作成されているが、その正しさやRust特有の慣習に関するガイダンスは、システムレベルでのRust開発全般に広く役立つ。
なぜインデックス変更に言及しているのですか?
insert、delete、競合解決の順序はSQLiteと一致させなければならないからだ。順序が間違っていると見過ごしやすいインデックスの一貫性の問題が発生する。
Core Principle
Production database. Correctness paramount. Crash > corrupt.
Correctness Rules
- No workarounds or quick hacks. Handle all errors, check invariants
- Assert often. Never silently fail or swallow edge cases
- Crash on invalid state if it risks data integrity. Don't continue in undefined state
- Consider edge cases. On long enough timeline, all possible bugs will happen
Rust Patterns
- Make illegal states unrepresentable
- Exhaustive pattern matching
- Prefer enums over strings/sentinels
- Minimize heap allocations
- Write CPU-friendly code (microsecond = long time)
If-Statements
Wrong:
if condition { // happy path} else { // "shouldn't happen" - silently ignored}
Right:
// If only one branch should ever be hit:assert!(condition, "invariant violated: ...");// ORreturn Err(LimboError::InternalError("unexpected state".into()));// ORunreachable!("impossible state: ...");
Use if-statements only when both branches are expected paths.
Comments
Do:
- Document WHY, not what
- Document functions, structs, enums, variants
- Focus on why something is necessary
Don't:
- Comments that repeat code
- References to AI conversations ("This test should trigger the bug")
- Temporal markers ("added", "existing code", "Phase 1")
Avoid Over-Engineering
- Only changes directly requested or clearly necessary
- Don't add features beyond what's asked
- Don't add docstrings/comments to unchanged code
- Don't add error handling for impossible scenarios
- Don't create abstractions for one-time operations
- Three similar lines > premature abstraction
Index Mutations
When code involves index inserts, deletes, or conflict resolution, double-check the ordering against SQLite. Wrong ordering causes index inconsistencies. and easy to miss.
Ensure understanding of IO model
- Async IO model
Cleanup
- Delete unused code completely
- No backwards-compat hacks (renamed
_vars, re-exports,// removedcomments)
すべてのファイル
0件のファイルcode-qualityをインストール
skillファイルをダウンロードし、.claude/skills/ディレクトリに展開してください。
ZIPをダウンロードリポジトリをクローンし、スキルファイルをプロジェクトにコピーしてください。
git clone https://github.com/tursodatabase/turso/blob/main/.claude/skills/code-quality/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
コピー





家
