ilhae.ai한양대 기계공학부 · Claude Code 특강
수강생 실습지 · 1회차 11월 2일(월) 14:00–18:00

수강생 실습지 — 1회차 (2026-11-02 월 14:00–18:00)

체크와 메모는 수강 등록(로그인)한 뒤에 저장되고, 강사 화면에 진행 상황으로 보입니다. 지금은 읽기만 할 수 있어요.

Claude Code 자동화 에이전트 개발 교육 · 한양대학교 기계공학부 대학원

  • 프롬프트는 코드 박스 안 내용을 그대로 복사해 Claude 패널 입력창에 붙여 넣습니다.
  • TERMINAL은 VS Code 아래 터미널(PowerShell)에, PROMPT는 Claude 패널에 입력합니다.
  • 다 되면 초록 포스트잇, 막히면 빨강 포스트잇을 노트북 위에 붙입니다. 막히면 옆자리 짝에게 먼저 묻습니다.
  • 어느 모듈에서 결과가 끝내 안 나와도 괜찮습니다. 배포 페이지의 체크포인트 묶음(cp-A1.zip~cp-A5.zip)을 받아 C:\hthp-lab에 풀어 덮어쓰고 다음 모듈부터 합류합니다.
  • 배포 페이지: https://hthp.ilhae.ai (자료 칸에 체크포인트 묶음)

체크포인트 묶음으로 합류하는 법 (PowerShell, cp-A2를 예로)

Copy-Item -Path C:\hthp-lab -Destination C:\hthp-lab-mine -Recurse
Expand-Archive -Path "$HOME\Downloads\cp-A2.zip" -DestinationPath C:\hthp-lab -Force
  • 첫 줄은 내 파일 보관입니다. C:\hthp-lab-mine이 이미 있으면 C:\hthp-lab-mine2처럼 다른 이름을 씁니다.
  • 묶음은 C:\가 아니라 C:\hthp-lab에 풉니다. zip 이름만 바꿔 씁니다.
  • cp-A4·cp-A5는 CLAUDE.md도 덮어씁니다. 내가 쓴 규칙은 보관한 폴더에서 다시 붙여 넣습니다.

5분 만에 다시 따라 하기

  1. 폴더를 VS Code로 열고 Claude 패널 띄우기 — 처음엔 Manual 모드
  2. /plan 으로 계획을 받고, 코멘트로 고친 뒤 승인
  3. diff를 읽고 승인. 결과는 전후 비교표로 확인
  4. 게이트 3종으로 물리 검증. 탈락은 지우지 않고 플래그
  5. CLAUDE.md와 /analyze-run 으로 굳히기

1회차 시간표

시간 모듈 하는 일
14:00 – 14:35 A0 세팅과 흐름 Claude 패널, 권한 모드, diff 승인, 데이터 보안
14:35 – 15:20 A1 실습① 전처리 13,000행 로그의 결측·스파이크·단위 혼재
15:20 – 15:30 휴식
15:30 – 16:20 A2 실습② 검증 게이트 에너지 수지 · 카르노 상한 · 핀치 ΔT
16:20 – 17:00 A3 실습③ Figure 온도 프로파일, COP 산점도, Origin과 비교
17:00 – 17:35 A4 CLAUDE.md 단위·물성·그림·보안 규칙 고정
17:35 – 18:00 A5 커맨드·과제 /analyze-run 만들기, 재실행 시연, 과제 안내

A3 STEP 3은 선택이고, A5 STEP 2는 강사 시연입니다(여러분은 과제 첫 단계로 집에서 합니다).


용어 카드 12개

용어 한 줄 정의
flag 행을 지우지 않고 "이 행은 이런 이유로 의심"이라고 적어 두는 표시 컬럼입니다.
diff 고치기 전과 후를 줄 단위로 나란히 보여 주는 화면입니다. 읽고 승인하거나 거부합니다.
컨텍스트 Claude가 지금 한 번에 기억하고 있는 대화·파일 분량입니다. 프롬프트 박스 아래에 사용량이 보입니다.
JSON 중괄호·따옴표·쉼표 규칙이 엄격한 설정 파일 형식입니다. 직접 쓰지 말고 Claude에게 만들게 합니다.
프롬프트 박스 Claude 패널 아래쪽 입력창입니다. 프롬프트와 /plan 같은 명령을 여기에 입력합니다.
승인 창 Claude가 파일을 고치거나 명령을 실행하기 전에 띄우는 확인 창입니다. 거부할 때는 아래 입력칸에 이유를 적습니다.
체크포인트(되감기) Claude가 파일 도구로 고친 시점의 기록입니다. 내 메시지에 마우스를 올려 되감기 → Rewind code to here로 코드만 되돌립니다.
스킬 반복 작업의 순서를 적은 업무 매뉴얼(SKILL.md)입니다. /이름으로 부릅니다.
$ARGUMENTS 스킬을 부를 때 커맨드 뒤에 쓴 값(예: 파일 경로)이 들어갈 자리입니다.
서브에이전트 자기만의 대화 공간에서 일하는 보조 Claude입니다. 2회차에 검증 담당으로 만듭니다.
권한 모드 Claude의 결재 방식입니다. Manual · Plan · Edit automatically · Auto 중에서 고릅니다.
CLAUDE.md 매 대화 시작 때 읽히는 연구실 작업 규칙 파일입니다. 지켜야 할 규칙만 200줄 이하로 적습니다.

A0. 페어 작업 세팅과 흐름

권한 모드는 결재 방식입니다

프롬프트 박스 아래의 모드 표시를 눌러 바꿉니다. 1회차는 Manual로 진행합니다.

모드 결재 방식 이럴 때
Manual 파일 수정·명령 실행마다 내가 승인 1회차 전체 — 눈으로 봅니다
Plan 계획만 세우고 승인을 기다림. 파일은 안 건드림 큰 작업을 시작할 때
Edit automatically 파일 수정은 자동, 명령 실행은 확인 익숙해진 반복 작업 — 2회차 C4
Auto 분류기가 대신 검토하고 위험한 것만 멈춤 이 과정에서는 쓰지 않습니다

새 대화는 Auto로 시작할 수 있습니다. 대화를 열 때마다 입력창 아래가 Manual인지 확인합니다. Edit automatically에서도 .claude 폴더(설정·스킬·에이전트) 파일을 고칠 때는 승인 창이 뜹니다.

A0 · STEP 1/2 — 세팅 점검 (7분)

할 일 버전 세 가지를 확인하고, 실습 폴더를 VS Code로 열어 Claude 패널을 띄웁니다.

TERMINAL · VS Code 아래 터미널 (Ctrl+`) — PowerShell

claude --version
py --version
py -c "import pandas, matplotlib, CoolProp; print('OK')"

확인 값: 2.1.314 이상 · Python 3.11.x · OK

VS Code에서: 파일 → 폴더 열기 → C:\hthp-lab → data 폴더의 CSV 하나 열기 → 오른쪽 위 Spark 아이콘 → 처음이면 Sign in (브라우저에서 로그인 후 돌아오기) → 입력창 아래 모드 표시를 눌러 Manual로 변경 → 모델 이름을 눌러 Sonnet 선택 (Pro 사용량 한도를 아끼기 위해 실습은 Sonnet으로 합니다)

예상 결과: 터미널에 버전 두 줄과 'OK'. 오른쪽에 Claude 패널이 열리고 입력창 아래에 Sonnet·Manual 표시

A0 · STEP 2/2 — 첫 대화: 폴더를 읽게 합니다 (5분)

할 일 Claude가 파일을 설명하게 합니다. 명령 승인 창이 뜨면 명령을 읽고 Yes — 아직 "don't ask again"은 고르지 않습니다.

PROMPT

data 폴더 바로 아래의 CSV 파일마다 무엇을 기록한 데이터인지 표로 정리해 줘. 하위 폴더는 이름만 적어 줘.
표 열: 파일명 | 행 수 | 주요 컬럼 | 추정 측정 대상
data_private 폴더는 열지 마. 아직 아무 파일도 수정하지 마.

파일을 콕 집을 때는 @ — 예:

@data/hthp_run_log.csv 이 파일의 컬럼을 설명해 줘

편집기에서 줄을 선택하고 Alt+K를 누르면 그 줄 범위가 @참조로 들어갑니다.

예상 결과: Claude 패널에 CSV가 정리된 표와 하위 폴더 이름. 그 위에 파일을 읽은 기록(Read, PowerShell 등)이 접힌 줄로 보입니다. 하나를 펼쳐 Claude가 실제로 무엇을 실행했는지 확인합니다.

diff 승인과 되돌리기

  • diff 화면에서 변경 단위로 Accept this change(받기) / Reject this change(거부)를 고릅니다.
  • 모르면 승인하기 전에 묻습니다: "이 변경이 무엇을 하는지 한 줄씩 설명해 줘"
  • 되돌리기: 되돌리고 싶은 시점의 내 메시지에 마우스 → 되감기 버튼 → Rewind code to here (대화는 두고 코드만). Claude가 실행한 스크립트가 만든 파일(예: 결과 CSV)은 되돌리기 대상이 아닙니다.

데이터 보안 — 무엇이 전송되나

  • 보내는 것: 내 프롬프트 · CLAUDE.md, Claude가 열어 본 파일 내용, 명령 실행 결과 출력, VS Code 편집기에서 선택한 텍스트 · 열린 파일 이름
  • 코드 실행은 내 노트북에서 일어납니다. 폴더 전체가 올라가지 않습니다.
  • 실데이터 파일은 편집기에서 열거나 패널로 드래그하지 않습니다.
  • 대화 기록은 사용자 폴더 아래 .claude\projects에 30일간 남습니다.

데이터 보안 — 실데이터를 넣기 전 3단계

  1. 규정 확인 — 지도교수·과제 책임자에게 외부 AI 서비스 사용 가능 여부를 묻습니다. 산학과제는 협약서 보안 조항이 기준입니다.
  2. 줄이고 가리기 — 공개 가능한 구간만, 또는 컬럼명·장비명·고객사·날짜를 바꾼 익명화본을 씁니다. 물리량의 단위와 크기는 그대로 둡니다. 익명화 스크립트는 Claude에게 컬럼 이름만 알려 주고 "파일은 열지 말고 스크립트만 써 줘"라고 한 뒤, 실행은 내가 터미널에서 직접 합니다.
  3. 원본은 밖에 — 미공개 원본은 작업 폴더 밖에 둡니다. 폴더 안에 둬야 한다면 A4에서 읽기 차단 규칙을 겁니다.

모르면 넣지 않습니다. 오늘 실습 데이터는 전부 교육용 가상 데이터입니다.

A0에서 막히면: 짝에게 먼저 묻고, 같은 화면에서 5분 이상 멈추면 빨강을 붙입니다(아래 '막혔을 때 모음').


A1. 실습① 운전 로그 전처리

좋은 지시의 6요소

요소 묻는 것 예
역할 누구의 관점인가 "열공학 연구실의 데이터 담당으로서"
목적 어디에 쓰는가 "논문 Fig. 2의 COP 계산용"
자료 무엇을 근거로 하는가 "@data/hthp_run_log.csv"
형식 어떤 모양으로 받는가 "표로, 결과는 out 폴더 CSV로"
제약 무엇을 지켜야 하는가 "행 삭제 금지, 온도 계산은 K"
검증 어떻게 확인하는가 "처리 전후 비교표를 보여 줘"

A1 · STEP 1/4 — 데이터 훑어보기: 먼저 묻고, 고치지 않습니다 (5분)

할 일 컬럼·단위·결측 현황을 표로 받고, 이상한 컬럼을 Claude가 먼저 지목하게 합니다.

PROMPT

@data/hthp_run_log.csv 를 읽고 다음을 표로 정리해 줘.
1) 컬럼 이름 | 추정 물리량 | 추정 단위 | 결측 개수 | 최솟값 | 최댓값
2) 값의 범위가 물리적으로 이상해 보이는 컬럼과 그 이유
파일은 수정하지 마.

13,000행을 화면에 다 띄우지 않습니다. Claude는 보통 짧은 Python 코드로 요약만 뽑아 봅니다. 그 코드를 실행해도 되는지 묻는 창이 뜨면 읽어 보고 승인합니다.

예상 결과: 컬럼 요약 표와, 범위가 이상해 보이는 컬럼에 대한 지적

A1 · STEP 2/4 — Plan 모드: 코드보다 계획을 먼저 (5분)

할 일 /plan 으로 시작해 전처리 계획만 받습니다. 아직 승인하지 않습니다.

PROMPT

/plan 운전 로그 전처리 스크립트 scripts/preprocess.py 를 만들 계획을 세워 줘.
- 결측: 보간하지 말고 flag만 남겨
- 스파이크: 판정 기준을 제안하고 근거를 적어
- 압력 단위 혼재(kPa/bar): 어떻게 판정할지 제안해
- 압축기 정지 구간: 어떤 컬럼으로 구분할지 제안해
- 결과는 out/run_clean.csv, data 폴더 원본은 수정 금지
- 어떤 행도 지우지 말고 처리 내용은 flag 컬럼에 남겨 (출력 행 수 = 입력 행 수)
- Python은 반드시 py 로 실행

예상 결과: 계획이 Markdown 문서로 편집기에 열리고, 문단 옆에 코멘트를 달 수 있는 화면. 프롬프트 박스 아래 모드 표시가 Plan

계획에 다는 코멘트 (예시 — 내 판단으로 고쳐 씁니다)

계획에서 볼 곳 코멘트 예
압력 단위 판정 "압력이 1,000 미만이면 bar로 보고 ×100. 바꾼 행은 flag=unit_bar"
스파이크 기준 "이동 중앙값 기준이면 창 크기와 임계값 근거를 적어. 센서 응답 시간도 고려"
정지 구간 "압축기 전력이 0.2 kW 미만이면 정지로 표시. 정지 블록의 첫 행은 따로 표시"
결측 "보간 금지. flag=missing만 남기고 값은 비워 둬"

코멘트를 다 달았으면 Send feedback and keep planning → 다시 받은 계획이 마음에 들면 승인

A1 · STEP 3/4 — 실행: 변경을 하나씩 승인 (15분)

할 일 계획을 승인하면 Claude가 코드를 쓰고 실행합니다. Manual이라 단계마다 묻습니다.

승인 창 순서: ① scripts/preprocess.py 생성 → diff 읽고 승인 ② py scripts/preprocess.py 실행 → 승인 ③ 오류가 나면 Claude가 스스로 읽고 고침 → 다시 승인 ④ 처리 요약 출력

PROMPT · 요약이 안 나오면 이어서 입력

처리 요약을 표로 보여 줘. 결측 · 스파이크 · 단위 변환 · 정지 구간 flag별 행 수와 전체 대비 비율.

같은 승인 창이 반복되면 "Yes, and don't ask again"(이 명령은 다시 묻지 않기)을 쓸 수 있습니다. 단, 이 선택은 세션이 끝나도 이 폴더에 남고(/permissions에서 삭제), 옵션에 보이는 명령 패턴 단위로 허용됩니다. 패턴이 넓으면 고르지 않습니다.

예상 결과: 탐색기 out 폴더에 run_clean.csv 생성. 패널에 flag별 행 수 표

A1 · STEP 4/4 — 나온 숫자를 의심합니다 (8분)

할 일 "잘 처리했습니다"를 믿지 말고 증거를 요구합니다.

PROMPT

처리 결과를 그대로 믿기 전에 확인하고 싶어.
1) 압력 단위를 바꾼 구간에서 처리 전후 값을 5행 나란히
2) flag 비율을 날짜별로 집계해서 특정 기간에 몰려 있는지
3) 처리 후 각 컬럼의 최솟값·최댓값이 물리적으로 말이 되는지
세 가지를 표로 보여 줘. 해석은 표 다음에 3줄 이내로.

표를 보고 납득되지 않는 값이 있으면 그 행을 짚어서 다시 묻습니다. "이 행은 왜 정상으로 남았어?"

예상 결과: 단위 변환 전후 비교 표, 날짜별 flag 비율 표, 컬럼별 범위 점검 표

방금 한 것: 정의 → 계획 → 실행 → 검증

A1 결과가 끝내 안 나오면 배포 페이지의 cp-A1.zip을 C:\hthp-lab에 풀어 덮어쓰고 A2부터 합류합니다. 받은 스크립트와 내 것이 어떻게 다른지 Claude에게 비교시켜 보면 좋습니다.


A2. 실습② 검증 게이트 3종

게이트 판정식 물리적 의미 걸리면 의심할 것
① 에너지 수지 |Q_water − Q_ref| / Q_water < 3% 물이 받은 열 = 냉매가 내준 열. 다르면 센서나 단위가 틀렸다 유량계 드리프트, 단위 혼재, 결측 보간
② 카르노 기준 (간이 상한) COP ≤ T_h / (T_h − T_c), 온도는 K · T_h 물 출구 · T_c 열원수 입구 정상 운전 COP가 이 값을 넘으면 의심합니다. 엄밀한 상한(Lorenz)보다 낮게 잡은 보수적 기준입니다 정지 구간, 섭씨로 계산
③ 제2법칙 (핀치) 모든 노드에서 ΔT_pinch > 0 열은 뜨거운 쪽에서 찬 쪽으로만 흐릅니다. 음수면 데이터가 틀린 것입니다 센서 채널 뒤바뀜, 온도 역전
  • Q_water = ṁ_w · c_p · (T_w,out − T_w,in) · Q_ref = ṁ_ref · (h_in − h_out), 엔탈피는 CoolProp(CO2)
  • 허용치는 계측 불확도로 정합니다. 3% = 합성 불확도 약 0.7% × 2 + 열손실 여유 (실습 데이터 기준)
  • 탈락한 행은 지우지 않고 gate_fail 컬럼에 어떤 게이트인지 남깁니다. 버린 이유가 다음 분석의 재료입니다.

자세한 내용은 별도 '게이트 치트시트'를 봅니다.

A2 · STEP 1/3 — 게이트 함수 만들기 (10분)

할 일 게이트 3개를 한 파일에 함수로 만듭니다. 함수마다 물리적 의미를 주석으로 남깁니다.

PROMPT

scripts/gates.py 를 만들어 줘. 게이트 3개를 각각 함수로.
① energy_balance: |Q_water − Q_ref| / Q_water < 0.03
Q_water = m_w_kgs × 4.19 × (T_w_out_C − T_w_in_C)
Q_ref의 엔탈피는 가스냉각기 입출구 냉매 상태로 CoolProp(CO2)에서
② carnot_limit: COP ≤ T_h / (T_h − T_c), 온도는 반드시 켈빈
COP = Q_water / W_comp_kW, T_h = T_w_out_C, T_c = T_src_in_C
③ pinch_positive: 가스냉각기 모든 노드에서 T_ref − T_water > 0
통과 못 한 행은 지우지 말고 gate_fail 컬럼에 게이트 이름을 기록해.
함수마다 물리적 의미를 주석 한 줄로 달아 줘.

승인 전 확인: 카르노 함수에 + 273.15가 들어 있습니까? 없으면 거부하면서 승인 창 아래 입력칸에 이유("온도를 켈빈으로 바꾸지 않았어")를 적습니다(터미널 CLI에서는 Tab으로 코멘트 칸을 엽니다).

예상 결과: scripts/gates.py diff — 함수 3개, 각 함수 위에 "# 물이 받은 열 = 냉매가 내준 열" 같은 한 줄 주석

A2 · STEP 2/3 — 게이트 통과시키기: 전후를 숫자로 (12분)

할 일 전처리 결과와 가스냉각기 데이터에 게이트를 적용하고, 적용 전후를 비교합니다.

PROMPT

out/run_clean.csv 에 게이트 ①②를, data/gascooler_profile.csv 에 게이트 ③을 적용해 줘.
운전 로그 결과는 out/run_gated.csv, 가스냉각기 결과는 out/gc_gated.csv 로 저장하고 다음을 표로 보여 줘.
- 게이트별 탈락 행 수와 비율(분모는 게이트 평가 행 수)
- 게이트 적용 전후 COP의 최댓값·평균
- COP는 flag와 상관없이 결측이 아닌 모든 행에서 계산하고, 결측 행은 게이트 평가에서 빼

예상 결과: 게이트별 탈락 행 수·비율 표와 적용 전후 COP 최댓값·평균 표

적용 전 적용 후
최대 COP
평균 COP
탈락 비율

숫자가 옆 사람과 다르면 어느 규칙이 다른지 비교해 봅니다.

A2 · STEP 3/3 — 왜 걸렸는지 묻기: 결론보다 근거 먼저 (10분)

할 일 탈락 행이 어떤 조건에 몰려 있는지 분석시킵니다. 표가 먼저, 해석은 나중입니다.

PROMPT

gate_fail 행이 어떤 운전 조건에 몰려 있는지 분석해 줘.
날짜별, 압축기 정지 여부, 열원 입구 온도 구간별로 게이트별 탈락 비율 표를 먼저 보여 주고, 그다음에 해석을 3줄 이내로 적어 줘.
해석마다 근거가 된 표의 행을 같이 적어.

한 번 더 — 반대 증거 요구

이 해석이 틀렸다면 데이터에서 무엇이 보여야 해? 그게 있는지 확인해 줘.

예상 결과: 게이트별·조건별 탈락 비율 표와, 근거 행 번호가 붙은 3줄 해석

AI를 믿는 것이 아니라 게이트를 믿습니다

  1. 결론보다 근거 표 먼저 — "해석 전에 근거가 된 표를 먼저 보여 줘." 해석의 숫자를 표에서 직접 찾습니다.
  2. 반대 증거를 요구 — "이 결론이 틀렸다면 데이터에서 무엇이 보여야 해?"
  3. 법칙으로 자동 검사 — 에너지 보존과 제2법칙은 AI의 의견이 아니라 판정 기준입니다. 간이 카르노 같은 경험 기준은 '의심 신호'로 구분합니다.

내 데이터의 게이트 찾기 — 세 질문

질문 예
① 보존되는 양은? 에너지·질량. 해석 결과라면 고온측 열량 = 저온측 열량
② 넘을 수 없는 한계는? 카르노, 측정 범위, 0 이상. 배터리라면 충전량 ≤ 정격 용량
③ 순서·부호가 정해진 것은? 시간 증가, 온도차 부호. 착상 실험이라면 착상량은 줄지 않음

게이트에 너무 많이 걸려도 "게이트를 통과하게 고쳐 줘"라고 하지 않습니다. 기준을 풀기 전에 원인부터 찾고, 기준 변경은 사람이 결정합니다.

A2 결과가 끝내 안 나오면 배포 페이지의 cp-A2.zip을 C:\hthp-lab에 풀어 덮어쓰고 A3부터 합류합니다.


A3. 실습③ 논문용 Figure

항목 예시 규격 (투고 저널 규정이 우선)
크기 1단 폭 90 mm · 2단 폭 190 mm
글꼴 Arial 8 pt, 축 라벨에 단위
저장 선 그림은 벡터(PDF·SVG), 래스터는 600 dpi 이상
흑백 색 없이도 선 종류·마커로 구분
재현성 그림마다 스크립트 1개

반복 생산은 코드로, 마지막 미세 조정은 Origin으로 — 섞어 써도 됩니다.

A3 · STEP 1/3 — Figure 1: 온도 프로파일과 핀치 주석 (12분)

할 일 가스냉각기 길이 방향 온도 분포에 핀치 위치를 표시한 그림을 만듭니다.

PROMPT

out/gc_gated.csv 로 논문용 Figure 1을 그려 줘.
- x: 무차원 길이 (0~1), y: 온도 (°C)
- 게이트③ 통과 운전점 중 대표 3개, 냉매는 실선·물은 점선
- 각 운전점의 핀치 위치에 화살표와 ΔT 값 주석
- 폭 90 mm, Arial 8 pt, 흑백 인쇄에서도 구분되게
- figures/fig1_profile.pdf 와 600 dpi PNG로 저장
- 그리는 코드는 scripts/fig1_profile.py

승인 전 확인: 냉매선이 모든 위치에서 물선보다 위에 있습니까?

예상 결과: 냉매 온도(실선)가 위, 물 온도(점선)가 아래인 곡선 3쌍. 핀치 지점마다 화살표와 ΔT 주석

A3 · STEP 2/3 — Figure 2: 오프디자인 COP 산점도 (10분)

할 일 게이트 통과 데이터로 COP 산점도를 그리고, 탈락 점도 숨기지 않고 함께 보여 줍니다.

PROMPT

out/run_gated.csv 로 Figure 2를 그려 줘.
- x: 열원 입구 온도 (°C), y: COP
- 게이트 통과 점은 물 출구 온도로 색을 입히고 컬러바 표시
- 게이트 탈락 점은 회색 빈 원으로 함께 표시 (숨기지 마)
- Figure 1과 같은 규격, figures/fig2_cop.pdf 와 600 dpi PNG로 저장
- 코드는 scripts/fig2_cop.py

예상 결과: 물 출구 온도로 색을 입힌 점 구름, 그 주변의 회색 빈 원(탈락 점), 오른쪽 컬러바

A3 · STEP 3/3 · 선택 — 한 군데만 고치기: "다른 건 바꾸지 마" (8분)

할 일 Origin 그림과 나란히 놓고 차이를 찾아, 딱 그 부분만 고칩니다. STEP 2를 끝낸 사람만 하고, 나머지는 강사 시연을 본 뒤 과제에서 해 봅니다.

PROMPT

Figure 2를 Origin 그림처럼 두 가지만 고쳐 줘. 다른 건 바꾸지 마.
1) 눈금을 축 안쪽으로
2) 위쪽·오른쪽 축에도 눈금 표시
같은 파일명으로 다시 저장하고, 무엇을 바꿨는지 두 줄로 알려 줘.

Origin에서 마무리하고 싶다면:

Figure 2에 쓴 데이터를 Origin에서 바로 열 수 있게 figures/fig2_data.csv 로 저장해 줘. 첫 줄은 단위가 붙은 열 이름으로.

예상 결과: 왼쪽 Origin으로 그린 그림, 오른쪽 수정된 fig2_cop.pdf를 나란히 놓은 비교 화면

그림이 나오면 승인 전에 한 번 묻습니다: "이 그림, 물리적으로 말이 되나?"

A3 그림이 끝내 안 나오면 배포 페이지의 cp-A3.zip을 C:\hthp-lab에 풀어 덮어쓰고 A4부터 합류합니다.


A4. CLAUDE.md — 연구실 작업 규칙

CLAUDE.md 자동 메모리
누가 쓰나 내가 씁니다 Claude가 스스로 적습니다
무엇을 지켜야 할 규칙과 지시 작업하며 알게 된 요령, 내가 고쳐 준 내용
언제 읽나 매 대화 시작 때 전부 매 대화 시작 때 앞부분
고치는 법 파일을 직접 편집 /memory 로 확인, 지울 때는 메모리 폴더를 열어 파일 삭제

CLAUDE.md에 적는 여섯 가지: 단위 규약 · 물성 라이브러리 · 그림 규격 · 검증 규칙 · 금지 사항(보안) · AI 사용 기록(연구윤리). 매번 지켜야 하는 것만, 200줄 이하로.

A4 · STEP 1/3 — /init: 초안은 Claude가 씁니다 (5분)

할 일 프롬프트 박스에 /init 을 입력해, 폴더를 분석한 CLAUDE.md 초안을 받습니다.

PROMPT

/init

Claude가 폴더 구조와 scripts 폴더의 코드를 읽고 CLAUDE.md를 만듭니다. 이미 CLAUDE.md가 있으면 덮어쓰지 않고 고칠 점을 제안합니다. 초안에는 '어떻게 실행하는가'가 주로 담깁니다. '우리 연구실 규칙'은 다음 STEP에서 사람이 넣습니다.

예상 결과: 탐색기 맨 위에 CLAUDE.md 생성, 편집기에 폴더 구조·실행 명령 등이 정리된 초안

A4 · STEP 2/3 — 우리 규칙 넣기 (8분)

할 일 오늘 실습에서 정한 규칙을 CLAUDE.md에 추가합니다.

PROMPT

CLAUDE.md에 아래 규칙을 추가해 줘. 200줄을 넘기지 마.
[실행] Python은 py로 실행
[단위] 계산은 SI, 온도 계산은 K, 압력은 kPa
[물성] 냉매 물성은 CoolProp만 사용 (CO2)
[검증] 결과 보고 전 scripts/gates.py 게이트 3종 통과. 탈락은 삭제 말고 gate_fail. 기준 변경은 나에게 먼저 물어
[그림] 폭 90 mm, Arial 8 pt, PDF와 600 dpi PNG. 게이트 탈락 점은 회색 빈 원으로 함께
[금지] data 폴더 원본 수정 금지, data_private 폴더 읽기 금지
[기록] 작업이 끝나면 logs/AI_USAGE.md 에 날짜 | 요청 요약 | 생성·수정 파일을 한 줄 추가
[질문] 확실하지 않은 컬럼·단위·형식은 추측하지 말고 나에게 물어

결과 예시 — CLAUDE.md 일부

## 실행
- Python은 py
## 단위
- 계산은 SI, 온도는 K, 압력은 kPa
## 검증
- 보고 전 gates.py 3종 통과
- 탈락은 gate_fail, 기준 변경은 확인 후
## 그림
- 90 mm, Arial 8 pt, PDF+PNG
- 탈락 점은 회색 빈 원
## 금지
- data/ 원본 수정
- data_private/ 읽기
## 기록
- logs/AI_USAGE.md에 한 줄

CLAUDE.md는 '부탁', 차단은 '설정'

.claude/settings.json (프로젝트 폴더 안). 직접 쓰지 말고 다음 STEP에서 Claude에게 만들게 합니다.

{
  "permissions": {
    "deny": [
      "Read(/data_private/**)",
      "Edit(/data/**)"
    ]
  }
}
  • /로 시작하는 경로 = 프로젝트 폴더 기준
  • 막는 것: Claude의 파일 읽기·편집 도구, @참조, Bash의 cat·head 같은 일부 명령
  • 못 막는 것: Python 스크립트가 파일을 직접 여는 경우. PowerShell 명령도 막힌다는 보장이 없습니다
  • 가장 확실한 방법은 미공개 원본을 작업 폴더 밖에 두는 것입니다

A4 · STEP 3/3 — 차단 설정을 걸고, 새 대화에서 시험 (8분)

할 일 설정 파일을 만든 뒤 /clear 로 새 대화를 열고, 규격을 말하지 않은 채 시켜 봅니다.

PROMPT ① 설정 만들기

.claude/settings.json 을 만들어서 data_private 폴더 읽기와 data 폴더 편집을 deny로 막아 줘.

PROMPT ② /clear 입력 후, 새 대화에서 (입력창 아래 모드가 Manual인지 먼저 확인)

out/run_gated.csv 로 외기 온도(T_amb_C)와 COP의 산점도를 Figure 3으로 그려 줘. 코드는 scripts/fig3_amb.py 로.

PROMPT ③ 같은 대화에서

@data_private/secret_run.csv 첫 5줄을 보여 줘.

Claude가 Python 등으로 우회해 읽으려는 승인 창이 뜨면 거부를 누릅니다. 그것이 deny가 '못 막는 것'입니다.

예상 결과: ③ 요청에 설정 때문에 읽을 수 없다는 도구 오류가 뜬 패널. Claude가 "규칙상 안 읽겠습니다"라고만 답하면 아직 설정을 시험하지 않은 것입니다

프롬프트는 얼마나 자세히?

판단 질문 적을 곳 예
매번 지킬 규칙인가? CLAUDE.md 단위, 물성, 그림 규격, 금지 사항
반복되는 작업 순서인가? 스킬(커맨드) — A5 전처리 → 게이트 → 그림
이번 작업에만 필요한가? 이번 프롬프트 이번 로그의 기간, 대표 운전점 번호
크고 애매한 작업인가? Plan 모드로 계획부터 새 분석 파이프라인 설계

빗나간 답이 잦다면: 목적과 확인 방법을 적었는가 · 반복 규칙이 CLAUDE.md에 있는가 · 큰 작업을 Plan 없이 시작했는가

낯선 툴(CONVERGE·EnSight·Origin 등)의 파일

  1. 샘플 보여 주기 — 툴이 내보낸 결과 파일을 @로 지정해 앞부분 구조를 읽힙니다
  2. 매뉴얼 주기 — 출력 형식 설명 페이지를 docs 폴더에 넣고 @로 지정합니다
  3. 대조하기 — 읽어 들인 값을 원본 파일 세 군데와 직접 비교합니다
  4. 기록하기 — 알아낸 형식을 CLAUDE.md '파일 형식' 절에 적어 다음엔 설명을 생략합니다

프롬프트에 한 줄: "확실하지 않은 형식은 추측하지 말고 나에게 물어."

A4를 못 끝냈으면 배포 페이지의 cp-A4.zip을 C:\hthp-lab에 풀어 덮어쓰고 A5부터 합류합니다.


A5. 오늘 한 일을 /analyze-run 하나로

스킬은 업무 매뉴얼입니다. 한 번 가르치고, 다음부터는 입력 파일만 바꿔서 맡깁니다. 검수에서 부족한 점이 나오면 결과물이 아니라 매뉴얼(SKILL.md)을 고칩니다.

SKILL.md 구조 (.claude/skills/analyze-run/SKILL.md) — 손으로 쓸 필요는 없고, 읽을 줄만 알면 됩니다.

---
name: analyze-run
description: 히트펌프 운전 로그 CSV를 전처리, 게이트 ①② 검증, COP 산점도, 요약표까지 처리
disable-model-invocation: true
argument-hint: [CSV 경로]
---
입력 파일: $ARGUMENTS
1. 컬럼·단위 점검 표를 먼저 보여 준다 (모르는 컬럼은 묻는다)
2. scripts/preprocess.py로 전처리 (삭제 대신 flag)
3. scripts/gates.py로 게이트 ①② 적용
4. Figure 2를 CLAUDE.md 규격으로 저장
5. 결과는 out/<입력 파일명>/ 에 모은다
6. 게이트별 탈락 비율과 확인할 점 3가지 보고
  • name: /analyze-run 으로 부르는 이름 · description: Claude가 언제 쓸지 판단하는 설명 · disable-model-invocation: true면 내가 부를 때만 실행 · $ARGUMENTS: 커맨드 뒤에 쓴 파일 경로가 들어갈 자리

A5 · STEP 1/2 — 커맨드 만들기: 오늘 한 일을 매뉴얼로 (10분)

할 일 오늘 만든 스크립트와 CLAUDE.md를 엮어 /analyze-run 스킬로 저장합니다.

PROMPT

scripts 폴더의 preprocess.py, gates.py, fig2_cop.py와 CLAUDE.md를 읽고, 운전 로그 처리 순서(전처리 → 게이트 ①② → Figure 2 → 요약표)를 /analyze-run 스킬로 만들어 줘.
- 위치: .claude/skills/analyze-run/SKILL.md
- 입력은 CSV 경로 하나($ARGUMENTS), 결과는 out/<파일명>/ 에
- 첫 단계는 컬럼·단위 점검 표. data/hthp_run_log.csv와 이름이 다른 컬럼은 추측하지 말고 나에게 묻고, 답을 받은 뒤 진행해
- 요약표는 out/<파일명>/summary.csv 로 저장하고 게이트별 탈락 비율과 확인할 점 3가지를 보고해
- 스크립트가 입력 파일과 출력 폴더를 인자로 받게 고치고, 원래 데이터로 다시 돌려 결과가 같은지 확인해
- 탈락은 flag로만, 내가 부를 때만 실행되게 disable-model-invocation: true

예상 결과: 프롬프트 박스에 / 를 입력했을 때 뜨는 목록에 analyze-run이 보이는 화면

A5 · STEP 2/2 · 강사 시연 — 처음 보는 로그에 재실행 (시연 4분)

할 일 강사 화면으로 봅니다. 여러분은 집에서 과제 첫 단계로 똑같이 입력합니다.

PROMPT · 과제 첫 단계에서 그대로 입력 (Edit automatically 모드)

/analyze-run data/hthp_run_log_b.csv

지켜볼 장면: 이 파일에는 처음 보는 컬럼 이름이 하나 있습니다. Claude가 추측해서 넘어가는지, CLAUDE.md의 [질문] 규칙대로 여러분에게 묻는지 지켜봅니다.

예상 결과: 탐색기 out/hthp_run_log_b/ 폴더에 정리 CSV, 게이트 결과, fig2, 요약표가 생긴 화면

A5 체크포인트

A5를 오늘 못 만들었으면 배포 페이지의 cp-A5.zip을 C:\hthp-lab에 풀어 덮어씁니다. 과제는 여기서 시작합니다.


과제 (11월 7일 토요일 22:00까지)

내가 만든 파이프라인을 내 데이터에 한 번 통과시켜 옵니다. 60분이 넘으면 멈추십시오. ① 막힌 장면 하나만 내도 제출입니다. 자세한 내용은 '과제 안내문'을 봅니다.

내 상황 이렇게 합니다
내 데이터를 쓸 수 있음 형식이 실습 운전 로그와 같으면 /analyze-run. 아니면 과제 안내문 3.1의 첫 프롬프트로 시작하고, 게이트는 '내 데이터의 게이트 찾기' 세 질문으로 정합니다
일부만 · 규정상 어려움 공개 가능한 구간만, 또는 컬럼명·장비명·날짜를 바꾼 익명화본 (규정 확인 먼저)
아직 쓸 데이터가 없음 대체 과제 A(pcm_cascade.csv) 또는 B(gascooler_profile_v2.csv) — 과제 안내문의 프롬프트를 그대로 씁니다(/analyze-run의 입력이 아닙니다)
제출 내용
① 막힌 장면 1개 화면 캡처 + 입력한 프롬프트
② 성공한 결과 1개 (선택) 그림 또는 표
③ 규칙 한 줄 (선택) CLAUDE.md에 새로 추가한 것

제출: hthp.ilhae.ai → 제출 · 제출 폼에서 화면 공개 동의 여부를 고릅니다(화면 공개 / 수치를 가린 사본만 / 비공개) · 실데이터는 A0의 3단계를 거친 것만


막혔을 때 모음

모듈 증상 바로 해 볼 것
A0 'claude'를 찾을 수 없음 VS Code를 완전히 닫고 다시 열기. 패널이 열리면 실습은 진행 가능
A0 Spark 아이콘이 안 보임 파일을 하나 연 뒤 확인. 또는 Ctrl+Shift+P → "Claude Code" 검색
A0 로그인 창이 안 뜸 · 만료 패널에서 다시 Sign in. 브라우저 로그인 후 VS Code로 복귀
A0 'py'를 찾을 수 없음 Python 설치 시 "Add python.exe to PATH" 체크 후 재설치
전체 새 대화를 열었더니 모드가 Auto 입력창 아래 모드 표시를 눌러 Manual로
A1 No module named 'pandas' py -m pip install pandas (Claude에게 "설치해 줘"도 됩니다)
A1 설치했는데 모듈이 없다고 함 "Python은 py로 실행해 줘" (python·python3를 부른 경우)
A1 UnicodeDecodeError, 한글 깨짐 "인코딩을 확인해서 다시 읽어 줘 (cp949 또는 utf-8-sig)"
A1 같은 승인 창이 계속 뜸 Yes, and don't ask again — 패턴이 좁을 때만
A1 대화가 길어져 느려짐 /compact 로 대화 요약 후 계속
A1 결과가 끝내 안 나옴 배포 페이지의 cp-A1.zip을 C:\hthp-lab에 풀고 A2부터 합류
A2 No module named 'CoolProp' py -m pip install CoolProp
A2 정상 데이터까지 카르노에 다 걸림 "카르노 계산에 넣은 온도 값과 단위를 출력해 줘" (섭씨 의심)
A2 핀치가 대부분 음수 "냉매·물 컬럼을 바꿔 넣지 않았는지, 같은 노드끼리 뺐는지 확인해 줘"
A2 에너지 수지가 거의 다 탈락 "물 유량 단위가 kg/s인지 L/min인지 확인해 줘"
A2 결과가 끝내 안 나옴 배포 페이지의 cp-A2.zip을 풀고 A3부터 합류
A3 그림 속 글자가 □□로 보임 그림 글자는 영어로. 한글이 꼭 필요하면 "Malgun Gothic 글꼴 지정"
A3 그림 가장자리가 잘림 "bbox_inches='tight'로 다시 저장해 줘"
A3 PDF가 VS Code에서 안 열림 탐색기에서 파일 우클릭 → Reveal in File Explorer
A3 흑백에서 선이 구분 안 됨 "선 종류와 마커를 운전점마다 다르게"
A3 온도 곡선이 지그재그 "운전점마다 node 순서로 정렬한 뒤 다시 그려 줘"
A3 그림이 끝내 안 나옴 배포 페이지의 cp-A3.zip을 풀고 A4부터 합류
A4 CLAUDE.md를 무시하는 것 같음 /context 로 CLAUDE.md가 읽혔는지 확인, 없으면 새 대화
A4 차단 설정이 안 먹힘 .claude 폴더가 hthp-lab 바로 아래인지 확인 후 새 대화
A4 settings.json 문법 오류 "settings.json 문법을 검사하고 고쳐 줘"
A4 규칙이 점점 길어짐 "중복과 모순을 찾아 200줄 이하로 줄여 줘"
A4 오늘 못 끝냄 배포 페이지의 cp-A4.zip을 풀고 A5부터 합류
A5 목록에 analyze-run이 없음 /reload-skills 입력, 그래도 없으면 새 대화
A5 폴더 위치가 의심됨 .claude\skills\analyze-run\SKILL.md 인지 확인
A5 스크립트가 경로를 못 찾음 "스크립트가 입력 경로를 인자로 받는지 확인해 줘"
A5 오늘 못 만듦 배포 페이지의 cp-A5.zip — 과제는 여기서 시작
전체 실수로 코드를 망침 메시지에 마우스를 올려 되감기 → Rewind code to here

강사 호출 기준: 짝과 같이 봐도 같은 화면에서 5분 이상 멈췄을 때, Claude가 같은 오류를 3번 반복하면 먼저 되감기 후 /plan으로 다시, 그래도 안 될 때