피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Bash 기반 Lifecycle Hook을 활용한 Claude Code 맞춤형 Skin 시스템 구축
I Built a Skin System for Claude Code — Here's How It Works
AI 요약
Context
모든 사용자가 동일한 터미널 환경을 사용하는 Claude Code의 UI 단조로움을 해결하기 위해 시각적 요소와 페르소나를 변경하는 커스터마이징 시스템 필요성 대두. 런타임 의존성을 최소화하면서 터미널 제어 시퀀스와 LLM 출력 스타일을 동시에 제어하는 경량 아키텍처 설계가 요구됨.
Technical Solution
- Bash 기반 Engine 설계를 통한 Node.js 및 Python 등 무거운 런타임 의존성 제거 및 PyYAML을 이용한 초기 설정 파싱 구현
- Claude Code의 SessionStart, SessionEnd, PostToolUse Lifecycle Hook을 활용하여 테마 활성화/비활성화 및 툴 실행 후 트리거 자동화
- OSC Escape Sequence를 /dev/tty에 직접 기록하여 stdout 캡처를 우회하고 터미널 에뮬레이터의 Background, Foreground, Cursor 색상을 즉각 변경
- ~/.claude/output-styles/ 경로에 Markdown 파일을 Symlink로 연결하여 LLM의 응답 스타일(Personality Voice)을 동적으로 주입
- keep-coding-instructions: true 설정을 통해 Core Engineering 동작을 유지하면서 페르소나 레이어만 추가하는 적층형 프롬프트 구조 적용
- YAML 기반의 Fallback 메커니즘을 통해 정의되지 않은 설정값은 default.yaml에서 참조하는 효율적 구성 관리
실천 포인트
1. 터미널 UI 제어 시 stdout 캡처 우회를 위해 /dev/tty 직접 쓰기 방식 검토
2. LLM 페르소나 설정 시 기능적 손실을 막기 위한 '적층형 지시문(Stacking Instructions)' 원칙 적용
3. 외부 도구의 Lifecycle Hook을 활용한 시스템 상태 변경 및 자동화 파이프라인 설계