Primary finding
setup.sh swallows `gl identity new` failure mode documented in SKILL.md
- gitlawb/scripts/setup.sh:18-24
- gitlawb/SKILL.md:281
The script guards `gl identity new` with `gl identity show &>/dev/null`, which is correct for the happy path. However, with `set -euo pipefail`, if `gl identity show` exits non-zero for any reason other than 'no identity' (e.g., permissions error on `~/.gitlawb/identity.pem`, corrupt key file, GITLAWB_KEY pointing to an unreadable path), the script will silently fall into the 'create new identity' branch and call `gl identity new`, which SKILL.md documents as erroring when an identity already exists. The user would then see a confusing 'identity already exists' error after a 'Creating new identity...' log line, masking the real cause (e.g., permission denied). The branching should distinguish 'no identity' from 'cannot read identity'.
Recommendation
Inspect `gl identity show`'s exit code distinctly (or check for the existence of the key file at `${GITLAWB_KEY:-$HOME/.gitlawb/identity.pem}`) before deciding to call `gl identity new`. Emit a clearer error when the key path exists but is unreadable.