본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 04:22

실수 없는 git push를 위해 모든 단계 앞에 AI 게이트를 추가했습니다 🛡️

요약

AI가 생성한 코드의 오류를 방지하기 위해 git push 단계에 AI 검증 루프를 추가하는 'no-mistakes' 도구를 소개합니다. 이 도구는 샌드박스 환경에서 테스트와 린트를 실행하고, 실패 시 AI 에이전트가 스스로 코드를 수정하여 깨끗한 상태로 푸시하도록 돕습니다.

핵심 포인트

  • AI 생성 코드의 잦은 오류(import 누락, 타입 오류 등) 해결
  • 로컬 샌드박스에서 테스트 및 빌드 자동 검증
  • 실패 시 AI 에이전트가 에러 로그를 바탕으로 자동 수정
  • 수동적인 Pre-commit Hook과 달리 능동적인 피드백 루프 제공
  • Claude Code 등 AI 코딩 도구와 네이티브 통합 가능

우리는 이제 모두 코드를 작성하기 위해 AI를 사용하고 있습니다. Claude Code, Aider, 또는 Copilot이든 그 속도는 놀랍습니다. 하지만 우리가 충분히 이야기하지 않는 눈에 띄는 병목 현상이 있습니다: AI 코드는 종종 약간씩 망가져 있다는 점입니다. 🤖💥

AI는 import를 잊어버리거나, 타입 정의 (type definition)를 놓치거나, 테스트에 실패하곤 합니다.

보통 GitHub에 push한 후에야 이를 알게 됩니다. CI/CD 파이프라인이 빨간색으로 변하고 🔴, 결국 fix: linting 또는 fix: missing test variable이라는 제목의 수많은 커밋으로 Git 히스토리를 더럽히게 됩니다.

최근 저는 이 문제를 아주 멋지게 해결하는 no-mistakes라는 저장소를 발견했습니다. 이것은 터미널과 GitHub 사이에서 로컬 프록시 (local proxy) 역할을 하며, 다른 사람이 코드를 보기 전에 AI가 스스로 코드를 테스트하고 수정하도록 강제합니다.

이것을 살펴볼 가치가 있는 이유는 다음과 같습니다. 👇

😩 전통적인 워크플로우의 문제점

현재 개발자들은 망가진 코드를 두 가지 방식으로 처리합니다:

  1. CI/CD의 수치스러운 과정 (The CI/CD Walk of Shame) 🚶: 코드를 push하고, GitHub Actions가 실패할 때까지 5분을 기다린 다음, 에러를 로컬로 가져와 수정하고 다시 push합니다.
  2. Pre-commit Hooks (Husky) 🐶: 로컬 훅 (hooks)을 설정합니다. 커밋을 시도하면 포맷팅에 대해 경고를 보내며, 수동으로 수정할 때까지 커밋을 차단합니다.

두 방법 모두 **수동적 (passive)**입니다. 무언가 망가졌다고 알려주기는 하지만, 정리 작업은 여러분의 몫으로 남겨둡니다. 애초에 코드를 생성하기 위해 AI 코딩 에이전트 (AI coding agent)를 사용하고 있다면, 그 결과물을 수동으로 일일이 관리하는 것은 목적에 어긋납니다.

🚀 no-mistakes의 등장

no-mistakes는 여러분의 git push를 가로채는 CLI 도구입니다. 코드를 바로 origin으로 보내는 대신, 로컬화된 검증 파이프라인 (validation pipeline)을 통해 라우팅합니다.

⚙️ 실제 작동 방식:

  1. 🧱 숨겨진 샌드박스 (The Hidden Sandbox): 트리거를 실행하면 백그라운드에서 임시 git 워크트리 (worktree)를 생성합니다. 사용 중인 에디터는 완전히 방해받지 않고 그대로 유지됩니다.
  2. 검증 (Validation): 해당 격리된 샌드박스 내부에서 테스트, 린터 (linter), 빌드 단계를 실행합니다.
  3. 🔁 AI 피드백 루프 (The AI Feedback Loop): 테스트가 실패하면 에러 로그를 캡처하여 AI 에이전트 (agent)에게 전달하며, 본질적으로 다음과 같이 말합니다: "이 테스트를 깨뜨렸습니다. 수정하세요."
  4. 🟢 클린 푸시 (The Clean Push): AI가 코드를 패치하고 모든 테스트를 통과하면, 깨끗한 코드를 GitHub에 푸시하고 Pull Request를 자동으로 생성합니다. 그 후 임시 샌드박스를 삭제합니다.

🌟 차별점

가장 큰 차별점은 이것이 수동적이지 않고 능동적 (active)이라는 점입니다.

만약 pre-commit hook이 실패하면 프로세스가 중단됩니다. 하지만 no-mistakes가 실패하면, **에이전트 기반 리뷰 루프 (agentic review loop)**를 시작합니다. 대화형 터미널 UI (TUI)를 사용하여 AI가 무엇을 수정하려고 하는지 정확하게 보여줍니다. 만약 AI가 막히게 되면, 사용자가 직접 개입하여 터미널에서 즉시 가이드를 제공할 수 있습니다.

또한 Claude Code와 같은 도구와 네이티브로 통합됩니다. 에이전트에게 말 그대로 _"/no-mistakes 스킬을 사용하여 이 변경 사항을 검증하고 게이트 (gate)를 설정해줘"_라고 말하면, 전체 라이프사이클을 알아서 처리합니다. 🤯

/no-mistakes command to instantly trigger a full-stack automated code review and testing pipeline

단 하나의 명령으로 리뷰, 테스트, 검증까지

✨ 주요 기능 요약

  • 🔇 비차단 방식 (Non-Blocking): 숨겨진 워크트리 (worktrees)를 사용하기 때문에, 백그라운드에서 이전 기능의 테스트와 수정이 진행되는 동안 즉시 다음 기능을 작업할 수 있습니다.
  • 🔀 자동 리베이스 (Auto-Rebase): 테스트 전에 최신 main 브랜치 위로 코드를 자동으로 리베이스 (rebase)하여, 숨겨진 머지 충돌 (merge conflicts)을 방지합니다.
  • 📝 자동 문서화 (Auto-Documentation): 코드 변경 사항을 검토하고 README.md를 업데이트하여 문서가 최신 상태를 유지하도록 합니다.
  • 💚 클린 PR (Clean PRs): 빌드가 실패한 상태로 업스트림 (upstream)에 푸시하는 일이 절대 없습니다.

🛠️ 시작하는 방법

설정에는 약 30초가 소요됩니다. ⚡

1. CLI 도구를 전역(globally)으로 설치합니다:

curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh

2. 프로젝트 폴더에서 초기화합니다:

no-mistakes init

이 과정은 no-mistakes라는 이름의 새로운 git 원격 프록시 (remote proxy)를 연결합니다.

3. 푸시(push) 방식을 변경합니다:

다음번에 귀하(또는 귀하의 AI)가 기능 구현을 완료하면, git push origin을 건너뛰세요. 대신 다음을 실행합니다:

git push no-mistakes

도구가 제어권을 가져와 워크트리 (worktree)를 실행하고, 테스트 스위트 (suites)를 구동하며, AI의 실수 (slop)를 수정하고, 귀하를 대신해 PR을 생성합니다. 🎉

💬 함께 논의해 봅시다

AI 에이전트가 작성하는 코드가 많아짐에 따라, 우리의 툴링 (tooling)은 **작성 (writing)**에서 **검증 (verifying)**으로 전환되어야 합니다.

현재 워크플로 (workflow)에서 AI가 생성한 버그를 어떻게 처리하고 계신가요? 여전히 수동으로 테스트를 실행하고 AI의 실수를 수정하고 계신가요, 아니면 리뷰 루프 (review loop)를 자동화하기 시작하셨나요? 댓글로 알려주세요! 👇

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0