OpenAI 하네스 엔지니어링 원문 + Claude Code 실전 적용 참고: OpenAI Harness Engineering


핵심 3원칙 (OpenAI)

원칙 설명 Claude Code 도구
지도를 줘라, 매뉴얼을 주지 마라 200줄 이내 안내서, 상세는 docs/에 CLAUDE.md
불변식을 강제하라, 구현을 지시하지 마라 반드시 지켜야 할 규칙만 기계적으로 차단 Hooks
빠진 능력을 코드화하라 실패할 때마다 절차를 문서화 — 복리 효과 Skills

초기 셋업 프롬프트 (Claude Code에 붙여넣기)

<https://openai.com/ko-KR/index/harness-engineering/>
를 바탕으로 하네스 초기 셋업 해줘.

## 프로젝트 정보
- Expo를 활용한 모바일 앱 (신규 프로젝트)
- 앱 목적: [여기에 앱 설명 한 줄]
- 디자인 시스템: Reusables (<https://reactnativereusables.com/>)
- 추가 스택: Supabase, Expo Router, Zustand, NativeWind

## 만들어줘야 할 것
1. CLAUDE.md — 200줄 이내, 목차형 (OpenAI의 "지도를 줘라" 원칙)
2. Skills — /commit, /review, /deploy, /cleanup, /new-screen
3. Hooks — .env 보호, 네이티브 폴더 보호, 포맷팅, 세션 종료 요약
4. docs/ 폴더 구조 — CLAUDE.md에서 가리킬 상세 문서 뼈대

## 원칙
- OpenAI 원문의 "불변식은 강제, 구현은 자유" 원칙 적용
- 프로그레시브 디스클로저 — CLAUDE.md는 짧게, 상세는 docs/와 Skills에

[여기에 앱 설명 한 줄] 부분을 자기 프로젝트에 맞게 수정할 것.

앱 구현 (디자인·검증 조건을 처음부터 요청)

여기서 "모노톤·이모지 금지·검증 루프"를 처음부터 명시하는 게 재현성의 핵심입니다. 나중에 "AI스럽다"고 다시 고치는 왕복을 없애줍니다.

운동 기록 앱을 구현하고 iOS 시뮬레이터 테스트까지 진행해줘.

## 화면
- 탭: 오늘(홈) / 기록 / 통계
- 새 운동 기록(모달): 종목 선택 → 세트별 무게·횟수 입력 → 완료 체크 → 저장
- 운동 상세 화면 (기록 카드 탭 시)

## 기능
- 로컬 우선: Zustand + persist(AsyncStorage). Supabase는 .env 있을 때만.
- 세트 완료 시 90초 휴식 타이머
- 사용자 정의 종목 추가 (store에 영속)
- 개인 기록(PR): 종목별 최고 무게
- 홈: 주간 목표(±조절) · 스트릭 · 요일 도트 · 추천 운동(가로 스크롤) · 최근 기록
- 첫 실행 시 더미 데이터 자동 시드 (4주치 12세션)

## 디자인 (중요)
- 블랙·화이트 모노톤. 강한 hue 금지(destructive 빨강만 예외)
- 이모지 금지, 화려한 컬러 뱃지 금지
- 타이포그래피 중심, hairline divider, 큰 숫자 헤드라인
- 색은 global.css CSS 변수 토큰으로만. 하드코딩 hex 금지
- 아이콘 색은 훅 하나로 통일(useIconColors)

## 검증
작업 종료 전 npm run typecheck && npm run lint 통과,
iOS 시뮬레이터에서 스크린샷으로 각 화면 동작 확인.

CLAUDE.md 불변식을 지키고, 새 화면은 /new-screen 규칙대로.

에셋·레이아웃 다듬기 (반복 지시)

운동 종목 시연 이미지를 무료·오픈 라이선스 에셋으로 넣어줘.
- 출처: Everkinetic (github.com/everkinetic/data, CC-BY-SA 4.0) — 흑백 라인아트라 모노톤과 어울림
- assets/exercises/ 에 파일명 기반으로 번들, 매핑은 src/constants/exercise-images.ts
- 매핑 없는 종목은 첫 글자 모노그램으로 폴백
- 라이선스 출처는 docs에 기록

홈 레이아웃: 추천 운동 섹션을 헤더 바로 아래 최상단으로.

생성되는 하네스 구조

프로젝트/
├── CLAUDE.md                          ← 지도 (200줄 이내)
├── app/                               ← Expo Router 화면
├── components/
│   └── ui/                            ← Reusables 디자인 시스템
├── lib/                               ← 비즈니스 로직
├── docs/
│   ├── db-schema.md                   ← DB 스키마
│   ├── reusables-guide.md             ← Reusables 사용 가이드
│   ├── architecture.md                ← 아키텍처 의사결정
│   └── design-docs/                   ← 설계 문서
├── .claude/
│   ├── settings.json                  ← Hooks 설정
│   └── skills/
│       ├── deploy/SKILL.md            ← EAS 배포 절차
│       ├── review/SKILL.md            ← 코드 리뷰
│       ├── cleanup/SKILL.md           ← 정리
│       ├── new-screen/SKILL.md        ← 새 화면 생성
│       ├── write-test/SKILL.md        ← 테스트 작성
│       └── commit/SKILL.md            ← 커밋 규칙

CLAUDE.md 작성 가이드

포함해야 할 5가지 섹션

1. 프로젝트 개요