Crit: 코딩 에이전트의 계획, diff 및 실행 중인 앱을 브라우저에서 검토하세요
요약
Crit은 코딩 에이전트가 생성한 계획(plans), 변경 사항(diffs), 그리고 실행 중인 웹 애플리케이션을 브라우저에서 검토할 수 있게 돕는 도구입니다. 사용자는 특정 부분을 클릭하고 댓글을 달아 피드백을 제공하며, Crit은 이를 인지하여 에이전트에게 전달합니다. 이는 각 출력물 유형에 맞는 전용 UI를 제공하여, 단순한 텍스트 검토 이상의 깊이 있는 리뷰 경험을 가능하게 합니다.
핵심 포인트
- 계획(plan.md), diff, 웹 앱 등 다양한 결과물을 브라우저에서 검토 가능
- 사용자가 클릭하고 댓글을 달면 에이전트가 이를 인지하여 피드백 반영
- 단일 바이너리로 로컬 실행되며 Go, Nix, Windows 등 다양한 환경 지원
- Claude Code 및 Cursor, Copilot 등 주요 AI 에이전트와 통합되어 사용 용이
코딩 에이전트가 만든 계획(plans), 변경 사항(diffs) 그리고 실행 중인 애플리케이션을 브라우저에서 검토할 수 있습니다. 특정 줄을 클릭하고 댓글을 남기면, 에이전트가 이를 인지하게 됩니다.
에이전트에게 있어 계획과 코드는 모두 텍스트일 뿐입니다. 하지만 사용자 입장에서 계획을 검토하는 것과 웹 앱을 검토하는 것은 서로 다른 작업입니다.
Crit은 각 유형의 출력물에 대해 자체적인 검토 UI를 제공합니다. 잘못된 부분을 정확히 지적하고 에이전트에게 댓글을 남기세요:
crit plan.md
마크다운 파일에 검토 코멘트를 렌더링합니다.
crit
git 변경 사항을 찾아 구문 강조가 된 diff로 보여줍니다.
crit http://localhost:3000
실행 중인 앱을 프록시하고 그 위에 검토 레이어를 추가합니다.
crit landing.html
클릭하고 댓글을 달 수 있는 정적 HTML 파일을 렌더링합니다.
모든 것이 단일 바이너리에서 로컬로 실행됩니다.
Brew:
brew install crit
Go, Nix 및 Windows를 통해서도 사용 가능
Go:
go install github.com/tomasz-tomczyk/crit/cmd/crit@latest
Nix:
nix profile install github:tomasz-tomczyk/crit
Windows:
iwr https://github.com/tomasz-tomczyk/crit/releases/latest/download/crit-windows-amd64.exe -OutFile crit.exe
참고: 이후 crit.exe를 PATH의 어딘가로 이동해야 합니다. ARM64 사용자는 amd64 대신 arm64를 사용하세요. WSL 사용자는 리눅스 바이너리를 사용하세요.
또는 GitHub에서 최신 릴리스를 다운로드할 수 있습니다.
Claude Code:
claude plugin marketplace add tomasz-tomczyk/crit
claude plugin install crit@crit
Crit은 또한 Cursor, GitHub Copilot, OpenCode, OMO, omp, Codex, Gemini, Qwen, Hermes, Windsurf, Cline, Grok, Aider, Pi 등 파일 읽기와 명령어 실행이 가능한 모든 에이전트와 작동합니다. 모든 설치 방법과 자세한 내용은 integrations/를 참조하세요.
대부분의 통합 기능에는 전체 검토 루프를 자동화하는 /crit 슬래시 명령어가 포함되어 있습니다.
에이전트는 Crit을 실행하고, 사용자의 검토를 기다린 다음, 피드백에 따라 행동합니다.
승인할 때까지 반복합니다.
계획 검토와 브랜치 검토에 대한 2분 데모 워크스루는 다음과 같습니다:
![]()
권장되는 방법은 /crit을 실행하는 것입니다.
에이전트가 작업을 완료한 후, 계획을 작성했든 코드를 변경했든 상관없이 항상 command를 실행하세요. 또한 터미널에서 Crit을 직접 실행하고 작업이 끝나면 프롬프트를 에이전트에게 다시 붙여넣을 수도 있습니다.
crit # 리포지토리의 변경된 파일을 자동 감지
crit plan.md # 특정 파일 검토
crit plan.md api-spec.md # 여러 파일 검토
...
에이전트 채팅에서 /crit을 실행하고 위 인자 중 하나를 사용하세요. 아무 인자 없이 실행하면 에이전트가 대화 내용에서 무엇을 시작할지 스스로 파악합니다.
더 큰 브랜치, PR(Pull Request), MR(Merge Request) 또는 범위 검토의 경우, **스토리 모드(story mode)**는 diff에 대한 챕터별 개요를 추가합니다. 여기에는 주제별 챕터, 프롤로그, 노이즈용 지원 섹션이 포함되어 있어 라인별 검토 전에 변경 사항의 전체적인 형태를 이해할 수 있게 해줍니다. 이는 리뷰어라기보다는 설명자(explainer)입니다.
권장: crit install <tool> 이후에 /crit-story (또는 에이전트에 따라 $crit-story, /skill:crit-story)를 호출하세요. 에이전트는 세션 중에 crit story --prep 또는 --story-file을 통해 스토리를 작성합니다. 명시적으로 요청할 때만 실행하세요. 에이전트가 일반적인 /crit 리뷰에서 이를 추론하지는 않습니다.
대안: 터미널의 crit story는 전역 agent_cmd를 사용하며 (별도의 LLM 비용 발생), 생성은 LLM 기반 탐색입니다. 비용은 순수한 파일/diff 크기보다 변경 복잡도에 더 의존하며 선형적으로 증가하지 않습니다. 저희 경험상, 복잡한 PR(약 2050개 파일, 약 2k5k 라인)의 경우 Claude Opus 5를 사용하여 $1~$1.40 정도가 발생합니다. 명령어, 사용자 지정 프롬프트, JSON 형태 및 토큰 비용에 대한 참고 사항은 스토리 모드 가이드를 참조하세요.
crit live <url> (또는 crit <url>)은 Crit의 리뷰 UI를 통해 실행 중인 개발 서버를 프록시합니다. Crit의 iframe은 브라우저 탭과 다른 오리진/포트에서 앱을 로드하므로 호스트 범위 세션 쿠키가 자동으로 공유되지 않습니다. 직접 URL이 작동하지만 Crit에서 로그인 페이지나 Hydration mismatch가 표시되면, 상위(upstream) 쿠키를 전달하세요:
# 일회성
crit live http://localhost:4000/dashboard --cookie "_crit_key=..."
# 반복 가능 (Netscape jar 또는 원시 Cookie 헤더 라인)
...
쿠키 가져오기: 브라우저에서 앱에 로그인한 후, DevTools(Application → Cookies)에서 세션 쿠키를 복사하거나, 쿠키 저장소 파일을 내보내거나, --remote-debugging-port=9222 옵션을 사용하여 Chrome을 시작하세요. 그리고 --cdp-url을 전달하면 Crit이 대상 오리진의 쿠키를 자동으로 읽습니다.
설정 (Config) (전역 또는 프로젝트 .crit.config.json)
; 프로젝트 설정이 전역 설정을 덮어씁니다):
{
"live_cookie_file": ".crit/live-cookies.txt",
"live_cdp_url": "http://127.0.0.1:9222"
...
}
상대 경로는 리포지토리 루트에서 해석됩니다. live_cookie를 인라인으로 커밋하는 것보다 .crit/ 아래에 gitignore된 파일을 사용하는 것이 좋습니다. 모든 플래그는 crit live --help를 실행하여 확인하세요.
Comment/Pin 기능이 여전히 사용 불가능하거나, 프레임워크가 로컬 CSP / iframe 수정이 필요한 경우, 라이브 모드 가이드 (주입 모델, 일반적인 실패 사례, Phoenix / Vite / Next.js 레시피)를 참조하세요.
crit status # 검토 파일 경로 및 데몬 상태 표시
crit resume # 이전 검토를 선택하여 다시 열기
crit stats # 평생 검토 통계 표시
...
crit resume는 ~/.crit/reviews에 있는 모든 검토 목록을 최신순으로, 브랜치 또는 파일, 디렉토리, 나이, 오픈된 댓글 개수와 함께 보여줍니다. 하나를 선택하면 해당 데몬에 다시 연결되거나, 검토가 중지된 경우 검토가 발생했던 디렉토리에서 데몬을 재시작할 수 있습니다. 따라서 어디서든 검토를 재개할 수 있습니다. 목록만 인쇄하려면 --list를 전달하거나, 피커(picker)를 건너뛰려면 세션 ID를 전달하세요.
에이전트가 파일을 편집한 후, Crit은 변경된 내용을 분할 또는 통합 diff로 보여줍니다. 헤더에서 토글하여 확인할 수 있습니다.
줄 번호를 클릭하면 댓글을 달 수 있고, 드래그하여 범위를 선택할 수 있습니다. 댓글은 GitHub PR 검토와 마찬가지로 참조된 줄 바로 아래에 인라인으로 렌더링됩니다.
AI 에이전트는 브라우저 UI를 열거나 JSON을 수동으로 구성하지 않고도 crit comment를 사용하여 인라인 검토 댓글을 추가할 수 있습니다:
crit comment src/auth.go:42 '널 체크 누락'
crit comment src/handler.go:15-28 '에러 처리 문제'
crit comment --selector 'h1' '제목이 모호함' # 라이브 앱 또는 HTML 미리보기
...
댓글은 검토 파일( ~/.crit/reviews/에 저장됨)에 추가됩니다.
) 그리고 존재하지 않으면 자동으로 생성됩니다. crit status를 실행하여 활성 검토 세션 ID와 경로를 확인하세요. 동일한 디렉터리와 브랜치에 여러 세션이 일치하는 경우, --session <id>를 사용하여 선택하십시오.
crit comment, crit comments, crit share, crit push, 또는 crit pull에서
에이전트에게 넘기기 전에 두 번째 의견을 얻고 싶으신가요? 공유(Share) 버튼을 클릭하여 검토 내용을 업로드하고, 설치가 필요 없는 누구나 브라우저에서 열 수 있는 공개 URL을 받으세요. 각 검토자의 코멘트는 작성자별로 색상이 지정됩니다. 언제든지 비공개 처리할 수 있습니다.
CLI에서도 브라우저 UI를 시작하지 않고 직접 공유할 수 있습니다:
crit share plan.md # 파일을 공유하고 URL을 출력합니다
crit share plan.md --qr # 터미널에 QR 코드도 출력합니다
crit share plan.md --org acme # 조직 아래에서 공유합니다
...
조직(org) 아래에서 공유할 경우, 가시성은 기본적으로 organization (멤버 전용)으로 설정됩니다. --visibility (organization, unlisted, 또는 public)를 사용하여 재정의할 수 있습니다. 브라우저 UI에서는 로그인하여 조직에 속해 있는 경우 조직 선택기(org picker)가 표시됩니다.
공유는 공유 키가 없는 경우 crit.md를 사용합니다. 여러 배포판을 사용하려면 전역 share_targets를 구성하십시오. 그러면 브라우저가 목적지를 묻고, 각 검토 내용은 첫 번째 목적지에 바인딩됩니다:
{"share_targets":[
{"name":"Acme Crit","url":"https://crit.acme.com","default":true,"proxy_auth":true},
{"name":"crit.md","url":"https://crit.md"}
...]
crit auth login --share-url https://crit.acme.com을 실행하여 목적지를 추가하거나 인증하고, --set-default를 추가하여 CLI 기본값으로 설정할 수 있습니다. crit auth status는 모든 목적지를 나열합니다. 명시적인 `
만약 대상이 SSO 리버스 프록시 뒤에 있다면, 해당 대상에서 proxy_auth: true를 설정하세요.
브라우저 기반의 공유(Share) / 가져오기(Pull) / 재공유(Re-share) / 비게시(Unpublish) 기능은 팝업 릴레이를 사용하며, 터미널 작업은 해당 대상에서 사용할 수 없습니다.
익명으로 공유하거나 무료 crit.md 계정을 생성할 수 있습니다 (GitHub oAuth 사용). crit-web에 인증하려면 (공유 및 계정이 필요한 기타 기능을 위해):
crit auth login # 브라우저가 열리며 로그인합니다
crit auth login --share-url https://crit.acme.com --set-default
crit auth status # 대상과 신원을 나열합니다
...
crit auth login은 OAuth Device Flow를 사용합니다. 브라우저가 열리고, 사용자가 확인하면 CLI가 자동으로 토큰을 받습니다. 이 토큰은 전역 설정 파일(~/.crit.config.json)에 저장됩니다.
Crit는 GitHub pull request 및 GitLab merge request와 주석을 양방향으로 검토하고 동기화할 수 있습니다. 사용하는 포지(forge)에 맞게 CLI를 설치하고 인증하세요: GitHub CLI (gh auth login) 또는 GitLab CLI (glab auth login). GitLab.com, 자체 관리형 GitLab 호스트, 중첩 그룹 및 크로스 프로젝트 merge request가 지원됩니다.
Crit는 레포지토리 원격(remote)에서 GitHub 또는 GitLab을 자동으로 감지합니다. 모호하거나 자체 관리형 원격을 재정의하려면 설정 파일에 `
crit push # 현재 브랜치에서 PR/MR 자동 감지
crit push --dry-run # 게시 없이 미리보기
crit push --message "Round 2" # 검토 요약 추가
...
GitLab 인라인 코멘트는 Draft Notes를 사용하여 단일 검토로 게시됩니다. request-changes는 reviewer_state=requested_changes의 GitLab 지원을 필요로 하며, Crit은 결과가 조용히 다운그레이드되는 대신 오류를 보고합니다. 다시 당기면 로컬 코멘트를 중복하지 않고 답글, 수정, 삭제 및 토론 해결 내용을 가져옵니다.
검토 중인 모든 코멘트에서 "지금 보내기(Send now)"를 클릭하여 AI 에이전트 응답을 실시간으로 받을 수 있습니다. 이 기능은 agent_cmd가 구성된 경우에만 나타납니다.
에이전트는 코멘트 컨텍스트를 읽고, 이를 처리하며 (필요한 경우 코드 편집), 검토를 계속하는 동안 인라인으로 답글을 작성합니다.
~/.crit.config.json에서 설정하세요 (전역 설정만 가능):
{
"agent_cmd": "claude --dangerously-skip-permissions -p"
}
보안 참고: agent_cmd는 전역 ~/.crit.config.json에서만 읽힙니다. 프로젝트 레벨의 .crit.config.json 파일에서는 이를 설정할 수 없습니다. 이는 악성 저장소가 "에이전트에게 보내기(Send to agent)"를 트리거할 때 임의의 명령을 실행하는 것을 방지합니다.
에이전트는 대리하여 파일을 편집하려면 도구 권한이 필요합니다. 이 권한 부여 방법은 신뢰 수준에 따라 다릅니다:
| 모드 | 명령어 | 에이전트가 할 수 있는 작업 |
|---|---|---|
| 전체 접근 (Full access) | claude --dangerously-skip-permissions -p | 읽기, 쓰기 및 모든 도구 실행. 가장 간단한 옵션이며 신뢰하는 저장소에 권장됩니다. |
| 선택적 접근 (Selective access) | claude --allowedTools Edit,Read,Bash,Write,Glob,Grep -p | 나열된 도구만 허용됩니다. 좋은 중간 지점입니다. |
| 권한 없음 (No permissions) | claude -p | 에이전트는 코멘트에 응답할 수 있지만 파일을 편집할 수는 없습니다. Q&A 전용 워크플로우에 유용합니다. |
- 에이전트는 stdin에서 댓글 텍스트, 인용된 텍스트(선택한 경우), 파일 경로 및 줄 범위를 받습니다.
- 에이전트의 stdout은 캡처되어 자동으로 댓글에 답글로 게시됩니다.
- 에이전트가 파일을 편집하면 Crit은 **파일 감지(file watching)**를 통해 변경 사항을 감지하고 UI를 업데이트합니다.
첫 번째 에이전트 상호 작용 후, 해당 댓글은 **실시간 스레드(live thread)**가 됩니다:
- 스레드에 게시하는 추가 답글은 자동으로 에이전트에게 전송됩니다. 더 이상
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기