Bash Pro
promovaweb/setupvibe
Master of defensive Bash scripting for production automation, CI/CD pipelines, and system utilities.
Write robust, portable shell scripts with proper error handling, argument parsing, and testing.
$ npx skills add ancoleman/ai-design-components --skill shell-scripting -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ancoleman/ai-design-components shell-scripting --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/shell-scripting .claude/skills/shell-scripting && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "shell-scripting" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/shell-scripting into .claude/skills/shell-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shell-scripting", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ancoleman/ai-design-components/tree/main/skills/shell-scriptingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ancoleman/ai-design-components --skill shell-scripting -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ancoleman/ai-design-components shell-scripting --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/shell-scripting .agents/skills/shell-scripting && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "shell-scripting" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/shell-scripting into .agents/skills/shell-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shell-scripting", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ancoleman/ai-design-components --skill shell-scripting -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ancoleman/ai-design-components shell-scripting --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/shell-scripting .cursor/skills/shell-scripting && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "shell-scripting" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/shell-scripting into .cursor/skills/shell-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shell-scripting", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ancoleman/ai-design-components.git --path skills/shell-scripting--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ancoleman/ai-design-components --skill shell-scripting -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ancoleman/ai-design-components shell-scripting --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/shell-scripting .gemini/skills/shell-scripting && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "shell-scripting" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/shell-scripting into .gemini/skills/shell-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shell-scripting", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ancoleman/ai-design-components shell-scriptingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ancoleman/ai-design-components --skill shell-scripting -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/shell-scripting .github/skills/shell-scripting && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "shell-scripting" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/shell-scripting into .github/skills/shell-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shell-scripting", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ancoleman/ai-design-components --skill shell-scripting -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ancoleman/ai-design-components shell-scripting --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/shell-scripting .opencode/skills/shell-scripting && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "shell-scripting" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/shell-scripting into .opencode/skills/shell-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shell-scripting", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
shell-scriptingWrite robust, portable shell scripts with proper error handling, argument parsing, and testing.
Shell Scripting is an agent skill from ancoleman/ai-design-components. Write robust, portable shell scripts with proper error handling, argument parsing, and testing. Use when automating system tasks, building CI/CD scripts, or creating container entrypoints.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including scripts and reference files (for example `examples/error-handling.sh`, `examples/getopts-advanced.sh` and `examples/getopts-basic.sh`).
It sits in Development, covering Shell scripting and CI/CD. It works with Bash. The repository describes itself as: Comprehensive UI/UX and Backend component design skills for AI-assisted development with Claude. The licence is MIT.
Read from SKILL.md and the folder at commit 76551b7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
jqyqshellcheckcurlbrewapt-getFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Shell Scripting loads about 2.2k tokens when it runs, and up to ~23k if it reads all its reference files. Until then it costs about 51 tokens; SKILL.md has 455 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ancoleman/ai-design-components at commit 76551b7, republished under its MIT licence (© ancoleman). 455 words, ~2,170 tokens.
.claude/skills/shell-scripting/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Provides patterns and best practices for writing maintainable shell scripts with error handling, argument parsing, and portability considerations. Covers POSIX sh vs Bash decision-making, parameter expansion, integration with common utilities (jq, yq, awk), and testing with ShellCheck and Bats.
Use shell scripting when:
Consider Python/Go instead when:
Use POSIX sh (#!/bin/sh) when:
Use Bash (#!/bin/bash) when:
<(cmd) usefulFor detailed comparison and testing strategies, see references/portability-guide.md.
#!/bin/bash
set -euo pipefail
# -e: Exit on error
# -u: Exit on undefined variable
# -o pipefail: Pipeline fails if any command failsUse for production automation, CI/CD scripts, and critical operations.
#!/bin/bash
if ! command_that_might_fail; then
echo "Error: Command failed" >&2
exit 1
fiUse for custom error messages and interactive scripts.
#!/bin/bash
set -euo pipefail
TEMP_FILE=$(mktemp)
cleanup() {
rm -f "$TEMP_FILE"
}
trap cleanup EXITUse for guaranteed cleanup of temporary files, locks, and resources.
For comprehensive error patterns, see references/error-handling.md.
#!/bin/bash
while getopts "hvf:o:" opt; do
case "$opt" in
h) usage ;;
v) VERBOSE=true ;;
f) INPUT_FILE="$OPTARG" ;;
o) OUTPUT_FILE="$OPTARG" ;;
*) usage ;;
esac
done
shift $((OPTIND - 1))#!/bin/bash
while [[ $# -gt 0 ]]; do
case "$1" in
--help) usage ;;
--verbose) VERBOSE=true; shift ;;
--file) INPUT_FILE="$2"; shift 2 ;;
--file=*) INPUT_FILE="${1#*=}"; shift ;;
*) break ;;
esac
doneFor hybrid approaches and validation patterns, see references/argument-parsing.md.
# Default values
${var:-default} # Use default if unset
${var:=default} # Assign default if unset
: "${API_KEY:?Error: required}" # Error if unset
# String manipulation
${#var} # String length
${var:offset:length} # Substring
${var%.txt} # Remove suffix
${var##*/} # Basename
${var/old/new} # Replace first
${var//old/new} # Replace all
# Case conversion (Bash 4+)
${var^^} # Uppercase
${var,,} # LowercaseFor complete expansion patterns and array handling, see references/parameter-expansion.md.
# Extract field
name=$(curl -sSL https://api.example.com/user | jq -r '.name')
# Filter array
active=$(jq '.users[] | select(.active) | .name' data.json)
# Check existence
if ! echo "$json" | jq -e '.field' >/dev/null; then
echo "Error: Field missing" >&2
fi# Read value (yq v4)
host=$(yq eval '.database.host' config.yaml)
# Update in-place
yq eval '.port = 5432' -i config.yaml
# Convert to JSON
yq eval -o=json config.yaml# awk: Extract columns
awk -F',' '{print $1, $3}' data.csv
# sed: Replace text
sed 's/old/new/g' file.txt
# grep: Pattern match
grep -E "ERROR|WARN" logfile.txtFor detailed examples and best practices, see references/common-utilities.md.
# Check script
shellcheck script.sh
# POSIX compliance
shellcheck --shell=sh script.sh
# Exclude warnings
shellcheck --exclude=SC2086 script.sh#!/usr/bin/env bats
@test "script runs successfully" {
run ./script.sh --help
[ "$status" -eq 0 ]
[ "${lines[0]}" = "Usage: script.sh [OPTIONS]" ]
}
@test "handles missing argument" {
run ./script.sh
[ "$status" -eq 1 ]
[[ "$output" =~ "Error" ]]
}Run tests:
bats test/For CI/CD integration and debugging techniques, see references/testing-guide.md.
#!/bin/bash
set -euo pipefail
# Check required commands
command -v jq >/dev/null 2>&1 || {
echo "Error: jq required" >&2
exit 1
}
# Check environment variables
: "${API_KEY:?Error: API_KEY required}"
# Check files
[ -f "$CONFIG_FILE" ] || {
echo "Error: Config not found: $CONFIG_FILE" >&2
exit 1
}
# Quote all variables
echo "Processing: $file" # ❌ Unquoted
echo "Processing: \"$file\"" # ✅ Quoted# sed in-place
sed -i '' 's/old/new/g' file.txt # macOS
sed -i 's/old/new/g' file.txt # Linux
# Portable: Use temp file
sed 's/old/new/g' file.txt > file.txt.tmp
mv file.txt.tmp file.txt
# readlink
readlink -f /path # Linux only
cd "$(dirname "$0")" && pwd # PortableFor complete platform differences, see references/portability-guide.md.
System Administration: Cron jobs, log rotation, backup automation Build/Deployment: CI/CD pipelines, Docker builds, deployments Development Tooling: Project setup, test runners, code generators Container Entrypoints: Initialization, signal handling, configuration
#!/bin/bash
set -euo pipefail
readonly SCRIPT_NAME="$(basename "$0")"
readonly SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
TEMP_DIR=""
cleanup() {
local exit_code=$?
rm -rf "$TEMP_DIR"
exit "$exit_code"
}
trap cleanup EXIT
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" >&2
}
main() {
# Check dependencies
command -v jq >/dev/null 2>&1 || exit 1
# Parse arguments
# Validate input
# Process
# Report results
log "Completed successfully"
}
main "$@"For complete production template, see examples/production-template.sh.
Core Tools:
Installation:
# macOS
brew install jq yq shellcheck bats-core
# Ubuntu/Debian
apt-get install jq shellcheckReference Files:
references/error-handling.md - Comprehensive error patternsreferences/argument-parsing.md - Advanced parsing techniquesreferences/parameter-expansion.md - Complete expansion referencereferences/portability-guide.md - POSIX vs Bash differencesreferences/testing-guide.md - ShellCheck and Bats guidereferences/common-utilities.md - jq, yq, awk, sed usageExample Scripts:
examples/production-template.sh - Production-ready templateexamples/getopts-basic.sh - Simple getopts usageexamples/getopts-advanced.sh - Complex option handlingexamples/long-options.sh - Manual long option parsingexamples/error-handling.sh - Error handling patternsexamples/json-yaml-processing.sh - jq/yq examplesUtility Scripts:
scripts/lint-script.sh - ShellCheck wrapper for CIscripts/test-script.sh - Bats wrapper for CI© ancoleman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files (scripts, references) in skills/shell-scripting of ancoleman/ai-design-components.
Open the folder on GitHubat commit 76551b7
Shell Scripting next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Shell Scripting this skillancoleman/ai-design-components | 526 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Bash Propromovaweb/setupvibe | 101 | 9 repos | ~4.7k | Automated safety check: Pass | GPL-3.0 | |
| Shellpproenca/dot-skills | 214 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Bash Defensive Patternspromovaweb/setupvibe | 101 | 13 repos | ~572 | Automated safety check: Pass | GPL-3.0 | |
| ShellCheck Configurationwshobson/agents | 40k | 10 repos | ~403 | Automated safety check: Pass | MIT | |
| Bats Shell Testing Patternswshobson/agents | 40k | 11 repos | ~1.3k | Automated safety check: Pass | MIT |
promovaweb/setupvibe
Master of defensive Bash scripting for production automation, CI/CD pipelines, and system utilities.
pproenca/dot-skills
Shell scripting best practices for writing safe, portable, and maintainable bash/sh scripts.
promovaweb/setupvibe
Master defensive Bash programming techniques for production-grade scripts.
wshobson/agents
Master ShellCheck static analysis configuration and usage for shell script quality. Use when setting up linting infrastructure, fixing code issues, or…
wshobson/agents
Writes unit tests for shell scripts with Bats: error-condition tests, fixtures and mocks, cross-shell checks, parallel runs, helper files and CI integration.
XiaomiMiMo/MiMo-Code
Runs OpenAI Codex CLI as a non-interactive worker for CI, Docker, Kubernetes or remote servers, with sandbox modes and JSONL-friendly output.
ancoleman/ai-design-components
Builds AI chat interfaces and conversational UI with streaming responses, context management, and multi-modal support.
ancoleman/ai-design-components
Builds form components and data collection interfaces including contact forms, registration flows, checkout processes, surveys, and settings pages.
ancoleman/ai-design-components
Builds tables and data grids for displaying tabular information, from simple HTML tables to complex enterprise data grids.
ancoleman/ai-design-components
Creates comprehensive dashboard and analytics interfaces that combine data visualization, KPI cards, real-time updates, and interactive layouts.
ancoleman/ai-design-components
Designs layout systems and responsive interfaces including grid systems, flexbox patterns, sidebar layouts, and responsive breakpoints.
ancoleman/ai-design-components
Displays chronological events and activity through timelines, activity feeds, Gantt charts, and calendar interfaces.
Works with
Categories
Write robust, portable shell scripts with proper error handling, argument parsing, and testing. Shell Scripting is an agent skill from ancoleman/ai-design-components. Write robust, portable shell scripts with proper error handling, argument parsing, and testing.
Shell Scripting fits situations like: automating system tasks; building CI/CD scripts; creating container entrypoints.
Run `npx skills add ancoleman/ai-design-components --skill shell-scripting -a claude-code`. Or copy the skill folder (skills/shell-scripting in ancoleman/ai-design-components) into .claude/skills/shell-scripting in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ancoleman/ai-design-components --skill shell-scripting -a codex`. Or copy the skill folder (skills/shell-scripting in ancoleman/ai-design-components) into .agents/skills/shell-scripting in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ancoleman/ai-design-components --skill shell-scripting -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/shell-scripting, .gemini/skills/shell-scripting, .github/skills/shell-scripting and .opencode/skills/shell-scripting in your project.
Going by SKILL.md and its folder, Shell Scripting needs a shell for the scripts in its folder, the command-line tools its instructions call (jq, yq, shellcheck, curl, brew and apt-get) and credentials named API_KEY. Our summary lists: A Bash shell; Docker; A credential in API_KEY.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Shell Scripting is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 21k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Shell Scripting: Bash Pro (promovaweb/setupvibe, 101 stars), Shell (pproenca/dot-skills, 214 stars), Bash Defensive Patterns (promovaweb/setupvibe, 101 stars) and ShellCheck Configuration (wshobson/agents, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ancoleman (a GitHub user) maintains it in ancoleman/ai-design-components, which has 526 GitHub stars. The repository holds 75 skills in this directory. The repository was last updated on December 11, 2025.
Source: ancoleman/ai-design-components on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.