# Type Design Analysis

> 型設計の品質と不変性を4軸スコアで分析する。interface, type, class の追加・変更時に使用。 Use when this capability is needed.

- Skill: `tomevault-io/type-design-analysis` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/type-design-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/type-design-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/type-design-analysis

---


# Type Design Analysis スキル

## 目的

型設計の品質と不変性を分析し、堅牢な型システムの構築を支援する。

## 評価軸（各1-10スコア）

### 1. Encapsulation（カプセル化）

- 10: 完全なカプセル化、内部状態へのアクセス不可
- 7-9: ほぼ完全、一部のgetter/setterあり
- 4-6: 部分的、一部の内部が露出
- 1-3: 不十分、内部が広く公開

**チェックポイント:** privateフィールド、readonly修飾子、getter/setter

### 2. Invariant Expression（不変性表現）

- 10: すべての不変性が型で表現
- 7-9: 主要な不変性が型で表現
- 4-6: 一部の不変性のみ
- 1-3: ドキュメントのみに依存

**チェックポイント:** Union型、Branded型、型ガード

### 3. Invariant Usefulness（不変性の有用性）

- 10: クリティカルなビジネスルールを保護
- 7-9: 重要なエラーを防止
- 4-6: 一般的なミスを防止
- 1-3: 限定的な保護

### 4. Invariant Enforcement（不変性の強制）

- 10: 構築時と全変異点で検証
- 7-9: 構築時に検証、変異は制限
- 4-6: 部分的な検証
- 1-3: 検証なし、信頼ベース

## アンチパターン（検出して報告）

1. **貧血ドメインモデル** - データのみで振る舞いがない型
2. **変更可能な内部の公開** - 配列やオブジェクトを直接公開
3. **ドキュメント依存の不変性** - 型ではなくコメントで制約を表現
4. **過度に広い責任** - 1つの型に多すぎる責任
5. **構築境界での検証不足** - 無効な状態で構築可能

## 出力形式

```markdown
# Type Design Analysis Results

## [型名]

- ファイル: path/to/file.ts

| 軸 | スコア | 理由 |
|----|--------|------|
| Encapsulation | X/10 | ... |
| Invariant Expression | X/10 | ... |
| Invariant Usefulness | X/10 | ... |
| Invariant Enforcement | X/10 | ... |

- 総合スコア: X/10
- 検出されたアンチパターン: ...
- 改善提案: ...

## Summary

- 分析した型の数: X
- 平均スコア: X/10
- 検出されたアンチパターン: X
```

## 注意事項

- 新規追加または変更された型のみを分析
- 4つの軸すべてでスコアを付与
- 具体的な改善提案を含める

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/feel-flow) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-13 -->

