# 核心原則

## 目次

- 洗練 (Refine)
- 簡潔性 (Concise)
- SSoT 厳守
- 段階的開示・自由度
- スキルの種類
- 構造とフロントマター
- コード vs プロンプトの判断
- コンテンツガイドライン

---

## 洗練 (Refine)

スキルは**公式ドキュメントや安定した仕様**に基づいて書く。

| 良い | 避ける |
|------|--------|
| 公式APIスキーマ | 現在の実装コード |
| 安定した仕様 | 変更されうるパターン |
| 普遍的な原則 | プロジェクト固有のワークフロー |

**例外**: プロジェクト固有スキルは意図的に依存してよい（→ スキルの種類）

---

## 簡潔性 (Concise)

コンテキストウィンドウは共有資源。**本当に必要な情報だけ**を含める。

- 冗長な説明より簡潔な例
- 「このトークンコストに見合う価値があるか？」「Claudeが既に知っていないか？」を問う

---

## SSoT 厳守

**参照先の情報をスキル内に書かない。** 情報は必ず1箇所だけに存在させ、他の箇所からは参照する。スキーマが変更された時、スキル内のコピーは古くなり、矛盾が生じる。

違反パターンの具体例・監査手順 → [ssot-audit.md](ssot-audit.md)

---

## 段階的開示・自由度

詳細 → [patterns.md](patterns.md)（3段階ローディング、自由度パターン）

---

## スキルの種類

### 汎用スキル

どのプロジェクトでも使える。公式ドキュメント・仕様に基づく。

**原則**: プロジェクト固有の実装パターンに依存しない

### プロジェクト固有スキル

特定プロジェクトのワークフロー・データ構造に依存。

**原則**: 依存先を「依存」セクションで明示し、変更時の影響範囲を把握できるようにする

---

## 構造とフロントマター

### ディレクトリ構造

```
skill-name/
├── SKILL.md (必須)
├── scripts/ (任意)
│   └── *.ts / *.sh
└── references/ (任意)
    └── *.md
```

### フロントマター

```yaml
---
name: kebab-case（64文字以内、小文字・数字・ハイフンのみ）
description: 三人称で記述。何をするか＋トリガーフレーズ3つ以上（1024文字以内）
---
```

descriptionの書き方・良い例・悪い例 → [exemplar.md](exemplar.md)（descriptionの書き方）

---

## コード vs プロンプトの判断

スキルの処理を **scripts/ のコード** で実装するか、**SKILL.md のプロンプト指示** に任せるか。

| コードを書く（scripts/） | プロンプトで指示する（SKILL.md） |
|--------------------------|--------------------------------|
| 決定的（毎回同じ結果が必要） | 創造的・文脈依存 |
| ファイルシステム操作（再帰削除、ツリー構築） | コンテンツ生成・判断 |
| 外部ツール連携（git, gh, surge） | コードレビュー・分析 |
| 状態管理（フラグファイル、タイムスタンプ） | 対話的ワークフロー |
| スキーマに基づくファイル生成 | 自然言語の出力 |

### コード作成時の規約

- **TypeScript**: Bun で実行。`pnpm` スクリプト経由で呼び出す（直接実行禁止）
- **Bash**: 標準Unixツールのみ。`bash path/to/script.sh` で実行
- SKILL.md にはスクリプトの**目的・実行方法・出力**を記載（実装詳細は書かない）

スクリプト品質の原則と具体例 → [exemplar.md](exemplar.md)（スクリプトの品質）

---

## コンテンツガイドライン

禁止事項・サイズ目安 → [patterns.md](patterns.md)（アンチパターン、サイズ目安）
