skill trigger declaration in description - Liplus-Project/liplus-language GitHub Wiki
skill の発火条件は description 内に置く — when_to_use は移植性で却下
Question
skill の発火条件(いつ invoke されるべきか)の記述形式を統一するとき、Claude Code 独自フィールド when_to_use に分離すべきか、description 内に留めるべきか。
Current resolution
description 内に留める。書き出しを固定形に揃えることで統一する(案 A)。
理由は三つ、いずれも Agent Skills オープン標準(agentskills.io/specification、2026-07-28 一次ソース確認)に基づく。
when_to_useは標準に存在しない。 Claude Code 独自拡張。Li+ は Claude / Codex 両アダプタを持つため、片側でしか効かない形式は「統一」にならない。- 標準の作法は「
descriptionに what と when を両方書く」。 標準のdescription定義は "Should describe both what the skill does and when to use it" であり、Li+ の現状はすでに標準どおり。分離するほうが標準から離れる。 - 字数は減らない。 Claude Code の listing 切り詰めは
description+when_to_useの合算 1,536 字に対して働くため、フィールドを分けても listing 圧は変わらない。
段階的な逃げ道(現時点では未着手):
- 固定形の正規表現照合で発火数の機械カウントが不足する場合 → 標準が「クライアント独自プロパティの置き場」と明記する
metadata:に構造化して置く(案 B)。descriptionとの二重管理になるため CI 整合チェックとセット。 when_to_useの採用(案 C)は、Codex 側が当該フィールドをどう扱うかの実機確認が取れた後でのみ再評価する。
Edges
- supersede / conflict edge なし。
- 隣接:
li-plus-always-on-footprint-load-bearing— always-on footprint を rules + adapterCLAUDE.md+ output-style(実測 ~21,500 tok)で測り「安全な圧縮余地は枯渇」と結論している。本 entry は同 entry が測っていない第4の always-on 面を追加する: skill listing(description合計 10,224 字 / 38本)。listing 予算はコンテキスト窓の 1% で、溢れると呼び出し頻度の低い skill の description から黙って落とされる(Claude Code 仕様)。圧縮判断そのものは同 entry の結論を変えない(本 entry は形式の話であり削減の話ではない)が、skill 本数が増える変更は listing 圧を上げるという副作用軸を新設する。 - depends on(外部前提): Agent Skills オープン標準が
when_to_useを採用しないこと。標準側が将来これを取り込めば案 C は再評価対象。
Background
Master「スキルの条件式は公式に合わせて統一化したい」。Li+ の skill description は発火条件を Invoke when X / Invoke for A / B / C / Invoke immediately after X と各ファイルが別々の文法で書いており、発火数の機械的カウントも skill 間の発火重複検出もできない状態だった。
この形式非固定は実害を出している: 同日の対話で親 AI が when|whenever|before|after のみを拾う正規表現で発火数を計測し、Invoke for A / B / C 形と「1個の when が3項目を束ねる」形を取りこぼして、存在しない分類(単発火・長手続き型)を立てて Master に報告した。Master の指摘で発覚。
Constraints
Agent Skills オープン標準(一次ソース確認済、2026-07-28):
| field | 要否 | 制約 |
|---|---|---|
name |
必須 | 64字以内、小文字英数とハイフン、親ディレクトリ名と一致 |
description |
必須 | 最大 1024 字。what と when の両方。照合キーワードを含める |
license / compatibility / metadata / allowed-tools |
任意 | compatibility は 500 字以内。metadata は標準外プロパティの公式な置き場 |
本文の推奨 = 5,000 トークン未満 / 500 行以内。
Li+ 側の実測(2026-07-28、全38本):
description> 1024 字 = 0本(最長 860)- 500 行超 = 0本
- 本体 > 5,000 tok = 3本(
evolution-parallel-agent-eval6,172 /model-agentic-search5,659 /operations-on-release5,329)
Claude Code 拡張(標準外): when_to_use フィールド、description + when_to_use 合算 1,536 字で listing 切り詰め、listing 予算 = 窓の 1%(skillListingBudgetFraction / SLASH_COMMAND_TOOL_CHAR_BUDGET / skillListingMaxDescChars で調整可)。
Conclusion
- 採用: 案 A —
description内の発火条件記述を固定形に揃える。追加機構ゼロ、標準準拠、両アダプタで等価に効く。 - 却下(保留): 案 B(
metadata:構造化)— 標準準拠だがdescriptionとの二重管理と CI 整合チェックを要する。案 A で機械カウントが不足した場合の次手。 - 却下(条件付き保留): 案 C(
when_to_use)— 標準外につき Codex 側の挙動が未確認。確認が取れるまで採用しない。
Related
- #1598 — skill を機能ではなく発火条件で分割する(本 entry の形式決定は同 issue の未決項目1に対応)
li-plus-always-on-footprint-load-bearingagentic-search-five-phase-refactor- 一次ソース: https://agentskills.io/specification / https://code.claude.com/docs/en/skills