developing-bash-scripts skill¶
Step 1 - Classify the Script¶
Audit flags before classifying. Ask for each proposed flag: would a real caller ever pass a different value, or can it be a readonly constant? Beyond that, apply common sense - not everything that could vary should be a flag. Internal paths, fixed timeouts, log levels for non-CLI tools, and similar values are typically hardcoded in practice even if they could theoretically differ. When reviewing an existing script, re-classify from scratch; the current number of flags is not evidence of correct classification.
Simple - all of: < 50 lines of logic, 0-2 genuine flags, no structured logging, no --help, no resource cleanup, not shared across systems/environments.
Complex - any of: >= 50 lines, 3+ genuine flags, structured logging, --help, resource cleanup, shared across systems/environments.
When in doubt, prefer Simple.
If the result is Simple and the script uses no Bash-specific features ([[ ]], arrays, process substitution, here-strings, etc.), use #!/bin/sh and follow the developing-posix-shell-scripts skill instead.
Step 2 - Follow the Reference Document¶
Load references/common.md first, then load the matching document:
- references/developing-simple-bash-scripts.md - Load this when classified as Simple.
- references/developing-complex-bash-scripts.md - Load this when classified as Complex. Also load references/reference-code-blocks.md to compose only the blocks the script actually needs.