개발 기록 2026-10-28 오후: 헤더 검색창, Codex·Antigravity 프롬프트 수집, 커밋 정리

· 약 6분 읽기 · 조회 2 #개발기록#블로그#SvelteKit#Claude Code#Codex#Antigravity

이번 기간에는 블로그 초안 자동 정리 스크립트가 Claude Code뿐 아니라 Codex와 Antigravity(agy) 프롬프트도 모으게 했다. 블로그 헤더에는 검색창을 붙여 배포했고, 그동안 쌓인 작업을 커밋으로 정리했다.

프롬프트 수집 대상을 Codex까지 넓히기

이 블로그의 "AI 코딩 프롬프트 기록" 글은 scripts/blog-digest/extract.py가 세션 기록을 읽어 만든다. 그런데 추출기는 ~/.claude/projects/ 아래 Claude Code 기록만 읽고 있었다. 그래서 다른 도구에서 보낸 프롬프트도 넣을 수 있는지 Claude Code에 먼저 확인했다.

Claude Code가 조사한 결과는 다음과 같았다.

  • Codex: ~/.codex/sessions/YYYY/MM/DD/*.jsonl이 Claude Code 기록과 비슷한 JSON 줄 형식이다. 그래서 프롬프트, 시각, 작업 폴더를 뽑을 수 있다.
  • 단, Claude가 codex exec로 대신 실행한 세션(파비콘 만들기, 릴 영상 등)도 섞여 있다. 이것까지 넣으면 같은 작업이 두 번 들어간다.

넣어 달라고 하자 extract.py가 다음처럼 바뀌었다.

  • ~/.codex/sessions 아래 기록을 읽는다. 터미널(codex-tui), Codex Desktop, VS Code에서 사람이 직접 입력한 대화만 넣는다.
  • Claude가 codex exec로 대신 돌린 세션은 뺀다.
  • Codex가 대화마다 자동으로 붙이는 AGENTS.md 지침과 작업 환경 정보는 프롬프트에서 걸러 낸다.
  • 각 프롬프트에 보낸 도구를 표시한다. 프롬프트 기록 글의 소제목은 ### HH:MM <주제> · Codex 형식이 되고, 글 제목도 "AI 코딩 프롬프트 기록 YYYY-MM-DD 오전/오후"로 바뀌었다.
  • 기간이 시작되기 전에 끝난 기록 파일은 열지 않는다. Codex 기록이 수백 개여도 느려지지 않게 하려는 것이다.

Antigravity 기록은 암호화된 게 아니었다

Claude Code는 처음에 Antigravity는 어렵다고 답했다. ~/.gemini/antigravity/conversations/*.pb가 읽을 수 없는 바이너리라서 암호화됐거나 공개되지 않은 형식으로 보인다는 이유였다. 마지막 기록도 2026-05-20이라 최근에는 쓰지 않은 것 같다고 했다.

같은 질문을 Antigravity에 직접 던졌더니 답이 달랐다. Claude Code가 본 곳은 구버전 IDE 폴더였다. 지금 쓰는 Antigravity CLI(agy)는 프롬프트와 응답을 평문 JSONL로 저장하고 있었다.

  • 대화 전체 기록: ~/.gemini/antigravity-cli/brain/<conversation-id>/.system_generated/logs/transcript.jsonl
  • 대화 ID와 작업 폴더 매핑: ~/.gemini/antigravity-cli/history.jsonl

Antigravity가 extract.py에 함수 두 개를 추가했다.

  • load_agy_workspaces: history.jsonl에서 conversationId별 workspace 경로를 매핑한다.
  • parse_agy_session: transcript.jsonl에서 사람이 직접 입력한 프롬프트(source == 'USER_EXPLICIT')와 최종 응답을 뽑는다.

결국 이 글에도 Antigravity 프롬프트가 들어가게 됐다. 한 도구가 "안 된다"고 해도 다른 도구로 한 번 더 확인해 볼 만하다.

헤더 메뉴 옆에 검색창 붙이기

블로그 검색은 "글" 메뉴 안에 들어가 있어서 쓰기 번거로웠다. 그래서 상단 메뉴 오른쪽에 검색창을 바로 붙였다.

  • PC: 용데브 …… 글 ▾ 만든 것 ▾ 소개 ▾ [검색 🔍] 순서로, 둥근 검색창이 메뉴 바로 오른쪽에 있다.
  • 모바일: 용데브 | [검색 🔍] | ☰ 순서다. 검색창이 남는 폭을 채우고, 햄버거 버튼은 오른쪽 끝에 있다. 320px 폭에서도 한 줄에 들어간다.

동작은 다음과 같다.

  • Enter를 누르거나 돋보기를 누르면 /search?q=검색어로 이동한다. 자바스크립트가 없어도 동작한다.
  • 검색 결과 화면에서는 헤더 검색창에 입력한 검색어가 그대로 남는다.
  • 메뉴가 겹치지 않도록 "글" 그룹 안의 "검색" 항목은 뺐다. 태그 모음이 있는 /search 페이지는 그대로 둔다.

로컬 검수(npm run verify)에서 타입 에러는 0개였다. 테스트 19개가 통과했고 빌드도 성공했다. 로컬 브라우저로 PC(1440px)와 모바일(375px, 320px) 화면도 캡처해 확인했다.

배포 뒤에는 운영 사이트에서 두 가지를 확인했다. 메인 화면 헤더에 검색창이 나오고 메뉴 안의 "검색" 링크는 빠졌다. /search?q=SvelteKit은 200으로 열리고, 헤더 검색창에 "SvelteKit"이 채워져 있었다.

커밋 정리와 agy 작업 검증

오늘 작업은 그때까지 하나도 커밋하지 않은 상태였다. 그래서 Claude Code에 커밋을 맡겼다. 커밋 전에 검수를 다시 돌리고, 비밀값이나 디버그 출력이 없는지 확인했다. styles.css는 페이지 나누기 부분과 검색창 부분을 나눠 각각 맞는 커밋에 넣었다.

a25240b fix: 정리 입력에서 응답 요약을 인용으로 감싸 항목 제목과 구분
85a4f6a docs: CLAUDE.md 추가 (명령어, 구조, 검수 규칙, 자동화)
9a2afa7 feat: 작업 기록·프롬프트 기록 블로그 초안 자동 정리 스크립트
05f222a feat: 헤더 메뉴 옆에 검색창 추가
230c4a8 feat: 메인 글 목록 페이지 나누기 (PC 번호, 모바일 더보기)
df58615 test: Vitest와 검수 명령(npm run verify) 추가

배포하는 동안 Claude Code는 scripts/blog-digest/instructions.md가 대화 밖에서 고쳐진 것을 알아챘다. Antigravity가 동시에 작업하던 흔적이었다. 그래서 Antigravity에서 한 작업을 Claude Code에 검증해 달라고 했다. 그 결과 agy 수집 기능은 제대로 동작했고, 검증하면서 발견한 작은 문제 하나를 고쳤다(마지막 fix 커밋).

남은 것

  • Codex와 agy 프롬프트를 함께 모으는 첫 정기 실행(19:00)의 결과는 아직 확인하지 못했다.
  • 운영 사이트는 페이지 내용으로만 확인했다. 브라우저 화면 캡처는 로컬에서만 했다.
  • 저장소에 원격이 없어서 커밋은 로컬 master 브랜치에만 있다.
  • 처음부터 추적하지 않던 파일(.serena/, REVIEW.md 등)을 어떻게 처리했는지는 기록에서 잘려 확인할 수 없다.

댓글 0개

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.

댓글 쓰기

← 목록으로 돌아가기