同じ根本原因を持つ課題(子 issue)を、現れている場所ではなく根本原因の場所で直すための親 issue である(issue-upkeep の判定「ルートコーズ」)。再現手順と観測は各子 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 は ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}(9・24・31・38 行)。51 行(Stop)だけ ${CLAUDE_PLUGIN_ROOT:-${PLUGIN_ROOT:-}} と順序が逆である。PLUGIN_ROOT で開発中の版へ向ける経路はあるが、文書に無い
開発中のリポジトリでは、記録のスクリプトが開発中の版から、hook が配布済みの版から動く。利用者の環境でも、Claude Code で scripts-lookup.md を実行すると Codex の古い版の scripts/ を選ぶ。
この issue が持つ範囲
Skill から呼ぶスクリプトの系統は #847 が持つ。 #847 (マイルストーン「20 置き場所と起点の解決」)が scripts-lookup.md を正本にして解決を 1 本のコマンドにまとめ、写しを消す。子 #590 #534 は #847 の受け入れ条件で閉じる。
この issue に残るのは hook の系統 である。
frontmatter と hooks/claude.json の選び方の食い違い(Stop 行の順序の逆転を含む)
開発中のリポジトリで hook と Skill が同じ版を選ぶことを確かめる検査
開発中の版へ向ける手段と、向けられない間の回避
PR #844 (#829 / #830 の実装)が hook を足すので、この規則の対象が増える。着手は #847 の後。
採る手
子 issue
子 issue
現象レイヤー
観測
#459
工程名を記録する hook
開発中の版で記録した工程名が、配布済みの版の hook に無く捨てられる
#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 はその時点の棚卸が「閉じてよい」で閉じる)
関連
同じ根本原因を持つ課題(子 issue)を、現れている場所ではなく根本原因の場所で直すための親 issue である(
issue-upkeepの判定「ルートコーズ」)。再現手順と観測は各子 issue にある。修正レイヤー
プラグインの実体(どのランタイムの、どの版の
scripts/とskills/)を選ぶ規則。 規則が 2 系統に分かれ、それぞれが別の実体を選ぶ。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 の実行環境にも無いため、別ランタイムの控えへ落ちるplugins/ndf/skills/development-workflow/SKILL.mdの frontmatter(9 行)とplugins/ndf/hooks/claude.json${CLAUDE_PLUGIN_ROOT}だけ、hooks/claude.jsonは${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}(9・24・31・38 行)。51 行(Stop)だけ${CLAUDE_PLUGIN_ROOT:-${PLUGIN_ROOT:-}}と順序が逆である。PLUGIN_ROOTで開発中の版へ向ける経路はあるが、文書に無い開発中のリポジトリでは、記録のスクリプトが開発中の版から、hook が配布済みの版から動く。利用者の環境でも、Claude Code で
scripts-lookup.mdを実行すると Codex の古い版のscripts/を選ぶ。この issue が持つ範囲
Skill から呼ぶスクリプトの系統は #847 が持つ。 #847(マイルストーン「20 置き場所と起点の解決」)が
scripts-lookup.mdを正本にして解決を 1 本のコマンドにまとめ、写しを消す。子 #590 #534 は #847 の受け入れ条件で閉じる。この issue に残るのは hook の系統である。
hooks/claude.jsonの選び方の食い違い(Stop 行の順序の逆転を含む)PR #844(#829 / #830 の実装)が hook を足すので、この規則の対象が増える。着手は #847 の後。
採る手
move_responsibility): hook と Skill 側の選び方の食い違いを、基盤: スクリプトの置き場所($SCRIPTS / SKILL_DIR)の解決を 1 本のコマンドにする #847 の解決の規則へ寄せ、開発中の版へ向ける手段と回避を同じ場所に書く子 issue
$SCRIPTSの決め方${CLAUDE_PLUGIN_ROOT}が置き換わらず、Codex の古い控えを採る(#847 で閉じる)完了条件
hooks/claude.jsonが同じ規則で実体を選ぶ関連
hooks/claude.jsonの Stop 行を共有する