Audit shell scripts for correctness, portability, and common pitfalls.
Triggers: shell script, bash, sh, script review, pipeline, exit code Use when: reviewing shell scripts, CI scripts, hook...
Audit shell scripts for correctness, safety, and portability.
After review, run shellcheck <script> to verify fixes address identified issues.
Run pytest plugins/pensive/tests/skills/test_shell_review.py -v to validate review patterns.
/shell-review path/to/script.sh
shell-review:context-mappedshell-review:exit-codes-checkedshell-review:portability-checkedshell-review:safety-patterns-verifiedshell-review:structure-checkedshell-review:evidence-loggedshell-review:findings-verifiedshell-review:context-mapped)Identify shell scripts:
# Find shell scripts
find . -not -path "*/.venv/*" -not -path "*/__pycache__/*" \
-not -path "*/node_modules/*" -not -path "*/.git/*" \
-name "*.sh" -type f | head -20
# Check shebangs
rg -l "^#!/" scripts/ hooks/ 2>/dev/null | head -10
# fallback: grep -l "^#!/" scripts/ hooks/ 2>/dev/null | head -10
Document:
shell-review:exit-codes-checked)@include modules/exit-codes.md
shell-review:portability-checked)@include modules/portability.md
shell-review:safety-patterns-verified)@include modules/safety-patterns.md
shell-review:structure-checked)@include modules/structure-patterns.md
shell-review:evidence-logged)Use imbue:proof-of-work to record findings with file:line references.
Summarize:
## Summary
Shell script review findings
## Scripts Reviewed
- [list with line counts]
## Exit Code Issues
### [E1] Pipeline masks failure
- Location: script.sh:42
- Anchor: `verbatim source text at file:line`
- Pattern: `cmd | grep` loses exit code
- Fix: Use pipefail or capture separately
## Portability Issues
[cross-platform concerns]
## Safety Issues
[unquoted variables, missing set flags]
## Recommendation
Approve / Approve with actions / Block
shell-review:findings-verified)Write findings to .review/findings.json and run the citation verifier
as Skill(imbue:review-core) Step 5 describes. Only findings the
verifier passes enter the report. Drop or label UNVERIFIED the rest.
#!/bin/sh scripts flagged):? expansion, cd in
subshells, no basename/dirname)imbue:proof-of-workLocation + verbatim Anchor
confirmed by citation_verifier.py (exit 0), or unverified findings
were dropped or labeled UNVERIFIED