도구/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 권한 등 흔한 함정과 해결법을 정리했습니다.
AI/Claude Code Rust CLI 배포 자동화: Homebrew, Scoop, Shell Installer를 GitHub Actions로 한 번에 구축하기 Rust CLI 도구를 태그 하나로 6개 플랫폼에 자동 배포하는 방법. Homebrew tap, Scoop bucket, Shell installer를 GitHub Actions로 구축한 실전 경험을 공유합니다.
AI/Claude Code Astro Starlight + Vercel: 코드 없이 만드는 프로젝트 문서 사이트 실전 가이드 오픈소스 프로젝트 문서 사이트를 Astro Starlight로 구축하고 Vercel에 배포한 실전 가이드. 코드라고 할 만한 것이 거의 없이, 마크다운과 설정 파일 3개만으로 전문적인 다국어 문서 사이트를 완성한 경험을 공유합니다.
AI/Claude Code Obsidian CLI 없이 플러그인 E2E 테스트하기: Electron CDP 활용법 Obsidian CLI가 Early Access(v1.12+)라 사용할 수 없을 때, Electron의 Chrome DevTools Protocol을 활용해 플러그인 E2E 테스트를 구현한 경험을 공유합니다. 실제 버그 발견부터 11개 옵션 조합 테스트까지.
AI/Claude Code claude-dashboard v1.10~v1.13: 테마, 성능 최적화, 그리고 셸 통합까지 claude-dashboard v1.10부터 v1.13까지 6번의 릴리스에 담긴 변경사항을 정리합니다. 테마 시스템, Effort Level 표시, 성능 최적화, 그리고 터미널에서 바로 쓰는 check-ai 커맨드까지.
자동화/블로그 Ghost MCP 서버 구축기: 블로그 66개 포스트 전수 감사 자동화 n8n 자동화의 한계를 넘어 MCP 서버를 만들고, 66개 포스트를 한 세션에서 전수 감사한 이야기
AI/Claude Code Claude Code Review GitHub Action, 최신 템플릿으로 설치하면 리뷰 코멘트가 안 달립니다 2026년 1월 이후 Claude Code Review 설치 템플릿이 플러그인 방식으로 바뀌면서 PR 코멘트가 포스팅되지 않는 문제가 발생합니다. 실제 GitHub Issues 분석과 함께 공식 권장 해결법을 정리합니다.
자동화/블로그 Claude Code Hooks로 블로그 글 자동 전송하기: n8n Webhook 연동 Claude Code Hooks 기능으로 블로그 글 작성부터 Ghost 전송까지 완전 자동화하는 파이프라인을 구축합니다. /blog 실행만 하면 나머지는 자동!
AI/Claude Code Claude Code .claude 디렉토리 1.3GB 정리하기 — 세션 로그 자동 정리 스크립트 Claude Code의 .claude 디렉토리가 1.3GB로 불어난 원인을 분석하고, memory를 보호하면서 오래된 세션 데이터를 자동 정리하는 스크립트를 만들었습니다.