슬래시 명령과 /config 설정 행에 한국어 설명을 덧붙인다

Claude Code 안에서 도는 개인용 모드(function hooks 플러그인). 2026-10-14 에 Nexus 저장소(.claude/mods/)에서 떼어 왔다.
| 모드 | 하는 일 |
|---|---|
git-band | 입력창 위에 프로젝트 · 브랜치 · 원격 대비 앞뒤 · 변경 · CI(최신 워크플로 실행) · 마지막 커밋을 보인다. /git-band 로 즉시 새로 고침 |
ko-labels | 슬래시 명령 설명과 /config 설정 이름에 한국어를 병기한다. 사전(hooks/dictionary.ts)에 없는 것은 원문 그대로 |
터미널의 Claude Code 프롬프트에서(이 저장소가 마켓플레이스다 — 루트의 .claude-plugin/marketplace.json):
/plugin install git-band --marketplace dbsrjs/claude-mods
/plugin install ko-labels --marketplace dbsrjs/claude-mods
y 로 마켓플레이스를 추가하고 범위는 user 를 고른다.
고치면서 쓸 때는 설치 대신 폴더를 직접 올린다 — 저장하면 다시 읽힌다:
claude --plugin-dir git-band --plugin-dir ko-labels
git-band 의 CI 칸은 gh 가 설치 · 로그인돼 있어야 나온다. 없으면 CI ? (gh 없음) · (gh 로그인 필요) 로 이유를 보인다이전 커밋 기준 이 붙으면 최신 CI 실행이 지금 HEAD 의 것이 아니다(아직 push 안 했거나 CI 가 안 돌았다)claude plugin validate git-band
claude plugin test git-band
.claude-plugin/types/ 는 엔진이 로드할 때마다 새로 깔기 때문에 커밋하지 않는다(자체 .gitignore).
hooks/register.ts 40 lines1import type { Register } from 'claude-code'
2
3import { COMMANDS, CONFIG } from './dictionary'
4
5// 이미 한글이 들어 있으면(이 모드나 다른 플러그인이 붙였거나 원래 한국어) 다시 붙이지 않는다.
6const HANGUL = /[ㄱ-ㆎ가-힣]/
7
8// 플러그인 · 스킬 명령은 `anthropic-skills:pdf` 처럼 접두사가 붙는다. 정확한 이름을 먼저,
9// 없으면 마지막 마디로 찾는다.
10export function lookupCommand(name: string): string | undefined {
11 return COMMANDS[name] ?? COMMANDS[name.split(':').pop() ?? name]
12}
13
14// 명령 목록은 한 줄로 그려져 길면 뒤가 잘린다. 스킬 설명은 영어가 길어서 뒤에 붙이면
15// 한국어가 잘려 보이지 않으므로 앞에 둔다.
16export function koDescription(name: string, description: string): string | undefined {
17 const ko = lookupCommand(name)
18 if (!ko || HANGUL.test(description)) return undefined
19 return description ? `${ko} — ${description}` : ko
20}
21
22// 설정 행은 라벨이 짧아 잘릴 걱정이 없으므로 원문 옆에 둔다(원문을 먼저 두어 문서 · 검색어와 대조된다).
23export function koLabel(key: string, label: string): string | undefined {
24 const ko = CONFIG[key]
25 if (!ko || HANGUL.test(label)) return undefined
26 return `${label} · ${ko}`
27}
28
29export const register: Register = on => {
30 on('command.describe', ($, e, next) => {
31 const description = koDescription(e.command, e.description)
32 return description ? next({ ...e, description }) : next(e)
33 })
34
35 on('config.describe', ($, e, next) => {
36 const label = koLabel(e.key, e.label)
37 return label ? next({ ...e, label }) : next(e)
38 })
39}
40hooks/dictionary.ts 173 lines1// 이름 → 한국어 설명. 영어 고유 명칭(MCP · IDE · CLAUDE.md · Chrome 등)은 그대로 둔다.
2// 엔진이 이름으로만 찾으므로, 사전에 없는 명령 · 행은 원문 그대로 보인다(조용히 틀리게 번역하지 않는다).
3
4export const COMMANDS: Readonly<Record<string, string>> = {
5 // 내장 명령
6 'add-dir': '작업 디렉터리 추가',
7 advisor: '중요한 순간에 더 강한 모델에게 자문',
8 agents: '서브에이전트 관리',
9 autocompact: '자동 압축 창 크기 설정',
10 btw: '작업을 멈추지 않고 곁가지 질문',
11 bug: '버그 신고 · 피드백 보내기',
12 feedback: '버그 신고 · 피드백 보내기',
13 chrome: 'Claude in Chrome 설정',
14 clear: '빈 컨텍스트로 새 세션 시작(이전 세션은 /resume 으로 재개 가능)',
15 color: '이번 세션 입력창 색 설정',
16 compact: '지금까지의 대화를 요약해 컨텍스트 확보',
17 config: '설정 열기 · 키로 설정 변경',
18 context: '현재 컨텍스트 사용량 보기',
19 copy: '마지막 응답 복사',
20 cost: '세션 비용 · 사용량 보기',
21 debug: '디버그 로그 켜고 문제 진단',
22 doctor: 'Claude Code 설치 · 설정 상태 점검',
23 effort: '모델 추론 노력 수준 설정',
24 exit: 'Claude Code 종료',
25 quit: 'Claude Code 종료',
26 export: '대화를 파일 · 클립보드로 내보내기',
27 fast: '빠른 모드 전환',
28 focus: '집중 보기 전환(프롬프트 · 요약 · 응답만)',
29 goal: '조건을 만족할 때까지 계속 작업할 목표 설정',
30 heapdump: 'JS 힙 덤프 저장',
31 help: '도움말 · 명령 목록',
32 hooks: '훅 설정 관리',
33 ide: 'IDE 연결 관리',
34 import: '다른 AI 코딩 에이전트의 설정 가져오기',
35 init: '코드베이스 문서화용 CLAUDE.md 생성',
36 insights: 'Claude Code 세션 분석 보고서 생성',
37 'install-github-app': 'GitHub Actions 용 Claude 앱 설치',
38 'install-slack-app': 'Slack 용 Claude 앱 설치',
39 keybindings: '단축키 설정',
40 'list-agents': '메시지를 보낼 수 있는 서브에이전트 · 팀원 · 세션 목록',
41 login: '로그인 · 계정 전환',
42 logout: '로그아웃',
43 mcp: 'MCP 서버 관리',
44 memory: '메모리 파일(CLAUDE.md) 편집',
45 model: '사용할 AI 모델 설정',
46 'output-style': '출력 스타일 목록 · 전환',
47 permissions: '도구 허용 · 거부 규칙 관리',
48 allowed_tools: '도구 허용 · 거부 규칙 관리',
49 plugin: '플러그인 관리',
50 plugins: '플러그인 관리',
51 'pr-comments': 'GitHub PR 댓글 가져오기',
52 'privacy-settings': '개인정보 설정',
53 recap: '세션 한 줄 요약 지금 만들기',
54 'release-notes': '릴리스 노트 보기',
55 'reload-plugins': '변경된 플러그인을 이번 세션에 적용',
56 'reload-skills': '세션 중 추가 · 변경된 스킬 다시 읽기',
57 'remote-control': '다른 기기에서 이 세션 원격 제어',
58 rename: '현재 대화 이름 바꾸기',
59 resume: '이전 대화 재개',
60 continue: '이전 대화 재개',
61 review: 'PR 리뷰',
62 rewind: '대화 · 코드를 이전 시점으로 되감기',
63 checkpoint: '대화 · 코드를 이전 시점으로 되감기',
64 sandbox: '샌드박스 설정',
65 'security-review': '현재 브랜치 변경의 보안 리뷰',
66 'skill-doctor': '안 쓰이면서 컨텍스트를 차지하는 스킬 보기',
67 skills: '스킬 목록',
68 stats: '사용 통계 보기',
69 status: '버전 · 모델 · 계정 · 연결 상태 보기',
70 statusline: '상태 줄 설정',
71 tasks: '백그라운드 작업 목록',
72 bashes: '백그라운드 작업 목록',
73 'team-onboarding': '사용 기록으로 팀원용 Claude Code 안내서 만들기',
74 'terminal-setup': '터미널 줄바꿈 키(Shift+Enter) 설정',
75 theme: '테마 변경',
76 todos: '할 일 목록 보기',
77 upgrade: '요금제 업그레이드',
78 usage: '세션 비용 · 요금제 사용량 · 한도 기여 항목 보기',
79 vim: 'Vim 편집 모드 전환',
80
81 // 내장 스킬
82 batch: '대규모 변경을 계획하고 여러 worktree 에이전트로 병렬 실행',
83 'claude-api': 'Claude API · Anthropic SDK 참고 자료',
84 'code-review': '현재 diff · PR 의 버그 리뷰',
85 dataviz: '차트 · 그래프 · 대시보드 작성 가이드',
86 'deep-research': '여러 출처를 조사해 인용 보고서 작성',
87 design: '요청서로 새 Design 아티팩트 만들기',
88 'design-consent': 'Design 프로젝트 접근 권한 허용',
89 'design-revoke': 'Design 프로젝트 접근 권한 회수',
90 'design-sync': 'React 디자인 시스템을 claude.ai/design 으로 올리기',
91 'artifact-capabilities': '아티팩트 런타임 기능 안내',
92 'artifact-design': '아티팩트 디자인 가이드',
93 'artifact-diagramming': '아티팩트 다이어그램 가이드',
94 'fewer-permission-prompts': '자주 쓰는 읽기 전용 명령을 허용 목록에 추가해 권한 확인 줄이기',
95 'keybindings-help': '단축키 바꾸기 도움말',
96 loop: '프롬프트 · 명령을 주기적으로 반복 실행',
97 'plugin-authoring': '모드(띠 · 패널 · 상태 줄 · 훅) 만들기',
98 run: '앱을 실행해 변경을 직접 확인',
99 'run-skill-generator': '프로젝트별 run 스킬 작성 · 개선',
100 simplify: '변경 코드의 재사용 · 단순화 · 효율 정리',
101 slides: '요청서로 새 슬라이드 덱 만들기',
102 'update-config': 'settings.json 설정(훅 · 권한 · 환경 변수) 변경',
103 verify: '변경이 실제로 동작하는지 끝까지 실행해 확인',
104 'workflow-authoring': 'Workflow 스크립트 작성 참고 자료',
105
106 // 클라우드 · 사용자 스킬
107 'startup-hook-skill': '클라우드 세션용 시작 훅 만들기',
108 'session-start-hook': '클라우드 세션용 시작 훅 만들기',
109 'built-in-browser': '데스크톱 앱 내장 브라우저 사용 안내',
110 'chrome-browser': 'Claude in Chrome 확장 사용 안내',
111 'computer-use': '내 컴퓨터의 앱 조작(computer use) 안내',
112 docs: '함께 편집 · 공유하는 문서 만들기',
113 docx: 'Word(.docx) 문서 만들기 · 편집',
114 'google-workspace': 'Google Docs · Sheets · Slides 파일 만들기 · 편집',
115 'import-memory': '다른 AI 비서의 메모리 가져오기',
116 morning: '아침 브리핑 만들기 · 예약',
117 pdf: 'PDF 읽기 · 병합 · 분할 · 생성',
118 pptx: 'PowerPoint(.pptx) 만들기 · 편집',
119 'skill-creator': '스킬 만들기 · 개선 · 평가',
120 xlsx: '스프레드시트 만들기 · 편집',
121
122 // 이 저장소(Nexus) 스킬
123 'nexus-android-verify': 'Android 에뮬레이터 · 실기기에서 앱 변경 확인',
124 'nexus-deck': 'Nexus 발표 자료(PPT) 만들기',
125 'nexus-migration': 'Prisma 마이그레이션 추가 · 변경(HNSW 인덱스 보호)',
126 'nexus-pc-handoff': 'PC 를 옮길 때 git 으로 안 옮겨지는 것 챙기기',
127 'nexus-verify': 'check:* 계약 검증 실행 · 디버그',
128}
129
130export const CONFIG: Readonly<Record<string, string>> = {
131 autoCompact: '자동 압축',
132 autoContinueAtUsageLimit: '사용 한도에서 자동으로 계속',
133 switchModelsOnFlag: '메시지가 플래그되면 모델 전환',
134 tips: '팁 보기',
135 reduceMotion: '움직임 줄이기',
136 thinking: '생각 모드',
137 promptSuggestionEnabled: '프롬프트 제안',
138 recap: '세션 요약',
139 checkpoints: '코드 되감기(체크포인트)',
140 workflows: '동적 워크플로',
141 workflowKeywordTriggerEnabled: 'Ultracode 키워드로 시작',
142 workflowSizeGuideline: '동적 워크플로 규모',
143 artifacts: '아티팩트',
144 verbose: '자세한 출력',
145 progressBar: '터미널 진행 막대',
146 turnDuration: '턴 소요 시간 보기',
147 timeFormat: '시간 형식',
148 permissionMode: '기본 권한 모드',
149 worktreeBaseRef: 'worktree 기준 ref',
150 useAutoModeDuringPlan: '계획 중 자동 모드 사용',
151 gitignore: '파일 선택기에서 .gitignore 따르기',
152 copyFullResponse: '/copy 선택 창 건너뛰기',
153 copyOnSelect: '선택하면 복사',
154 autoScroll: '자동 스크롤',
155 defaultToAgentsView: '기본으로 에이전트 보기 열기',
156 leftArrowOpensAgents: '← 키로 에이전트 보기 열기',
157 autoUpdatesChannel: '자동 업데이트 채널',
158 theme: '테마',
159 notifChannel: '로컬 알림',
160 inputNeededNotifEnabled: '조치가 필요하면 푸시',
161 agentPushNotifEnabled: 'Claude 가 판단하면 푸시',
162 outputStyle: '출력 스타일',
163 language: '언어',
164 editor: '편집기 모드',
165 askUserQuestionTimeout: '질문 자동 진행 대기 시간',
166 externalEditorContext: '외부 편집기에 마지막 응답 표시',
167 prStatus: 'PR 상태 표시줄 보기',
168 model: '모델',
169 autoConnectIde: 'IDE 자동 연결(외부 터미널)',
170 chrome: 'Claude in Chrome 기본 사용',
171 dialogExpiry: '대화 상자 만료',
172}
173