작업 결과가 귀사에 도달하기 전에 에이전트의 부주의한 행위를 미리 포착하세요.
성공을 위해 건너뛴 테스트, 무시된 오류, 남겨진 스텁, 조용히 처리된 타입 확인 작업. 안티-슬롭은 에이전트가 만든 모든 변경 사항에서 이런 문제를 검사하고 각각의 결과와 함께 개발자 에이전트에게 다시 보냅니다.
- 테스트가 생략됨src/checkout/coupon.test.ts:88
it.skip('rejects an expired coupon', …) - 오류가 무시됨src/checkout/apply-coupon.ts:41
} catch {}
- 수정됨테스트가 생략됨안티-슬롭
- 수정됨오류가 무시됨안티-슬롭
작업 뷰는 Coroid 포털을 재현한 것입니다. 여기에 표시되는 작업, 파일 및 결과는 예시일 뿐입니다.
- 규칙
- 106
- 그룹
- 13
- 기본적으로 변경을 차단하는 규칙
- 44
- 변경을 차단하는 기존 문제점
- 0
검출 대상 항목
규칙은 그룹으로 구성됩니다. 각 규칙은 변경을 차단하거나 권고하거나 단순히 기록할 뿐이며, 소유자는 조직 또는 특정 프로젝트에 대해 이를 변경할 수 있습니다.
- 테스트
- 집중적으로 실행되거나 건너뛴 테스트, 삭제된 테스트, 제거되거나 약화된 어서션, 실패할 수 없는 테스트, 불안정한 테스트를 숨기는 재시도 등
.only.skipexpect(true).toBe(true)
- 억제 항목
- 새로운 린트 비활성화, 무시된 타입 오류, any로의 형변환, 커버리지에서 제외된 코드 등
@ts-ignoreas anyeslint-disable
- 빌드 및 CI
- 제거되거나 실패 허용된 테스트 단계, 낮아진 커버리지 임계값, 테스트 없이 통과하는 테스트 실행, 건너뛴 커밋 훅, 빌드 출력이 커밋되는 경우 등
continue-on-error: true--passWithNoTests
- 테스트 증거
- 아무것도 실행되지 않은 테스트 실행, 이전 성공 실행보다 적은 테스트 수, 완료로 보고된 부분적인 실행, 새로운 실행으로 위장된 캐시된 결과 등
Tests: 0 total--onlyChanged
- 프로덕션 코드
- 플레이스홀더 구현체, 디버깅 코드, “실제 구현 시에는”과 같은 주석, 사람을 위한 지침, 모의 데이터, 테스트 코드를 가져오는 프로덕션 코드 등
throw new Error('Not implemented')debugger;
- 오류 처리
- 기본값 뒤로 숨겨지거나 무시되는 오류, 실패 시에도 접근을 허용하는 권한 확인, 무제한 재시도 등
except: pass.catch(() => {})
- 보안
- 하드코딩된 비밀번호, TLS 인증 기능 비활성화, 인증 보호 장치 제거, 자격 증명을 포함하는 와일드카드 CORS 설정, 그리고 문자열 기반으로 구성된 SQL 쿼리.
rejectUnauthorized: falseverify=False
- 아키텍처
- 새로운 임포트 순환, 선언된 경계를 넘나드는 임포트, 중복된 코드 블록, 변경으로 인해 사용되지 않게 된 코드, 폐기된 패턴의 새로운 복사본 등
- 종속성
- 잠금 파일 없이 발생한 매니페스트 변경, 이미 수행 중인 작업을 위한 두 번째 라이브러리, 고정되지 않은 버전, 사양에 명시되지 않은 업그레이드 등
"latest"
- 캐싱
- 테넌트 정보가 포함되지 않은 캐시 키, 만료되지 않는 인메모리 캐시, 코드 실행 시에 읽혀야 할 빌드 시점 값 등
- 주석
- 다음 줄을 반복하거나 편집 내용을 설명하며, 주변 코드와 모순되거나 애매한 댓글입니다.
// Updated to// should work
- 변경 범위
- 명세서에서 다루지 않은 파일, 서식만 변경된 내용, 그리고 작업에서 요구하지 않은 이름 변경입니다.
- 에이전트 경로
- 에이전트가 수행한 작업으로, 실패한 테스트를 삭제하거나 실패 시 출력된 값으로 예상값을 변경하는 등의 행위가 포함됩니다.
변경으로 인해 새로 발생한 문제만 차단됩니다.
대부분의 저장소에는 이미 이러한 패턴들이 일부 존재합니다. 안티-슬롭은 발견된 항목을 유래별로 분류하므로 기존의 기술 부채가 무관한 작업을 방해하지 않습니다.
- 새로 도입된 항목
- 이번 변경에서 새로 발생한 항목입니다. 차단 규칙에 해당하는 발견 항목은 개발자 에이전트에게 다시 전달됩니다.
- 수정된 항목
- 이미 존재하며 변경 사항이 수정한 줄이나 함수 내에 있는 항목입니다. 이는 기록되며, 변경 관리 규율에 따라 수정됩니다.
- 기존 항목
- 저장소의 다른 곳에 있는 항목입니다. 이는 Factory에 기술 부채로 기록되며, 해당 규칙의 발견 항목을 수정하기 위한 작업을 생성할 수 있습니다.
코드를 이동하는 것은 도입으로 간주되지 않습니다. 복사하는 경우에만 도입으로 간주됩니다.
변경의 적용 범위는 귀사가 직접 결정합니다.
변경 관리 규율은 개발자 에이전트에게 작업 중에 정리할 수 있는 항목을 지시합니다.
- 정밀 처리명세서에서 요구하는 부분만 처리합니다. 다른 문제들은 보고될 뿐 수정되지 않습니다.
- 균형 조정기본값변경 사항이 수정하는 줄에 있는 사소한 문제들도 함께 수정합니다.
- 복원 처리변경 사항이 수정하는 함수 내에 있는 발견 항목들도 함께 정리합니다.
개발자 에이전트도 동일한 규칙을 따라 작업합니다.
안티-슬롭은 단순히 최종 판단을 내리는 도구가 아닙니다. 에이전트는 변경을 작성하는 동안 규칙을 적용받으며 이를 무시할 수 없습니다.
- 에이전트는 변경 관리 규율과 격리된 패턴들, 그리고 대체로 사용할 항목들을 바탕으로 작업을 시작합니다.
- 에이전트는 편집 후 즉시 빠른 규칙들을 확인하며, QA가 실행되기 전에 차단되는 발견 항목을 수정할 기회를 한 번 얻습니다.
- 에이전트는 자신이 발견한 항목을 수용할 수 없습니다. 에이전트가 테스트가 잘못되었다고 판단하여 변경한다면, 리뷰어의 승인이 필요합니다.
- 저장소 파일인
.coroid/anti-slop.yml를 통해 규칙을 추가하고 생성된 경로를 제외할 수 있습니다. 이 파일은 변경 사항의 기준선에서 읽히므로 변경 자체가 규칙을 완화할 수 없습니다.
귀사가 이미 운영 중인 에이전트들도 같은 규칙을 준수해야 합니다.
자신의 코딩 에이전트를 사용하는 엔지니어들도 조직의 규칙을 적용할 수 있습니다.
- AGENTS.md 스니펫
- 프로젝트의 변경 관리 규율, 격리된 패턴 및 가장 중요한 규칙들을 포함한 에이전트 지침 섹션을 다운로드하세요.
- Coroid MCP 서버
anti_slop_rules는 공개된 정책을 기술하며,anti_slop_scan은 동기화된 프로젝트의 브랜치를 스캔합니다. 둘 다 읽기 전용입니다.- Coroid Check가 풀 요청에 적용됨
- pull request에서 해당 기능을 활성화하면 개발자가 생성한 GitHub 풀 요청에 동일한 검사가 적용되어 각 발견 항목이 해당 줄에 표시됩니다.
우리의 자체 코드에서 먼저 테스트를 거쳤습니다.
Coroid는 한 사람과 백 개의 에이전트가 함께 만들었으므로, 안티-슬롭은 다른 누군가의 저장소에 적용되기 전에 먼저 Coroid의 저장소에서 테스트되었습니다.
모든 소스 파일에 대한 스캔
저희는 마치 에이전트가 작성한 것처럼 Coroid 저장소 내의 모든 11,536 소스 파일을 스캔했습니다. 그 결과 규칙에서 잘못 판단한 패턴이 6개 발견되었으며, 이를 수정하자 오류 차단 건수가 5,366개에서 2,253개로 줄어들었습니다.
여전히 차단되는 항목은 규칙이 찾아내도록 설계된 대상입니다. 예를 들어 알림 코드에 남겨진 메모: “실제 구현에서는 사용자의 FCM 토큰을 가져와야 합니다.”
모델이 판단하는 규칙
두 가지 규칙을 통해 모델에 한 줄씩 질의합니다. 하나는 코드에서 이미 배제된 사항에 대한 방어적 검증이고, 다른 하나는 인접한 코드와 상충하는 주석입니다. 이 규칙들은 단지 권고 사항일 뿐입니다. 600실제로 병합된 변경사항에서 추출한 후보 라인 중에서 해당 규칙들이 식별한 경우는 없음잘못 판단한 경우가 있으며, 그로 인한 비용은 최대 US$0.0015 스캔당입니다.
품질 관리 설정에서 이 기능을 활성화하세요.
소유자와 관리자는 조직의 기본 설정 또는 특정 프로젝트에 대해 안티-슬롭을 활성화할 수 있습니다. 다음번 프로젝트 실행 시 해당 설정이 적용됩니다.
- 품질 관리 페이지를 열고 조직의 기본 설정 또는 특정 프로젝트를 선택하세요.
- 안티-슬롭을 활성화하세요. 이렇게 하면 정책에 다섯 가지 요건이 추가됩니다.
- 변경 관리 규율과 차단 그룹을 선택하세요. 비활성화해도 다음에 사용할 때 이 설정은 유지됩니다.
추가되는 다섯 가지 요건
- 테스트가 여전히 변경 사항을 증명해야 함
- 미완성된 코드나 테스트용 코드가 배포되어서는 안 됨
- 새로운 구조적 기술 부채가 발생해서는 안 됨
- 변경 사항이 범위 내에 머물러야 하며 해당 코드베이스를 따르도록 작성되어야 함
- 새로운 종속 요소는 실제이며 신뢰할 수 있습니다.
- 조직 기본 설정3개 프로젝트에서 이를 따릅니다.2개 중 5개
- 스토어프론트사용자 정의 설정4개 중 5개
- 문서 사이트기본 설정을 따름2개 중 5개
- 결제 API기본 설정을 따름2개 중 5개
- 모바일 앱기본 설정을 따름2개 중 5개
- 안티-슬롭테스트가 약화되거나 오류가 숨겨지고, 임시 코드가 배포되거나 구조적 부채가 추가되는 경우 해당 변경 사항을 다시 반려합니다.
- 단위 테스트모든 변경 사항에 대해 저장소 내의 단위 테스트를 자동으로 찾아서 실행합니다.
- 브라우저 테스트2개 중 3개기본 설정과 다름변경된 내용을 기반으로 브라우저 상에서 사용자 흐름을 실행하여 검증합니다.
- 번역기본 설정과 다름변경된 문자열이 올바르게 번역되었는지, 그리고 플레이스홀더와 복수형 표현이 일치하는지를 확인합니다.
- 저장소 검사서식 지정, 파일 크기 검사, 마이그레이션, 통합 테스트 및 보안 스캔 등 사용자가 지정한 커맨드를 직접 실행합니다.
- 철저한 QA철저함QA 단계에서는 명세서에 따라 실제 증거와 스크린샷을 수집합니다. 이 기능이 비활성화되면 표준 QA 절차가 적용됩니다.