Skip to content

実行する版を解決する層を 1 つにし、開発中の版と配布済みの版の食い違いを根本原因の場所で直す #715

Open
4 of 4 issues completed

Description

@takemi-ohama

同じ根本原因を持つ課題(子 issue)を、現れている場所ではなく根本原因の場所で直すための親 issue である(backlog-refinement の判定「ルートコーズ」)。再現手順と観測は各子 issue にある。

修正レイヤー

プラグインの実体(どのランタイムの、どの版の scripts/ と skills/)を選ぶ規則。 規則が 2 系統に分かれ、それぞれが別の実体を選ぶ。

系統 場所 選び方
Skill から呼ぶスクリプト plugins/ndf/skills/development-workflow/references/scripts-lookup.md と、その写し 4 か所(cross-refactoring/SKILL.md・cross-review/docs/01-state-and-review.md・fix/SKILL.md・statusline/SKILL.md) 開発中のリポジトリを先に見る候補を持つのは scripts-lookup.md だけで、写しは ${CLAUDE_PLUGIN_ROOT} → この Skill のディレクトリ → .kiro の順。参照ファイルの中では ${CLAUDE_PLUGIN_ROOT} が置き換わらず、Bash の実行環境にも無いため、別ランタイムの控えへ落ちる
hook plugins/ndf/skills/development-workflow/SKILL.md の frontmatter(9 行)と plugins/ndf/hooks/claude.json frontmatter は ${CLAUDE_PLUGIN_ROOT} だけ、hooks/claude.json は 9・49・63・77・147 行(hook.py。49 行は #1492 の goal-skill)と 91・98・105 行(シェルの hook)が ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}、22・36・117・154・167 行(relay.py。167 行は #1389 の limit)と 125 行(training-optout.py、#1597 で追加)と 133 行(context-policy.py)と 180 行(usage-subagent.py、#1953 で追加)が ${CLAUDE_PLUGIN_ROOT:-${PLUGIN_ROOT:-}} と順序が逆である。PLUGIN_ROOT で開発中の版へ向ける経路はあるが、文書に無い

開発中のリポジトリでは、記録のスクリプトが開発中の版から、hook が配布済みの版から動く。利用者の環境でも、Claude Code で scripts-lookup.md を実行すると Codex の古い版の scripts/ を選ぶ。

この issue が持つ範囲

Skill から呼ぶスクリプトの系統は #847 が持つ。 #847(マイルストーン「20 置き場所と起点の解決」)が scripts-lookup.md を正本にして解決を 1 本のコマンドにまとめ、写しを消す。#847 と子 #590 #534 は閉じている。着手の条件(#847 の後)は満たされている。

この issue に残るのは hook の系統である。

  • frontmatter と hooks/claude.json の選び方の食い違い(relay.py の 5 行と training-optout.py・context-policy.py・usage-subagent.py の各 1 行の順序の逆転を含む)
  • 開発中のリポジトリで hook と Skill が同じ版を選ぶことを確かめる検査
  • 開発中の版へ向ける手段と、向けられない間の回避

PR #844(#829 / #830 の実装。マージ済み)で hook が増え、この規則の対象が増えた。#1142 の決定 20(スプリント 2b の移行ステップ D5)で、hook を 1 本の Python のエントリポイント(scripts/hook.py)へまとめ、hook のコマンドを SessionStart が用意した環境の bin/python へ向けた(D5(f04abfad)で置き換えた。issues/issue-1142-design-libraries.md)。relay.py の行は python3 のまま残る。

子 issue はすべて閉じた。残るのは hook の系統の 3 点(上の箇条)で、2026-10-13 の develop(3f933a70e、ndf 10.17.74)でも順序の逆転は残り、#1953 で足した usage-subagent.py の行も同じ逆の順序で入った。

PLUGIN_ROOT と CLAUDE_PLUGIN_ROOT に別の実体を与えると、hook.py 系は PLUGIN_ROOT、relay 系は CLAUDE_PLUGIN_ROOT を選ぶ(2026-10-11 に展開して確認)。

修正方針

子 issue

子 issue 現象レイヤー 観測 状態
#459 工程名を記録する hook 開発中の版で記録した工程名が、配布済みの版の hook に無く捨てられる 閉じた(2026-10-01、not planned)
#590 Claude Code での $SCRIPTS の決め方 ${CLAUDE_PLUGIN_ROOT} が置き換わらず、Codex の古い控えを採る 閉じた(#847)
#658 hook の反映 開発中に直した hook が配布まで効かず、直している間も同じ実害を踏む 閉じた
#534 cross-refactoring のスケルトン 開発中のリポジトリで回しても、スケルトンが配布済みの版を指す 閉じた(#847)

完了条件

  • Skill から呼ぶスクリプトの位置を決める処理が 1 か所にあり、写しが残らない(基盤: スクリプトの置き場所($SCRIPTS / SKILL_DIR)の解決を 1 本のコマンドにする #847)
  • hook の frontmatter と hooks/claude.json が同じ規則で実体を選ぶ
  • 開発中のリポジトリでは hook と Skill 側の両方が開発中の版を、利用者の環境では両方が自分のランタイムの版を選ぶことを、検査が確かめる
  • 開発中の版へ向ける手段と、向けられない間の回避が、規則と同じ場所に書かれている
  • 各子 issue の再現手順を実行し、現象が出ないことを確かめる(子 issue はその時点の棚卸が「閉じてよい」で閉じる)

関連

Activity

  1. modified the milestones: 05 定常状態への移行と品質統制, , 17 トークン消費の削減 on Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ndf-skillNDF の Skill 本体priority: high実害・安全機構の欠落など、優先して対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions