| name | shellcheck-configuration |
| description | Master ShellCheck static analysis configuration and usage for shell script quality. Use when setting up linting infrastructure, fixing code issues, or ensuring script portability. |
| category | Document Processing |
| source | antigravity |
| tags | ["ai","workflow","document","image"] |
| url | https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/shellcheck-configuration |
ShellCheck Configuration and Static Analysis
Comprehensive guidance for configuring and using ShellCheck to improve shell script quality, catch common pitfalls, and enforce best practices through static code analysis.
Do not use this skill when
- The task is unrelated to shellcheck configuration and static analysis
- You need a different domain or tool outside this scope
Instructions
- Clarify goals, constraints, and required inputs.
- Apply relevant best practices and validate outcomes.
- Provide actionable steps and verification.
- If detailed examples are required, open
resources/implementation-playbook.md.
Use this skill when
- Setting up linting for shell scripts in CI/CD pipelines
- Analyzing existing shell scripts for issues
- Understanding ShellCheck error codes and warnings
- Configuring ShellCheck for specific project requirements
- Integrating ShellCheck into development workflows
- Suppressing false positives and configuring rule sets
- Enforcing consistent code quality standards
- Migrating scripts to meet quality gates
ShellCheck Fundamentals
What is ShellCheck?
ShellCheck is a static analysis tool that analyzes shell scripts and detects problematic patterns. It supports:
- Bash, sh, dash, ksh, and other POSIX shells
- Over 100 different warnings and errors
- Configuration for target shell and flags
- Integration with editors and CI/CD systems
Installation
brew install shellcheck
apt-get install shellcheck
git clone https://github.com/koalaman/shellcheck.git
cd shellcheck
make build
make install
shellcheck --version
Configuration Files
.shellcheckrc (Project Level)
Create .shellcheckrc in your project root:
# Specify target shell
shell=bash
# Enable optional checks
enable=avoid-nullary-conditions
enable=require-variable-braces
# Disable specific warnings
disable=SC1091
disable=SC2086
Environment Variables
export SHELLCHECK_SHELL=bash
export SHELLCHECK_STRICT=true
export SHELLCHECK_CONFIG=~/.shellcheckrc
Common ShellCheck Error Codes
SC1000-1099: Parser Errors
echo hello\
world
if [[ $var = "value" ]]; then
true
fi
SC2000-2099: Shell Issues
ps aux | grep -v grep | grep myprocess
for file in $(ls -la)
[[ -f "$file" ]] && echo "found" || echo "not found"
echo '$VAR'
SC2100-2199: Quoting Issues
for i in $list; do
echo "$i"
done
~/.bashrc
some_command
if [ $? -eq 0 ]; then
array=( $items )
SC3000-3999: POSIX Compliance Issues
[[ $var == "value" ]] && do_something
function my_func() {
local var=value
}
Practical Configuration Examples
Minimal Configuration (Strict POSIX)
#!/bin/bash
shellcheck \
--shell=sh \
--external-sources \
--check-sourced \
script.sh
Development Configuration (Bash with Relaxed Rules)
#!/bin/bash
shellcheck \
--shell=bash \
--exclude=SC1091,SC2119 \
--enable=all \
script.sh
CI/CD Integration Configuration
#!/bin/bash
set -Eeuo pipefail
find . -type f -name "*.sh" | while read -r script; do
echo "Checking: $script"
shellcheck \
--shell=bash \
--format=gcc \
--exclude=SC1091 \
"$script" || exit 1
done
.shellcheckrc for Project
# Shell dialect to analyze against
shell=bash
# Enable optional checks
enable=avoid-nullary-conditions,require-variable-braces,check-unassigned-uppercase
# Disable specific warnings
# SC1091: Not following sourced files (many false positives)
disable