website: db-access 스킬 — GUI/dbclient 능력 비교표 + 항상 페어로 열기
먼저 걸린 건 GUI 쪽 권한 문제였다. sqlite-web으로 띄운 GUI에서 INSERT를 시도해봤는데, 응답은 `HTTP 200`이 오는데 실제로는 데이터가 반영되지 않았다. `docker exec`로 직접 들어가서 확인해보니 `Read-only file system` 에러가 나고 있었다 — DB 볼륨이 `:ro`로 마운트돼 있어서 애초에 쓰기가...
#169에서 만든 db-access 스킬을 실제로 써보다가 두 가지가 걸려서 고친 PR이다.
| 경로 | SELECT | DML(INSERT/UPDATE/DELETE) | DDL(ALTER/CREATE/DROP) |
|---|---|---|---|
| GUI(sqlite-web, 이 터널) | ✅ | ❌ | ❌ |
| dbclient CLI | ✅ | ✅ | ❌ |
요청이 올 때마다 스킬이 이 표를 같이 출력하도록 명시해뒀다. 매번 반복해서 안내하는 게 번거로워 보일 수도 있는데, 조회 전용 GUI에서 조작을 시도하다 헷갈리는 것보다는 매번 짚어주는 쪽이 낫다고 판단했다.
두 번째는 "GUI 열어줘" 요청 처리 방식이었다. 원래 db-dev-ui.sh 스크립트는 tmux 한 창을 분할해서 조회(GUI)와 조작(dbclient)을 같이 띄우도록 설계돼 있었다. 그런데 Claude가 대화 중에 직접 터널을 열어주는 버전에서는 이 설계가 반영이 안 돼 있었다 — GUI 터널만 열고, dbclient는 사용자가 따로 요청해야 뜨는 구조였다. 실제로 사용자가 GUI 요청했을 때 dbclient도 같이 뜨길 기대했는데 안 떠서 지적을 받았고, 그 뒤로 항상 페어로 열도록 고쳤다.
수정 방향은 원래 스크립트의 설계 의도를 그대로 따라가는 쪽으로 잡았다. tmux가 있는 환경(Mac/Linux)에서는 db-dev-ui.sh <env>를 그대로 실행해서 분할창으로 띄우면 되고, tmux가 없는 Windows에서는 대안이 필요했다. Windows는 새 PowerShell 창을 하나 더 띄워서 인터랙티브 dbclient 세션을 여는 방식으로 처리했다.
Start-Process powershell -ArgumentList '-NoExit','-Command',"ssh.exe -i \"<개인키 경로>\" dbclient@<호스트> <env>"
세션을 열고 나서 사용자에게 안내하는 문구도 "브라우저에서 GUI 열어보세요"에서 "GUI는 열렸고 dbclient 창은 따로 떴습니다"로 바꿔서, 두 개가 같이 준비됐다는 걸 명확히 알 수 있게 했다. 세션 종료 절차는 그대로 두되, dbclient 창은 포트 기준 프로세스 종료 대상이 아니니까 사용자가 직접 닫으라고 안내를 추가했다.
이번 PR은 스킬 문서 한 파일만 20줄 추가, 5줄 삭제로 끝나는 작은 변경이었지만, 둘 다 실제로 스킬을 써보다가 발견한 문제였다는 점이 눈에 띈다. GUI 200 응답의 함정이나 dbclient가 안 뜨는 문제는 설계 단계에서는 안 보이고, 실사용을 해봐야 드러나는 종류의 문제였다. #169에서 스킬을 처음 만들고 끝낸 게 아니라 실사용 검증을 한 번 더 거친 게 이번 수정으로 이어진 셈이다.