Reference Files
Deep-dive guides for specific topics:
- patterns-and-conventions.md - Defensive programming patterns, strict mode, and code style
- safety-and-security.md - Security patterns, input validation, and hardening
- portability-and-compatibility.md - Cross-platform compatibility and Bash version features
- documentation-and-ci-cd.md - Documentation standards and CI/CD integration
- performance-and-optimization.md - Optimization techniques and profiling
- advanced-techniques.md - Advanced patterns, dependencies, and common pitfalls
- tools-and-frameworks.md - Essential tools, testing frameworks, and external resources
Bash Scripting
Master guide for defensive Bash scripting following production-grade best practices. This skill provides comprehensive patterns, standards, and techniques for writing safe, portable, and maintainable shell scripts for automation, CI/CD pipelines, and system utilities.
Use this skill when writing new bash scripts or improving existing ones to follow defensive programming principles.
Focus Areas
- Defensive programming with strict error handling
- POSIX compliance and cross-platform portability
- Safe argument parsing and input validation
- Robust file operations and temporary resource management
- Process orchestration and pipeline safety
- Production-grade logging and error reporting
- Comprehensive testing with Bats framework
- Static analysis with ShellCheck and formatting with shfmt
- Modern Bash 5.x features and best practices
- CI/CD integration and automation workflows
Core Approach
Essential defensive programming patterns (see patterns-and-conventions.md for complete details):
- Strict mode: Always use
set -Eeuo pipefail with error trapping
- Quote variables: Prevent word splitting and globbing issues
- Safe iteration: Use proper arrays, avoid
for f in $(ls)
- Conditionals: Use
[[ ]] for Bash, [ ] for POSIX
- Temp files: Create safely with
mktemp and cleanup traps
- Output: Prefer
printf over echo for reliability
- Input validation: Check required variables with
: "${VAR:?message}"
- Safe operations: End option parsing with
--, use rm -rf -- "$dir"
- NUL-safe patterns: Use
find -print0 | while IFS= read -r -d '' for filenames
- Logging: Implement structured logging with configurable verbosity
- Idempotency: Design scripts to be repeatable and support dry-run modes
Quality Checklist
- Scripts pass ShellCheck static analysis with minimal suppressions
- Code is formatted consistently with shfmt using standard options
- Comprehensive test coverage with Bats including edge cases
- All variable expansions are properly quoted
- Error handling covers all failure modes with meaningful messages
- Temporary resources are cleaned up properly with EXIT traps
- Scripts support
--help and provide clear usage information
- Input validation prevents injection attacks and handles edge cases
- Scripts are portable across target platforms (Linux, macOS)
- Performance is adequate for expected workloads and data sizes
Output
Production-ready deliverables:
- Bash scripts with defensive programming practices
- Test suites using bats-core or shellspec with TAP output
- CI/CD pipeline configurations for automated testing
- Documentation (shdoc markdown, shellman man pages)
- Static analysis configuration (.shellcheckrc, .shfmt.toml)
- Security review with SAST and secrets scanning
- Structured logging and observability
Where to Find What
- Getting started: Review Focus Areas and Core Approach above
- Defensive patterns: patterns-and-conventions.md - Strict mode, quoting, code style
- Security: safety-and-security.md - Input validation, secure file ops, hardening
- Cross-platform: portability-and-compatibility.md - Platform detection, Bash versions
- CI/CD setup: documentation-and-ci-cd.md - GitHub Actions, pre-commit hooks
- Performance: performance-and-optimization.md - Profiling, logging, optimization
- Advanced patterns: advanced-techniques.md - Complex patterns, dependencies, pitfalls
- Tools: tools-and-frameworks.md - ShellCheck, bats-core, external resources
1---2name: bash-scripting-23description: Master of defensive Bash scripting for production automation, CI/CD pipelines, and system utilities. Expert in safe, portable, and testable shell scripts. Use when writing, creating, authoring, generating, or developing bash scripts, shell scripts, or automation. Also triggers for learning bash best practices, understanding defensive programming patterns, implementing error handling, ensuring portability, following shellcheck recommendations, or applying production-grade bash standards. Helps with CI/CD scripts, system utilities, deployment automation, and production bash code.4---5
6## Reference Files
7
8Deep-dive guides for specific topics:
9
10- [patterns-and-conventions.md](patterns-and-conventions.md) - Defensive programming patterns, strict mode, and code style
11- [safety-and-security.md](safety-and-security.md) - Security patterns, input validation, and hardening
12- [portability-and-compatibility.md](portability-and-compatibility.md) - Cross-platform compatibility and Bash version features
13- [documentation-and-ci-cd.md](documentation-and-ci-cd.md) - Documentation standards and CI/CD integration
14- [performance-and-optimization.md](performance-and-optimization.md) - Optimization techniques and profiling
15- [advanced-techniques.md](advanced-techniques.md) - Advanced patterns, dependencies, and common pitfalls
16- [tools-and-frameworks.md](tools-and-frameworks.md) - Essential tools, testing frameworks, and external resources
17
18---
19
20# Bash Scripting
21
22Master guide for defensive Bash scripting following production-grade best practices. This skill provides comprehensive patterns, standards, and techniques for writing safe, portable, and maintainable shell scripts for automation, CI/CD pipelines, and system utilities.
23
24Use this skill when writing new bash scripts or improving existing ones to follow defensive programming principles.
25
26## Focus Areas
27
28- Defensive programming with strict error handling
29- POSIX compliance and cross-platform portability
30- Safe argument parsing and input validation
31- Robust file operations and temporary resource management
32- Process orchestration and pipeline safety
33- Production-grade logging and error reporting
34- Comprehensive testing with Bats framework
35- Static analysis with ShellCheck and formatting with shfmt
36- Modern Bash 5.x features and best practices
37- CI/CD integration and automation workflows
38
39## Core Approach
40
41Essential defensive programming patterns (see [patterns-and-conventions.md](patterns-and-conventions.md) for complete details):
42
43- **Strict mode**: Always use `set -Eeuo pipefail` with error trapping
44- **Quote variables**: Prevent word splitting and globbing issues
45- **Safe iteration**: Use proper arrays, avoid `for f in $(ls)`
46- **Conditionals**: Use `[[ ]]` for Bash, `[ ]` for POSIX
47- **Temp files**: Create safely with `mktemp` and cleanup traps
48- **Output**: Prefer `printf` over `echo` for reliability
49- **Input validation**: Check required variables with `: "${VAR:?message}"`
50- **Safe operations**: End option parsing with `--`, use `rm -rf -- "$dir"`
51- **NUL-safe patterns**: Use `find -print0 | while IFS= read -r -d ''` for filenames
52- **Logging**: Implement structured logging with configurable verbosity
53- **Idempotency**: Design scripts to be repeatable and support dry-run modes
54
55## Quality Checklist
56
57- Scripts pass ShellCheck static analysis with minimal suppressions
58- Code is formatted consistently with shfmt using standard options
59- Comprehensive test coverage with Bats including edge cases
60- All variable expansions are properly quoted
61- Error handling covers all failure modes with meaningful messages
62- Temporary resources are cleaned up properly with EXIT traps
63- Scripts support `--help` and provide clear usage information
64- Input validation prevents injection attacks and handles edge cases
65- Scripts are portable across target platforms (Linux, macOS)
66- Performance is adequate for expected workloads and data sizes
67
68## Output
69
70Production-ready deliverables:
71
72- Bash scripts with defensive programming practices
73- Test suites using bats-core or shellspec with TAP output
74- CI/CD pipeline configurations for automated testing
75- Documentation (shdoc markdown, shellman man pages)
76- Static analysis configuration (.shellcheckrc, .shfmt.toml)
77- Security review with SAST and secrets scanning
78- Structured logging and observability
79
80## Where to Find What
81
82- **Getting started**: Review Focus Areas and Core Approach above
83- **Defensive patterns**: [patterns-and-conventions.md](patterns-and-conventions.md) - Strict mode, quoting, code style
84- **Security**: [safety-and-security.md](safety-and-security.md) - Input validation, secure file ops, hardening
85- **Cross-platform**: [portability-and-compatibility.md](portability-and-compatibility.md) - Platform detection, Bash versions
86- **CI/CD setup**: [documentation-and-ci-cd.md](documentation-and-ci-cd.md) - GitHub Actions, pre-commit hooks
87- **Performance**: [performance-and-optimization.md](performance-and-optimization.md) - Profiling, logging, optimization
88- **Advanced patterns**: [advanced-techniques.md](advanced-techniques.md) - Complex patterns, dependencies, pitfalls
89- **Tools**: [tools-and-frameworks.md](tools-and-frameworks.md) - ShellCheck, bats-core, external resources