| name | cli-guidelines |
| description | CLI 도구 개발 시 proactively 사용하세요. argparse, Click, clap 등 CLI 라이브러리 사용, 플래그/인자 설계, 도움말 작성, 오류 메시지, 출력 포맷팅이 필요할 때 자동으로 호출됩니다. (clig.dev 기반) |
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: 배포/명명 규칙