Skip to content

Skill descriptions describe internal moments the matcher cannot see: trigger-shape survey of all 44 #1663

Description

@liplus-lin-lay

調査のみ。実装 PR は含まない(brake 1 のコストを別セッションに送るため / Master 判断 2026-08-04)。

訂正(2026-08-04、Master 指摘): 初版は下表の「該当率」を根拠に「全 44 本の見直しは目標として正しくない / 低該当率群は現状が正解」と結論していた。該当率は測定値ではなく AI の推定であり、その上に除外判断を載せたのは誤り。 当該結論は撤回する。詳細は「該当率の検証状態」節。

前提(公式仕様、実測)

Agent Skills 公式ドキュメント:

The description is what Claude matches your request against when determining whether to trigger the Skill

照合面はユーザーのリクエスト。ターン途中での再照合に関する記述はない。skill は一度読み込むと当該セッションの context に残る(= 発火は「判断のたび」ではなく「セッションに一度、早期に」で足りる)。

本セッション(2026-08-04)の実測: description 一致で起動した Li+ skill はゼロ。唯一起動した evolution-decision-structure-write は AI が明示的に呼んだもの。非発火のまま手動代替した事象は issue 作成 3 回(operations-on-issue-format)、webhook 処理 6 回(operations-foreground-webhook-intake)、事実断定の誤り 1 件(model-source-check)。

該当率の検証状態(初版の誤りと部分測定)

下表の 3 列のうち、測定値は desc 文字数と body バイトのみ。「形状」は description 文面からの分類(literal 由来だが分類自体は判断)、「該当率」は未検証の推定

初版はこの推定列を根拠に 38 本を除外したが、部分測定により推定の誤りが実際に検出された:

指標(2026-05-04〜2026-08-04、3 か月) 実測
issue 作成 261 件
PR 作成 193 件
release 37 件

release は約 2.4 日に 1 回。wiki sync は release 後に必須(skills/operations-on-wiki-sync/SKILL.md)なので同頻度で発生する。

初版は operations-on-release を「低中」、operations-on-wiki-sync を「低」と推定していた。この 2 本の除外は根拠を欠く。 operations-on-wiki-sync は body 11,917 B(全 44 本中 3 位)を持ち、頻出操作の必須経路上にある。

残る未測

  • 上表はカレンダー頻度であり、セッション単位の該当率ではない(セッション総数の分母が無い)
  • 内面モーメント型(source-check 等)の該当率は「ほぼ毎セッション」と推定しているが、これも未測
  • 過去セッションでの skill 発火履歴は残っていない(セッション履歴は運用上逐次削除される)

帰結

  • 除外判断は行わない。 据え置く skill は「現状が正しいから」ではなく「まだ分からないから、対照群として保持する」。
  • 優先順 6 本の根拠から該当率を外し、測定値のみ(desc 長 / body サイズ / 本セッションの非発火実績)に立て直す。

主要所見

所見1: 文字数は「照合面に映らない条件」に集中している

description 上位 6 本の合計 5,362 文字 = 全 18,984 文字の 28.2%。この 6 本はいずれも内面モーメント型で、リクエスト面に現れない。最も長い記述が、最も発火しない種類に付いている。

所見2: トリガ形状と記述長には相関がある

リクエスト形(外部に名前がある事象)は短く書ける。内面モーメント形は外部の呼び名が無いためインスタンスを列挙するしかなく、それが長さを生む。

  • リクエスト形: evolution-full-run 491 / operations-on-branch 304 / model-accepted-tradeoff 290
  • 内面モーメント形: model-source-check 1,019(7 モーメント列挙)/ model-trigger-check-gate-actions 790

3 か月で description 平均が 145 → 445 文字に伸びた(#1661)のは内面モーメントの精度を上げる作業であり、照合されない軸を磨いていたことになる。

所見3(重要な反証): 「広さ」だけでは発火しない

operations-foreground-webhook-intake は description 146 文字、トリガは「when a user turn starts」= 最大限に広い。それでも本セッションで 6 回とも不発火。

必要なのは広さではなくリクエストの内容に対応する形。「ターンが始まったら」は message の中身を指していないため照合対象が無い。是正方針は「抽象化して広くする」ではなく「リクエスト内容の形に書き換える」。

所見4: body サイズが早期ロードの可否を決める

早期ロード方針ではコストが description 常駐から body ロードへ移る。body は skill ごとに 2 桁違う。

  • model-source-check 6,364 B(約 1,600 tok)→ 早期ロード可
  • model-agentic-search 22,754 B(約 5,700 tok)→ 高い
  • evolution-parallel-agent-eval 22,174 B → 同上

全 44 本の一覧

desc 文字数 / body バイト = 測定値。形状 = 文面からの分類。該当率 = 未検証の推定(上記「検証状態」参照、除外根拠に使用しない)。

形状: R = リクエスト内容に現れる / T = タスク種別として turn 冒頭で判別可能 / I = 内面モーメントのみ

desc body skill 形状 該当率(推定)
1025 22174 evolution-parallel-agent-eval T/I
1019 22754 model-agentic-search R/I
1019 6364 model-source-check I 最高
790 4739 model-trigger-check-gate-actions I 最高
760 3764 model-ambiguity-handling I
749 3260 model-frame-check R/I 中高
693 5423 model-human-interaction R
691 4971 task-subagent-delegation T
686 4599 evolution-impression-literal-detection I
684 9280 task-subagent-prompt I
621 4955 operations-on-release T 要再評価(release 37件/3か月)
600 4102 task-subagent-spawn I
582 2123 task-subagent-state-labels T/I
561 11917 operations-on-wiki-sync T 要再評価(release 必須経路)
527 2542 model-projection-discipline I 低中
500 3736 operations-on-release-state T/R 要再評価
491 3651 evolution-full-run R
468 5944 operations-on-pr-review T
457 1778 task-pr-review-judgment T
430 5033 operations-on-sub-issue T
428 9152 evolution-self-eval I
352 2626 operations-on-issue-format T 高(issue 261件/3か月)
332 3414 model-loop-safety I
326 2688 operations-on-docs-ownership T
304 3115 operations-on-branch R
298 700 operations-handoff-continuity I
290 2554 model-accepted-tradeoff R
290 2063 operations-on-merge T 中(PR 193件/3か月)
272 8616 evolution-decision-structure-write R/I
271 677 operations-discussions T
267 3088 evolution-persistence-tiering I
261 1517 evolution-loop T
248 472 operations-chat-output-limit I
201 633 operations-notifications-api T
174 894 evolution-judgment-learning I
172 2945 operations-on-pr-creation T 中(PR 193件/3か月)
170 1163 model-requirement-deepening I
159 3786 evolution-l1-update-gating T
151 1358 operations-on-ci T
146 855 model-pair-review T
146 3756 operations-foreground-webhook-intake I 最高
134 1561 operations-on-issue-maturity T
133 571 model-review-output-partition I
106 659 operations-on-commit T

合計: desc 18,984 B / body 191,972 B / 44 本

第一バッチ候補(測定値のみを根拠に再構成)

該当率の推定を根拠から外し、本セッションで実際に非発火が観測された skill測定済みの desc 長 / body サイズのみで選ぶ。

skill 非発火の実測 desc body
model-source-check あり(誤断定 1 件) 1,019 6,364
operations-foreground-webhook-intake あり(6 回) 146 3,756
operations-on-issue-format あり(3 回) 352 2,626
evolution-judgment-learning なし(Master 提案の実例) 174 894
model-trigger-check-gate-actions なし(source-check と同型) 790 4,739

model-source-check#1662(上限 1,024 まで残り 5 文字)も同時に解消する。

検証設計(段階実施の理由)

eval harness は無い。全 44 本を一度に書き換えると、発火率が変わっても原因を帰属できない。手を入れない skill が対照群になる。

  • 据え置きは意図的に維持する(「時間ができたら残りも」と扱うと対照群が消える)
  • 観測は複数セッション必要。1 セッションでは話題の偏りと区別できない
  • 観測結果は memory/self-evaluation_log.mdmemory/self-evolution-observation.md(post-merge 2 週間サイクル)に落とす

未決

  • セッション単位の該当率の測定手段(分母となるセッション数が取得できない)
  • body 早期ロード総量の上限方針
  • 内面モーメント記述を削った場合の recall 損失。本調査の観測は N=1 セッション
  • 「見直し不要な skill が存在するか」自体が未検証。存在するとしても、その判定には該当率の測定が要る

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    forming本文を再構築しながら要求を整えている状態specLi+の挙動に影響する仕様・ポリシー・定義

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions