| name | lint-typecheck-fix |
| description | lint와 typecheck를 실행해 보고된 경고·에러를 최소 변경으로 고치고, 두 명령이 모두 깨끗해질(종료 코드 0) 때까지 자동으로 반복하는 닫힌 루프입니다. 사용자가 "린트 에러 다 고쳐줘", "타입 에러 깨끗해질 때까지 돌려줘", "lint랑 typecheck 통과시켜줘", "eslint 경고 정리하고 tsc 통과", "타입체크 클린하게", "lint and typecheck fix", "fix all lint and type errors", "run lint and tsc until clean"처럼 정적 검사(lint/typecheck)를 통과시키고 싶을 때 사용하세요. (구분: 프로덕션 빌드/컴파일 에러는 looping:build-until-green, 포매터 스타일 정리는 looping:format-until-clean, 테스트 스위트 통과는 looping:test-until-green, 죽은 export·미사용 파일 제거는 looping:knip-until-clean) |
린트·타입체크 수정 (Lint and Typecheck Fix)
lint와 typecheck를 돌리고, 보고된 문제를 고치고, 코드베이스가 깨끗해질 때까지 반복합니다.
| 항목 | 값 |
|---|
| 카테고리 | 테스트(Testing) |
| 트리거 | 수동(manual) — 사람이 직접 시작 |
| 종료 조건(Exit) | lint와 typecheck 두 명령이 모두 종료 코드 0일 때 |
| 반복 한도(Max iterations) | 8 |
| 매 반복 체크 명령 | npm run lint && npx tsc --noEmit |
| 가드레일 | 강화됨(Hardened) |
| 지원 에이전트 | Claude Code · Cursor · Codex |
이 루프는 언제 쓰나
ESLint 경고와 TypeScript 에러가 잔뜩 쌓여 있는데 "하나씩 짚어가며 고쳐달라"고 일일이 지시하기 번거로울 때 씁니다. 한 번 시작하면 에이전트가 검사 실행 → 보고 분석 → 최소 수정 → 재실행을 스스로 반복하며 전부 깨끗한 상태(clean)에 수렴시킵니다. 핵심은 규칙을 끄지 않고 최소 diff로 실제 문제를 고치는 것입니다.
대표 사례: 모노레포 정리 패스에서 파일 5개에 걸친 ESLint 경고 24개와 TypeScript 에러 8개를 규칙을 비활성화하지 않고 정리.
루프 흐름
수동 시작 → lint·typecheck 실행 → 문제 수정 → 재실행 →〔피드백 게이트〕두 명령 모두 종료 코드 0?
↑ │ 아니오
└──────────────────────────────────────────────────┘
│ 예
종료
매 반복(pass)마다 하는 일
- lint와 typecheck 실행 — lint와 TypeScript 검사를 돌려 보고된 문제를 수집합니다.
npm run lint && npx tsc --noEmit
- 문제 수정 — lint 에러와 타입 에러를 최소 변경으로 고칩니다. 꼭 필요한 경우가 아니면 규칙을 비활성화하지 않습니다.
가드레일 (점수 조작 방지 규칙)
종료 조건을 "가짜로" 통과시키지 못하게 막는 규칙입니다. 반드시 지키세요.
- 체크 명령이나 종료 기준을 고쳐서 억지로 성공시키지 않는다.
- 체크를 건너뛰거나 비활성화·우회해서 종료 조건을 통과시키지 않는다.
- 여러 번 반복해도 막히면, 지표를 조작하지 말고 멈추고 블로커를 보고한다.
Claude Code에서 실행하기
가장 간단합니다. 아래 kickoff 프롬프트를 그대로 붙여넣으면 에이전트가 스스로 반복합니다.
"린트·타입체크 수정(Lint and Typecheck Fix)" 루프를 시작합니다.
목표: lint와 typecheck가 깨끗함
최대 반복: 8
매 반복 사이 실행: npm run lint && npx tsc --noEmit
종료 조건: 두 명령이 모두 종료 코드 0일 때
1단계: lint와 typecheck를 실행한다. 보고된 문제를 최소 diff로 고치고 반복한다.
이 루프를 스스로 페이싱(self-pace)하라. 매 반복 후 체크 명령을 실행하고 출력을 읽어, 종료
조건이 충족되지 않았을 때만 계속한다. 종료 조건이 통과하거나 최대 반복에 도달하면 멈춘다.
매 회차마다 한 줄 상태 업데이트를 남긴다.
팁: npm run lint && npx tsc --noEmit는 예시입니다. 프로젝트에 맞게 lint는 eslint . · biome check . · ruff check .로, 타입체크는 tsc -p tsconfig.json --noEmit · pyright · mypy . 등으로 바꾸세요.
팁 / 변형
- 체크 명령 교체: 모노레포라면
pnpm -r lint + pnpm -r typecheck처럼 워크스페이스 단위로 묶고, Rust면 cargo clippy -- -D warnings, Go면 golangci-lint run 식으로 생태계에 맞춥니다.
- 수렴이 멈추면: 같은 경고/에러가 반복되면 가드레일대로 멈추고, 규칙을 끄는 대신 원인 가설과 함께 사람에게 보고하게 하세요.
eslint-disable이나 @ts-ignore 남발은 금지.
- 범위 좁히기: 변경한 파일만 빠르게 보려면
eslint <편집된 파일>처럼 대상을 좁혀 반복 속도를 높입니다.
- 연관 루프: 프로덕션 빌드 에러까지는
looping:build-until-green, 포매터 스타일 정리는 looping:format-until-clean, 죽은 export·미사용 파일 제거는 looping:knip-until-clean.
원본 영어 kickoff (loops.elorm.xyz 원문)
Start the "Lint and Typecheck Fix" loop.
Goal: lint and typecheck are clean
Max iterations: 8
Between iterations run: npm run lint && npx tsc --noEmit
Exit when: both commands exit 0
Step 1: Run lint and typecheck. Fix reported issues with minimal diffs, then repeat.
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/lint-typecheck-fix