ワンクリックで
bodypath
// Shows what skill-body CLAUDE_PLUGIN_ROOT and friends substitute to on Mac Cowork, whether the VM Bash tool can use that path, and whether the Read tool can read a bundled file at that host path.
// Shows what skill-body CLAUDE_PLUGIN_ROOT and friends substitute to on Mac Cowork, whether the VM Bash tool can use that path, and whether the Read tool can read a bundled file at that host path.
Mac Cowork で、plugin-level SessionStart hook(host 側)から $CLAUDE_PLUGIN_DATA に書いた値が「別の chat session を跨いで」残るかを検証する probe。書き込み&読み戻しは hook(persist.sh)側で行い、その結果は SessionStart の stdout として context に出る。この skill body は対比用に「VM Bash 側から DATA が見えるか/hook が書いたファイルを読めるか」を確認する。
Surfaces UPE_PROBE_* marker lines to test whether the plugin-level UserPromptExpansion hook fires on Cowork. Invoking this skill via slash is itself the trigger; compares against UserPromptSubmit and SessionStart controls.
Triggers the plugin-level PreToolUse hooks by running a sentinel bash command, to test (via session export) whether Cowork runs PreToolUse hook commands through cmd.exe or a POSIX shell, and whether the inline block pattern actually blocks the bash tool.
Surfaces the EXEC_* marker lines emitted by the plugin-level SessionStart hooks, which run hook commands in EXEC FORM (args present). Used to test whether exec form resolves ${CLAUDE_PLUGIN_ROOT} to a real path and exports it as an env var on Cowork, where shell form (§2.1/§2.2) failed both.
Proves whether a skill frontmatter PreToolUse Bash hook fires on Cowork by emitting only a block decision (no echo). A marked bash should be blocked even though no frontmatter stdout surfaces.
Surfaces the MP_DA_* marker lines emitted by the plugin-level SessionStart hooks, used to disambiguate between (a) shell-bypass and (b) bash -c with $-escape models of Cowork hook execution.
| name | bodypath |
| description | Shows what skill-body CLAUDE_PLUGIN_ROOT and friends substitute to on Mac Cowork, whether the VM Bash tool can use that path, and whether the Read tool can read a bundled file at that host path. |
| user-invocable | true |
記事 §3「skill body の ${CLAUDE_PLUGIN_ROOT} はホストパスに化ける」を Mac で検証する probe です。
skill body の ${...} は env 非依存の事前置換なので Cowork でも置換されます。置換値(ホストパスの形)と、
そのパスを VM 側 Bash tool が使えるか、Read tool で読めるか を見ます。
次の bash を実行してください。
echo "BODY_ROOT=${CLAUDE_PLUGIN_ROOT}"
echo "BODY_DATA=${CLAUDE_PLUGIN_DATA}"
echo "BODY_SKILL_DIR=${CLAUDE_SKILL_DIR}"
echo "BODY_HOST=$(hostname)"
echo "--- can the VM Bash tool stat the substituted path? ---"
ls -la "${CLAUDE_PLUGIN_ROOT}/assets/marker.txt" 2>&1 | head -3
cat "${CLAUDE_PLUGIN_ROOT}/assets/marker.txt" 2>&1 | head -1
上の BODY_ROOT に出たパスを使い、**Read tool(bash ではなく)**で
<BODY_ROOT>/assets/marker.txt を読んでみてください。読めたら中身(BODYPATH-MARKER-FILE-CONTENT ...)を、
読めなければエラーを報告してください。
BODY_ROOT / BODY_DATA / BODY_SKILL_DIR の値(パスの形:macOS path か /var/folders/... か等)BODY_HOST(claude のはず=VM)ls / cat が 成功したか失敗したか(VM filesystem に存在するか)/Users/... か /var/folders/...)に置換され、
VM Bash の ls/cat は失敗、Read tool では読める → 記事 §3 と同じ構造(パスの形だけ macOS)。