Specialized workflow for creating robust, production-ready bash scripts with defensive programming patterns, comprehensive error handling, and automated testing.
Use this workflow when:
Choose the phases that match the user’s task; this document is an index, not an instruction to run every listed skill. Read a selected skill before using it. Respect repository and user constraints. Cloud calls, host configuration, publishing, destructive operations and spending require the applicable authorization; a workflow checklist does not grant it.
The template is a starting point, not a completed script: it does not implement argument parsing or rollback. Validate paths, quote expansions, test in a disposable directory, and make retries bounded and safe for the specific command. Never log credentials or imply strict mode catches every failure.
bash-pro - Professional scriptingbash-defensive-patterns - Defensive patternsUse @bash-pro to design production-ready bash script
bash-pro - Script structurebash-defensive-patterns - Safety patternsUse @bash-defensive-patterns to implement strict mode and error handling
bash-linux - Linux commandslinux-shell-scripting - Shell scriptingUse @bash-linux to implement system commands
bash-defensive-patterns - Error handlingerror-handling-patterns - Error patternsUse @bash-defensive-patterns to add comprehensive error handling
bash-pro - Logging patternsUse @bash-pro to implement structured logging
bats-testing-patterns - Bats testingshellcheck-configuration - ShellCheckUse @bats-testing-patterns to write script tests
Use @shellcheck-configuration to lint bash script
documentation-templates - DocumentationUse @documentation-templates to document bash script
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_NAME=$(basename -- "$0")
readonly SCRIPT_NAME
SCRIPT_DIR=$(cd -- "$(dirname -- "$0")" && pwd)
readonly SCRIPT_DIR
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
error() { log "ERROR: $*" >&2; exit 1; }
usage() { cat <<EOF
Usage: $SCRIPT_NAME [OPTIONS]
Options:
-h, --help Show help
-v, --verbose Verbose output
EOF
}
main() {
log "Script started"
# Implementation
log "Script completed"
}
main "$@"
os-scripting - OS scriptinglinux-troubleshooting - Linux troubleshootingcloud-devops - DevOps automation