AI/Claude Code codex `/imagen`에 한글 헤드라인 시각화 맡기기 — brand-spec 락과 본문 기반 정확도 gpt-image-2 capability snapshot, brand-spec 락, 본문 기반 정확도(v1/v2 비교 3사례), anti-pattern 14개 명시 차단까지 — 134개 블로그 카드 이미지를 자동 생성하면서도 통일된 비주얼 시스템을 유지한 디자인 자동화 패턴을 정리합니다.
AI/Claude Code Ghost MCP로 134개 글 일괄 메타 작업하기 — slug↔ID 매핑과 fd-3 stdin 패턴 Ghost MCP로 134개 글에 일괄 메타 작업을 적용하다 마주친 컨텍스트 폭증·동시성 함정. 슬러그↔ID 매핑 인덱스, 페이지네이션·search 함정, fd-3 stdin 분리, parallel tool_use 한도까지 운영 패턴 5가지를 코드와 함께 정리했습니다.
AI/Claude Code 134개 블로그 이미지를 0 Claude 토큰으로 — Claude×Codex 멀티에이전트 분업 패턴 Claude를 오케스트레이션, Codex를 실행에 두면 134개 이미지 자동화에서 Claude 토큰을 거의 0으로 유지할 수 있습니다. 책임 분리·디스크 경유 본문·MCP 우회 패턴까지, 멀티 에이전트 분업의 정량 사례를 정리합니다.
AI/도구활용 양방향 링크 시스템 회고: 프로젝트 스케일에 따른 도구화 결정 같은 양방향 마커 시스템을 세 개 프로젝트에 적용했고, 각각 다른 선택을 했습니다. CI 검증까지 확장한 프로젝트, 45파일 일괄 적용한 프로젝트, 그리고 27개 마커로 멈춘 프로젝트. 스케일이 어떻게 도구화 결정을 가르는지에 관한 회고입니다.
도구/Obsidian window.confirm() 대신 두 번 클릭 패턴: Obsidian 플러그인에서 안전한 삭제 UX 만들기 Obsidian 플러그인의 Settings 탭에서 window.confirm()을 쓰다가 Linux에서 dialog가 차단되는 문제를 만났습니다. 그리고 credential 삭제는 확인 없이 즉시 삭제되는 더 큰 문제도 있었죠. 두 문제를 한 번에 해결하는 two-step delete 패턴과 destructive action UX의 일반 원칙을 정리했습니다.
도구/GitHub Obsidian 플러그인 릴리스에서 styles.css가 사라지는 이유: GitHub Actions 워크플로우의 빠진 한 줄 커스텀 summary card 디자인을 새로 도입하면서 styles.css가 생겼는데, release.yml의 gh release upload 커맨드에 파일명을 빠뜨려서 GitHub Release asset에서 누락됐습니다. 사용자에게는 "스타일이 안 보인다"는 버그로 나타났고, 2줄 fix로 해결했습니다. Obsidian 플러그인 release workflow 체크리스트도 함께 정리.
AI/Claude Code 소스와 테스트를 grep 한 줄로 연결하기: @tested / @covers 양방향 마커 시스템 코드베이스가 커지면 "이 파일에 테스트가 있나?" "이 테스트가 뭘 커버하나?"를 추적하는 비용이 커집니다. JSDoc에 @tested와 @covers 마커를 넣어 소스·테스트 간 양방향 링크를 구축하면, grep 한 줄로 커버리지 맵을 얻을 수 있습니다. 실제 Obsidian 플러그인 프로젝트에 적용한 사례.
도구/Obsidian E2E 스위트가 하나로 부족해진 날: Obsidian 플러그인에 두 번째 CDP 테스트 추가하기 첫 번째 CDP E2E 스위트 글의 속편. multi-config 리팩토링에서 Settings UI를 검증하기 위해 두 번째 E2E 스위트를 추가했고, 그 과정에서 51줄의 CDP 인프라 코드를 공유 모듈로 추출했습니다. 두 스위트를 하나의 Obsidian 인스턴스에서 돌리는 격리 규칙과 공유 경계 설계까지.
도구/Obsidian Singleton을 Per-Instance로 바꾼 뒤 찾아온 메모리 누수: 16줄로 잡은 Orphaned RateLimiter Obsidian 플러그인의 multi-config 리팩토링 중 발견한 조용한 메모리 누수: config를 삭제해도 그 config가 쓰던 RateLimiter가 공유 Map에 그대로 남았던 버그의 원인과 3파일 16줄짜리 fix. Per-instance 서비스 전환 시 주의해야 할 4가지 cleanup 함정을 정리했습니다.
도구/Obsidian Obsidian 플러그인을 Multi-Database로 리팩토링하기: DatabaseProvider 추상화와 FieldType 정규화 Airtable에 강결합돼 있던 Obsidian 플러그인 서비스 레이어를 provider-agnostic DatabaseProvider 인터페이스로 추상화한 2단계 리팩토링(PR #49, #50) 기록. 런타임 capability flag, 5-way discriminated union credential, 29→11 StandardFieldType 정규화까지 395/395 테스트를 유지하며 진행한 설계 결정을 공유합니다.
도구/Obsidian 하나의 Obsidian Vault에서 여러 Airtable 동시 싱크: Multi-Config 아키텍처 구현기 Airtable 플러그인을 단일 config에서 multi-config 멀티테넌트 구조로 확장한 경험. ConfigInstance와 ConfigManager의 역할 분리, credential-scoped RateLimiter 공유, defensive + idempotent 마이그레이션, 폴더 겹침 검증, Obsidian command palette의 dynamic re-registration까지.
자동화/블로그 Ghost MCP v1.0.1 업데이트기: 프로토타입에서 오픈소스 도구로 — 무엇이 달라졌나 v1.0.0 공개 후 2개월. "내 블로그용 스크립트"를 "오픈소스 도구"로 끌어올린 변화 — 테스트, 보안, 유연성, 온보딩 네 가지 영역의 성숙화를 한눈에 정리합니다.
AI/도구활용 양방향 링크 시스템을 테스트 커버리지에 확장하기: @tested / @covers 마커 패턴 문서↔코드 양방향 링크 시스템을 테스트 영역에 확장한 후속편. @tested / @covers 마커 설계, 3계층 테스트 커버리지 선언, CI 검증 스크립트까지 정리합니다.
백엔드/API설계 마크다운 3포맷 자동 감지 파서 설계: legacy, frontmatter, plain을 한 파서로 기존 사용자의 레거시 포맷을 깨지 않으면서 표준 frontmatter와 일반 마크다운까지 지원해야 했습니다. 감지 순서, fallback 설계, 그리고 strategy 패턴을 포기한 이유를 정리합니다.
백엔드/인증-보안 MCP 서버 보안: LLM이 생성한 파일 경로를 18줄로 막는 Path Traversal 방어 MCP 서버는 로컬 권한과 LLM 입력이 만나는 새로운 공격 표면입니다. Path Traversal, prefix 우회, symlink 공격을 18줄의 검증 함수로 막는 방법과 그 뒤의 설계 원칙을 정리합니다.
AI/Claude Code claude-dashboard v1.25~v1.26: 위젯을 쪼개고, 커뮤니티가 테마와 기능을 보태다 claude-dashboard v1.25~v1.26의 변화를 정리합니다. context 위젯을 세 조각으로 쪼개 좁은 터미널에서 필요한 것만 보여주고, tagStatus로 릴리스 태그를 추적하며, 커뮤니티가 peakHours, Pro 7일 한도, Catppuccin Latte 테마를 보태 줬습니다.
AI/Claude Code 실패도 캐싱하라: API 클라이언트 회복력을 위한 TypeScript 패턴 (negative caching + discriminated union) API hammering을 막으려면 실패도 캐시해야 합니다. 30초 negative caching, 1시간 stale fallback, 그리고 TypeScript discriminated union으로 "데이터 또는 에러" 불변식을 타입에 박아 넣는 세 단계 패턴을 정리합니다.
AI/Claude Code 터미널 상태줄을 클릭 가능하게: OSC8 하이퍼링크와 두 가지 보안 함정 OSC8은 9줄짜리 함수로 터미널 텍스트를 클릭 가능한 링크로 만들어 줍니다. 단, segment 단위 URL 인코딩과 git remote URL의 자격증명 stripping이라는 두 가지 함정을 미리 잡지 않으면 토큰을 escape sequence 안에 그대로 노출시킬 수 있습니다.
AI/Claude Code claude-dashboard v1.14~v1.24: stdin 우선, OSC8 링크, 그리고 파서를 한 번 더 100배 빠르게 claude-dashboard v1.14~v1.24의 변화를 정리합니다. Claude Code stdin이 새 필드를 추가하면서 API 호출을 0으로 줄였고, 트랜스크립트 파서를 두 번 더 100배 빠르게 만들었으며, lastPrompt 위젯의 데이터 소스를 history.jsonl로 옮겼습니다.
AI/Claude Code 터미널 다크/라이트 모드 자동 감지: COLORFGBG 환경 변수의 조용한 진실 브라우저엔 `prefers-color-scheme`가 있는데 터미널엔 뭐가 있을까? COLORFGBG 환경 변수, OSC 11 이스케이프 쿼리, TERM_PROGRAM 휴리스틱을 비교하고, Rust TUI 프로젝트에서 쓴 12줄짜리 디텍터와 그 한계를 정리합니다.
AI/Claude Code Ratatui로 Miller Columns 3-Pane 파일 탐색 UI 만들기: Finder 스타일 TUI 설계 가이드 ratatui 튜토리얼은 대부분 단일 리스트에서 멈춥니다. Finder 스타일 3-pane 네비게이션을 만들기 위한 레이아웃 설계, pane 팩토리, 포커스 관리, 캐스케이딩 리셋 패턴을 Rosé Pine 테마와 함께 정리합니다.
AI/Claude Code Claude Code 프로젝트 폴더명 디코딩: `~/.claude/projects/`의 손실 인코딩 복원기 `~/.claude/projects/`의 이상한 폴더 이름을 사람이 읽을 수 있는 프로젝트명으로 되돌리는 알고리즘. 손실 인코딩 복원, greedy 파일시스템 매칭, 중복 제거까지 duru의 scan.rs가 세 번의 리팩토링을 거치는 과정을 정리합니다.
AI/Claude Code Rust TUI 스크린샷과 데모 GIF 만들기: ratatui와 Alternate Screen의 함정 Rust TUI 앱의 스크린샷과 데모 GIF를 만들려다 vhs와 asciinema가 모두 먹통이 되는 경험. 원인은 alternate screen buffer였고, TestBackend로 SVG를 직접 생성하는 접근과 alternate screen을 끄는 모드를 추가해 GIF 녹화를 살리는 두 가지 해결책을 정리합니다.
AI/Claude Code /last30days 플러그인 셋업부터 Reddit 댓글 무료 최적화까지 — Claude Code 리서치 자동화 Claude Code의 /last30days 스킬 셋업부터 코드 수정까지. 키체인 팝업 해결, NoneType 버그 수정, Reddit 댓글 무료 최적화 방법을 공유합니다.
AI/Claude Code Claude Code iMessage 채널 연동: 터미널 없이 핸드폰으로 AI 코딩 어시스턴트 사용하기 Claude Code에 iMessage 채널을 연동해서 터미널 없이 핸드폰으로 AI 코딩 어시스턴트를 사용하는 방법. 설정 과정에서 만나는 bun 미설치, FDA 권한 등 흔한 함정과 해결법을 정리했습니다.