Tools: AI개인화_블로그글
나만의 AI 만들기 - 개인화 & 커스터마이징 완전 정복 (2026)
왜 AI 개인화가 필요한가?
Part 1: Web 플랫폼 개인화
Claude.ai
ChatGPT
Web 플랫폼 비교
Part 2: CLI 도구 개인화
메모리 파일 비교
Claude Code 파일 구조
Gemini CLI 파일 구조
Codex CLI 파일 구조
Part 3: Hooks 시스템
Hooks 플랫폼 비교
Claude Code Hook 이벤트 (15개)
Hook 설정 예시
실전 활용 예시
Gemini CLI Hooks
Part 4: 스킬 시스템
SKILL.md = 범용 오픈 포맷
SKILL.md 기본 구조
스킬 폴더 구조
Part 5: 스킬 변환 & 설치 도구
1. skill-porter - Claude ↔ Gemini 변환
2. openskills - 범용 스킬 설치기
3. Skill Seekers - 문서 → 멀티플랫폼 스킬
4. antigravity-awesome-skills - 1,234+ 스킬 라이브러리
스킬 마켓플레이스
메모리 파일 호환성 정리 AI가 나를 기억하고, 내 스타일로 응답하도록 설정하는 방법 총정리 AI 도구를 쓰다 보면 매번 같은 설명을 반복하게 된다. "나는 게임 프로그래머야", "TypeScript로 작성해줘", "한글로 답해줘"... 이런 것들을 매번 말하는 건 비효율적이다. 크게 Web 플랫폼(claude.ai, ChatGPT)과 CLI 도구(Claude Code, Gemini CLI, Codex CLI)로 나눌 수 있다. Hooks는 도구 실행 전/후에 자동으로 스크립트를 실행하는 이벤트 기반 자동화 시스템이다. .claude/settings.json: 1. 위험 명령 차단 (PreToolUse): 2. 자동 포맷팅 (PostToolUse): 3. 데스크톱 알림 (Notification): Anthropic이 개발 → 오픈 스탠다드로 공개 → 27+ AI 에이전트에서 채택 LMAI 5회차 스터디 자료 | 2026.03 Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse
Examples - 예시 1 - 예시 2
Guidelines - 가이드라인 1 - 가이드라인 2 --- name: my-awesome-skill description: 이 스킬이 무엇을 하는지 설명 (자동 트리거 매칭용) --- # My Awesome Skill
Instructions [AI가 따를 지침]
Examples - 예시 1 - 예시 2
Guidelines - 가이드라인 1 - 가이드라인 2 --- name: my-awesome-skill description: 이 스킬이 무엇을 하는지 설명 (자동 트리거 매칭용) --- # My Awesome Skill
Instructions [AI가 따를 지침]
Examples - 예시 1 - 예시 2
Guidelines
- 가이드라인 1
- 가이드라인 2
my-skill/
├── SKILL.md ← 메인 지침 (필수)
├── scripts/ ← 실행 스크립트
│ └── run.sh
├── references/ ← 참조 문서
│ └── api-docs.md
├── examples/ ← 예시
│ └── sample.md
├── .claude-plugin/ ← Claude 전용 (선택)
│ └── marketplace.json
└── gemini-extension.json ← Gemini 전용 (선택)
my-skill/
├── SKILL.md ← 메인 지침 (필수)
├── scripts/ ← 실행 스크립트
│ └── run.sh
├── references/ ← 참조 문서
│ └── api-docs.md
├── examples/ ← 예시
│ └── sample.md
├── .claude-plugin/ ← Claude 전용 (선택)
│ └── marketplace.json
└── gemini-extension.json ← Gemini 전용 (선택)
my-skill/
├── SKILL.md ← 메인 지침 (필수)
├── scripts/ ← 실행 스크립트
│ └── run.sh
├── references/ ← 참조 문서
│ └── api-docs.md
├── examples/ ← 예시
│ └── sample.md
├── .claude-plugin/ ← Claude 전용 (선택)
│ └── marketplace.json
└── gemini-extension.json ← Gemini 전용 (선택)
# 설치
npm install -g skill-porter # Claude → Gemini 변환
skill-porter convert ./my-skill --to gemini # Gemini → Claude 변환
skill-porter convert ./my-skill --to claude # PR까지 자동 생성
skill-porter create-pr ./my-skill --to gemini
# 설치
npm install -g skill-porter # Claude → Gemini 변환
skill-porter convert ./my-skill --to gemini # Gemini → Claude 변환
skill-porter convert ./my-skill --to claude # PR까지 자동 생성
skill-porter create-pr ./my-skill --to gemini
# 설치
npm install -g skill-porter # Claude → Gemini 변환
skill-porter convert ./my-skill --to gemini # Gemini → Claude 변환
skill-porter convert ./my-skill --to claude # PR까지 자동 생성
skill-porter create-pr ./my-skill --to gemini
# 설치
npm install -g openskills # Claude 스킬 설치
npx openskills install anthropics/skills # 범용 경로로 설치 (모든 도구 호환)
npx openskills install anthropics/skills --universal
# → .agent/skills/에 설치됨 # 글로벌 설치
npx openskills install anthropics/skills --global
# 설치
npm install -g openskills # Claude 스킬 설치
npx openskills install anthropics/skills # 범용 경로로 설치 (모든 도구 호환)
npx openskills install anthropics/skills --universal
# → .agent/skills/에 설치됨 # 글로벌 설치
npx openskills install anthropics/skills --global
# 설치
npm install -g openskills # Claude 스킬 설치
npx openskills install anthropics/skills # 범용 경로로 설치 (모든 도구 호환)
npx openskills install anthropics/skills --universal
# → .agent/skills/에 설치됨 # 글로벌 설치
npx openskills install anthropics/skills --global
# 설치
pip install skill-seekers[all-llms] # 문서에서 스킬 생성
skill-seekers create https://docs.react.dev/
skill-seekers create facebook/react # GitHub
skill-seekers create ./my-project # 로컬
skill-seekers create manual.pdf # PDF # 각 플랫폼용으로 패키징
skill-seekers package output/react --target claude # Claude 스킬
skill-seekers package output/react --target gemini # Gemini 스킬 skill-seekers package output/react --target cursor # .cursorrules
skill-seekers package output/react --target langchain # LangChain
skill-seekers package output/react --target llama-index # LlamaIndex
# 설치
pip install skill-seekers[all-llms] # 문서에서 스킬 생성
skill-seekers create https://docs.react.dev/
skill-seekers create facebook/react # GitHub
skill-seekers create ./my-project # 로컬
skill-seekers create manual.pdf # PDF # 각 플랫폼용으로 패키징
skill-seekers package output/react --target claude # Claude 스킬
skill-seekers package output/react --target gemini # Gemini 스킬 skill-seekers package output/react --target cursor # .cursorrules
skill-seekers package output/react --target langchain # LangChain
skill-seekers package output/react --target llama-index # LlamaIndex
# 설치
pip install skill-seekers[all-llms] # 문서에서 스킬 생성
skill-seekers create https://docs.react.dev/
skill-seekers create facebook/react # GitHub
skill-seekers create ./my-project # 로컬
skill-seekers create manual.pdf # PDF # 각 플랫폼용으로 패키징
skill-seekers package output/react --target claude # Claude 스킬
skill-seekers package output/react --target gemini # Gemini 스킬 skill-seekers package output/react --target cursor # .cursorrules
skill-seekers package output/react --target langchain # LangChain
skill-seekers package output/react --target llama-index # LlamaIndex
# Claude Code용 설치
npx antigravity-awesome-skills --claude # Gemini CLI용 설치
npx antigravity-awesome-skills --gemini # Codex CLI용 설치
npx antigravity-awesome-skills --codex # Cursor용 설치
npx antigravity-awesome-skills --cursor
# Claude Code용 설치
npx antigravity-awesome-skills --claude # Gemini CLI용 설치
npx antigravity-awesome-skills --gemini # Codex CLI용 설치
npx antigravity-awesome-skills --codex # Cursor용 설치
npx antigravity-awesome-skills --cursor
# Claude Code용 설치
npx antigravity-awesome-skills --claude # Gemini CLI용 설치
npx antigravity-awesome-skills --gemini # Codex CLI용 설치
npx antigravity-awesome-skills --codex # Cursor용 설치
npx antigravity-awesome-skills --cursor - 내 역할/직업을 알고 맞춤형 답변
- 프로젝트 컨텍스트 유지
- 내가 원하는 스타일로 응답 - /memory show - 현재 컨텍스트 확인
- /memory add - 메모리 추가
- /memory reload - 메모리 리로드
- /init - GEMINI.md 자동 생성 - AGENTS.md는 범용 포맷 → Cursor, Copilot, Amp, Jules, Gemini CLI 등 60,000+ 프로젝트에서 사용
- execpolicy - Starlark 기반 보안 정책 엔진 (macOS Seatbelt, Linux Landlock) - Claude Code (.claude/skills/)
- Codex CLI (.agents/skills/)
- Gemini CLI (.agents/skills/)
- Cursor (.cursor/skills/)
- VS Code / GitHub Copilot (.github/skills/)
- Windsurf (.windsurf/skills/)
- Cline, Aider, OpenCode, Roo Code, Goose... - 공유 컴포넌트 (MCP, 문서, 스크립트): 85% 재사용
- 플랫폼별 파일: 15%만 변환 필요 - frontend-design - Anthropic 공식 (27.7만+ 설치)
- brainstorming - MVP 기획
- security-auditor - 보안 검토
- test-driven-development - TDD
- Supabase, Microsoft, Google, Vercel 공식 스킬 - Web 플랫폼: Projects + Memory + Custom Instructions로 개인화
- CLI 도구: CLAUDE.md / GEMINI.md / AGENTS.md로 메모리 관리
- Hooks: Claude Code가 가장 완성도 높음 (15개 이벤트)
- SKILL.md: 범용 오픈 포맷 → 한 번 작성, 27+ 도구에서 사용
- 변환 도구: skill-porter, openskills로 플랫폼 간 변환 가능 - Claude Code Skills 공식 문서
- Gemini CLI 공식 문서
- Codex CLI 공식 문서
- mdskills.ai - 스킬 마켓플레이스
- antigravity-awesome-skills
- skill-porter" style="background: linear-gradient(135deg, #9d4edd 0%, #8d3ecd 100%); color: #fff; border: none; padding: 6px 12px; border-radius: 6px; cursor: pointer; font-size: 12px; font-weight: 600; transition: all 0.3s ease; display: flex; align-items: center; gap: 6px; box-shadow: 0 2px 8px rgba(157, 77, 221, 0.3);">Copy
project/
├── CLAUDE.md ← 프로젝트 메모리 (자동 로드)
└── .claude/ ├── settings.json ← 설정 (권한, 모델, hooks) ├── settings.local.json← 개인 설정 (gitignore) ├── rules/ ← 경로별 모듈 규칙 │ ├── api-rules.md │ └── testing-rules.md └── skills/ ← 커스텀 스킬 └── my-skill/ └── SKILL.md
project/
├── CLAUDE.md ← 프로젝트 메모리 (자동 로드)
└── .claude/ ├── settings.json ← 설정 (권한, 모델, hooks) ├── settings.local.json← 개인 설정 (gitignore) ├── rules/ ← 경로별 모듈 규칙 │ ├── api-rules.md │ └── testing-rules.md └── skills/ ← 커스텀 스킬 └── my-skill/ └── SKILL.md
project/
├── CLAUDE.md ← 프로젝트 메모리 (자동 로드)
└── .claude/ ├── settings.json ← 설정 (권한, 모델, hooks) ├── settings.local.json← 개인 설정 (gitignore) ├── rules/ ← 경로별 모듈 규칙 │ ├── api-rules.md │ └── testing-rules.md └── skills/ ← 커스텀 스킬 └── my-skill/ └── SKILL.md
project/
├── GEMINI.md ← 프로젝트 컨텍스트
└── .gemini/ └── settings.json ← 설정
project/
├── GEMINI.md ← 프로젝트 컨텍스트
└── .gemini/ └── settings.json ← 설정
project/
├── GEMINI.md ← 프로젝트 컨텍스트
└── .gemini/ └── settings.json ← 설정
project/
├── AGENTS.md ← 프로젝트 지침 (범용!)
├── AGENTS.override.md ← 오버라이드
└── .agents/ └── skills/ └── my-skill/ └── SKILL.md
project/
├── AGENTS.md ← 프로젝트 지침 (범용!)
├── AGENTS.override.md ← 오버라이드
└── .agents/ └── skills/ └── my-skill/ └── SKILL.md
project/
├── AGENTS.md ← 프로젝트 지침 (범용!)
├── AGENTS.override.md ← 오버라이드
└── .agents/ └── skills/ └── my-skill/ └── SKILL.md
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash .claude/hooks/check-dangerous.sh" } ] } ], "PostToolUse": [ { "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "npx prettier --write" } ] } ] }
}
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash .claude/hooks/check-dangerous.sh" } ] } ], "PostToolUse": [ { "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "npx prettier --write" } ] } ] }
}
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash .claude/hooks/check-dangerous.sh" } ] } ], "PostToolUse": [ { "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "npx prettier --write" } ] } ] }
}
#!/bin/bash
# .claude/hooks/check-dangerous.sh
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command') if echo "$COMMAND" | grep -qE 'rm\s+-rf\s+/'; then jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: "위험: rm -rf / 감지됨" } }' exit 2
fi
exit 0
#!/bin/bash
# .claude/hooks/check-dangerous.sh
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command') if echo "$COMMAND" | grep -qE 'rm\s+-rf\s+/'; then jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: "위험: rm -rf / 감지됨" } }' exit 2
fi
exit 0
#!/bin/bash
# .claude/hooks/check-dangerous.sh
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command') if echo "$COMMAND" | grep -qE 'rm\s+-rf\s+/'; then jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: "위험: rm -rf / 감지됨" } }' exit 2
fi
exit 0
#!/bin/bash
# .claude/hooks/auto-format.sh
INPUT=$(cat)
FILE=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty') if [ -n "$FILE" ] && [ -f "$FILE" ]; then EXT="${FILE##*.}" case "$EXT" in js|jsx|ts|tsx|json|css|md) npx prettier --write "$FILE" ;; py) black --quiet "$FILE" ;; go) gofmt -w "$FILE" ;; esac
fi
exit 0
#!/bin/bash
# .claude/hooks/auto-format.sh
INPUT=$(cat)
FILE=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty') if [ -n "$FILE" ] && [ -f "$FILE" ]; then EXT="${FILE##*.}" case "$EXT" in js|jsx|ts|tsx|json|css|md) npx prettier --write "$FILE" ;; py) black --quiet "$FILE" ;; go) gofmt -w "$FILE" ;; esac
fi
exit 0
#!/bin/bash
# .claude/hooks/auto-format.sh
INPUT=$(cat)
FILE=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty') if [ -n "$FILE" ] && [ -f "$FILE" ]; then EXT="${FILE##*.}" case "$EXT" in js|jsx|ts|tsx|json|css|md) npx prettier --write "$FILE" ;; py) black --quiet "$FILE" ;; go) gofmt -w "$FILE" ;; esac
fi
exit 0
#!/bin/bash
INPUT=$(cat)
MSG=$(echo "$INPUT" | jq -r '.message // "알림"')
notify-send "Claude Code" "$MSG"
#!/bin/bash
INPUT=$(cat)
MSG=$(echo "$INPUT" | jq -r '.message // "알림"')
notify-send "Claude Code" "$MSG"
#!/bin/bash
INPUT=$(cat)
MSG=$(echo "$INPUT" | jq -r '.message // "알림"')
notify-send "Claude Code" "$MSG"
---
name: my-awesome-skill
description: 이 스킬이 무엇을 하는지 설명 (자동 트리거 매칭용)
--- # My Awesome Skill