6c2c55733c
zsh errors on globs that match nothing instead of returning the literal pattern (bash's default), and `2>/dev/null` does not suppress the error because it comes from the shell's glob expansion before `ls` even runs. Under Codex (which executes the SKILL.md bash via zsh), STEP 0 and the Step 1 / comparison-mode resolvers emitted noisy "no matches found" errors on machines without a Claude plugin cache populated. Replaces all three `ls -d $HOME/.claude/plugins/cache/last30days-skill/last30days/*/` invocations with `find ... -mindepth 1 -maxdepth 1 -type d 2>/dev/null`. find is POSIX-portable, errors silently when the base dir doesn't exist, and never triggers shell glob errors. `sort -V | tail -1` precedence preserved (verified: picks 3.10.0 over 3.2.1 over 3.1.0). Trailing-slash strip removed because find doesn't append slashes. Observed in Codex session running /last30days against PR #400 with the Claude plugin cache deleted - bash output was: zsh:1: no matches found: /Users/.../last30days/*/ After fix: clean empty output, exit 0, STEP 0 correctly treats it as "no cache present, do not hop", resolver falls through to per-harness skill dirs as designed.