principle-type-system-discipline について
Type System Discipline は、型によって無効な状態や不整合な値を排除するための開発原則スキルです。意味の異なる基本型、外部データの解析、権威あるスキーマからの型導出を扱います。
主な機能
- 01意味の異なる基本型をブランド化
- 02システム境界で外部データを解析
- 03権威あるスキーマから型を導出
活用シーン
- 01基底型が同じIDを区別
- 02RPC、JSON、設定入力に型を付与
- 03プロトコルやデータベースのスキーマから型を生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ backnotprop/ pstack --skill principle-type-system-disciplineインストール後、Claude Code で/principle-type-system-disciplineを入力して読み込まれたか確認します。
詳細
型システムの規律
コンパイラーに、あり得ない状態、プリミティブ型の不一致、未処理のバリアントを拒否させます。ハンドラーを増やすより、エラーや特殊ケースそのものをなくすことを優先します。TypeScript の構文については、typescript-best-practices スキルを参照してください。
- 意味を持つプリミティブ型にブランドを付けます。
UserIdとOrderIdは内部的にはどちらも文字列ですが、相互に置き換えられるべきではありません。それぞれに、TypeScript のブランド付き交差型や、ほかの言語のニュータイプなど、独自の型を定義します。作成時に一度だけ検証し、それ以降は型を信頼します。プリミティブ型が同じでも意味が異なる引数には、ブランドを付けます。 - 外部データは解析されるまで型付けされていません。 RPC ペイロード、JSON、IPC メッセージ、CLI 引数、設定ファイル、環境変数、データベースの行が該当します。境界ごとに解析関数を設け、構造化されていない入力を型付きモデルに変換します。boundary-discipline 原則スキルでは、検証をどこに配置すべきかを説明しています。
- 信頼できるスキーマから型を導出します。 Protocol Buffers、OpenAPI 仕様、GraphQL スキーマ、データベースのマイグレーション、デザイントークンファイルなど、形状を定義するファイルがある場合は、別の型を手作業で作るのではなく、そのファイルから型を導出します。encode-lessons-in-structure 原則スキルを参照してください。
コメント
Markdown 対応