unslop-audit은(는) 무엇을 하나요?
절차
- 코드와, 가능하다면 실행 중인 앱에서 라우트, 컴포넌트, API 엔드포인트, DB 테이블, 환경 변수, compose/proxy 설정 등의 증거를 수집합니다.
- 아래 기준표를 사용하여 각 차원을 0-4점으로 평가합니다. 점수에는 파일 또는 라우트를 포함한 이유가 있어야 합니다.
구조적 특성에서 특성 항목을 찾아 한 줄씩 위치와 함께 나열합니다.- 발견 항목을 우선순위에 따라 정렬합니다: 차단 (보안, 데이터 손실, 법률, 외부 부작용) → 간극 (전체 흐름 누락) → 거침 (일관성 없거나 미완성) → 정돈.
- 하단의 템플릿으로 리포트를 작성합니다.
기준표 (0 = 없음, 2 = 동작하지만 빈약함, 4 = 의도적으로 설계됨)
| 차원 | 4점의 의미 |
|---|---|
| 정체성 및 접근 | 로그인, 로그아웃, 재설정, 초대, 역할이 백엔드에서 강제되고, 데이터에 소유권이 있으며, 속도 제한이 있음 |
| 온보딩 | 첫 실행 시 루프를 설명하고, 제품에 필요한 것을 수집하며, 첫 번째 성공으로 끝남 |
| 핵심 루프 | 시작, 진행, 결과, 재시도, 취소, 내보내기가 모두 존재하며 연결 가능함 |
| 설정 | 프로필, 팀, 알림, 통합, 데이터 내보내기 및 삭제; 중요한 사항이 환경 변수에만 존재하지 않음 |
| 상태 | 모든 화면에 빈 상태, 로딩, 오류, 부분, 오프라인, 권한 없음, 제한 초과가 있음 |
| 구조 | 실제 라우트, 엔터티별 딥 링크, 페이지네이션, 필터, 일관된 내비게이션 |
| 카피 | 구체적이고, 사람처럼 느껴지며, 원시 오류가 없고, 슬롭(slop) 표현이 없으며, 하나의 목소리를 가짐 |
| 비주얼 | 여백/색상/타이포그래피에 토큰 사용, 조용한 크롬, 의도적인 초점 요소 하나, 모바일 동작 |
| 컴포넌트 | 각 화면마다 데이터 형태에 맞춰 선택된 시그니처 컴포넌트가 있음; 기본 테이블/KPI 카드/폼이 아님; 읽기 우선이며 편집은 한 단계 더 깊이 |
합계 /36. 14 미만: 프로토타입. 14-23: 내부 사용 가능. 24-31: 출시 가능. 32+: 의도적으로 설계됨.
구조적 특성 (AI가 만든 앱에서 흔히 볼 수 있음)
- 800줄 이상의 단일 컴포넌트가 전체 제품을 렌더링하며 라우터가 없음.
- 인증이 프록시 설정에만 있거나 주석 처리되어 있음; API가 열려 있음.
- "모든 사용자에 대해"라고 적힌 확인 텍스트 또는 소유자가 없는 데이터.
- 설정이 환경 변수로만 존재하거나 아예 없음.
- UI가 매번 새로고침할 때마다 모든 항목을 다시 가져옴 (클라이언트 N+1).
- "출시 예정", 플레이스홀더 페이지, 죽은 버튼, 로렘 입숨(lorem ipsum), 시드 데이터가 실제 데이터로 표시됨.
- 오류 텍스트에 지원이 약속되어 있지만 연락처가 없음.
- 설명 없는 상태; 동일한 상태가 세 가지 이름으로 불림.
- 404/403/500 페이지 없음; SPA 폴백이 모든 경로에 셸을 제공.
- 미리보기, 테스트 발송, 내역, 속도 제한 또는 옵트아웃 없는 외부 메일 또는 웹훅.
- 행동이 뒤따르지 않는 허영심 카드 대시보드.
- 기본 실루엣으로 만들어진 화면: 제목, KPI 카드 행, 셀에 편집 컨트롤이 있는 테이블, 폼 (
unslop-components참조).
리포트 템플릿
# 감사: <앱> - <날짜>
점수: <n>/36 (<등급>)
## 차단
- <발견 항목> - <파일/라우트> - <중요한 이유> - <가장 작은 수정>
## 간극
## 거침
## 정돈
## 점수
| 차원 | 점수 | 이유 |
## 확인하지 않음