Files
nanobot-runtime/skills/bash/SKILL.md
2026-06-10 06:39:52 +02:00

1.5 KiB

name, description
name description
bash Bash / shell script conventions and tooling. Use for anything involving shell scripts.

Bash Script Conventions

Shebang and Strict Mode

  • #!/usr/bin/env bash for portability.
  • set -euo pipefail on the line after shebang (separated by a blank line).
  • Hooks that check exit codes intentionally may omit set -e.

Functions

  • Declare local variables with local; never leak into global scope.
  • Use readonly for values that must not change.
  • Return data via stdout; capture with $(fn). Do not use global variables for return values.

Variables and Conditionals

  • Always double-quote expansions and command substitutions: "$var", "${var}", "$(cmd)", "$@".
  • Use ${var:-default} for defaults, ${var:?error msg} for required values.
  • Use arrays for lists of values — do not split strings with IFS.
  • Use [[ ]] instead of [ ].
  • Check command existence with command -v cmd &> /dev/null, not which.

Output and Exit Codes

  • Diagnostic/error messages go to stderr: echo "error: ..." >&2.
  • Hook scripts use exit 0 (pass) and exit 2 (block). Do not use exit 1.

Files and Paths

  • Resolve script directory: script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)".
  • Temporary files: tmp=$(mktemp) with cleanup via trap 'rm -f "$tmp"' SIGINT SIGTERM ERR EXIT.

ShellCheck

  • All scripts must pass shellcheck.
  • To suppress a check: # shellcheck disable=SCxxxx with a comment explaining why.