Files
HMDesign/docs/guidelines/ai-generation-guard.md
T

17 lines
2.5 KiB
Markdown

# AI Generation Guard — 경량 검증
`node scripts/ai-generation-guard.mjs --target <앱> --scope FULL_SCREEN|PARTIAL`
- 기존 Navigation·Storybook 격리·CSS entry·공개 Import 검사를 유지한다. Navigation 재사용 시 확정한 `--mode`를 전달한다.
- PARTIAL은 `--files <수정 파일,...>`로 지정한다. 앱 bootstrap graph만 탐색하며 별도 전체 저장소 검색은 하지 않는다. 디자인 시스템 내부 구현은 소비 화면 검사에서 제외한다.
- 정상 텍스트 출력은 `PASS` 한 줄이다. 문제는 최대 5개 파일·행·원인만 표시한다. 기계 처리·전체 진단은 `--json`으로 확인한다.
- `REUSE-001` FAIL: 공개 이름에 대응하는 HM `data-slot`을 소비자의 기본 HTML에 부여함. 공식 여부가 불명확한 wrapper는 NOT VERIFIED다. slot은 컴포넌트 재사용 증거가 아니다.
- `REUSE-002` FAIL: 공개 컴포넌트를 import한 뒤 참조하지 않음. re-export·type import·별칭·namespace·props 전달은 단순 미사용으로 판정하지 않는다.
- `REUSE-003` NOT VERIFIED: HM slot/class를 겨냥한 CSS. 승인된 override와 복제 의도를 정적 코드만으로 구분할 수 없으므로 실제 사용을 확인한다.
- `REUSE-004` NOT VERIFIED: 기본 select/input/textarea/button 사용. 합법적인 기본 HTML과 기존 컴포넌트 대체 구현을 구분하여 검토한다. 일반 div·레이아웃 CSS는 복제로 단정하지 않는다.
- 최종 제출물이 있으면 같은 실행에 `--result <HTML 또는 JS/TS bootstrap>`을 지정한다. 해당 artifact를 시작점으로 검사한다. React mount가 확인되지 않으면 `RENDER-001`, 확인되어도 실제 브라우저 결과는 `RENDER-002` NOT VERIFIED다. 경로 이름만으로 preview.html을 금지하지 않는다. 실제 React를 실행하는 HTML은 정상 entry다.
PASS는 정적 계약 통과만 의미한다. 실제 React 화면을 빌드하고 브라우저에서 utility 적용·레이아웃·핵심 동작을 최소 1회 확인한다. 별도 HTML 모방 화면이나 이미지로 이를 대체하지 않는다. 화면에서 실행되지 않는 코드, 조건부 렌더, CSS 복제 의도, 동적 binding은 정적 검사만으로 완전히 판별할 수 없다. 미확인은 NOT VERIFIED로 기록한다.
FAIL 수정 후 수정 파일만 PARTIAL 재검사한다. 성공한 검사는 반복하지 않는다. 최소 회귀 테스트: `node --test scripts/ai-generation-guard.test.mjs` (새 의존성 설치 없음).