Trap Handler Generator

SkillDev tools

Generate trap handlers for cleanup, signal handling, and graceful shutdown in shell scripts.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Trap Handler Generator skill

What this skill tells your AI

The instructions your AI receives, as published by a5c-ai/babysitter in library/specializations/cli-mcp-development/skills/trap-handler-generator/SKILL.md and read by ahel’s review.

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

Signals

GitHub stars
2k
Forks
112
Last commit
Sep 2026
Advanced
Item type
skill
Key
trap-handler-generator
Source
github.com/a5c-ai/babysitter