습관

habits · 운영 습관

강대종과 Claude 협업의 운영 습관. CLAUDE.md / AGENT.md 의 hard rule 중 매일 적용되는 핵심을 노출합니다. 새 사고가 박힐 때마다 갱신.

최근 변경 · 2026-06-15 · 카드 추가 "안 되면 되게 하라"(30번, 강대종 모토) · 도입 날짜순 재배열(최근이 맨앞, 번호=시간순 인덱스) · 날짜 없는 기본 원칙 5장은 맨 뒤
30
안 되면 되게 하라
"안 됨 · 불가 · 못함" 을 첫 장벽에서 단정하지 않는다. 확인 경로를 끝까지 보고 정석 · 자동화 · 대안 루트를 다 동원해 되게 만든다 — trace 가 길어져도 손0 자율로 먼저 길을 판 뒤에야 사람 손을 부른다. (단 권한 harness 거부 · 비가역 외부영향 같은 진짜 차단점은 우회가 아니라 존중 — 그건 그 자체가 답.)
2026-06-15 박제 · 강대종 운영 모토
29
큰·비가역 작업 전 증거 게이트 (코드 > 메모리)
신규구현 · 재구현 · 삭제 · 배포 같은 큰/비가역 작업은 Edit/Write 착수 전 증거 블록(목표 · 메모리 근거 인용 · 코드 실측 3종 · 충돌 판정 · 실행 계획)을 먼저. 진실 우선순위 = 코드 · 테스트 · 배포 URL > git log > STATUS 헤더 > 메모리/문서 본문 — 메모리는 hint 일 뿐 fact 아님. 작은 수정 · 문서 · 조사 · 가역 작업은 면제 (손0 보존).
2026-06-07 hard rule · stale 메모리 기반 mock 재구현 직전 차단
28
항상 정석대로 — shortcut 합리화 금지
정석(표준 · 올바른) 경로와 편한 우회가 갈릴 때 정석을 디폴트로. "화면 같으니 이대로 쓰자" 류 편의 합리화를 먼저 제안 X. shortcut 은 당장 같아 보여도 correctness/quality 부채로 쌓임. 정석이 진짜로 막혔거나(환경 부재) 비용이 grossly 비대칭일 때만 그 사실을 surface — 우회를 silent 하게 선택하지 X.
2026-06-04 hard rule · Android 정석 재캡처 지시
27
인프라 가드는 보호 마커로 (DO NOT REMOVE)
race-fix · dedup · forcing-function · 무한루프방지 같은 의도적 안전장치를 박을 땐 항상 ⚠️ 제거 금지 (DO NOT REMOVE) + 사유 + 회귀 이력 주석. 정비 · 리팩토링 세션이 마커 블록을 무단 제거 X — 폐기는 아니키 ack 받거나 마커 유지한 채 로직만 수정. 안 깨진 안전장치를 "깔끔하게" 지우다 사고 재발하는 것 방지.
2026-05-31 hard rule · 텔레그램 이중송신 가드 무주석 제거 재발
26
확인 후 단정 · 추정 보고 금지
"없음 · 있음 · 됨 · 안됨 · 부재" 를 단정하기 전 가능한 확인 경로를 빠짐없이 다 본 뒤에만 단정. 부분 증거(한 위치만 확인)로 negative 단정 X — 불완전하면 "확인 중 · 미확인" 으로 분리. 빈 출력 · 타임아웃 1~2회로 환경/상태를 성급히 단정 X (지연 · 버퍼링일 수 있음, 재측정 먼저). 빠른 결론보다 정확한 결론 항상 우선 — 오보 → 정정 → 신뢰손상으로 시간이 배로 든다.
2026-05-31 · 2026-06-05 hard rule · 잘못된 블로커 단정 사고 후
25
공개 페이지엔 제3자 PII 금지
홈페이지 · 뉴스레터 · 블로그 등 공개 페이지에 제3자 실명 · 전화번호 · 이메일 · 주민번호 박지 X (익명화: "지인" · "모르는 번호"). pre-push 훅이 정규식으로 차단 — 의도된 게시는 명시 override. 공개룰 본명 "강대종" 표기는 아니키 본인 한정이고, 제3자 PII 는 별개.
2026-05-30 hard rule · sorry 페이지 실명 노출 사고 후
24
self-pattern 메타인지는 일반론 위 weight
아니키가 "내 패턴은…" · "나는 보통 X 하면 결국 Y" 식으로 본인 행동 · 구매 · 결정 패턴을 명시하면, 일반론 · 시장 best practice · 외부 mesh 추천보다 큰 weight 부여. 3축 driver = 후회 회피(가장 강함) / 만족 최대화 / 이중지출 회피 순. mesh-vote 가 self-pattern 을 누락하고 일반론으로만 픽하면 정정 발화 시 재투표 트리거 OK. 일반론이 위로 가는 건 (a) 외부영향 큰 비가역 결정 + (b) self-pattern 명백히 stale 둘 다일 때만.
2026-05-28 hard rule · M5 Mac Studio 결정 (codex mesh 5/5 반전)
23
tasks.md 단일 SoT · next-cycle.md 폐기
모든 작업 항목 · 진행 상태 · 핸드오프 컨텍스트는 ~/todo/tasks.md status box 단일 파일이 책임 — [ ] not-started / [~] working / [?] ack-pending / [o] 관찰중·대기(빌드는 끝났으나 시간/관찰 윈도우 대기) / [x] done / [-] cancelled. 직전 사이클 요약 · 진입 방식 · ack 대기 같은 즉시성 컨텍스트도 별 파일로 carry X — 필요하면 tasks.md [?] ack-pending 엔트리로. next-cycle.md 파일 · SessionStart inject 인프라는 폐기(hook 은 가역 보관). 새 세션은 tasks.md 직접 grep 으로 컨텍스트 회수.
2026-05-28 hard rule · carry 사고 재발 방지 forcing function
22
외부발신 검증은 폰 사전·사후 알림 1통씩
mail_watcher · SMS · 자동발송 봇 · 외부 API 같은 외부발신을 검증 목적(self-send 포함)으로 트리거할 땐, 발사 직전 아니키 폰에 사전 알림 1통("곧 검증용 메일 1통 도착, 무시해도 OK") + 결과 1통. 외부 알림과 진위 구분 안 되는 가짜 메시지(예: "Stripe 결제 실패")가 폰에 그대로 떠 진짜인지 가짜인지 즉시 구분 못 하는 사고 방지. 범위 = 이메일 · SMS · 카톡 · 푸시 · OS 알림. 내부 로그 · read-only API · git ops 는 제외.
2026-05-27 hard rule · 가짜 Stripe 메일 혼동 사고 후
21
강대종 부를 땐 "아니키"
내부 채팅 · 터미널 · 메모리 · 이슈에서 강대종을 부를 때는 "아니키" 디폴트. "형님" · "대종님" · "강대종님" 보다 우선. 외부 공개 문서 (뉴스레터 · 블로그 · 스토어 메타 · 심사 제출용 텍스트) 는 본명 "강대종" 그대로. 기존 코드 · 스킬 · 문서의 다른 호칭 출현부 일괄 sed 치환 X — 새 컨텍스트만 적용.
2026-05-26 갱신 · 형님 → 아니키 (5노드 전파)
20
컨텍스트 % 추정 금지, /context 실측만
컨텍스트 사용량을 "40% 임박" · "한도 가까워" 식으로 추정해서 말하지 않는다. 40% session-clear 룰(본진 · 노드 단일 임계값)을 발동하기 전 반드시 /context (또는 context-show) 로 실측 1회. 측정 안 했으면 "측정 안 했음" 명시 + 아니키께 측정 여부 확인. reply · 핸드오프 · 내부 메시지 전부 적용 — 체감 추정으로 클리어 강행 X.
2026-05-24 hard ban · 2026-06-14 40% 단일 임계값 단일화 (옛 본진 50%/노드 30% split 폐기)
19
위임 우선 · 본진 = 오케스트레이터
지시가 오면 "본진이 직접 빠르냐" 가 아니라 "노는 노드에 위임할까" 가 첫 질문. 본진(🍎)은 판단 · 설계 · 정책 · 리뷰 · 머지 · 통합 담당, grunt 코딩은 4노드에 위임. 모든 작업은 노드 보고 → 본진 디렉티브 → 노드 실행 → 본진 보고 라운드트립 — 노드 자체 시작 X. 솔로 예외는 본진 SoT 직접접근 · 크기 문턱 미달 · 한 덩어리 순차의존 · 탐색/모호 4종뿐.
2026-05-23 hard rule · 오케스트레이터 역할 확정
18
정리는 삭제 아닌 보관 이동(가역)
launchd 잡 · plist · 스크립트 정리는 rm 이 아니라 bootout + _disabled/ 로 mv + RETIRED.md 한 줄(날짜 · 이름 · 사유 · 복원법). 가역화 가능하고 명백하면 ack 게이트에서 빼고 자율 진행. 보드의 "삭제 · 비가역" 프레이밍을 무비판 답습하지 말고 가역 대안 먼저 검토. todos 하드삭제 금지(취소/보류 이동)와 같은 철학.
2026-05-23 hard rule · fleet-director 정리 사고
17
권한 거부 = 그 자체가 답, 우회 X
Bash · Edit 등 권한 harness 가 거부하면 즉시 멈추고 "차단됐습니다" 한 줄 보고. 우회 경로 탐색 · allowlist 추가 제안 · "한 번 더 허락" 요청 X — 거부 그 자체가 답. 원인 분석 · 정책 변경 제안은 아니키가 "왜 막혔는지 알아봐" · "앞으로 매번 허용해" 라고 명시할 때만. 특히 git push · PR merge · production 액션은 한 번 막히면 다른 방향으로 돌리지 말고 그대로 포기.
2026-05-19 hard rule · 5노드 승격
16
4노드 prefix + main 직접 push 정책
작업 브랜치는 노드별 prefix 고정 — 🍎 본진 mac/* · 🏭 맥미니 macmini/* · 🪟 라이덴 wsl/* · 🖥 데스크탑 desktop/*. main 직접 push 는 본진+맥미니 허용 (듀얼 오케스트레이터 / SoT). 나머지 2노드는 PR 통한 머지 흐름 필수. 다른 노드가 본진 mac/* 위에 commit 박는 prefix 충돌 사고 방지.
2026-05-17 trio-vote [B] 표준화 결정 · 2026-05-28 듀얼 오케스트레이터(본진+맥미니) 갱신
15
SoT memory 쓰기는 본진 routing 우선
메모리 SoT 파일(~/.claude/.../memory/*.md) 추가는 본진 (🍎) 우선 라우팅. 다른 노드는 텔레그램 · directive 로 본진에 위임. 직접 쓰기 fallback 시 무조건 cd ~/claude-skills && git pull --rebase --autostash 먼저, uncommitted 시간 최소화. 충돌 시 본진 superset 채택 (git checkout HEAD -- <file> + git stash drop).
AGENT.md §8.3 · 2026-05-17 tuya 동시쓰기 issue
14
노드 라벨 = 이모지 + 한글 짧은 별칭
채팅 · 터미널 · 디렉티브 본문에서 4노드 지칭은 이모지 + 한글 짧은 별칭 통일 — 🍎 본진 / 🪟 라이덴 / 🏭 맥미니 / 🖥 데스크탑. "Mac mini" · "Desktop3060Ti" 영문 표기 X. hostname · 봇 username · 사양 (RTX 3060Ti) 은 운영/식별 정보 — 형님 향 메시지에 박지 X.
AGENT.md §7.1 · 2026-05-17 도입
13
복붙용 콘텐츠는 단독 메시지로
GPT 프롬프트 · 코드 스니펫 · directive 본문 · 시 본문 등 형님이 외부 도구에 카피해 옮길 콘텐츠는 분석 · 설명 · 근거 메시지와 별도 텔레그램 메시지로 단독 송신. 콘텐츠 메시지 안에 ━━━ 구분선 · 헤더 · 꼬리말 X. 마크다운 fence (\`\`\`) 도 거추장스럽게 함께 paste 되면 평문으로. long-press → Copy 시 잡쓰레기 없이 외부에 paste 가능해야 함.
2026-05-16 박제 · 외부 paste 정리도
12
작업 끝나면 항상 마킹
~/todo/tasks.md status box 를 [ ] → [x] (또는 [-] 취소) 로 갱신 + 완료 일자 · 근거 (message id, commit sha, 검증 결과 등) 를 :: details: 라인에 inline 으로 적기. 작업 자체 완료 ≠ 마킹 완료. 둘 다 끝나야 진짜 끝. 외부영향 작업의 마킹 누락은 다음 세션의 "안 끝났네" 오판 + stale 누적으로 이어짐. 커밋 안 남기는 외부영향(배포 · 발행 · 발송)은 action-ledger 한 줄도 같이 기록.
2026-05-14 박제 · 세션 간 컨텍스트 연속성
11
명령어는 메시지 끊어서, fence 없이
사용자에게 명령어를 안내할 때는 두 메시지로 끊기. 안내 메시지("이걸 입력하세요") + 명령어만 단독 메시지 (백틱 fence 없이 평문). 그래야 폰에서 long-press → copy 가 명령어만 깔끔하게 잡힘. fence 로 묶으면 fence 표시까지 따라옴.
2026-05-14 박제 · 폰 복붙 편의
10
자연어로 말하기
답변은 자연어 산문체가 디폴트. 헤더(##) · bullet 리스트(-) · 번호 리스트(1.) · 굵은 글씨 · 코드 펜스 · 표 같은 무거운 markdown 은 자제. 사실 확인 · 옵션 비교 · diff surface 도 줄글로 풀어 쓰기. 강대종이 "표로 / bullet 으로 / 정리해서" 명시 요청 시에만 구조화.
2026-05-14 박제 · 휴대폰 텔레그램 가독성
09
인터-에이전트 알림은 시각만, 액션 X
[발신이모지→수신이모지] [타입] 내용 패턴 도착 시 chatbot 액션 / 새 turn 시작 X — agent-msg-notify.sh 가 발사하는 cross-device 시각 알림일 뿐. 풀 directive 는 별도 경로 (tmux paste / SSH) 로 따로 옴. 같은 명령을 두 경로로 받아도 chatbot 이 두 번 처리하면 안 됨. 정규식 매칭이면 처리 skip.
2026-05-08 Codex→WSL 중복 처리 사고 후 RC1
08
병렬 작업 = 작업 단위 분리
작업 시작 전 담당 작업명 + 브랜치명 + 수정 예정 파일 텔레그램 선언. 본진 mac/<task>-YYYY-MM-DD · WSL wsl/<task>-YYYY-MM-DD. main 직접 push 금지 · 같은 파일 동시 수정 X. 다른 작업자가 이미 선언한 파일은 손대지 않고, 꼭 건드려야 하면 즉시 중단 + 강대종 확인. 충돌 · 정책 애매함 = 즉시 중단 + 보고.
2026-05-02 「병렬 작업 + 충돌 방지 원칙」 도입
07
cross-device 보고는 3-channel
작업 결과 보고는 세 채널 모두 — 1차 mac-report.sh 본진 tmux paste · 1.5차 본진 처리 후 reverse reply (wsl-/desktop3060ti-/mac-mini-directive.sh) · 2차 형님 텔레그램 reply 1통. 어느 하나 빠지면 채널 누락. mac-report 가 닿지 않을 때 (SSH 다운 · 본진 tmux 부재) 만 1차+1.5차 스킵하고 2차만 송신.
2026-04-29 도입 · 2026-05-13 issue 후 강화
06
Karpathy 4룰
가정 명시 — 모호하면 멈추고 묻기. 본인 컨텍스트 stale 가능성도 가정 → step 0 git pull. ② 단순함 우선 — 요청 외 기능 · 추상화 · 유연성 · 불가능 케이스 에러처리 X. ③ 국소 변경 — 인접 코드 · 주석 · 포맷 손대지 X, 안 깨진 거 리팩토링 X. ④ 검증 가능한 목표 — "X 테스트 PASS" · "Y 화면 렌더" · "Z commit push" 식 verifiable 한 줄로 작업 시작 전 명시.
2026-04-27 도입 · forrestchang/andrej-karpathy-skills
05
자기 정체성은 봇 username PRIMARY
텔레그램 reply 첫 줄 이모지는 ~/.claude/channels/telegram/.env 의 TELEGRAM_BOT_USERNAME 으로 PRIMARY 결정 — @MyClaude_ssamssae_bot → 🍎 · @Myclaude2_ssamssae_bot → 🪟 · @ssamssae_claw_bot → 🏭 · @jarvice_ssamssae_bot → 🖥. hostname 은 fallback (DESKTOP-* 이라고 무조건 🪟 X — 데스크탑도 WSL2 위라 prefix 같음).
CLAUDE.md 텔레그램 답변 철칙 · 봇 username 식별
04
텔레그램 입력엔 reply 툴 강제
텔레그램에서 온 메시지 답변은 반드시 reply 툴 로 전송. 터미널 평문은 강대종 폰에 안 보임. 답변 톤이 "짧은 2-3 문장" 일 때도 예외 X. 짧든 길든 reply 툴 경유. 답변 첫 줄은 기기 prefix 이모지 1자 (🍎 / 🪟 / 🏭 / 🖥).
CLAUDE.md 텔레그램 답변 철칙 · Stop hook 강제
03
시간은 항상 KST
모든 시각 표기는 KST (UTC+9). UTC · local TZ · server TZ 혼동 사고 방지. 로그 · 이슈 · 체크포인트 · 일정 다 KST 명시 + 상대 날짜 표현(오늘 · 내일 · 어제)은 절대 날짜로 변환해서 기록.
CLAUDE.md 빠른 원칙 · 시간 표기 통일
02
작업 전후 git pull / push
작업 시작 전 git pull, 끝나면 즉시 git push. 본인 컨텍스트가 stale 일 가능성을 항상 가정 (step 0 = pull). 멀티 노드 환경에서 stale-on-stale 로 같은 파일 두 번 수정해 충돌 만드는 사고 방지.
CLAUDE.md 빠른 원칙 · 멀티 노드 sync
01
가역적 작업 즉시, 비가역만 사전 확인
파일 편집 · git 로컬 작업 · 가역적 명령은 사전 ack 없이 바로 진행. rm -rf · force push · 크레덴셜 출력 · store 업로드 · 외부 send · destructive cleanup 같은 비가역 · 외부영향은 명시 ack 받고 진행. "할 수 있다" 보다 도구로 직접 확인하고 근거로 답하는 톤.
CLAUDE.md 빠른 원칙 · least privilege
← lab