| name | de-sloppify-pass |
| description | 구현이 끝난 직후 "정리 패스"를 한 번 돌려, 디버그 로그·죽은 분기·주석 처리된 코드·TODO 땜질·들쭉날쭉한 네이밍을 걷어내고 프로젝트 컨벤션에 맞춰 다듬는 닫힌 루프입니다. 매 회차 lint와 테스트로 동작이 깨지지 않았는지 확인합니다. 사용자가 "구현 끝났으니 정리 한 번 돌려줘", "방금 짠 코드 슬롭 정리해줘", "디버그 코드랑 죽은 코드 싹 치워줘", "네이밍 다듬고 컨벤션 맞춰줘", "AI가 짠 지저분한 코드 정리", "de-sloppify", "de-sloppify pass", "cleanup pass after implementation", "remove debug code", "tighten naming", "delete dead branches", "align with project conventions"처럼 요청할 때 사용하세요. (구분: 시니어 관점으로 자기 diff를 검토하는 자기 리뷰는 looping:pr-self-review, 사용되지 않는 export·파일·고아 의존성 제거는 looping:knip-until-clean, 포매터로 스타일만 맞추는 건 looping:format-until-clean, lint·typecheck 오류만 잡는 건 looping:lint-typecheck-fix) |
슬롭 정리 패스 (De-Sloppify Pass)
구현이 끝난 뒤 정리 패스를 한 번 돌린다: 디버그 코드 제거, 네이밍 다듬기, 죽은 분기 삭제, 프로젝트 컨벤션 맞추기.
| 항목 | 값 |
|---|
| 카테고리 | 리뷰(Review) |
| 트리거 | 수동(manual) — 사람이 직접 시작 |
| 종료 조건(Exit) | 리뷰에서 슬롭이 더 발견되지 않고, lint·테스트가 통과할 때 |
| 반복 한도(Max iterations) | 4 |
| 매 반복 체크 명령 | npm run lint && npm test |
| 가드레일 | 강화됨(Hardened) |
| 지원 에이전트 | Claude Code · Cursor |
이 루프는 언제 쓰나
기능 구현을 막 끝냈을 때, 코드에는 보통 "슬롭"이 남습니다 — 디버그용 console.log, 주석으로 막아둔 옛 코드, "일단 되게" 하려고 박아둔 TODO 땜질, 너무 커진 함수, 옆 코드와 다른 네이밍 같은 것들. 이걸 일일이 "이것도 지워줘, 저것도 정리해줘" 하고 지시하기는 번거롭습니다. 이 루프를 한 번 시작하면 에이전트가 슬롭 스캔 → 최소 수정 정리 → lint·테스트로 검증을 스스로 반복하며, 변경분이 깔끔하고 최소한이며 컨벤션에 맞을 때까지 다듬습니다. 핵심은 동작을 바꾸지 않는 정리라는 점입니다 — 정리하다 테스트가 깨지면 그건 정리가 아니므로 매 회차 체크가 막아줍니다.
루프 흐름
수동 시작 → 슬롭 스캔 → 정리 → 검증(lint+test) →〔피드백 게이트〕슬롭 0 & 체크 통과?
↑ │ 아니오
└──────────────────────────────────────────────┘
│ 예
종료
매 반복(pass)마다 하는 일
- 슬롭 스캔(Scan for slop) — 최근 변경분에서 디버그 로그, 주석 처리된 코드, TODO 땜질, 너무 커진 함수, 들쭉날쭉한 네이밍을 찾습니다.
- 정리(Clean up) — 최소한의 수정만 적용합니다: 죽은 코드 삭제, 헬퍼 추출, 타입 정렬, 주변 스타일에 맞추기.
- 검증(Verify) — lint와 테스트를 돌려 정리가 동작을 깨지 않았는지 확인합니다.
npm run lint && npm test
가드레일 (점수 조작 방지 규칙)
종료 조건을 "가짜로" 통과시키지 못하게 막는 규칙입니다. 반드시 지키세요.
- 체크 명령이나 종료 기준을 고쳐서 억지로 성공시키지 않는다.
- 체크를 건너뛰거나 비활성화·우회해서 종료 조건을 통과시키지 않는다.
- 여러 번 반복해도 막히면, 지표를 조작하지 말고 멈추고 블로커를 보고한다.
Claude Code에서 실행하기
가장 간단합니다. 아래 kickoff 프롬프트를 그대로 붙여넣으면 에이전트가 스스로 반복합니다.
"슬롭 정리 패스(De-Sloppify Pass)" 루프를 시작합니다.
목표: 최근 변경이 깔끔하고, 최소한이며, 프로젝트 컨벤션에 맞을 것
최대 반복: 4
매 반복 사이 실행: npm run lint && npm test
종료 조건: 리뷰에서 슬롭이 더 없고 체크가 통과할 때
1단계: diff를 살펴 디버그 코드, 죽은 분기, 네이밍 문제를 찾는다. 최소 diff로 고친다.
이 루프를 스스로 페이싱(self-pace)하라. 매 반복 후 체크 명령을 실행하고 출력을 읽어, 종료
조건이 충족되지 않았을 때만 계속한다. 종료 조건이 통과하거나 최대 반복에 도달하면 멈춘다.
매 회차마다 한 줄 상태 업데이트를 남긴다.
팁: npm run lint && npm test는 예시입니다. 프로젝트에 맞게 ruff check . && pytest, golangci-lint run && go test ./..., cargo clippy && cargo test, pnpm lint && pnpm test 등으로 바꾸세요. 정리 대상도 막연한 "전체"가 아니라 git diff main...HEAD 같은 최근 변경분으로 좁히는 게 좋습니다.
팁 / 변형
- 범위를 변경분으로 좁히기: 리포지터리 전체를 정리하려 들면 끝이 없습니다. "방금 구현한 diff만" 정리하도록
git diff main...HEAD나 최근 커밋 범위를 명시하세요.
- 체크 명령 교체: lint만 있고 테스트가 없으면
npm run lint만, 타입 체크까지 묶으려면 npm run lint && npm run typecheck && npm test처럼 늘리세요.
- 막힐 때: 같은 부분에서 정리가 자꾸 lint·테스트를 깨뜨리면 가드레일대로 멈추고, 무엇이 충돌하는지(예: 컨벤션 vs 기존 테스트 가정) 사람에게 보고하게 하세요.
- 연관 루프: 정리 전에 시니어 관점으로 자기 diff를 검토하려면
looping:pr-self-review, 사용되지 않는 export·파일을 솎아내려면 looping:knip-until-clean, 포매터로 스타일만 맞추려면 looping:format-until-clean.
원본 영어 kickoff (loops.elorm.xyz 원문)
Start the "De-Sloppify Pass" loop.
Goal: recent changes are clean, minimal, and convention-aligned
Max iterations: 4
Between iterations run: npm run lint && npm test
Exit when: review finds no slop and checks pass
Step 1: Review the diff for debug code, dead branches, and naming issues. Fix them with minimal diffs.
Self-pace this loop. After each iteration, run the check command, read the output, and only continue if the exit condition is not met. Stop when the exit condition passes or max iterations is reached. Give a short status update each pass.
출처: https://loops.elorm.xyz/loops/de-sloppify-pass