| name | npm-audit-fix-loop |
| description | high/critical npm audit 취약점을 한 번에 하나씩, 매번 테스트로 검증하며 고치는 닫힌 루프입니다. 무지성 `npm audit fix --force`로 한꺼번에 밀어붙이지 않습니다. 사용자가 "npm audit 취약점 고쳐줘", "high/critical 취약점 하나씩 안전하게 패치", "audit fix 테스트 확인하면서 돌려줘", "보안 취약점 다 잡아줘", "npm audit fix loop", "fix npm audit high/critical with test verification"처럼 npm 의존성 취약점을 안전하게 0건으로 만들고 싶을 때 사용하세요. (구분: 주간 npm audit 스캔·심각도별 트리아지는 looping:security-audit-weekly, 취약점이 아니라 outdated 패키지를 하나씩 올리는 건 looping:dependency-upgrade-one-by-one, 주간 outdated 의존성 점검·요약은 looping:dependency-audit-weekly) |
npm Audit 안전 수정 루프 (npm Audit Fix Loop)
high/critical npm audit 취약점을 한 번에 하나씩, 테스트로 검증하며 고칩니다 — 무지성 npm audit fix --force 금지.
| 항목 | 값 |
|---|
| 카테고리 | 보안(Security) |
| 트리거 | 수동(manual) — 사람이 직접 시작 |
| 종료 조건(Exit) | npm audit에 high/critical 취약점이 더 이상 남지 않을 때 |
| 반복 한도(Max iterations) | 10 |
| 매 반복 체크 명령 | npm audit --audit-level=high && npm test |
| 가드레일 | 강화됨(Hardened) |
| 지원 에이전트 | Claude Code · Cursor |
이 루프는 언제 쓰나
npm audit에 high/critical 취약점이 쌓여 있는데, npm audit fix --force를 한 번에 갈기자니 메이저 버전 점프로 앱이 깨질까 무서울 때 씁니다. 이 루프는 정반대로 갑니다: 가장 심각한 advisory 하나만 골라 안전하게 고치고, 그때마다 테스트를 돌려 회귀가 없는지 확인한 뒤 다음으로 넘어갑니다. 한 번에 하나씩 + 매번 테스트 검증이라, 무엇이 무엇을 깨뜨렸는지가 항상 분명하고 --force의 도박을 피할 수 있습니다.
루프 흐름
수동 시작 → 취약점 목록(npm audit) → 안전한 수정 1건 적용 → 테스트 →〔피드백 게이트〕high/critical 남았나?
↑ │ 예
└──────────────────────────────────────────────────────────────────────┘
│ 아니오
종료
매 반복(pass)마다 하는 일
- 취약점 목록 —
npm audit --json을 돌려, 고칠 수 있는 이슈 중 가장 심각도 높은 것 하나를 고릅니다(한 번에 하나씩).
npm audit --audit-level=high
- 안전한 수정 적용 — 그 advisory에
npm audit fix를 쓰거나 직접 의존성 버전을 올립니다(bump). 불가피한 경우가 아니라면 --force는 피합니다.
npm test
가드레일 (점수 조작 방지 규칙)
종료 조건을 "가짜로" 통과시키지 못하게 막는 규칙입니다. 반드시 지키세요.
- 체크 명령이나 종료 기준을 고쳐서 억지로 성공시키지 않는다.
- 체크를 건너뛰거나 비활성화·우회해서 종료 조건을 통과시키지 않는다.
- 여러 번 반복해도 막히면, 지표를 조작하지 말고 멈추고 블로커를 보고한다.
Claude Code에서 실행하기
가장 간단합니다. 아래 kickoff 프롬프트를 그대로 붙여넣으면 에이전트가 스스로 반복합니다.
"npm Audit Fix Loop" 루프를 시작합니다.
목표: high/critical npm audit 취약점 0건
최대 반복: 10
매 반복 사이 실행: npm audit --audit-level=high && npm test
종료 조건: npm audit에 high/critical 이슈가 보고되지 않을 때
1단계: high/critical advisory 하나를 골라 가장 안전한 수정을 적용하고, 테스트를 돌린 뒤 반복한다.
이 루프를 스스로 페이싱(self-pace)하라. 매 반복 후 체크 명령을 실행하고 출력을 읽어, 종료
조건이 충족되지 않았을 때만 계속한다. 종료 조건이 통과하거나 최대 반복에 도달하면 멈춘다.
매 회차마다 한 줄 상태 업데이트를 남긴다.
팁: npm은 예시입니다. 프로젝트에 맞게 pnpm audit / yarn audit로 체크 명령을 바꾸고, 테스트 명령도 pnpm test·bun test 등으로 맞추세요.
팁 / 변형
- 다른 생태계로 교체: 체크 명령을 패키지 매니저·언어에 맞게 바꾸세요 — pnpm은
pnpm audit, yarn은 yarn audit, 파이썬은 pip-audit, Rust는 cargo audit. 종료 조건("high/critical 0건")은 그대로 유지합니다.
--force 주의: npm audit fix --force는 메이저 버전 점프를 일으켜 빌드·런타임을 깨기 쉽습니다. 직접 의존성 bump를 먼저 시도하고, 매 반복 npm test로 검증하세요.
- 막힐 때: 취약점이 transitive(간접) 의존성이라 직접 못 고치면, 무리하지 말고 가드레일대로 멈춰
overrides/업스트림 릴리스 대기 같은 블로커를 보고하게 하세요.
- 연관 루프: 주간 스캔·심각도별 트리아지는
looping:security-audit-weekly, outdated 패키지를 하나씩 올리는 건 looping:dependency-upgrade-one-by-one, 주간 의존성 점검·요약은 looping:dependency-audit-weekly.
원본 영어 kickoff (loops.elorm.xyz 원문)
Start the "npm Audit Fix Loop" loop.
Goal: no high or critical npm audit vulnerabilities
Max iterations: 10
Between iterations run: npm audit --audit-level=high && npm test
Exit when: npm audit reports no high/critical issues
Step 1: Pick one high/critical advisory, apply the safest fix, run tests, and 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/npm-audit-fix-loop