skill-policy-routerlisted
Install: claude install-skill s977043/PlanGate
# Skill Policy Router
> 正本: `.claude/skills/skill-policy-router/SKILL.md`(`plugin/plangate/skills/` はミラー・export 用)。
Intent と Mode を入力として受け取り、必要な Skill とゲート要件(GatePolicy)を structured JSON で返す。
## Iron Law
`GATE POLICY IS DETERMINED BY MODE, NOT BY INTENT`
GatePolicy の必須 / 任意判定は Mode によって決まる。
Intent はスキルの優先度や追加推奨にのみ影響する。
> **Mode の定義・判定基準(変更ファイル数・リスク・`lite_eligible`)は [`mode-classification.md`](../../rules/mode-classification.md) が単一正本**。本スキルは確定済み Mode を入力として受け取り GatePolicy へ写像するのみで、**Mode 自体は判定しない**。下の「Mode 別ポリシー表」は Mode→GatePolicy の*写像*であり Mode の定義ではない(重複定義ではない)。
## Common Rationalizations
| こう思ったら | 現実 |
|---|---|
| 「小さな feature だから approval 不要」 | Mode が high-risk ならば Intent に関わらず approval は必須 |
| 「docs なら worktree は不要では?」 | Mode が high-risk なら docs でも worktree が必要 |
| 「ultra-light なら全部スキップでいい」 | verify は ultra-light でも必須 |
## GatePolicy 型定義
```json
{
"requiredSkills": ["<skill-name>", "..."],
"optionalSkills": ["<skill-name>", "..."],
"requiresUserApproval": "<boolean>",
"requiresEvidence": "<boolean>",
"requiresFailingTestFirst": "<boolean>",
"requiresWorktree": "<boolean>"
}
```
**Skill 識別子**:
| 識別子 | 対応 Skill / 行動 |
|--------|----------------|
| `think` | 設計・計画の立案(plan.md 生成) |
| `hunt` | コードベース調査(Grep / Glob 探索) |
| `check` | セルフレビュー(diff-audit Skill、旧 self-review) |
| `tdd` | テスト駆動開発(failing test first) |
| `verify` | 受け入れ検査(test-cases.md 突合) |
| `worktree` | 独立ブランチでの作業(worktree 分離) |
| `review` | 外部レビュー(human / external AI) |
| `approval` | 人間の