Skip to content

Align skill descriptions with the firing moments their bodies declare - #1643

Merged
liplus-lin-lay merged 2 commits into
mainfrom
1634-skill-body-sections-declare-firing-moments-their-description-cannot-route-to
Aug 3, 2026
Merged

Align skill descriptions with the firing moments their bodies declare#1643
liplus-lin-lay merged 2 commits into
mainfrom
1634-skill-body-sections-declare-firing-moments-their-description-cannot-route-to

Conversation

@liplus-lin-lay

@liplus-lin-lay liplus-lin-lay commented Aug 3, 2026

Copy link
Copy Markdown
Member

Closes #1634

概要

skill の description は Li+ 唯一のルーティング信号であり、body に節を足したときに description を元のスコープのまま置くと、その節が名指しする「まさにその瞬間」に誰もその skill を開けない。issue の決定に従い、対象 10 件(1 / 2 / 3 / 5 / 6 / 7 / 8 / 9 / 10 / 13)を解消した。L1 分(4 / 11 / 12)は #1641 へ分離済みで本 PR の対象外。

解決方針の優先順(1. body 節を削る → 2. 発火モーメントを所有する面へ節を移す → 3. description に条件を追加)を各項目に適用した。

項目別の適用結果

項目 適用方針 変更
1 3 operations-on-sub-issue の description に pre-commit の scope-exceed 条件を追加
2 2 memo-mode rapid intake を operations-on-issue-maturity から operations-on-issue-format へ移送
3 2 + 1 cold-start モーメントを rules/evolution/cold-start-synthesis.md へ移送し、残る catch-all は scope 文へ畳んだ
5 削除 task-subagent-delegation の description 第 3 条件を削除
6 3 operations-on-docs-ownership の description に pre-edit の grep-sweep 条件を追加
7 3 evolution-self-eval の description を「記録要否を判断する瞬間」から発火するよう拡張
8 body 優先 description の safer-side OR 既定を削除し、非対称性による per-judgment 選択に改めた
9 Provides 修正 evolution-loop の Provides を実在節に一致
10 Provides 修正 operations-on-merge / operations-on-pr-review の Provides に post-merge 義務を追加
13 置換 task-pr-review-judgment の description に actor 軸(main agent)を明記

方針 3 を選んだ理由(完了条件の要求事項)

項目 1 — operations-on-sub-issue

方針 2(operations-on-commit への移送)を先に検討したが採らなかった。理由は 3 つ。

  1. 移送先 operations-on-commit の Provides は「git push の primary / fallback 手順」であり、scope ゲートを body に足すと Provides を拡張せざるを得ない。これは本 issue が直そうとしている B 類(Provides 不正確)を移送先で作り直すことになる。
  2. rules/task/task.md:38(always-on)が skills/operations-on-sub-issue/SKILL.md を当ゲートの権威として名指ししており、移送すると常時ルール側の参照先を書き換える必要がある。
  3. docs/L.-Hop-Count-Instrument.md の S4 は同アンカーからの跳躍先としてこの skill を実測値に固定している。移送は計測済み instrument の経路を無効化する。

節は sub-issue のスコープ統治そのものであり、所有面は変えずに description 側で pre-commit の瞬間を拾うのが最小。

項目 6 — operations-on-docs-ownership

pre-edit の grep-sweep は「編集の直前」に発火する必要があり、その瞬間を所有する既存の面が L4 に存在しない(唯一の候補である rules/model/trigger-check-gate.md は L1 で本 issue のスコープ外)。節自体は同期集合の drift を止める load-bearing な手続きのため削除も不可。よって description へ条件追加。

項目 7 — evolution-self-eval

body の trigger(Record when fact is observed)は「記録するかどうかを決める側」で、既存 description(about to be recorded)は決めた後にしか発火しない。判断の瞬間を所有する別の面が無く、trigger 節は自己評価の入力規律そのものなので削除も不可。第 1 条件を観測モーメント側へ拡張した(既存の記録モーメントは第 2 条件として保持)。

項目 8 の確定

body 側(Design Dimensions の aggregation rule = 判断の非対称性による per-judgment 選択)を正とした。Procedure step 4 が body の aggregation rule を参照して実行し、step 6 が three-value 分岐を実行しているため、description の safer-side OR 既定は実行手順と両立しない。

参照側の skills/evolution-impression-literal-detection/SKILL.mdnarrower than brake 1's default safer-side OR という相対表現で較正していたため、比較参照先を失う。固定軸が Procedure step 4 の fixed-axis override 経路を通ること + 2-of-3 / 1-of-3 の絶対閾値、という形に改めた。

追随した docs

  • docs/2.-Evolution.md — cold-start 運用基準に Latest 位置の bullet を追加、Self-Evaluation のトリガー列を更新
  • docs/3.-Task.md — memo モード rapid intake を Issue Maturity 節から Issue Format 節へ移送

検証

  • python3 -m unittest discover -s tests = 38 tests OK
  • 全 description が 1 行・1024 文字以内であることを確認(最長 898)
  • 変更ファイル全 16 本が well-formed UTF-8 であることを確認
  • 削除リテラル(safer-side OR 既定 / entry and exit contract / delegation 側 bounded read-only)の残存を post-grep で 0 件確認

観測(本 PR のスコープ外)

workspace/wiki/J.-Restructure-Inventory.md:151operations-on-issue-maturity の責務として memo-mode rapid intake を挙げているが、同ページは wiki 専属かつ過去の restructure 時点のインベントリ記録であり、docs/ に対応物を持たない。本 PR では触っていない。


brake 1 結果(親による裁定、N=3 / model=sonnet / 単一ラウンド)

固定軸(impression-literal)+ routing 被覆 / Provides 整合 / 優先順遵守と listing コスト / 参照整合 / 過剰発火の 6 軸。評価者には PR URL・SHA ac04cc9・green CI run URL のみを渡し、rules/evolution/cold-start-synthesis.md については operational copy を .claude/ に適用してから spawn した(評価後に restore 済)。

取り込んだ所見

  • operations-on-pr-review の Provides 欠落(1/3 検出、親が原文で裏取り)。Provides が human gate と deferred-item follow-through を名乗る一方、Delegated-subagent stop condition (canonical, split by mode) を名乗っていなかった。同節は rules/evolution/initiator-autonomy.md / evolution-parallel-agent-eval / task-subagent-delegation(2 箇所) / task-subagent-prompt から正本として参照され、docs/L.-Hop-Count-Instrument.md の測定アンカーでもある。項目 10 と同一クラスの欠落のため取り込み、Provides に追記した。

分離した所見

  • task-subagent-spawn のカテゴリ帰属(1/3 検出、親が原文で裏取り)。項目 5 が task-subagent-delegation から bounded read-only investigation の条件を外した結果、task-subagent-spawn の「これら 4 カテゴリで網羅」という宣言が、description も body もそのカテゴリを持たない skill に帰属を主張したまま残った。本 PR の 10 項目スコープ外かつカテゴリ所有の設計判断を含むため Bounded read-only investigation is a delegation category no skill body owns #1645 に分離。

却下した所見

  • operations-on-release の残余 catch-all が依然到達不能(1/3)。原文を確認したところ、当該節は Application moment = the release create completion report と単一の発火モーメントのみを宣言しており、これは description の第 4 条件が被覆している。Scope: 行はそのモーメント内での適用範囲の限定であって、独立した発火モーメントの宣言ではない。到達不能な moment 主張を落として到達可能なものだけを述べる形になっており、完了条件を満たしている。残り 2 名も同じ判断(うち 1 名は「その catch-all はもともと routable ではなかったので、実際に到達可能なものだけを述べる形が正しい」と明示)。

記録のみ(固定軸 1/3 の閾値により auto-refine せず)

  • skills/task-pr-review-judgment/SKILL.md:3 の追加句 and it reaches the judgment without reading the operations skills が removal test に落ちるとの指摘(1/3)。actor 軸の判別は「main-agent surface」+「delegated subagent は operations-on-pr-review を取る」で既に成立しており、当該句は body の Responsibilities 記述を routing 面に再掲している、という内容。skills/evolution-impression-literal-detection/SKILL.md Aggregation の 1-of-3 は記録のみ・auto-refine しない、に従い本 PR では変更しない。

listing コストの実測(訂正)

issue #1634 は「Provides 句の不正確の是正は listing コストの減少側」を前提に優先順の対象外としていたが、この前提は経験的に誤りだった。touched 13 本の description: 行を SHA 間で実測:

skill Δ bytes
evolution-loop +80
evolution-parallel-agent-eval +67
evolution-self-eval +216
operations-on-docs-ownership +196
operations-on-issue-format +125
operations-on-merge +143
operations-on-pr-review +107
operations-on-sub-issue +193
task-pr-review-judgment +227
task-subagent-delegation -118
net +1236

減少したのは項目 5 の削除のみで、Provides 是正(8 / 9 / 10)はすべて増加側。全 44 本の corpus に対して約 +7%。3 名中 2 名がこの点を指摘し、親が独立に同じ数値を実測した。個々の選択は各軸で正当化されているが、総体としては #1542 の観測と逆を向いている。この事実は #1542 側の判断材料として残す。

skill の description は Li+ 唯一のルーティング信号であるため、body の節が名指しする発火モーメントに対応する description 条件が無いと、まさにその瞬間に誰もその skill を開けない。#1634 の監査で検出された対象 10 件を、決定済みの優先順(1. body 節を削る → 2. 発火モーメントを所有する面へ節を移す → 3. description に条件を追加)に沿って解消した。L1 分(4 / 11 / 12)は #1641 へ分離済みで本コミットの対象外。

- 1: operations-on-sub-issue の description に pre-commit の scope-exceed 条件を追加(方針 3)
- 2: memo-mode rapid intake を operations-on-issue-maturity から operations-on-issue-format へ移送(方針 2)
- 3: cold-start での Latest 表面化抑止を rules/evolution/cold-start-synthesis.md へ移送し、release skill 側は完了報告の 1 モーメントに絞った(方針 2 + 1)
- 5: task-subagent-delegation の description から、対応する body 節を持たない第 3 条件を削除
- 6: operations-on-docs-ownership の description に pre-edit の grep-sweep 条件を追加(方針 3)
- 7: evolution-self-eval の description を「記録要否を判断する瞬間」から発火するよう拡張(方針 3)
- 8: aggregation の既定は body 側(判断の非対称性による per-judgment 選択)を正とし、description の safer-side OR 既定を削除。impression-literal-detection の較正も絶対閾値の記述へ改めた
- 9: evolution-loop の Provides を実在節(stage definitions / execution mode / stage responsibility)へ一致
- 10: operations-on-merge / operations-on-pr-review の Provides に post-merge 義務を追加
- 13: task-pr-review-judgment の description に actor 軸(main agent)を明記

docs/2.-Evolution.md と docs/3.-Task.md は移送・トリガー変更に同一 PR で追随した。

Refs #1634

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
brake 1 (N=3) adjudication carried one finding into the draft: the Provides
clause of skills/operations-on-pr-review/SKILL.md named the human gate and the
deferred-item follow-through but omitted "Delegated-subagent stop condition
(canonical, split by mode)", which is the section five other surfaces cite as
the authority (rules/evolution/initiator-autonomy.md, evolution-parallel-agent-eval,
task-subagent-delegation x2, task-subagent-prompt) and which docs/L. pins as a
measured hop anchor.

Provides 句の omission は本 issue の項目 10 と同じクラスの欠落であり、完了条件
「Provides 句が body の実在節と一致している」を満たしていなかった。最も参照の多い
節が名乗られていないまま残るのを避けるため、裁定の上で取り込む。

Refs #1634

@liplus-lin-lay liplus-lin-lay left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

自己レビュー結果: pass

判断基盤 = issue #1634 本文 + PR diff (5227475) + CI 結果(governance 2 本 pass、mergeStateStatus CLEAN)

完了条件の照合

  • body の各節が名指しする発火モーメントに description 条件が存在する(または節が消えている) — 10 項目すべてで満たされている。優先順(削る → 移す → 条件追加)が項目ごとに適用され、条件追加を選んだ 3 件(1 / 6 / 7)は理由が PR 本文に記録済み。親が各理由を原文で検証した(項目 1 の rules/task/task.md:38docs/L.-Hop-Count-Instrument.md アンカーは実在、項目 6 の移送先候補が L1 でスコープ外である点も正しい)。
  • Provides 句が body の実在節と一致している — brake 1 で operations-on-pr-review の欠落を検出し、本 PR 内で修正した(5227475)。他の touched description は照合済み。
  • 項目 8 の aggregation 既定が 1 つに定まり、参照側の較正がそれに一致 — body 側(判断の非対称性による per-judgment 選択)に確定。evolution-impression-literal-detection の較正は閾値を絶対値で述べる形に改まり、Procedure step 4 の fixed-axis override 経路を参照している。
  • 項目 13 の判別軸が description から読めるtask-pr-review-judgment の description が main agent を名指しし、delegated subagent を operations-on-pr-review へ振り分けている。

brake 1

N=3 / model=sonnet / 単一ラウンドで実施。所見の裁定内訳は PR 本文の brake 1 節に記載(取り込み 1 / 分離 1 → #1645 / 却下 1 / 記録のみ 1)。却下と記録のみの判断は、いずれも原文または固定軸の集約閾値に照らして行った。brake 2 は対象外(L1 Model Layer source を含まない。L1 分は #1641 / PR #1644 に分離済み)。

申し送り

listing コストの実測値 net +1236 バイト(corpus 比 約 +7%)を PR 本文に記録した。issue #1634 が優先順の対象外としていた「Provides 是正は減少側」という前提は経験的に誤りであり、この PR は総体として #1542 の観測と逆を向いている。個々の選択は各軸で正当化されているため本 PR はマージするが、この数値は #1542 側の判断材料として残す。

バージョン種別: patch

rules/operations/release-version-rule.md の判断軸に照らし、変更規模は 10 項目の局所的な description 整合であり large refactor / large structural change に当たらない。routing 面の挙動は変わるが incremental scope であり、minor の「large」修飾を満たさない。semi_auto の patch 直接マージ経路を適用する。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Skill body sections declare firing moments their description cannot route to

1 participant