ci: lint every shell script, not just ./scripts - #17
Merged
Conversation
elementalsouls
added a commit
that referenced
this pull request
Aug 11, 2026
`scandir: ./scripts` limited shellcheck to `sync-skill-content.sh` — the only .sh file at that path. The three others in the repo were never linted: .claude/skills/run-claude-osint/smoke.sh skills/osint-autopilot/scripts/recon_pipeline.sh skills/osint-autopilot/scripts/test_domain_guard.sh Drop scandir so the action's default whole-repo scan applies, and pin severity to `warning` so the info/style class (SC2018/2019 tr ranges, SC2016 in a deliberate `sh -c` single-quoted body, SC2005/SC2012) does not fail CI on cosmetics. That surfaced one real warning, fixed here: smoke.sh ran `cd "$REPO_ROOT"` unchecked under `set -uo pipefail` (no `-e`), so a failed cd would have let every subsequent check run against the wrong directory and report results for it. Co-authored-by: Sachin Sharma <elementalsoul@Sachins-MacBook-Pro.local> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
elementalsouls
pushed a commit
that referenced
this pull request
Aug 11, 2026
sync-skill-content.sh copies canonical skill text from
docs/full-skills/*.SKILL.full.md into skills/*/SKILL.md — a two-tier
design where the committed SKILL.md are "structured outlines" populated
from full sources.
That design was never shipped. docs/full-skills/ has no git history — it
was never committed — and the skills/*/SKILL.md files are already the
full content (offensive-osint ≈ 4,700 lines, 185 sections). So the script
has always been a no-op: it prints "Source missing … Skipping" and exits
0. Harmless to CI, but it drags misleading docs behind it — README and
installation.md tell every new user to chmod+run a script that does
nothing and claim it "populates full content."
Removed:
- scripts/sync-skill-content.sh (the only file in scripts/; dir goes too)
- README.md / docs/installation.md: the chmod+run steps and the two
"structured-outline" troubleshooting sections; install is now just
`cp -r skills/* ~/.claude/skills/`
- SECURITY.md: reworded the bullet that scoped it to docs/full-skills/
- .claude/skills/run-claude-osint: dropped smoke check #5 (renumbered the
h1 check to #5), the "sync skill content" trigger, the no-op gotcha,
and the stale `shellcheck ./scripts` description (PR #17 dropped scandir)
- skills/{offensive-osint,osint-methodology}/README.md: the
"or docs/full-skills/… if this is the outline variant" clause
Verified: smoke.sh --no-net PASS (5 checks, no sync step), markdownlint
0 errors, shellcheck -S warning clean on the remaining scripts, all 9
SKILL.md frontmatter valid, and `cp -r skills/*` installs full content.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
.github/workflows/lint.ymlpins shellcheck toscandir: ./scripts. That path exists, but holds exactly one file —sync-skill-content.sh. The other three shell scripts in the repo have never been linted:Change
Drop
scandir(the action defaults to a whole-repo scan) and pinseverity: warning.The severity pin is what makes this a one-line diff instead of a churn PR. Scanning everything at the action's default severity surfaces 10 info/style findings that are all either intentional or cosmetic:
recon_pipeline.sh:44sh -cand must not expand in the parentrecon_pipeline.sh:37,39tr 'A-Z' 'a-z'on DNS names; accent support is not relevantsmoke.sh:32,33,38,39,44recon_pipeline.sh:129One real warning, fixed here
SC2164 in
smoke.sh:17:The script runs under
set -uo pipefail— no-e. A failedcdwas silent, so every subsequent check would have run against the wrong directory and reported results for it. Now exits 1 with a message.Verified
Clean on this branch and on #16's branch (which adds a fourth script).
Not touched
bash scripts/sync-skill-content.sh --checkwarnsSource missing: docs/full-skills/*.SKILL.full.mdon plainmaintoo — pre-existing, unrelated, left alone.🤖 Generated with Claude Code