『클린 코드』를 쓴 로버트 C. 마틴(Uncle Bob)이 10월 25일 코딩 에이전트용 스킬 ub-mode를 공개했습니다. 11월 3일 기준 스타 6,662개, MIT 라이선스입니다. 파일은 SKILL.md 하나, 152줄입니다.
근거: unclebob/ub-mode README·SKILL.md (2026년 11월 3일 확인). README에 따르면 @poteto의 규칙(
poteto-mode/pstack) 일부를 줄여 만들었습니다.
규칙 세 묶음
변경을 요청받을 때마다 이 순서를 따르라는 스킬입니다.
| 묶음 | 들어 있는 것 |
|---|---|
| First Make it Work | 가장 작은 수정, 데이터 모양 먼저, TDD, 처음부터 다시 설계하기, 빼고 나서 더하기, 경계에서 한 번만 검사 |
| Then Make it Right | 원인 고치기, 작은 단위로 확인, 동작을 테스트, crapper·dryer·mutator 검사, 리팩터링 |
| Practice | 작업 기록, 컨텍스트 아끼기, 워크트리 정리, 작고 순서 있는 커밋 |
문장이 짧습니다
원문은 한 줄짜리 명령으로 되어 있습니다. 몇 개만 옮깁니다.
| 원문 | 뜻 |
|---|---|
| Write the failing test before you change the code. | 코드를 바꾸기 전에 실패하는 테스트부터 쓴다. |
| Reproduce it. Fix the cause. | 재현하고, 원인을 고친다. |
| A guard that only hides the crash is not a fix. | 에러만 숨기는 방어 코드는 고친 게 아니다. |
| If the test would still pass when every function returned nothing, throw it out. | 모든 함수가 아무것도 안 돌려줘도 통과하는 테스트는 버린다. |
| One decision lives in one place. | 결정 하나는 한 곳에만 둔다. |
AI가 자주 하는 실수, 그러니까 테스트 없이 고치기, try로 에러 덮기, 요구사항을 기존 설계에 덧대기를 정면으로 막는 문장들입니다.
도구 세 개로 잽니다
말로 끝내지 않고 숫자로 기준을 둡니다. 셋 다 같은 작가의 저장소이고 Clojure·Java·Go·TypeScript·Rust·Python을 지원합니다.
| 도구 | 하는 일 | 기준 |
|---|---|---|
| crapper | 함수마다 복잡도와 커버리지로 CRAP 점수 계산 | 10 미만 |
| dryer | 구조가 닮은 코드 찾기 | 0.8 이상이면 없앰 |
| mutator | 뮤테이션 테스트로 테스트가 놓친 코드 찾기 | 살아남은 변이를 없앰 |
도구 없이 스킬만 넣어도 규칙 부분은 동작합니다. 도구를 쓰는 단계는 그 도구가 설치돼 있어야 합니다.
설치
README 방법 그대로입니다. SKILL.md를 스킬 폴더의 ub-mode/SKILL.md로 복사하고 /ub-mode로 부릅니다.
mkdir -p ~/.claude/skills/ub-mode
curl -L https://raw.githubusercontent.com/unclebob/ub-mode/master/SKILL.md \
-o ~/.claude/skills/ub-mode/SKILL.md
Cursor는 ~/.cursor/skills/ub-mode/SKILL.md에 두면 됩니다. 남의 규칙 파일이니 넣기 전에 152줄을 한 번 읽어 보길 권합니다. 이 저장소에는 실행 코드가 없고 마크다운뿐입니다.
쇼츠로 보기
이 글은 비치콤버스 쇼츠 No.19의 짝 글입니다. 짧은 주소 beachcombers.co.kr/s/19.