Babysitter trap-handler-generator
Generate trap handlers for cleanup, signal handling, and graceful shutdown in shell scripts.
install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/cli-mcp-development/skills/trap-handler-generator" ~/.claude/skills/a5c-ai-babysitter-trap-handler-generator && rm -rf "$T"
manifest:
library/specializations/cli-mcp-development/skills/trap-handler-generator/SKILL.mdsource content
Trap Handler Generator
Generate trap handlers for shell scripts.
Capabilities
- Generate cleanup trap handlers
- Implement signal handling
- Create graceful shutdown logic
- Set up resource cleanup
- Handle nested traps
- Generate error handlers
Generated Patterns
#!/usr/bin/env bash # Temporary resources to clean up declare -a CLEANUP_ITEMS=() CLEANUP_DONE=false # Register cleanup item register_cleanup() { CLEANUP_ITEMS+=("$1") } # Cleanup function cleanup() { if [[ "$CLEANUP_DONE" == true ]]; then return fi CLEANUP_DONE=true local exit_code=$? echo "Cleaning up..." for item in "${CLEANUP_ITEMS[@]}"; do if [[ -d "$item" ]]; then rm -rf "$item" 2>/dev/null elif [[ -f "$item" ]]; then rm -f "$item" 2>/dev/null elif [[ -n "$item" ]]; then # Command to run eval "$item" 2>/dev/null fi done return $exit_code } # Error handler on_error() { local exit_code=$? local line_no=$1 echo "Error on line ${line_no}: command exited with ${exit_code}" >&2 cleanup exit $exit_code } # Signal handlers on_sigint() { echo -e "\nInterrupted by user" cleanup exit 130 } on_sigterm() { echo "Terminated" cleanup exit 143 } # Set up traps trap cleanup EXIT trap 'on_error ${LINENO}' ERR trap on_sigint INT trap on_sigterm TERM # Usage TEMP_DIR=$(mktemp -d) register_cleanup "$TEMP_DIR" TEMP_FILE=$(mktemp) register_cleanup "$TEMP_FILE" register_cleanup "docker stop mycontainer"
Target Processes
- shell-script-development
- error-handling-user-feedback
- cross-platform-cli-compatibility