CLI Guidelines
clig.dev 기반의 CLI 설계 가이드라인과 베스트 프랙티스를 제공합니다.
핵심 철학:
- 인간 중심 설계: 사람이 주 사용자
- 상호 연동성: UNIX 관례 준수, 파이프 조합 가능
- 일관성: 기존 패턴 따라 직관성 확보
- 발견 용이성: 도움말, 예제, 오류 제안
- 공감: 사용자의 성공을 돕는 의도 표현
Instructions
워크플로우: 요청 분석 및 리소스 선택
사용자 요청을 분석하여 필요한 리소스만 선택적으로 로드합니다.
1. 키워드 매칭
철학/원칙 (resources/01-philosophy.md)
- "철학", "원칙", "principle"
- "설계", "design"
- "UX", "사용자 경험"
도움말/문서화 (resources/02-help-documentation.md)
- "help", "도움말", "--help"
- "man page", "문서"
- "usage", "사용법"
출력 (resources/03-output.md)
- "output", "출력"
- "색상", "color"
- "JSON", "포맷"
- "stdout", "stderr"
- "로그", "log"
오류 처리 (resources/04-errors.md)
- "error", "오류", "에러"
- "exit code", "종료 코드"
- "예외", "exception"
- "디버그", "debug"
인자/플래그 (resources/05-arguments-flags.md)
- "argument", "인자"
- "flag", "플래그", "옵션"
- "-v", "--verbose"
- "파라미터", "parameter"
상호작용 (resources/06-interactivity.md)
- "interactive", "대화형"
- "prompt", "프롬프트"
- "input", "입력"
- "TTY", "터미널"
- "확인", "confirm"
서브커맨드 (resources/07-subcommands.md)
- "subcommand", "서브커맨드"
- "command", "명령어"
- "verb noun", "noun verb"
견고성 (resources/08-robustness.md)
- "robust", "견고"
- "signal", "시그널"
- "Ctrl-C", "SIGINT"
- "timeout", "타임아웃"
- "진행률", "progress"
설정 (resources/09-configuration.md)
- "config", "설정"
- "environment", "환경변수"
- ".env", "XDG"
- "우선순위", "priority"
배포/명명 (resources/10-distribution.md)
- "배포", "distribution"
- "install", "설치"
- "이름", "naming"
- "바이너리", "binary"
2. 리소스 로딩 전략
단일 주제
- User: "플래그 네이밍 규칙이 뭐야?"
- → Read resources/05-arguments-flags.md
복합 요청
- User: "CLI 도구 처음부터 만들어줘"
- → Read resources/01-philosophy.md (철학)
- → Read resources/05-arguments-flags.md (인자/플래그)
- → Read resources/02-help-documentation.md (도움말)
- → 필요 시 추가 리소스
불명확한 요청
- User: "CLI 잘 만들고 싶어"
- → REFERENCE.md 확인하여 선택지 제시
3. 리소스 적용
현재 CLI 구조 파악
- 기존 CLI 코드 확인
- 사용 중인 CLI 라이브러리 확인 (Click, argparse, clap 등)
리소스 Read
- 필요한 리소스만 Read
- 언어별 CLI 라이브러리 패턴 고려
패턴 적용
- 가이드라인에 맞게 CLI 구조 개선
- 기존 인터페이스 호환성 유지
- 사용자에게 변경 사항 설명
검증
--help 출력 확인
- 종료 코드 동작 확인
- 에러 메시지 품질 확인
예시
예시 1: 새 CLI 도구 설계
User: "Python으로 파일 변환 CLI 만들어줘"
- 키워드 매칭: CLI 설계 전반
- Read resources/01-philosophy.md
- Read resources/05-arguments-flags.md
- Read resources/02-help-documentation.md
- Click 또는 argparse 기반 구조 설계
- 표준 플래그 적용 (-h, -v, -o, --quiet 등)
- 도움말 텍스트 작성
예시 2: 에러 처리 개선
User: "CLI 에러 메시지가 불친절해"
- 키워드 매칭: "에러" → 오류 처리
- Read resources/04-errors.md
- 기존 에러 메시지 분석
- 인간 친화적 메시지로 재작성
- 해결 방법 제안 추가
- 적절한 종료 코드 사용
예시 3: 출력 포맷 추가
User: "JSON 출력 옵션 추가해줘"
- 키워드 매칭: "JSON", "출력" → 출력
- Read resources/03-output.md
- --json 플래그 추가
- 구조화된 출력 구현
- TTY 감지 로직 확인
- 기존 출력과 일관성 유지
중요 원칙
- 인간 우선: TTY에서는 사람 읽기용 출력, 파이프에서는 기계 처리용
- 일관성: 기존 UNIX/POSIX 관례 준수
- 발견 가능: 도움말, 예제, 오류 제안으로 사용법 안내
- 견고함: 빠른 응답, 진행률 표시, 정상 종료 처리
- 호환성: 가산적 변경, 비호환 변경 사전 경고
Technical Details
상세한 가이드라인은 각 리소스 파일 참조:
REFERENCE.md: 리소스 전체 개요
resources/01-philosophy.md: 설계 철학
resources/02-help-documentation.md: 도움말 작성
resources/03-output.md: 출력 가이드라인
resources/04-errors.md: 오류 처리
resources/05-arguments-flags.md: 인자와 플래그
resources/06-interactivity.md: 대화형 인터페이스
resources/07-subcommands.md: 서브커맨드 설계
resources/08-robustness.md: 견고성/시그널 처리
resources/09-configuration.md: 설정 관리
resources/10-distribution.md: 배포/명명 규칙
1---2name: cli-guidelines3description: Provides CLI design guidelines and best practices. Use when developing command-line tools, designing flags, help text, or error messages.4---5
6# CLI Guidelines
7
8clig.dev 기반의 CLI 설계 가이드라인과 베스트 프랙티스를 제공합니다.
9
10**핵심 철학**:
11- 인간 중심 설계: 사람이 주 사용자
12- 상호 연동성: UNIX 관례 준수, 파이프 조합 가능
13- 일관성: 기존 패턴 따라 직관성 확보
14- 발견 용이성: 도움말, 예제, 오류 제안
15- 공감: 사용자의 성공을 돕는 의도 표현
16
17## Instructions
18
19### 워크플로우: 요청 분석 및 리소스 선택
20
21사용자 요청을 분석하여 필요한 리소스만 선택적으로 로드합니다.
22
23#### 1. 키워드 매칭
24
25**철학/원칙** (`resources/01-philosophy.md`)
26- "철학", "원칙", "principle"
27- "설계", "design"
28- "UX", "사용자 경험"
29
30**도움말/문서화** (`resources/02-help-documentation.md`)
31- "help", "도움말", "--help"
32- "man page", "문서"
33- "usage", "사용법"
34
35**출력** (`resources/03-output.md`)
36- "output", "출력"
37- "색상", "color"
38- "JSON", "포맷"
39- "stdout", "stderr"
40- "로그", "log"
41
42**오류 처리** (`resources/04-errors.md`)
43- "error", "오류", "에러"
44- "exit code", "종료 코드"
45- "예외", "exception"
46- "디버그", "debug"
47
48**인자/플래그** (`resources/05-arguments-flags.md`)
49- "argument", "인자"
50- "flag", "플래그", "옵션"
51- "-v", "--verbose"
52- "파라미터", "parameter"
53
54**상호작용** (`resources/06-interactivity.md`)
55- "interactive", "대화형"
56- "prompt", "프롬프트"
57- "input", "입력"
58- "TTY", "터미널"
59- "확인", "confirm"
60
61**서브커맨드** (`resources/07-subcommands.md`)
62- "subcommand", "서브커맨드"
63- "command", "명령어"
64- "verb noun", "noun verb"
65
66**견고성** (`resources/08-robustness.md`)
67- "robust", "견고"
68- "signal", "시그널"
69- "Ctrl-C", "SIGINT"
70- "timeout", "타임아웃"
71- "진행률", "progress"
72
73**설정** (`resources/09-configuration.md`)
74- "config", "설정"
75- "environment", "환경변수"
76- ".env", "XDG"
77- "우선순위", "priority"
78
79**배포/명명** (`resources/10-distribution.md`)
80- "배포", "distribution"
81- "install", "설치"
82- "이름", "naming"
83- "바이너리", "binary"
84
85#### 2. 리소스 로딩 전략
86
87**단일 주제**
88- User: "플래그 네이밍 규칙이 뭐야?"
89- → Read resources/05-arguments-flags.md
90
91**복합 요청**
92- User: "CLI 도구 처음부터 만들어줘"
93- → Read resources/01-philosophy.md (철학)
94- → Read resources/05-arguments-flags.md (인자/플래그)
95- → Read resources/02-help-documentation.md (도움말)
96- → 필요 시 추가 리소스
97
98**불명확한 요청**
99- User: "CLI 잘 만들고 싶어"
100- → REFERENCE.md 확인하여 선택지 제시
101
102#### 3. 리소스 적용
103
1041. **현재 CLI 구조 파악**
105 - 기존 CLI 코드 확인
106 - 사용 중인 CLI 라이브러리 확인 (Click, argparse, clap 등)
107
1082. **리소스 Read**
109 - 필요한 리소스만 Read
110 - 언어별 CLI 라이브러리 패턴 고려
111
1123. **패턴 적용**
113 - 가이드라인에 맞게 CLI 구조 개선
114 - 기존 인터페이스 호환성 유지
115 - 사용자에게 변경 사항 설명
116
1174. **검증**
118 - `--help` 출력 확인
119 - 종료 코드 동작 확인
120 - 에러 메시지 품질 확인
121
122### 예시
123
124#### 예시 1: 새 CLI 도구 설계
125
126User: "Python으로 파일 변환 CLI 만들어줘"
127
1281. 키워드 매칭: CLI 설계 전반
1292. Read resources/01-philosophy.md
1303. Read resources/05-arguments-flags.md
1314. Read resources/02-help-documentation.md
1325. Click 또는 argparse 기반 구조 설계
1336. 표준 플래그 적용 (-h, -v, -o, --quiet 등)
1347. 도움말 텍스트 작성
135
136#### 예시 2: 에러 처리 개선
137
138User: "CLI 에러 메시지가 불친절해"
139
1401. 키워드 매칭: "에러" → 오류 처리
1412. Read resources/04-errors.md
1423. 기존 에러 메시지 분석
1434. 인간 친화적 메시지로 재작성
1445. 해결 방법 제안 추가
1456. 적절한 종료 코드 사용
146
147#### 예시 3: 출력 포맷 추가
148
149User: "JSON 출력 옵션 추가해줘"
150
1511. 키워드 매칭: "JSON", "출력" → 출력
1522. Read resources/03-output.md
1533. --json 플래그 추가
1544. 구조화된 출력 구현
1555. TTY 감지 로직 확인
1566. 기존 출력과 일관성 유지
157
158## 중요 원칙
159
1601. **인간 우선**: TTY에서는 사람 읽기용 출력, 파이프에서는 기계 처리용
1612. **일관성**: 기존 UNIX/POSIX 관례 준수
1623. **발견 가능**: 도움말, 예제, 오류 제안으로 사용법 안내
1634. **견고함**: 빠른 응답, 진행률 표시, 정상 종료 처리
1645. **호환성**: 가산적 변경, 비호환 변경 사전 경고
165
166## Technical Details
167
168상세한 가이드라인은 각 리소스 파일 참조:
169- `REFERENCE.md`: 리소스 전체 개요
170- `resources/01-philosophy.md`: 설계 철학
171- `resources/02-help-documentation.md`: 도움말 작성
172- `resources/03-output.md`: 출력 가이드라인
173- `resources/04-errors.md`: 오류 처리
174- `resources/05-arguments-flags.md`: 인자와 플래그
175- `resources/06-interactivity.md`: 대화형 인터페이스
176- `resources/07-subcommands.md`: 서브커맨드 설계
177- `resources/08-robustness.md`: 견고성/시그널 처리
178- `resources/09-configuration.md`: 설정 관리
179- `resources/10-distribution.md`: 배포/명명 규칙