skill-policy-router

star 2

Intent と Mode を受け取り、必要な Skill・ゲート要件(GatePolicy)を返す。Use when: 依頼の Intent と Mode が確定した後、どの Skill とゲートが必要かを決定したい時。「どのスキルが必要か教えて」「ゲートポリシーを決めて」「Mode に応じた手順を教えて」。

s977043 By s977043 schedule Updated 6/3/2026

name: skill-policy-router description: "Intent と Mode を受け取り、必要な Skill・ゲート要件(GatePolicy)を返す。Use when: 依頼の Intent と Mode が確定した後、どの Skill とゲートが必要かを決定したい時。「どのスキルが必要か教えて」「ゲートポリシーを決めて」「Mode に応じた手順を教えて」。"

Skill Policy Router

正本: .claude/skills/skill-policy-router/SKILL.mdplugin/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 が単一正本。本スキルは確定済み 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 型定義

{
  "requiredSkills": ["<skill-name>", "..."],
  "optionalSkills": ["<skill-name>", "..."],
  "requiresUserApproval": "<boolean>",
  "requiresEvidence": "<boolean>",
  "requiresFailingTestFirst": "<boolean>",
  "requiresWorktree": "<boolean>"
}

Skill 識別子:

識別子 対応 Skill / 行動
think 設計・計画の立案(plan.md 生成)
hunt コードベース調査(Grep / Glob 探索)
check セルフレビュー(self-review Skill)
tdd テスト駆動開発(failing test first)
verify 受け入れ検査(test-cases.md 突合)
worktree 独立ブランチでの作業(worktree 分離)
review 外部レビュー(human / external AI)
approval 人間の明示的承認取得

Mode 別ポリシー表

フィールド ultra-light light standard high-risk critical
requiredSkills verify check, verify think, check, verify think, approval, worktree, tdd, check, review, verify think, approval, worktree, tdd, check, review, verify
optionalSkills check think, hunt hunt, tdd
requiresUserApproval false false recommended true true
requiresEvidence false false true true true
requiresFailingTestFirst false false conditional true true
requiresWorktree false false false true true

standard の補足:

  • requiresUserApproval=recommended: 人間確認を強く推奨するが必須ではない
  • requiresFailingTestFirst=conditional: TDD が optional として推奨される

critical の追加要件:

  • ロールバック計画の策定が必要
  • セキュリティレビューを含む多角的レビューを推奨
  • 段階的デプロイ計画の策定を推奨

手順

Step 1: 入力検証

以下のフォーマットで入力を受け取る:

{
  "intent": "<feature|bug|refactor|research|review|docs|ops>",
  "mode": "<ultra-light|light|standard|high-risk|critical>"
}

mode が不明な場合は standard をデフォルトとして使用する。 intent が不明な場合は feature をデフォルトとして使用する(Intent は GatePolicy に影響しない)。

Step 2: Mode によるベースポリシー決定

「Mode 別ポリシー表」から対応する行を読み取り、ベース GatePolicy を構築する。

Step 3: Intent による調整(任意)

Intent に応じて optionalSkills を追加・調整する:

Intent 推奨 optionalSkills 追加
feature think(未追加の場合)
bug hunt(原因調査のため)
refactor check(品質確認のため)
research
review check
docs
ops verify(デプロイ検証のため、未追加の場合)。PlanGate CLI 操作(render/approve/doctor/exec)は skill でなく直接 bin/plangate <cmd> を実行する

ただし、requiredSkills に既に含まれている Skill は optionalSkills に重複追加しない。

Step 4: GatePolicy 出力

構築した GatePolicy を structured JSON で出力する。

出力フォーマット

{
  "input": {
    "intent": "<intent>",
    "mode": "<mode>"
  },
  "policy": {
    "requiredSkills": ["<skill-name>"],
    "optionalSkills": ["<skill-name>"],
    "requiresUserApproval": true,
    "requiresEvidence": true,
    "requiresFailingTestFirst": true,
    "requiresWorktree": true
  },
  "notes": "<特記事項(critical の追加要件等)>"
}

使用例

入力: { "intent": "docs", "mode": "ultra-light" }

出力:

{
  "input": {
    "intent": "docs",
    "mode": "ultra-light"
  },
  "policy": {
    "requiredSkills": ["verify"],
    "optionalSkills": ["check"],
    "requiresUserApproval": false,
    "requiresEvidence": false,
    "requiresFailingTestFirst": false,
    "requiresWorktree": false
  },
  "notes": ""
}

入力: { "intent": "feature", "mode": "high-risk" }

出力:

{
  "input": {
    "intent": "feature",
    "mode": "high-risk"
  },
  "policy": {
    "requiredSkills": ["think", "approval", "worktree", "tdd", "check", "review", "verify"],
    "optionalSkills": [],
    "requiresUserApproval": true,
    "requiresEvidence": true,
    "requiresFailingTestFirst": true,
    "requiresWorktree": true
  },
  "notes": ""
}

lite_eligible の扱い(責務分界)

lite_eligible(Lite ゲート可否)は mode-classification.md の派生属性で、判定は mode-classification 正本が担う。本スキルは確定した lite_eligible を入力として受け取り、true のとき Lite ゲート構成(例: C-2 外部レビューを 1 本に絞る・観点固定)を GatePolicy に反映する。router は lite_eligible判定せず使用するのみ。判定不能時は安全側(lite_eligible=false 相当の full ゲート)。

関連 Skill

  • intent-classifier: ユーザー依頼文から Intent を判定する。このスキルの前段として使用
Install via CLI
npx skills add https://github.com/s977043/PlanGate --skill skill-policy-router
Repository Details
star Stars 2
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator