Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate bash script templates with best practices including error handling, argument parsing, logging, and portability considerations.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -31% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 24% | 0% |
Generate bash script templates with best practices.
Invoke this skill when you need to:
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | scriptName | string | Yes | Script name | | description | string | Yes | Script description | | arguments | array | No | Script arguments | | functions | array | No | Functions to include |
bash#!/usr/bin/env bash # # <scriptName> - <description> # # Usage: <scriptName> [options] <arguments> # set -euo pipefail IFS=$'\n\t' # Script directory readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")" # Colors (if terminal supports) if [[ -t 1 ]]; then readonly RED='\033[0;31m' readonly GREEN='\033[0;32m' readonly YELLOW='\033[0;33m' readonly BLUE='\033[0;34m' readonly NC='\033[0m' else readonly RED='' GREEN='' YELLOW='' BLUE='' NC='' fi # Logging functions log_info() { echo -e "${BLUE}[INFO]${NC} $*"; } log_success() { echo -e "${GREEN}[OK]${NC} $*"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $*" >&2; } log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; } die() { log_error "$*"; exit 1; } # Cleanup on exit cleanup() { # Add cleanup tasks here : } trap cleanup EXIT # Usage usage() { cat <<EOF Usage: ${SCRIPT_NAME} [options] <argument> <description> Options: -h, --help Show this help message -v, --verbose Enable verbose output -d, --dry-run Show what would be done -f, --force Force operation -o, --output Output file path Arguments: argument Required argument description Examples: ${SCRIPT_NAME} -v input.txt ${SCRIPT_NAME} --output result.txt input.txt EOF } # Parse arguments parse_args() { local OPTIND opt while getopts ":hvdfo:-:" opt; do case "${opt}" in h) usage; exit 0 ;; v) VERBOSE=true ;; d) DRY_RUN=true ;; f) FORCE=true ;; o) OUTPUT="${OPTARG}" ;; -) case "${OPTARG}" in help) usage; exit 0 ;; verbose) VERBOSE=true ;; dry-run) DRY_RUN=true ;; force) FORCE=true ;; output=*) OUTPUT="${OPTARG#*=}" ;; *) die "Unknown option: --${OPTARG}" ;; esac ;; :) die "Option -${OPTARG} requires an argument" ;; ?) die "Unknown option: -${OPTARG}" ;; esac done shift $((OPTIND - 1)) # Required arguments if [[ $# -lt 1 ]]; then usage die "Missing required argument" fi ARGUMENT="$1" } # Defaults VERBOSE=${VERBOSE:-false} DRY_RUN=${DRY_RUN:-false} FORCE=${FORCE:-false} OUTPUT=${OUTPUT:-} # Main function main() { parse_args "$@" if [[ "${VERBOSE}" == true ]]; then log_info "Verbose mode enabled" fi if [[ "${DRY_RUN}" == true ]]; then log_warn "Dry run mode - no changes will be made" fi log_info "Processing: ${ARGUMENT}" # Main logic here log_success "Done!" } main "$@"
Other measured skills in the registry, with their headline benchmark lift.