feat: add shellcheck composite action - #3
Conversation
Add .github/actions/shellcheck: installs a pinned, checksum-verified ShellCheck binary and runs it over discovered shell scripts against a caller-supplied rcfile (inputs: paths, rcfile, exclude, version, sha256). ShellCheck is a single binary with no runner script, so the action needs no bundled file. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c72b0e63c9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| run: | | ||
| set -euo pipefail | ||
| # $PATHS unquoted so multiple roots word-split. | ||
| mapfile -t files < <(find $PATHS -type f \( -name '*.sh' -o -name '*.bash' \) -not -path '*/.git/*' | sort) |
There was a problem hiding this comment.
When a caller mistypes or renames an input root, find reports the missing path but exits inside this process substitution, so mapfile still returns success under set -e; the action then either lints only the remaining roots or prints No shell scripts to check. and exits 0. This can let a misconfigured ShellCheck lane pass without checking the intended scripts, so validate each paths entry or otherwise propagate find failures before continuing.
Useful? React with 👍 / 👎.
…ion ledger (#390) Advances the Phase 4 tag `[DOING]` → `[DONE]` and appends a dated close-out amendment dispositioning every item in the 2026-08-06 REMAINING list — kept verbatim above it as the historical record. Dispositions recorded (each with its authority): - #364 shipped via #385 (`bcf48a0`) — routing label + idempotent escalation marker with repair path - #363 shipped via #387 (`7415d4e`, A1) + #389 (`9f9757e`, A2) — skipped-validation visibility, count/stale-clear gating, marker copy, wiring tripwire; security-lane variant tracked in #388 - Both #238 spec conflicts adjudicated (operator-delegated, 2026-08-07): supersede-not-reopen; three-clean-cycles close - Multi-repo shape waived; caller-side `class=runner` emission deferred with provisioning#215's trigger (operator-authorized recommendations) - #1327 comment-closed; #228/#238 closed with pointers — SC4 met - Canary deferral rehomed into the ledger (re-evaluate 2026-11-06 + three triggers), per its own the-moment-#228-closes rule - Secret-visibility hardening item retired: operator keeps `CLAUDE_CODE_OAUTH_TOKEN` at visibility "all"; matches the github-iac record (github-iac#269/github-iac#270 landed, github-iac#266 closed) - Fleet repin v0.9.1→v0.10.2 done (standards #337, claude-code-plugins #1990/#1992, sandbox #3) The deliberately-untouched verbatim run-30571900637 quote (no `coverage=` field) remains untouched; the byte-pinned regions are not in this diff. ## Related No linked issue. For reference: #238, #228, #363, #364, #385, #387, #389, #388. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01HCJfVqDNYt92YRyvKUMgYW --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Add .github/actions/shellcheck: installs a pinned, checksum-verified ShellCheck
binary and runs it over discovered shell scripts against a caller-supplied
rcfile (inputs: paths, rcfile, exclude, version, sha256). ShellCheck is a single
binary with no runner script, so the action needs no bundled file.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com