Skip to content
Back to skills

Bash Script Template

ASecurity

Generate bash script templates with best practices including error handling, argument parsing, logging, and portability considerations.

  • 1,760 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 2, 2026
ai-agentsshellbashbackend

Works with

  • terminal
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 2, 2026

npx -y skills add a5c-ai/babysitter --skill bash-script-template --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bash Script Template?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bash Script Template
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/a5c-ai-bash-script-template-babysitter/badge)](https://www.skillsdirectory.com/skills/a5c-ai-bash-script-template-babysitter)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bash-script-template
description: Generate bash script templates with best practices including error handling, argument parsing, logging, and portability considerations.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
graph:
  domains: [domain:software-engineering]
  specializations: [specialization:cli-mcp-development]
  skillAreas: [skill-area:cli-design, skill-area:command-line-interface-tools]
  roles: [role:backend-engineer, role:platform-engineer]
  workflows: [workflow:feature-development]
  topics: [topic:developer-experience]

---

# Bash Script Template

Generate bash script templates with best practices.

## Capabilities

- Generate robust bash script templates
- Set up proper error handling
- Implement argument parsing with getopts
- Create logging utilities
- Configure strict mode settings
- Generate reusable function libraries

## Usage

Invoke this skill when you need to:
- Create new bash scripts with best practices
- Set up proper error handling patterns
- Implement argument parsing
- Create portable shell scripts

## Inputs

| 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 |

## Generated Template

```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 "$@"
```

## Target Processes

- shell-script-development
- cross-platform-cli-compatibility
- cli-application-bootstrap

Files in this skill

  • README.md801 B
  • SKILL.md4.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…