code-quality について
本番データベースの Rust 開発向けコード品質スキルです。正確性、明示的なエラー処理、不要な複雑さの回避を重視し、プロジェクトのコントリビューターを対象としています。
主な機能
- 01不変条件のアサートとエラー処理
- 02型による不正状態の表現
- 03網羅的なパターンマッチ
- 04不要な抽象化やコメントの回避
- 05インデックス変更順序の確認
活用シーン
- 01Rust の変更における暗黙の失敗経路の確認
- 02インデックス更新時のデータベース整合性維持
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tursodatabase/ turso --skill code-qualityインストール後、Claude Code で/code-qualityを入力して読み込まれたか確認します。
詳細
コード品質ガイド
中核となる原則
本番データベースです。正しさが最優先です。クラッシュするほうが、データを破損させるよりもましです。
正しさに関するルール
- 回避策やその場しのぎのハックは使わないでください。 すべてのエラーに対処し、不変条件を確認してください
- 頻繁にアサートしてください。 失敗を黙って無視したり、エッジケースを握りつぶしたりしないでください
- データの整合性が損なわれるおそれがある場合は、無効な状態でクラッシュさせてください。未定義の状態で処理を続けないでください
- エッジケースを考慮してください。 十分に長い時間が経てば、あらゆるバグが起こり得ます
Rust のパターン
- 不正な状態を表現できないようにする
- 網羅的なパターンマッチングを使う
- 文字列やセンチネル値よりも enum を優先する
- ヒープ割り当てを最小限にする
- CPU に優しいコードを書く(マイクロ秒でも長い時間です)
if 文
誤り:
if condition {
// happy path
} else {
// "shouldn't happen" - silently ignored
}
正しい例:
// If only one branch should ever be hit:
assert!(condition, "invariant violated: ...");
// OR
return Err(LimboError::InternalError("unexpected state".into()));
// OR
unreachable!("impossible state: ...");
if 文は、両方の分岐が想定される場合にのみ使用してください。
コメント
- Rust の
SAFETYコメントを除き、コードコメントを追加しないでください。
過剰な設計を避ける
- 直接依頼された変更、または明らかに必要な変更だけを行う
- 依頼された範囲を超える機能を追加しない
- 変更していないコードに docstring やコメントを追加しない
- 起こり得ない状況に対するエラー処理を追加しない
- 一度しか使わない処理のために抽象化を作らない
- 早まった抽象化をするより、似た行を3行書くほうがよい
インデックスの変更
コードでインデックスの挿入、削除、競合解決を行う場合は、SQLite に対する順序を再確認してください。順序を誤るとインデックスの不整合が発生し、見落としやすいためです。
IO モデルを理解する
クリーンアップ
- 使われていないコードは完全に削除する
- 後方互換性のためのハック(名前を変更した
_vars、再エクスポート、// removedコメント)を行わない
1回のみ使用するヘルパー
ヘルパー関数が単一のユースケース以外では意味を持たない場合は、その関数を使用する関数の中に移動してください:
fn do_something() {
something_specific();
fn something_specific() {
}
}
コメント
Markdown 対応