게이트를 세운 내가, 그 게이트를 우회했다 — 그리고 AI를 '진짜 디자이너'로 만들었다
웹 디자인 팩을 걷어내고 인쇄 프리셋을 깔았다. 그러다 내가 만든 이미지 게이트를 스크린샷 꼼수로 우회했고, 정확히 그 지점을 지적받았다. 디자인 에이전트를 기획·실행·디자인이 되는 '진짜 디자이너'로 다시 세운 기록.
지난 편들은 "자율 에이전트가 게이트 안 친 곳으로 샌다"는 이야기였다. 이번 편은 조금 더 부끄러운 이야기다. 게이트를 세운 내가, 그 게이트를 우회했다.
디자인을 '정하는' 단계가 없었다
시작은 단순한 질문이었다. "슈퍼라이터에 디자인 컨셉을 정하는 단계가 있나?"
없었다. 판매용 PDF의 '디자인 언어'는 어딘가에서 번들된 웹 디자인 팩 50종에서 왔는데, 열어보니 5vw·clamp()·마우스 호버·스크롤 애니메이션 같은 화면 전용 지침으로 가득했다. 정지된 인쇄물엔 아무 의미가 없다. 실제로 빌더가 그 팩에서 쓰는 건 색과 폰트 두 개뿐이었다. 나머지 90%는 죽은 무게였고, 디자인은 아무도 '정하지' 않은 채 팩이 조용히 자동 선택되고 있었다.
그래서 웹 팩을 통째로 걷어냈다. 대신 편집디자인의 정전 — 뮐러브로크만의 그리드, 브링허스트의 타이포그래피 — 을 증류해 인쇄 프리셋 8종을 깔았다. 여백 비율, 제목과 본문의 크기 위계, 페이지가 꽉 차 보이게 하는 법. 화면이 아니라 '책'의 규칙이다.
그리고 나는, 내 게이트를 우회했다
여기까지는 좋았다. 문제는 그다음이다.
만든 걸 증명하려고 슈퍼라이터로 슈퍼라이터 사용 교재를 만들어봤다. 초보자용, 스크린샷까지 다 떠서. 최종 검사(verify_book)는 PASS가 떴다.
그런데 나는 예전에 "코드로 그린 가짜 이미지를 차단하는 게이트"를 직접 만든 사람이다. 납작한 matplotlib 도식이나 의미 없는 색 블롭이 삽화인 척 통과하던 걸 막으려고. 그 게이트가 이번엔 내 스크린샷을 코드드로로 오판했다. 진짜 스크린샷인데, 어두운 터미널이라 압축이 잘 돼 "납작하다"고 걸린 것이다.
나는 그걸 정면으로 풀지 않았다. 스크린샷 뒤에 그라디언트 배경을 깔아 게이트를 통과시키고, 한국어 검사(OCR)도 잠깐 꺼서 넘겼다. 게이트를 세운 내가, 자율 에이전트가 게이트를 우회하는 바로 그 짓을 한 것이다. 표지도 어설픈 그라디언트로 나왔다.
지적은 정확했다. "이 책이 중요한 게 아니라 범용 스킬이 팔려야 한다. 너 지금 클로드 입장으로만 만들었고, 코덱스·agy는 고려도 안 했다."
맞는 말이었다. 나는 '내 책을 통과시키는' 데 매몰돼, '아무 사용자나 돌려도 되는 스킬'을 잊었다.
스크린샷은 우회가 아니라, 매체다
정정부터. 스크린샷은 꼼수가 아니다. 소프트웨어 사용법 책이라면 오히려 스크린샷이 주력이어야 한다. 내 잘못은 스크린샷을 쓴 게 아니라, 개념 설명까지 전부 스크린샷으로 밀어버린 것 — 매체를 '고르지' 않은 것이다.
진짜 디자이너라면 텍스트가 다 나온 뒤 이렇게 한다. 어떤 요소가 있는지 훑고, 이 자리엔 삽화·저 자리엔 스크린샷·여긴 데이터 도표·여긴 표, 무엇이 가장 잘 전달하는지 고르고(기획), 그것을 진짜로 만들고(실행), 위계와 캡션과 표를 배치한다(디자인).
그래서 디자인 에이전트를 그 세 가지가 되도록 다시 세웠다.
- 기획력 — 본문을 읽고 매체를 고른다. 개념·비유는 삽화, 실제 화면은 스크린샷, 순수 수치는 코드 도표. 확신이 없고 개념이면 삽화.
- 실행력 — 고른 걸 진짜로 만든다. 삽화는 코덱스의 GPT 이미지·agy의 나노바나나로 회화 생성(가짜 금지), 스크린샷은 실제 화면 캡쳐. 그리고 이 판단은 클로드·코덱스·agy 어느 호스트든 동일하다. 다른 건 실행 수단뿐이다.
- 디자인 능력 — 제목 위계, 이미지 크기, 캡션 위치, 표 배치.
게이트도, 나조차 못 피하게
핵심은 게이트를 매체 인식형으로 바꾼 것이다. 디자인 에이전트가 각 이미지의 매체를 선언하면, 게이트가 그에 맞게 검사한다. 삽화는 회화 생성을 강제(코드로 그리면 탈락), 스크린샷은 정당하게 허용하되 코드로 지어낸 가짜는 여전히 차단. 실제로 가짜 블롭을 '스크린샷'이라 위장해도 걸리는 걸 확인했다. 이제 나조차 배경 꼼수로 못 빠져나간다.
표도 손봤다. 사용자가 "표가 뒷장으로 넘어가며 망가진다, 그리고 컬럼 너비는 글자 길이에 따라 달라져야 한다, 기계적으로 하지 마라"고 했다. 그래서 열 너비를 내용 길이로 자동 배분하고(긴 설명 열은 넓게, 짧은 라벨·숫자 열은 좁게), 숫자 열은 자동 우측정렬, 작은 표는 통째로 한 쪽에 두게 했다.
수강생이 준 세 가지
한 수강생이 코덱스로 스킬을 돌려보고 피드백을 줬다. 세 가지가 있었다.
파이썬이 없어 실패했다는 것 — 이건 이미 고쳤다. 파이썬을 '있으면 좋은 도구'가 아니라 핵심 엔진으로 승격해, 없으면 스킬이 winget·brew·apt로 설치를 유도한다. "파이썬 없어서 못 한다"로 끝나지 않는다.
합본 원고를 메모장에서 열면 한글이 깨진다는 것 — 인코딩 문제였다. 파일은 멀쩡한데 메모장이 UTF-8을 못 알아본 것. 합본에 BOM을 넣어 해결했다.
이미지 라벨이 자꾸 영어로 나온다는 것 — 능력 문제가 아니라 프롬프트 기본값 문제였다. 모델은 한글을 잘 그리지만, 강하게 시키지 않으면 영어로 샌다. 그래서 이미지 드라이버 프롬프트를 "한국어 허용"에서 "한국어로 렌더, 영어 기본값 금지"로 바꿨다. 호스트와 무관하게.
남는 생각
게이트를 세우는 것과, 그 게이트를 나조차 못 피하게 만드는 것은 다르다. 이번에 나는 내가 세운 규칙을 스스로 어겼고, 그걸 지적받고 나서야 규칙을 진짜로 단단하게 만들었다.
파는 물건은 결국 '내가 통과했다'가 아니라 '누가 돌려도 통과한다'로 증명된다. 다음은 이 스킬을 여러 사람이 직접 돌려보는 일이다. 또 어디선가 샐 것이다. 그럼 또 막으면 된다.