Assay
이 스킬을 사용하여 로컬 환경에서 게이트 기반의 정적 코드 리뷰를 수행하세요. 리뷰는 품질 게이트를 순서대로 엽니다. 기본적인 위생, 명명, 또는 오류 처리가 이미 깨져 있는 경우 하위 게이트에서 실패하면 상위 게이트가 차단됩니다. 상위 게이트의 판단은 의미가 없기 때문입니다.
이 스킬은 원격 서비스를 호출하지 않으며, 댓글을 게시하거나 코드를 승인하거나 파일을 수정하지 않습니다. 로컬 또는 붙여넣은 입력을 리뷰하고 구조화된 보고서를 생성합니다.
워크플로우
단계 0: 로컬 입력 확인
사용자 입력을 리뷰 범위로 정규화합니다:
| 입력 | 해결 방법 |
|---|---|
| 붙여넣은 코드 또는 diff | 제공된 콘텐츠를 직접 리뷰 |
| 로컬 파일 경로 | 전체 파일 내용 읽기; 가능하지 않은 경우 diff 컨텍스트 없음 |
| 로컬 git diff | 변경된 파일과 헝크 리뷰 |
| 커밋 해시 또는 범위 | 가능한 경우 로컬 git diff 사용 |
| 브랜치 이름 | 가능한 경우 로컬 merge-base diff 사용 |
| 모호한 요청 | 파일, diff, 커밋/범위, 브랜치, 또는 붙여넣은 코드 요청 |
MR/PR 데이터를 가져오거나, 원격 API를 호출하거나, 인증을 요구하지 마세요. 원격 컨텍스트가 필요한 경우 사용자에게 로컬 diff 또는 붙여넣은 콘텐츠를 제공하도록 요청하세요.
단계 1: 리뷰 깊이 조정
열 게이트 수를 선택합니다. 일반적인 로컬 변경의 경우 기본값으로 게이트 1-5를 엽니다.
| 컨텍스트 | 게이트 범위 |
|---|---|
| 초안, WIP, 탐색적 코드 | 게이트 1-3 |
| 일반 기능 또는 내부 도구 | 게이트 1-5 |
| 공유 라이브러리, 프로덕션 경로, 또는 공개 API | 게이트 1-7 |
| 보안 민감 코드, 인증, 암호화, 명령 실행, 또는 사용자 입력 경계 | 게이트 1-8 |
모호한 경우 코드의 목적지 또는 위험 수준을 질문하세요.
단계 2: 대규모 범위 트라이지
리뷰 범위에 5개 이상의 파일이 포함된 경우, 심층 검사 전에 신속한 트라이지를 실행합니다. 파일이 5개 이하인 경우 트라이지를 건너뛰고 구조 추출로 진행합니다.
트라이지 검사:
| # | 검사 | 실패 신호 |
|---|---|---|
| 1 | 죽은 코드 | 주석 처리된 코드, 사용하지 않는 임포트, 디버그 출력 |
| 2 | 명명 명확성 | 공개 이름이 모호하거나 오해의 소지가 있음 |
| 3 | 중첩 깊이 | 3단계보다 깊은 중첩 |
| 4 | 함수 길이 | 여러 책임을 숨길 수 있을 정도로 긴 함수 |
| 5 | 오류 무시 | 빈 catch/except 또는 무시된 실패 |
| 6 | 도메인 혼합 | 한 단위에 I/O와 비즈니스 로직이 섞여 있음 |
| 7 | 원시 필드 조립 | 의미 도우미가 없는 복잡한 조건 |
| 8 | 중복 향기 | 유사한 로직이 반복됨 |
| 9 | 보안 냄새 | 비밀, 안전하지 않은 보간, 민감한 로그, 검사되지 않은 위험한 입력 |
파일 분류:
| 분류 | 기준 | 다음 조치 |
|---|---|---|
| 빨강 | 3개 이상 검사 실패 | 전체 게이트 검사 |
| 노랑 | 1-2개 검사 실패 | 대상 게이트와 모든 하위 게이트 검사 |
| 초록 | 0개 검사 실패 | 특별히 요청하지 않는 한 통과 |
보안 냄새는 이중 트랙입니다. 게이트 8이 하위 게이트에 의해 차단되더라도 트라이지 경고로 보고하세요.
단계 3: 구조 추출
게이트를 열기 전에 리뷰되는 각 함수, 클래스, 모듈 또는 관련 코드 단위의 구조를 추출합니다. 추출을 사용하여 게이트 리뷰를 안내하고, 원시 diff 텍스트에만 의존하지 마세요.
기록:
- 클로저, 콜백 또는 중첩 함수.
- 인라인 객체 또는 동작이 있는 로컬 엔터티.
- I/O 작업 및 외부 부작용.
- 가장 깊은 중첩과 그 이유.
- 도메인 분포: 인프라, 비즈니스, 프레젠테이션 또는 혼합.
- 수명 주기: 일회성, 지속적 또는 혼합.
- 캡처된 변수 및 숨겨진 종속성.
- 추출 중 발견된 명백한 이상.
- 게이트 6에 사용 가능한 진실의 원천: 로직을 판단하기 위한 사양 또는 거버넌스 문서(
openspec/,PROJECT.md,AGENTS.md, ADR, 링크된 이슈)를 찾거나, 찾을 수 없음을 기록.
단계 4: 순차 게이트 리뷰
게이트 정의는 references/gates.md를 참조하세요.
게이트를 순서대로 엽니다. 게이트가 실패하면 해당 파일 또는 리뷰 범위에 대해 더 높은 게이트 열기를 중단합니다. 결과를 조작하지 마세요. 세부 섹션에 대해 침묵은 준수를 의미하며, 게이트 인덱스는 여전히 어떤 게이트가 열렸고, 통과했으며, 실패했으며, 차단되었는지 기록합니다.
단계 5: 보고서
다음 형식을 사용하여 보고서를 생성합니다:
## 리뷰 기록
**소스**: [입력 참조]
**조정**: 게이트 1-[N] ([이유])
**트라이지**: [건너뜀 | 빨강 M / 노랑 N / 초록 K]
**평결**: [통과 | 게이트 N에서 실패]
### 게이트 인덱스
| 게이트 | 초점 | 상태 |
|---:|---|---|
| 1 | 포맷팅 및 구문 위생 | [통과 | 실패 | 차단 | 검사 안 함] |
| 2 | 명명 및 가독성 | [통과 | 실패 | 차단 | 검사 안 함] |
| 3 | 오류 처리 및 관찰 가능성 | [통과 | 실패 | 차단 | 검사 안 함] |
| 4 | 제어 흐름 및 구조적 명확성 | [통과 | 실패 | 차단 | 검사 안 함] |
| 5 | 책임 및 경계 | [통과 | 실패 | 차단 | 검사 안 함] |
| 6 | 비즈니스 로직 무결성 | [통과 | 실패 | 차단 | 검사 안 함] |
| 7 | 중복 제거 및 합성 | [통과 | 실패 | 차단 | 검사 안 함] |
| 8 | 보안 및 매개변수 무결성 | [통과 | 실패 | 차단 | 검사 안 함] |
### 보안 트라이지 경고
[트라이지 검사 9가 실패한 경우에만 포함]
### 게이트 N: [이름]
| # | 위치 | 위반 | 수정 |
|---|---|---|---|
| 1 | `file:line` | 게이트 N: 위반된 특정 표준 | 구체적인 수정 |
### 구조 부록
[발견 사항과 관련된 코드 단위 요약 포함]
단계 6: 선택적 수정 계획
사용자가 요청한 경우에만 수정 계획을 생성합니다.
수정 계획 규칙:
- 수정당 하나의 위반.
- 수정 순서는 게이트 순서를 따름.
- 동일한 게이트 내에서는 논리적 종속성이 달리 요구하지 않는 한 파일 및 줄 순서로 정렬.
- 기회주의적 수정 금지.
- 각 수정은 검증 기준을 포함.
규칙
- 리뷰만 수행하고 코드를 수정하지 마세요.
- 로컬 또는 붙여넣은 입력만 사용하고 원격 PR/MR API를 호출하지 마세요.
- 게이트를 순차적으로 열고 첫 번째 실패한 게이트에서 중단하세요.
- 심층 보안 검사가 차단된 경우에도 보안 트라이지 경고를 보고하세요.
- 구체적인 수정 사항을 제시하고 "개선 고려"와 같은 모호한 제안을 피하세요.
- 열린 모든 게이트가 통과하면 게이트 인덱스가 보고서가 됩니다. 발견 사항을 조작하지 마세요.
- 테스트, 빌드 또는 런타임 검사가 실행되지 않았음을 언급하세요.
- 자신의 영역을 지키고 경계에서 인계하세요. 이 스킬은 정적 로컬 리뷰 전용입니다. 런타임/동작 정확성에 대해서는
verify로, 게이트 8의 표면 검사를 넘어선 심층 보안 분석에 대해서는security-review로 안내하세요. 다른 스킬의 작업을 절반만 수행하는 대신 인계 대상을 명명하세요.