Files
Trevin Chow 4826337c2d fix(ce-update,ce-setup): probe scripts self-locate; tighten ce-setup platform check
Addresses two PR review findings empirically confirmed in a Claude Code
session: `printenv CLAUDE_SKILL_DIR` from the Bash tool returns
`NOT_SET`, proving CLAUDE_SKILL_DIR (and CLAUDE_PLUGIN_ROOT) are
SKILL.md content substitutions only, not environment variables exported
to Bash subprocesses.

ce-update probes (P1, Codex thread):
  Previously, currently-loaded-version.sh and marketplace-name.sh read
  `${CLAUDE_SKILL_DIR:-}` directly from the environment. Since the env
  var is never set in subprocesses, both scripts always emitted
  __CE_UPDATE_NOT_MARKETPLACE__ — meaning ce-update would never actually
  perform version comparison even on real marketplace installs.

  Fix: derive skill_dir from BASH_SOURCE[0] (the script's own location).
  Adds regression tests that copy each script into a fake
  marketplace-shaped path and run it with CLAUDE_SKILL_DIR explicitly
  cleared from the env, asserting the correct version/marketplace
  segments are extracted.

ce-setup platform check (P2, Codex thread):
  The check at line 47 keyed off "non-empty AND not literal
  ${CLAUDE_PLUGIN_ROOT}", which incorrectly accepted unresolved command
  strings like `echo "${CLAUDE_PLUGIN_ROOT}"` left in place by
  non-Claude harnesses that don't process `!` pre-resolution. Tightened
  to "starts with `/` and contains no `${`", which naturally rejects all
  unresolved forms while accepting real absolute paths.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 00:03:17 -07:00
..