Community코딩 & 개발github.com

Jamie-BitFlight/bash-logging

사용자가 'bash 스크립트에 로깅 추가', '출력 컬러화', '로그 레벨 구현', 'CI/CD 섹션', 'bash에서 터미널 색상' 또는 로깅 함수, 이모지 출력, 접을 수 있는 CI 섹션, shlocksmith 등을 언급할 때 사용해야 하는 스킬입니다.

bash-logging란 무엇인가요?

이 스킬은 bash 스크립트에 구조화된 로깅 패턴을 추가할 수 있도록 도와줍니다. 컬러 지원, 이모지 아이콘, CI/CD 통합 기능을 제공하며, 사용자가 요청할 때 자동으로 적용됩니다. 지원하는 플랫폼으로는 GitLab CI, GitHub Actions 등이 있으며, TTY 감지를 통해 비대화형 환경에서 색상을 비활성화할 수 있습니다. 기본 로깅 함수(print_success, print_error 등)뿐만 아니라, 로그 레벨 설정, 접을 수 있는 CI 섹션, 진행 표시기, 구조화된 단계 로깅을 제공합니다. 또한 shlocksmith 로깅 라이브러리를 통해 20개 이상의 로그 레벨 함수, 단계 기반 로깅, 박스 드로잉 문자 등을 지원하여 복잡한 CI/CD 파이프라인에서도 강력한 로깅을 구현할 수 있습니다. 주로 bash 스크립트를 작성하는 개발자나 DevOps 엔지니어가 CI/CD 환경에서 스크립트 동작을 시각적으로 추적하고 디버깅할 때 유용합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jamie-BitFlight/claude_skills/tree/main/plugins/bash-development/skills/bash-logging

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Bash 로깅

컬러 지원, 이모지 아이콘 및 CI/CD 통합을 포함한 bash 스크립트용 구조화된 로깅 패턴입니다.

기본 로깅 함수

간단하고 이식 가능한 로깅 구현:

# 색상 정의
declare -A colors=(
    [green]=$'\033[0;32m'
    [red]=$'\033[0;31m'
    [yellow]=$'\033[1;33m'
    [blue]=$'\033[0;34m'
    [reset]=$'\033[0m'
)

declare -A emojis=(
    [success]='✅'
    [error]='❌'
    [warning]='⚠️'
    [info]='ℹ️'
    [debug]='🐛'
)

# 로깅 함수
print_success() {
    printf '%b %b%b%b\n' "${emojis[success]}" "${colors[green]}" "$*" "${colors[reset]}"
}

print_error() {
    printf '%b %b%b%b\n' "${emojis[error]}" "${colors[red]}" "$*" "${colors[reset]}" >&2
}

print_warning() {
    printf '%b %b%b%b\n' "${emojis[warning]}" "${colors[yellow]}" "$*" "${colors[reset]}"
}

print_info() {
    printf '%b %b\n' "${emojis[info]}" "$*"
}

print_debug() {
    [[ -n "${DEBUG:-}" ]] && printf '%b %b%b%b\n' "${emojis[debug]}" "${colors[blue]}" "$*" "${colors[reset]}"
}

로그 레벨

설정 가능한 로그 레벨을 구현합니다.

코드 예제

TTY 감지

비대화형 환경에서 색상을 비활성화:

setup_colors() {
    if [[ -t 1 ]] && [[ -z "${NO_COLOR:-}" ]]; then
        # 터미널이 색상 지원
        COLOR_RED=$'\033[0;31m'
        COLOR_GREEN=$'\033[0;32m'
        COLOR_YELLOW=$'\033[1;33m'
        COLOR_BLUE=$'\033[0;34m'
        COLOR_RESET=$'\033[0m'
    else
        # 색상 미지원
        COLOR_RED=''
        COLOR_GREEN=''
        COLOR_YELLOW=''
        COLOR_BLUE=''
        COLOR_RESET=''
    fi
}

# CI 환경은 종종 색상을 지원합니다.
detect_color_support() {
    if [[ -n "${CI:-}" ]] || [[ -n "${GITLAB_CI:-}" ]] || [[ -n "${GITHUB_ACTIONS:-}" ]]; then
        return 0  # CI 환경, 색상 활성화
    elif [[ -t 1 ]]; then
        return 0  # 터미널, 색상 활성화
    else
        return 1  # 색상 미지원
    fi
}

GitLab CI 접을 수 있는 섹션

GitLab CI에서 접을 수 있는 로그 섹션 생성:

section_start() {
    local section_key="\${1:-section}"
    local section_header="\${2:-$section_key}"
    local collapsed="\${3:-true}"

    if [[ -n "${GITLAB_CI:-}" ]]; then
        printf "\e[0Ksection_start:%s:%s[collapsed=%s]\r\e[0K%s\n" \
            "$(date +%s)" "$section_key" "$collapsed" "$section_header"
    else
        printf '\n=== %s ===\n' "$section_header"
    fi
}

section_end() {
    local section_key="\${1:-section}"

    if [[ -n "${GITLAB_CI:-}" ]]; then
        printf "\e[0Ksection_end:%s:%s\r\e[0K" "$(date +%s)" "$section_key"
    else
        printf '\n'
    fi
}

# 사용법
section_start "build" "애플리케이션 빌드"
make build
section_end "build"

GitHub Actions 그룹화

코드 예제

진행 표시기

코드 예제

구조화된 단계 로깅

코드 예제

Shlocksmith 로깅 라이브러리

완전한 CI 통합을 위한 포괄적인 로깅을 원한다면 shlocksmith 로깅 라이브러리를 사용하십시오.

기능

  • 20개 이상의 로그 레벨 함수 (log_info, log_error, log_warning 등)
  • 단계 기반 로깅 (log_step_start, log_step_pass, log_step_fail)
  • TTY 감지를 통한 색상 및 이모지 지원
  • GitLab CI 섹션 관리
  • TUI용 박스 드로잉 문자
  • 키-값 쌍 포맷팅

사용 가능한 함수

# 기본 로깅
log_info "정보 메시지"
log_warning "경고 메시지"
log_error "오류 메시지"
log_debug "디버그 메시지"  # DEBUG가 설정된 경우에만 표시
log_notice "알림 메시지"
log_fatal "치명적 오류"    # 스크립트 종료

# 단계 기반 로깅
log_start "프로세스 이름"
log_step_start "단계 설명"
log_step_pass "성공 메시지"
log_step_fail "실패 메시지"
log_step_skip "건너뜀 메시지"
log_step_done "완료 메시지"
log_done "프로세스 완료"

# 결과
log_pass "테스트 통과"
log_fail "테스트 실패"
log_result "결과 상세"
log_success "성공 메시지"

# CI 섹션
section_start "section_id" "섹션 제목"
section_end "section_id"

사용법

#!/usr/bin/env bash
source /path/to/log_functions.sh

log_start "배포 프로세스"

section_start "deps" "의존성 설치"
log_step_start "패키지 설치 중"
if apt-get install -y package; then
    log_step_pass "패키지 설치 완료"
else
    log_step_fail "패키지 설치 실패"
fi
section_end "deps"

log_done "배포 완료"

추가 리소스

스크립트

색상 참조

코드색상
\033[0;30m검정
\033[0;31m빨강
\033[0;32m초록
\033[0;33m노랑
\033[0;34m파랑
\033[0;35m자주
\033[0;36m청록
\033[0;37m흰색
\033[1;XXm굵은 변형
\033[0m초기화

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Jamie-BitFlight/agentskill-kaizen-meta-docs

Agentskill kaizen plugin documentation index. Load when needing to read about cross-platform notes, improvement plans, or DuckDB integration.

Jamie-BitFlight/bash-51-features

Bash 5.1 release features and improvements with practical examples. Use when working with Bash 5.1 features, epoch time variables, redirection enhancements, or when user asks about Bash 5.1 changes, new features, or version-specific capabilities.

Jamie-BitFlight/bash-52-features

Bash 5.2 release features and improvements with practical examples. Use when working with Bash 5.2 features, variable handling enhancements, readline improvements, or when user asks about Bash 5.2 changes, new features, or version-specific capabilities.

Jamie-BitFlight/bash-53-features

Bash 5.3 release features and improvements with practical examples. Use when working with Bash 5.3 features, new command substitution, GLOBSORT, loadable builtins, or when user asks about Bash 5.3 changes, new features, or version-specific capabilities.

Jamie-BitFlight/bash-development

This skill should be used when the user asks to "write a bash script", "create a shell script", "implement bash function", "parse arguments in bash", "handle errors in bash", or mentions bash development, shell scripting, script templates, or modern bash patterns.

Jamie-BitFlight/bash-lint

This skill should be used when the user asks to "lint bash script", "run shellcheck", "format shell script", "use shfmt", "fix shellcheck errors", or mentions shell script linting, formatting, code quality, or pre-commit hooks for bash.

Jamie-BitFlight/bash-portability

This skill should be used when the user asks about "POSIX compatibility", "portable shell scripts", "cross-shell compatibility", "bashisms", "shebang selection", or mentions writing scripts that work on different shells (bash, sh, dash, zsh) or different systems.

Jamie-BitFlight/bash-testing

This skill should be used when the user asks to "test bash script", "write shell tests", "use shunit2", "use shellspec", "create test suite for bash", or mentions unit testing, test frameworks, mocking, or test-driven development for shell scripts.

Jamie-BitFlight/brainstorming-skill

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or when users request help with ideation, marketing, and strategic planning. Explores user intent, requirements, and design before implementation using research-validated prompt patterns.

Jamie-BitFlight/clang-format

Configure clang-format code formatting. Use when: user mentions clang-format or .clang-format, analyzing code style/patterns, creating/modifying formatting config, troubleshooting formatting, brace styles/indentation/spacing/alignment/pointer alignment, or codifying conventions.

Jamie-BitFlight/commitlint

When setting up commit message validation for a project. When project has commitlint.config.js or .commitlintrc files. When configuring CI/CD to enforce commit format. When extracting commit rules for LLM prompt generation. When debugging commit message rejection errors.

Jamie-BitFlight/conventional-commits

When writing a git commit message. When task completes and changes need committing. When project uses semantic-release, commitizen, git-cliff. When choosing between feat/fix/chore/docs types. When indicating breaking changes. When generating changelogs from commit history.

Jamie-BitFlight/dasel-reference

Use when querying, modifying, or converting JSON, YAML, TOML, XML, CSV, HCL, or INI with dasel v3. Complete reference for selectors, functions, conditionals, variables, spread operator, type casting, and format-specific patterns.

Jamie-BitFlight/data-exploration

Use when exploring unknown structured data files with dasel v3 — discover schema, list keys, find nested values, sample arrays, identify data types across JSON, YAML, TOML, XML, CSV, HCL, INI formats

Jamie-BitFlight/data-transformation

Use when modifying, converting, or transforming structured data with dasel v3 — in-place mutations, format conversion, batch operations, array manipulation, object construction, and merge patterns across JSON, YAML, TOML, XML, CSV, HCL, INI

Jamie-BitFlight/delegate

Decompose substantive work into phases, dispatch each phase to a sub-agent, and adjudicate what comes back. Use whenever a request asks for implementation, investigation, a fix, a review, or any change to files — including small ones — and whenever you are about to read source or run a diagnostic yourself instead of handing it off. Also use when a report from a sub-agent needs judging, when a phase needs re-dispatching, or when a user names one instance of a pattern. Does not apply when your own prompt begins "Your ROLE_TYPE is sub-agent." — then follow references/sub-agent-contract.md instead.

Jamie-BitFlight/enterprise-hibernate-hbm

Dasel v3 query patterns for Hibernate .hbm.xml mapping files — entity-table binding, Java property-to-column extraction, one-to-many set/list/bag relationship tracing, many-to-one foreign key discovery, batch scanning across 60+ HBM files. Use when querying Hibernate ORM class mappings, extracting schema metadata from Java persistence layer, or auditing entity-column relationships in enterprise legacy codebases.

Jamie-BitFlight/enterprise-installanywhere

Dasel v3 query patterns for InstallAnywhere .iap_xml installer definitions — use when querying action sequences, discovering variables, resolving platform conditions, navigating panels, or comparing installer variants. Files are 2.5+ MB, 65,000+ lines — too large for context reads, requires structural dasel queries.

Jamie-BitFlight/enterprise-maven-pom

Dasel v3 selector patterns for Maven POM XML files — use when querying dependency versions, filtering by groupId or scope, extracting module hierarchy from parent POMs, or detecting version conflicts across enterprise multi-module Java projects. Load this skill when working with pom.xml files using dasel.

Jamie-BitFlight/enterprise-spring-xml

Dasel v3 selectors for Spring bean factory XML — use when querying any Spring ApplicationContext XML for bean discovery, dependency wiring, JMS destination mapping, property injection extraction, or cross-bean reference tracing. Load this skill before writing dasel selectors against Spring bean XML files (applicationContext.xml, *_beans.xml, spring-*.xml).

관련 스킬