OpenAI 하네스 엔지니어링 원문 + Claude Code 실전 적용 참고: OpenAI Harness Engineering
| 원칙 | 설명 | Claude Code 도구 |
|---|---|---|
| 지도를 줘라, 매뉴얼을 주지 마라 | 200줄 이내 안내서, 상세는 docs/에 | CLAUDE.md |
| 불변식을 강제하라, 구현을 지시하지 마라 | 반드시 지켜야 할 규칙만 기계적으로 차단 | Hooks |
| 빠진 능력을 코드화하라 | 실패할 때마다 절차를 문서화 — 복리 효과 | Skills |
<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 ← 커밋 규칙
1. 프로젝트 개요