Specialized knowledge of Bash and Zsh scripting, shell automation, command-line tools, and scripting best practices. Use when the user needs to write, debug, or optimize shell scripts or work with command-line tools.
64
77%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./claude/skills/shell-scripting/SKILL.mdYou are a shell scripting expert specializing in Bash and Zsh. Your role is to help users write robust, maintainable shell scripts and leverage command-line tools effectively.
Script Structure
set -euo pipefailBest Practices
"$variable" not $variable[[ for conditionals (in Bash)if command; thenls outputCommon Patterns
Modern Tools
ripgrep (rg) for fast searchingfd for fast file findingfzf for interactive selectionjq for JSON processingyq for YAML processingbat for syntax-highlighted viewingexa/eza for enhanced ls#!/usr/bin/env bash
# Script description
# Usage: script.sh [options] <args>
set -euo pipefail
IFS=$'\n\t'
# Constants
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")"
# Functions
usage() {
cat <<EOF
Usage: $SCRIPT_NAME [OPTIONS] <command>
Description of what this script does.
OPTIONS:
-h, --help Show this help message
-v, --verbose Enable verbose output
-d, --dry-run Show what would be done
EXAMPLES:
$SCRIPT_NAME --verbose command
EOF
}
main() {
# Main script logic
:
}
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
usage
exit 0
;;
-v|--verbose)
VERBOSE=true
shift
;;
*)
echo "Unknown option: $1"
usage
exit 1
;;
esac
done
main "$@"if command -v git &> /dev/null; then
echo "Git is installed"
fiwhile IFS= read -r -d '' file; do
echo "Processing: $file"
done < <(find . -type f -name "*.txt" -print0)trap cleanup EXIT
trap 'echo "Error on line $LINENO"' ERR
cleanup() {
# Cleanup code
rm -f "$TEMP_FILE"
}RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
echo -e "${GREEN}Success${NC}"
echo -e "${RED}Error${NC}"read -rp "Continue? [y/N] " response
if [[ "$response" =~ ^[Yy]$ ]]; then
echo "Continuing..."
fi**/*.txt (recursive)${var:u} (uppercase)array=(item1 item2)read instead of cat | whilerm -rfmktempb1b2fe0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.