shellcheck-actions.sh misses .github/workflows and currently exits non-zero
Metadata
Current evaluation
shellcheck-actions.sh has a shallow glob pattern missing .github/workflows and fails on setup-python-runner/action.yaml, breaking make lint-code on main.
Suggested action: keep open
Reason: Valid bug with a clear reproducer and an active contributor (ayushpratap27) who has outlined a detailed fix plan and reported progress with 40 findings to address. The issue is scoped, actionable, and maintainer-acknowledged, so it should remain open for the contributor to submit their PR.
Evaluated by: mr-cal-bot
Impact:
40
Quick Win:
17
Complexity:
50
Confidence:
90
Actionability:
85
Issue body
## Problem
`.github/shellcheck-actions.sh` lints only two files in this repository, and the script currently fails.
**The glob is too shallow.** The script expands `$DIR/../**/*.yaml`. Without `globstar`, `**` behaves like `*`, so the pattern resolves to `.github/*/*.yaml`, which matches only:
- `setup-python-runner/action.yaml`
- `snap-publish/action.yaml`
Every workflow in `.github/workflows/` is skipped, so the shell fragments inside `run:` steps of `lint-python.yaml`, `test-python.yaml`, and the rest are never checked.
**The script already fails.** Running it against `main` exits 1 because of warnings in `setup-python-runner/action.yaml`:
```
SC2086 (info): Double quote to prevent globbing and word splitting.
SC1083 (warning): This } is literal. Check expression (missing ;/\n?) or quote it.
```
Both come from this line:
```yaml
echo "cache-hash=$(echo "${{ toJSON(matrix.platform) }}" | sha1sum | cut -f1 -d' ')" >> "${GITHUB_OUTPUT}"
```
The `$(...)` and `${{ ... }}` substitutions produce unbalanced quoting for shellcheck. Because the script runs under `set -euo pipefail`, the first failure aborts the loop, so the remaining files are never reached either.
## Impact
`make lint-code` calls this script, so the shellcheck half of the code linters is red on `main` today and provides no coverage of the workflows.
## Suggested fix
1. Widen the glob so workflow files are included, for example by enabling `globstar` at the top of the script:
```bash
shopt -s globstar
for f in "$DIR"/../**/*.yaml; do
```
This reaches `.github/workflows/*.yaml` as well as `.github/**/*.yaml`, which makes the coverage of that directory sensible.
2. Decide what to do about the `setup-python-runner/action.yaml` warnings. Options include templating the value into an environment variable so the `run:` block stays valid shell for shellcheck, or excluding known-workflow-template expressions from the check.
3. Confirm the intended failure semantics. A single informational finding aborting the whole loop makes the check hard to reason about.
## Notes
Found while splitting `lint-python.yaml` into separate jobs (canonical/starflow#199). That change does not depend on this fix, but it keeps `make lint-code` as the name of the code lint entry point, so this should be addressed before relying on that job as a required check.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b |
Impact:
40
Quick Win:
17
Complexity:
50
Confidence:
90
Actionability:
85
|
keep open | shellcheck-actions.sh has a shallow glob pattern missing .github/workflows and fails on setup-python-runner/action.yaml, breaking make lint-code on main. | |
| qwen/qwen3.6-35b-a3b |
Impact:
55
Quick Win:
26
Complexity:
45
Confidence:
85
Actionability:
85
|
keep open | shellcheck-actions.sh has a shallow glob missing workflow files and fails on action.yaml warnings. Contributor has a detailed fix plan. | |
| qwen/qwen3.6-35b-a3b |
Impact:
45
Quick Win:
27
Complexity:
25
Confidence:
75
Actionability:
80
|
needs triage | shellcheck-actions.sh has a shallow glob missing .github/workflows and fails on action.yaml template expressions, leaving lint-code red on main. |
Update history
| Date | Change |
|---|---|
| updated | |
| updated | |
| created |
Related work
-
Related To:
canonical/starflow#199
(confidence 85%)
Issue #200 was discovered while splitting lint-python.yaml in #199; both are related workflow/tooling improvements but independent.
Related issues
No related issues found above the similarity threshold.