<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mockup on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/ko/tags/mockup/</link><description>Recent content in Mockup on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Tue, 07 Apr 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/ko/tags/mockup/index.xml" rel="self" type="application/rss+xml"/><item><title>Creative Agent Studio 개발일지 #1 — 4월 목업 시절, 그리고 Creative Warmth 테마를 입은 이유</title><link>https://ice-ice-bear.github.io/ko/posts/2026-04-07-creative-agent-studio-dev1/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/ko/posts/2026-04-07-creative-agent-studio-dev1/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post Creative Agent Studio 개발일지 #1 — 4월 목업 시절, 그리고 Creative Warmth 테마를 입은 이유" /&gt;&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Creative Agent Studio&lt;/strong&gt;의 첫 개발일지다 — 한국어 기반 광고 크리에이티브 멀티 에이전트 시스템. 사용자의 단일 메시지가 채팅 우선 파이프라인에 진입해 네 가지 프레젠테이션 단계 — &lt;strong&gt;리서치 → 카피 → 시나리오 → 콘티&lt;/strong&gt; — 를 거치며, 단계 사이에 명시적 사람 승인 게이트를 둔다.&lt;/p&gt;
&lt;p&gt;4월은 목업의 시대였다. 이틀 동안 12개의 커밋이 캔버스의 정적 HTML/JS 프로토타입, 런타임 흐름 스펙, 결국 React 재작성에서도 살아남는 &amp;ldquo;Creative Warmth&amp;rdquo; 디자인 테마, 그리고 Vercel에 올릴 배포 모양을 만들어냈다. 나중에 버려지는 코드는 핵심이 아니었다 — 핵심은 &lt;code&gt;interaction-model.md&lt;/code&gt;에 적어둔 결정들과 목업에 박힌 디자인 토큰이었다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 Idea["사용자 브리프 (채팅)"] --&gt; Research["리서치 단계 &amp;lt;br/&amp;gt; 리서치 에이전트"]
 Research --&gt; Gate1["GATE 1 &amp;lt;br/&amp;gt; 키 컨셉 선택"]
 Gate1 --&gt; Copy["카피 단계 &amp;lt;br/&amp;gt; 4개 드래프트 워커"]
 Copy --&gt; Gate2["GATE 2 &amp;lt;br/&amp;gt; 카피 승인"]
 Gate2 --&gt; Scenario["시나리오 단계 &amp;lt;br/&amp;gt; 3 스페셜리스트"]
 Scenario --&gt; Gate3["GATE 3-4 &amp;lt;br/&amp;gt; 시나리오 승인"]
 Gate3 --&gt; Storyboard["콘티 단계 &amp;lt;br/&amp;gt; 이미지 생성"]
 Storyboard --&gt; Gate5["GATE 5 &amp;lt;br/&amp;gt; 최종 승인"]&lt;/pre&gt;&lt;p&gt;12개 커밋, 한 가지 관통하는 주제 — &lt;strong&gt;구현이 녹슬기 전에 원칙을 못 박는다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="목업보다-오래-살아남은-세-가지-결정"&gt;목업보다 오래 살아남은 세 가지 결정
&lt;/h2&gt;&lt;p&gt;4월에 추가된 가장 중요한 파일은 코드가 아니라 &lt;code&gt;interaction-model.md&lt;/code&gt;였다 — 세 가지 제품 결정을 단일 결정문서로 결정화한 문서:&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;결정 1. 인터랙션 모델 — 채팅 우선.&lt;/strong&gt; 사용자의 주 입력 수단은 자유형 채팅이다. 단계를 직접 클릭하거나 버튼으로 다음으로 넘어가는 방식은 사용하지 않는다. 오케스트레이터가 사용자의 발화를 해석해 적절한 에이전트를 호출한다.&lt;/p&gt;

 &lt;/blockquote&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;결정 2. 에이전트 투명성 — 한 줄 상태 표시.&lt;/strong&gt; 에이전트 실행 중에는 피드에 한 줄짜리 상태 메시지만 표시한다. 전체 에이전트 대시보드나 실시간 로그는 노출하지 않는다.&lt;/p&gt;

 &lt;/blockquote&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;결정 3. 게이트 기반 자동 실행.&lt;/strong&gt; 각 단계가 완료되면 파이프라인은 멈추고, 다음 단계를 자동으로 실행하기 전에 명시적 사람 승인을 기다린다.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;뒤이은 모든 UI 커밋은 — 4월 내내, 그리고 5월 재작성을 가로질러 — 이 세 규칙에 비춰 검증됐다. 목업의 첫 커밋(&lt;code&gt;b67eb98 Add Diffs creative agent studio mockup&lt;/code&gt;)부터 이미 DOM 구조로 인코딩돼 있었다 — &amp;ldquo;다음 단계&amp;rdquo; 버튼 없음, 에이전트는 대시보드가 아니라 글머리 기호 목록으로, 컴포저가 유일한 진입점.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="creative-warmth--디자인-테마"&gt;&amp;ldquo;Creative Warmth&amp;rdquo; — 디자인 테마
&lt;/h2&gt;&lt;p&gt;세 번째 커밋(&lt;code&gt;72e0fdc&lt;/code&gt;)이 모든 걸 견뎌낸 비주얼 베이스라인이었다 — &lt;strong&gt;&amp;ldquo;Redesign: Apply Creative Warmth theme (warm white, DM Serif Display, Caveat).&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;토큰 셋, 이유 셋:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;토큰&lt;/th&gt;
 &lt;th&gt;값&lt;/th&gt;
 &lt;th&gt;이유&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;배경&lt;/td&gt;
 &lt;td&gt;Warm white (#FAF7F2)&lt;/td&gt;
 &lt;td&gt;순백은 소프트웨어처럼 읽힌다. 따뜻한 톤은 작업실처럼 읽힌다.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;본문 서체&lt;/td&gt;
 &lt;td&gt;DM Serif Display&lt;/td&gt;
 &lt;td&gt;크리에이티브 도구는 생산성 코드가 아니라 문학적인 느낌이어야 한다.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;손글씨 라벨&lt;/td&gt;
 &lt;td&gt;Caveat&lt;/td&gt;
 &lt;td&gt;스페셜리스트 에이전트 이름에 손글씨 배지를 — 밀도 높은 작업면에 인간미를 한 줄 입히는 작은 장치.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;규칙은 부정형이었다 — &lt;strong&gt;순흑도, 순백도, 어디에도 쓰지 않는다.&lt;/strong&gt; 후속 커밋(&lt;code&gt;640c755&lt;/code&gt;)이 로고 가시성을 고쳐야 했는데 — 원본 SVG가 어두운 색이라 따뜻한 배경 위에서 보이지 않았다 — 수정 방법은 에셋을 재출력하는 대신 &lt;code&gt;filter: brightness(0)&lt;/code&gt; CSS 핵으로 반전시키는 것이었다. 실용적이긴 했지만, 기저 제약은 그대로였다 — 디자인 시스템이 시스템과 싸우는 에셋을 위해 굽혀지지는 않는다.&lt;/p&gt;
&lt;p&gt;이 토큰들은 6주 뒤 React 측 첫 feat(web) 커밋에서 &lt;code&gt;web/tailwind.config.ts&lt;/code&gt;로 그대로 이주한다 — 디자인 결정이 옳은 하중 지지 레이어였다는 증거.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="목업을-정직하게-만든-세-가지-ui-정리"&gt;목업을 정직하게 만든 세 가지 UI 정리
&lt;/h2&gt;&lt;p&gt;연속된 세 커밋(&lt;code&gt;3c225c9&lt;/code&gt;, &lt;code&gt;1be5253&lt;/code&gt;, &lt;code&gt;d37b4c9&lt;/code&gt;)이 세 결정을 위반하던 것들을 공격했다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;p class=&amp;#34;eyebrow&amp;#34;&amp;gt;Project Management&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;ul class=&amp;#34;agents&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;li&amp;gt;&amp;lt;span class=&amp;#34;dot dot-1&amp;#34;&amp;gt;&amp;lt;/span&amp;gt;Agent 1&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;li&amp;gt;&amp;lt;span class=&amp;#34;dot dot-2&amp;#34;&amp;gt;&amp;lt;/span&amp;gt;Agent 2&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;/ul&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;ul class=&amp;#34;agents&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;li&amp;gt;리서치 에이전트&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;li&amp;gt;Copy Draft Workers&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;/ul&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;3c225c9&lt;/code&gt; — 전체를 PM 도구로 프레임하던 &amp;ldquo;Project Management&amp;rdquo; eyebrow 제거. 색상 코드 칩 대신 글머리 기호로 에이전트 이름을 표시 — 칩은 대시보드를 암시했기 때문.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;1be5253&lt;/code&gt; — 상태 레일에서 &amp;ldquo;Background Agents&amp;rdquo; 섹션을 완전히 제거. 결정 2(한 줄 상태, 전체 대시보드 없음)를 위반했다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;d37b4c9&lt;/code&gt; — &lt;strong&gt;컴포저 개편.&lt;/strong&gt; 모델 셀렉터를 입력 바 안으로 옮기고, 파일 첨부 아이콘을 추가하고, 모델 목록을 업데이트했다. 왜 중요한가 — 컴포저는 결정 1의 전체 표면적이다. &amp;ldquo;더 도전적으로&amp;rdquo; 또는 &amp;ldquo;이 두 개 합쳐줘&amp;quot;를 타이핑할 적절한 장소처럼 느껴지지 않는다면, 채팅 우선 원칙은 사고로 실패한다.&lt;/p&gt;
&lt;p&gt;이것들은 기능이 아니었다 — 스펙을 강제하는 &lt;em&gt;삭제&lt;/em&gt;였다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="런타임-흐름-다듬기--목업-아래-뼈대"&gt;런타임 흐름 다듬기 — 목업 아래 뼈대
&lt;/h2&gt;&lt;p&gt;2026-04-07의 세 문서와 한 feat 커밋이 런타임 토대를 깔았다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ecac2e5 docs: add production poc state and routing spec&lt;/code&gt; — 런타임이 네 단계에 걸쳐 어떤 상태를 들고 다닐지 정의.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;7e26c12 docs: add runtime state cleanup spec&lt;/code&gt; — 실행 간 상태가 어떻게 정리될지 정의 (나중에 React 앱이 세션별 상태를 격리해야 할 때 의미를 가짐).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;97df876 feat: refine workspace runtime flow&lt;/code&gt; — 실제 흐름 코드를 다듬음.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;21f0ebc chore: add deployment and design reference files&lt;/code&gt; — 배포 모양과 디자인 참조 폴더를 커밋.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ldquo;배포 참조&amp;quot;는 목업 디렉토리를 가리키는 Vercel buildCommand였다. 그 배포 타깃은 재작성에서도 살아남았다 — 5월에 React 프론트엔드가 출시됐을 때 &lt;code&gt;vercel.json&lt;/code&gt;의 유일한 변경은 &lt;code&gt;outputDirectory: &amp;quot;web/dist&amp;quot;&lt;/code&gt;였다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="커밋-로그"&gt;커밋 로그
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;날짜&lt;/th&gt;
 &lt;th&gt;메시지&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-06&lt;/td&gt;
 &lt;td&gt;Add Diffs creative agent studio mockup&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-06&lt;/td&gt;
 &lt;td&gt;Fix logo path for Vercel deployment&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-06&lt;/td&gt;
 &lt;td&gt;Redesign: Apply Creative Warmth theme (warm white, DM Serif Display, Caveat)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-06&lt;/td&gt;
 &lt;td&gt;Fix logo visibility: apply brightness(0) filter for dark logo on light bg&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-06&lt;/td&gt;
 &lt;td&gt;UI: Remove &amp;lsquo;Project Management&amp;rsquo; eyebrow, show agent names as bullets, add LLM dropdown&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-06&lt;/td&gt;
 &lt;td&gt;Remove Background Agents section from status rail&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-06&lt;/td&gt;
 &lt;td&gt;Composer: move model selector into input bar, add file attach icon, update models&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-07&lt;/td&gt;
 &lt;td&gt;docs: add production poc state and routing spec&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-07&lt;/td&gt;
 &lt;td&gt;docs: add runtime state cleanup spec&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-07&lt;/td&gt;
 &lt;td&gt;feat: refine workspace runtime flow&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-07&lt;/td&gt;
 &lt;td&gt;chore: ignore local workspace artifacts&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-07&lt;/td&gt;
 &lt;td&gt;chore: add deployment and design reference files&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="인사이트"&gt;인사이트
&lt;/h2&gt;&lt;p&gt;4월은 한 조각의 소프트웨어(정적 목업)와 세 조각의 글(&lt;code&gt;interaction-model.md&lt;/code&gt;, 라우팅 스펙, 런타임 클린업 스펙)을 만들었다. 목업은 6주 뒤 삭제된다 — &lt;code&gt;chore: remove legacy mockup/ vanilla-JS SPA&lt;/code&gt; 커밋이 메가푸시에 떨어진다 — 하지만 글의 모든 단락은 여전히 하중을 지탱한다.&lt;/p&gt;
&lt;p&gt;새겨둘 만한 교훈 — &lt;strong&gt;제품 원칙은 구현보다 오래 산다.&lt;/strong&gt; &amp;ldquo;채팅 우선, 한 줄 상태, 게이트 기반 자동 실행&amp;quot;을 — 기능으로도, UI 요구사항으로도 아니라 — &lt;code&gt;결정&lt;/code&gt; 헤딩과 &lt;code&gt;이유&lt;/code&gt; 헤딩이 붙은 결정으로 적어두니, 뒤이은 모든 UI 커밋이 통과해야 할 재판소가 생겼다. 5월에 React 재작성이 시작됐을 때, 그 세 결정은 새 &lt;code&gt;web/&lt;/code&gt; 트리의 원칙으로 그대로 복사됐다. 목업은 일회용이었다 — 원칙은 아니었다.&lt;/p&gt;
&lt;p&gt;다음 — 비트버킷 마이그레이션, 런타임 production-readying, 그리고 한 주말 동안 목업 전체를 대체하게 될 React+Vite+TypeScript 재작성의 시작.&lt;/p&gt;</description></item></channel></rss>