Zalohovani vsech podstatnych souboru
This commit is contained in:
43
skills/bash/SKILL.md
Normal file
43
skills/bash/SKILL.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
name: bash
|
||||
description: >
|
||||
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.
|
||||
Reference in New Issue
Block a user