전체 글
-
Javascript ES17(ECMAScript 2026) 문법정리카테고리 없음 2026. 9. 10. 07:13
has → get → set 세 줄이 한 줄이 된다Map으로 카운터나 그룹핑을 만들 때마다 똑같은 세 줄을 썼다. 키가 있으면 꺼내 쓰고 없으면 기본값을 넣는, 아무 판단도 들어 있지 않은 분기다.// before — 있으면 꺼내고 없으면 넣는다const counts = new Map();for (const w of words) { if (counts.has(w)) counts.set(w, counts.get(w) + 1); else counts.set(w, 1);}// after — getOrInsert가 그 분기를 삼킨다const counts = new Map();for (const w of words) counts.set(w, counts.getOrInsert(w, 0) + 1);그룹핑은 차이가..
-
멀티프로젝트 Claude Code 설정 운영기 5편 - 30k 깎을 계획으로 시작해 6.3k에서 멈춘 이유AI 엔지니어링 2026. 9. 8. 07:47
세션을 열고 아무 명령도 내리지 않았는데 컨텍스트에 이미 6,490 토큰이 차 있었다. 글로벌 CLAUDE.md와 프로젝트 CLAUDE.md가 매 세션 통째로 실린 결과다.이 시리즈에서 나는 프로젝트 여러 곳의 .claude/를 한 저장소에서 관리하고(1편), 팀 룰과 개인 override를 분리하고(2편), 에이전트에게 Edit은 주되 commit은 막고(3편), 룰 주입을 상시 로드에서 조건부 로드로 바꿨다(4편). 4편 끝에서 "이거 토큰 꽤 먹는데" 하고 넘어간 자리를, 이번엔 자를 대고 전수로 다시 쟀다. 55개 컴포넌트를 분류하니 유지 16 / 압축 23 / 병합 8 / 제거 5 / 재측정 3이 나왔다. 명목 절감 추정치는 약 30.2k 토큰이었다.실제로 깎은 건 6.3k다. 80%가 미달이다..
-
멀티프로젝트 Claude Code 설정 운영기 4편 — 룰은 상시 로드가 아니라 적중할 때 로드한다AI 엔지니어링 2026. 9. 1. 07:44
CLAUDE.md에 "Vercel의 react-best-practices를 따라줘"라고 적어두면 에이전트가 그 룰을 지킬 것 같다. 안 지킨다. 이름과 링크는 근거가 아니기 때문이다. 모델은 그 65개 룰의 내용을 이번 컨텍스트에서 보지 못하고, 보지 못한 규칙을 지킬 방법은 없다. 여러 프로젝트에 Claude Code와 Codex를 물려 팀 컨벤션을 먹이려던 나는 여기서 막혔다. 이 글은 "AI에 규칙을 어떻게 주입하나?"라는 질문에 대해, 매번 주입에서 출발해 측정 뒤 조건부 로드로 후퇴하기까지의 작업기다. 에이전트에 팀 컨벤션을 강제하려는 사람이라면 같은 벽을 만난다.이름만 대는 지시는 지켜지지 않는다문제의 뿌리는 단순하다. 에이전트는 매 요청마다 자기 컨텍스트 창에 들어온 텍스트만 근거로 삼는다...
-
멀티프로젝트 Claude Code 설정 운영기 3편 - Edit는 줘도 commit은 못 준다AI 엔지니어링 2026. 8. 25. 07:40
무심결의 commit 하나가 다음 세션의 토대가 됐다여러 프로젝트에 Claude Code 설정을 얹어 8주쯤 운영했을 때 일이다. 한 세션에서 에이전트가 기능 구현을 끝내더니, 확인을 받지도 않고 그대로 commit까지 해버렸다. 나는 그걸 눈치채지 못한 채 세션을 닫았고, 다음 세션은 그 커밋을 이미 확정된 토대로 삼아 그 위에 또 빌드를 쌓았다. 되돌리려 했을 땐 히스토리 두 겹을 함께 풀어야 했다. 문제는 에이전트가 무능해서가 아니었다. 나는 "파일을 고쳐도 좋다"는 권한과 "그 변경을 git 히스토리에 남겨도 좋다"는 권한을 한 덩어리로 묶어 통째로 넘겨준 상태였다. 이 둘은 위험도가 완전히 다르다. 편집은 되돌리기 쉽지만, 커밋은 사건이 된다. 그날 이후 나는 에이전트 권한을 "역할" 단위가 아..
-
멀티프로젝트 Claude Code 설정 운영기 2편 - gitignore한 CLAUDE.local.md를 git add -f로 강제 추적한 이유AI 엔지니어링 2026. 8. 18. 07:37
회사 repo에 CLAUDE.md 한 장을 올려두고 팀이 같이 쓰기 시작하면, 얼마 안 가 그 파일이 이상해진다. "이 프로젝트는 pnpm을 쓴다"처럼 모두가 알아야 할 규칙과, "나는 설명을 짧게 받고 싶다"처럼 순전히 내 취향인 지시가 한 파일에 뒤섞인다. 후자를 PR로 올리기는 민망하고, 안 올리자니 매번 로컬에서 고쳐 두고 커밋에서 손으로 빼야 한다. 이 글은 그 분리선을 CLAUDE.local.md로 그으려다 오히려 .gitignore와 한바탕 싸우고 git add -f로 끝난 작업기다. Claude Code로 여러 repo를 오가며 일하는 사람이라면 같은 지점에서 한 번쯤 멈칫했을 것이다. 이 시리즈 1편에서는 중앙 설정 repo로 여러 프로젝트에 공통 설정을 동기화하는 방식을 다뤘다. 그런데..
-
멀티프로젝트 Claude Code 설정 운영기 1편 - 여러 프로젝트 .claude/를 한 저장소가 소유하게 만들기AI 엔지니어링 2026. 8. 11. 07:51
Claude Code를 여러 프로젝트에서 쓰다 보면 설정이 사방에 흩어진다. 프로젝트마다 .claude/(commands, rules, hooks, agents)가 있고, 루트엔 CLAUDE.md가 있고, 공통으로 쓰고 싶은 룰과 훅이 있다. 처음엔 손으로 복사했다. 룰 하나를 고치면 대여섯 군데를 똑같이 고쳐야 했고, 어느 프로젝트는 갱신을 빼먹어 조용히 갈라졌다. "설정을 한 곳에서 관리하고 각 프로젝트엔 링크만 걸자"는 결론은 자연스러웠다. 문제는 그다음이었다. 이 글은 개인 토이 프로젝트부터 회사 repo까지 예닐곱 개의 .claude/를 저장소 하나에서 관리하려고 만든 link.sh 작업기다. 셸 스크립트 300줄짜리지만, 진짜 어려웠던 건 코드가 아니라 "어느 쪽이 원본인가"라는 질문이었다. ..
-
프런트엔드 AX 설계기 11편 — 설정도 코드처럼 부채가 쌓인다AI 엔지니어링 2026. 8. 4. 07:00
설정을 열었더니 코드 부채 냄새가 났다열 편에 걸쳐 권한 경계부터 검증 게이트, 자율 모드까지 AX(에이전트가 일하는 방식, Agent Experience) 체계를 쌓았다. 그러다 어느 날 설정 파일을 열었는데, 익숙한 냄새가 났다. 코드 부채의 냄새였다.몇 달 전에 넣은 룰이 지금 워크플로와 어긋나 있었고, 같은 지시가 두 파일에 조금씩 다르게 적혀 있었고, 언젠가 쓸 것 같아 넣어둔 커맨드는 한 번도 실행된 적이 없었다. 레거시와 차세대 프로젝트를 동시에 들고 있는 나 같은 프런트엔드 개발자에게, AI 설정은 어느새 또 하나의 코드베이스가 되어 있었다. 그리고 코드베이스라면, 추가만 하는 순간부터 망가지기 시작한다.설정에도 운영 루프가 필요하다 — 흡수(+)와 정리(−)설정 부채는 코드 부채와 똑같이..
-
프런트엔드 AX 설계기 10편 - 단가가 아니라 실패비용으로 모델을 고른다AI 엔지니어링 2026. 7. 28. 07:00
"모든 command가 opus를 쓰는데, command별로 다른 model을 쓰게 할 수 있나?" 한 세션에서 이 질문으로 시작했다. 슬래시 command마다 하는 일이 다른데 전부 최상위 모델을 태우는 게 낭비처럼 보였다. 답은 기술적으로 "된다"였다. slash command frontmatter에 model:만 박으면 command별로 티어가 갈린다. 그래서 나눴다. 그리고 한 달 뒤 되돌렸다. 이 글은 그 왕복의 기록이다. AI 에이전트를 여러 개 굴리는 팀이라면 언젠가 "이건 싼 모델로 충분하지 않나?"를 마주한다. 나는 command 단위로 한 번 싸게 내려봤다가 철회했고, 반대로 특정 에이전트 하나는 측정을 거쳐 opus로 올렸다. 결론부터 말하면, 모델 선택의 축은 토큰 단가가 아니었다...