이슈 목록을 보고 기여할 곳을 고르는 방식은 이제 잘 통하지 않는다. 새 이슈는 며칠 안에 PR이 붙고 초보자용 라벨은 비어 있다. 대신 문서의 코드 블록을 소스와 자동으로 대조하니 아무도 집지 않은 오류가 나왔다.
[Read More]
TanStack AI 어댑터로 갈아 끼웠다 — 확인 항목 다섯 개의 답과 리뷰가 잡은 여섯 번째
직접 만든 OpenRouter 어댑터를 TanStack AI의 것으로 바꾸면 코드가 줄 줄 알았는데 늘었다. 확인하려던 다섯 항목은 된다 둘·안 된다 둘·다음으로 하나로 갈렸고, 리뷰가 실행으로 잡은 여섯 번째 — 생성 SDK의 응답 스키마가 내 경계보다 엄격했다는 것 — 가 이 spike에서 가장 값진 발견이었다.
[Read More]
OpenAI에서 OpenRouter로, 그리고 TanStack AI로 — Career Radar가 다음에 갈 자리
OpenAI 크레딧 없이 시작해 OpenRouter 무료 모델로 검증을 끝냈고, 제공자를 더 늘리려다 멈춘 자리에서 TanStack AI를 만났다. 그 저장소의 어댑터 계층이 내가 직접 만든 계층과 같은 자리였고, 거기에 없는 제공자 둘은 내가 조사해 둔 것이었다. 힘이 빠졌다고 쓴 지 하루 만에 다음 자리가 보인 이야기다.
[Read More]
열흘 동안 무엇을 증명했고 무엇을 못 했나 — Career Radar 회고
이력서와 공고의 적합도를 판정하는 ChatGPT 앱을 열흘 동안 PR 38개와 글 23편으로 만들었다. 증명하려던 것은 근거 기반 GenAI 앱을 설계하고 평가하고 운영할 수 있다는 것이었고, 기준선 숫자가 그 일부를 증명했으며 나머지는 재지 않았다. 여기서 멈추는 이유와 남는 것을 적는다.
[Read More]
CLI 세 개를 npm에 올리기 전에 확인한 것들
작은 CLI를 만들어 npm에 올리는 일은 코드 작성보다 패키징, 검증, 배포 경로를 함께 설계하는 일에 가까워졌다. 2026년의 npm 배포는 토큰을 줄이고 OIDC로 옮기며, 받는 쪽은 냉각 기간과 설치 제한으로 새 버전을 천천히 받아야 한다.
[Read More]
AI를 적용하기 전에, 줄일 일부터 정한다 — 스킬과 앱을 만들며 세운 기준
AI가 초안을 더 빨리 만들어도 검토와 인계의 대기가 그대로라면 전체 업무는 그만큼 빨라지지 않을 수 있다. 스킬과 앱을 직접 만들며, 기존 기능을 쓸 때와 실행·운영 체계를 더할 때의 기준을 정리했다.
[Read More]
OpenRouter 무료 모델로 앱을 검증하며 부딪힌 여덟 가지
비용 없이 실제 모델 경로를 검증하려고 OpenRouter 무료 모델을 나흘 동안 썼다. 무료를 강제하는 것은 제공자 이름이 아니라 모델 id의 접미사였고, 새 키로도 429가 이어져 키 교체만으로 실행을 계속할 수는 없었다. 제공자의 제한과 내 코드의 문제를 나눠 정리한다.
[Read More]
66번 호출한 실행을 마지막 검사 하나가 버렸다 — Career Radar M5-D 재개
66번 호출한 실행이 저장 직전 검사에서 멈춰 보고서를 남기지 못했다. 마스킹과 재개 기능을 고치면서, 결과뿐 아니라 비교 조건과 이전 호출 기록도 보존해야 한다는 점을 확인했다.
[Read More]
QA 요청이 완료 확인이 되지 못했을 때 — 검증 가능한 장면을 만들어 닫기
QA 환경에 배포하고 확인하겠다는 답까지 받았지만, 12일 뒤 상태를 묻는 자리에서 검증이 시작되지 않았다는 사실이 드러났고 다시 배포하자 곧바로 '화면이 너무 빨리 넘어가 확인할 버튼을 볼 수 없다'는 답이 왔다. 요청이 완료 확인으로 닫히려면 상대가 도달할 수 있는 장면을 만들어 보내야 했다.
[Read More]
거의 3주 동안 머지하지 못한 PR 을 살려두는 법 — 정기 배포가 사라진 뒤의 대기 운영
초기 리뷰를 마친 PR 을 외부 일정 때문에 거의 3주 동안 열어뒀고, 그 사이 main 은 움직이고 공유 QA 브랜치는 재생성됐으며 새 푸시마다 자동 리뷰 승인이 리셋됐다. Draft 전환과 푸시 최소화, 충돌 예보와 별도 worktree 로 대기 비용을 관리했다.
[Read More]
복귀 대상이 이 창 안에 있는가 — 세 지면, 두 채널, 하나의 '돌아가기' 버튼
'이전 페이지로 돌아가기' 한 버튼이 새 탭에서는 닫고, 같은 탭에서는 이동하고, 웹뷰에서는 절대 닫지 않아야 했는데, 웹뷰인지로 가르면 주문서를 잃었고 새 탭인지는 런타임에서 알 수 없었다. 기준을 '복귀 대상이 이 창 안에 있는가'로 바꾸고, 런타임이 모르는 사실은 여는 쪽이 선언하게 했다.
[Read More]
같은 코드가 iOS 에서는 되고 Android 에서는 조용했다 — 웹뷰 URL 인터셉트가 두 곳으로 갈라져 있을 때
웹뷰 안에서 상품 상세로 돌아가는 버튼이 iOS 에서는 동작했고 Android 에서는 아무 반응이 없었는데, 프런트엔드 코드는 양쪽에 똑같은 이동을 요청하고 있었다. 브라우저에서 UA 를 바꿔 테스트해도 잡히지 않는 이 차이는 앱 저장소를 직접 읽고 나서야 사실이 됐다.
[Read More]