Skip to main content

pumasi-image

Image-generation companion skill for the pumasi plugin family. Use when the user asks for an image, thumbnail, poster, logo, illustration, banner, profile image, cover, icon, or any visual artifact โ€” including casual phrasing like "๊ทธ๋ฆผ ํ•˜๋‚˜ ๋ฝ‘์•„์ค˜", "๋น„์ฃผ์–ผ ๋งŒ๋“ค์–ด์ค˜", and Codex-named requests like "์ฝ”๋ฑ์Šค๋กœ ์ด๋ฏธ์ง€ ๋งŒ๋“ค์–ด์ค˜"; this skill owns every image request. In Codex it maps to the native image generation/editing tool (gpt-image-2), with an optional Grok image_gen backend through the bundled scripts. Korean triggers โ€” "์ด๋ฏธ์ง€ ๋งŒ๋“ค์–ด์ค˜", "๊ทธ๋ฆผ ์ƒ์„ฑํ•ด์ค˜", "์ธ๋„ค์ผ ๋งŒ๋“ค์–ด", "๋กœ๊ณ  ๋งŒ๋“ค์–ด์ค˜", "์ผ๋Ÿฌ์ŠคํŠธ ๊ทธ๋ ค์ค˜", "ํฌ์Šคํ„ฐ ๋งŒ๋“ค์–ด", "๋ฐฐ๋„ˆ ๋งŒ๋“ค์–ด", "์•„์ด์ฝ˜ ๋งŒ๋“ค์–ด", "ํ‘œ์ง€ ์ด๋ฏธ์ง€". English triggers โ€” "create image", "make thumbnail", "make logo", "make illustration", "draw image". DO NOT trigger on code-generation requests like "ํ•จ์ˆ˜/์ปดํฌ๋„ŒํŠธ/ํŽ˜์ด์ง€/๋ฐฐ๋„ˆ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค์–ด์ค˜" โ€” those go to the pumasi skill.

Source facts

Repository
fivetaku/gptaku-plugins-codex
Last source activity
September 8, 2026 at 07:59
Detected SKILL.md language
Korean
Stars
128
Forks
22

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
10 files

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
pumasi-image
description
Image-generation companion skill for the pumasi plugin family. Use when the user asks for an image, thumbnail, poster, logo, illustration, banner, profile image, cover, icon, or any visual artifact โ€” including casual phrasing like "๊ทธ๋ฆผ ํ•˜๋‚˜ ๋ฝ‘์•„์ค˜", "๋น„์ฃผ์–ผ ๋งŒ๋“ค์–ด์ค˜", and Codex-named requests like "์ฝ”๋ฑ์Šค๋กœ ์ด๋ฏธ์ง€ ๋งŒ๋“ค์–ด์ค˜"; this skill owns every image request. In Codex it maps to the native image generation/editing tool (gpt-image-2), with an optional Grok image_gen backend through the bundled scripts. Korean triggers โ€” "์ด๋ฏธ์ง€ ๋งŒ๋“ค์–ด์ค˜", "๊ทธ๋ฆผ ์ƒ์„ฑํ•ด์ค˜", "์ธ๋„ค์ผ ๋งŒ๋“ค์–ด", "๋กœ๊ณ  ๋งŒ๋“ค์–ด์ค˜", "์ผ๋Ÿฌ์ŠคํŠธ ๊ทธ๋ ค์ค˜", "ํฌ์Šคํ„ฐ ๋งŒ๋“ค์–ด", "๋ฐฐ๋„ˆ ๋งŒ๋“ค์–ด", "์•„์ด์ฝ˜ ๋งŒ๋“ค์–ด", "ํ‘œ์ง€ ์ด๋ฏธ์ง€". English triggers โ€” "create image", "make thumbnail", "make logo", "make illustration", "draw image". DO NOT trigger on code-generation requests like "ํ•จ์ˆ˜/์ปดํฌ๋„ŒํŠธ/ํŽ˜์ด์ง€/๋ฐฐ๋„ˆ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค์–ด์ค˜" โ€” those go to the pumasi skill.
# /pumasi-image โ€” Codex ์ด๋ฏธ์ง€ ์ƒ์„ฑ > Codex์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ด๋ฏธ์ง€ ์ƒ์„ฑ/ํŽธ์ง‘ ๋„๊ตฌ(`image_gen`, gpt-image-2)๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ ๋‹ค. > ์ฝ”๋“œ ๋ณ‘๋ ฌ ์™ธ์ฃผ(pumasi)์™€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ ๋…๋ฆฝ ์Šคํ‚ฌ. > **์ด๋ฏธ์ง€ ์š”์ฒญ์€ ์‚ฌ์šฉ์ž๊ฐ€ "์ฝ”๋ฑ์Šค๋กœ"๋ผ๊ณ  ๋งํ•ด๋„ ์ „๋ถ€ ์ด ์Šคํ‚ฌ์ด ๋‹ด๋‹นํ•œ๋‹ค** โ€” pumasi๋กœ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ## ๋จผ์ € ์ฝ์„ ๊ฒƒ - `references/clarification-matrix.md` โ€” ๋ชจ๋“œ๋ณ„ ์˜๋„ ํŒŒ์•… ์งˆ๋ฌธ ๋งคํŠธ๋ฆญ์Šค - `references/keyword-mapping.md` โ€” ๋น„์œจยทํ€„๋ฆฌํ‹ฐ ํ‚ค์›Œ๋“œ ์ž๋™ ๋งคํ•‘ + ์ž์—ฐ์–ด ํžŒํŠธ ๋ณ€ํ™˜ํ‘œ - `references/image-studio-prompt.md` โ€” ๋ชจ๋“œ ๋ถ„๋ฅ˜ + Output Template ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ (์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ ์ง์ „์—๋งŒ Read) --- ## ํ•ต์‹ฌ ์›์น™ 1. **๋ฐฑ์—”๋“œ๋Š” 2์ข… โ€” Codex ๋„ค์ดํ‹ฐ๋ธŒ ์ด๋ฏธ์ง€ ๋„๊ตฌ(๊ธฐ๋ณธ)ยทGrok `image_gen`(์„ ํƒ)** โ€” nanobanana ๋“ฑ ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ ์‚ฌ์šฉ ์•ˆ ํ•จ. ๋ฐฑ์—”๋“œ๋Š” Step 3์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ณ ๋ฅธ๋‹ค(์ž…๋ ฅ์— ์ง€๋ช…์ด ์žˆ์œผ๋ฉด ์Šคํ‚ต). Grok์„ ์“ธ ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ `scripts/imagen.sh`(`--backend grok`)๋ฅผ ๊ฒฝ์œ ํ•œ๋‹ค(๋น„์œจ ๊ฐ•์ œยทํ™•์žฅ์ž ์ •ํ•ฉยท์‹คํŒจ ์‚ฌ์œ  ํ‘œ๋ฉดํ™”๊ฐ€ ๊ทธ ์•ˆ์— ์žˆ๋‹ค). `grok`์„ ์ง์ ‘ ๋ถ€๋ฅด์ง€ ๋ง ๊ฒƒ. 2. **API ํ‚ค๋ฅผ ๊บผ๋‚ด ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค** โ€” ๋ณผํŠธยทํ™˜๊ฒฝ๋ณ€์ˆ˜ยท์„ค์ • ํŒŒ์ผ์—์„œ OpenAI(๋˜๋Š” xAI) API ํ‚ค๋ฅผ ์ฝ์–ด `api.openai.com` ๋“ฑ ์ด๋ฏธ์ง€ API ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ง์ ‘ ๋ถ€๋ฅด๋Š” ํ–‰๋™์€ **๊ธˆ์ง€**. ์ด๋ฏธ์ง€๋Š” ์˜ค์ง (a) Codex ๋„ค์ดํ‹ฐ๋ธŒ ์ด๋ฏธ์ง€ ๋„๊ตฌ ๋˜๋Š” (b) `scripts/`์˜ codex/grok ๋ฐฑ์—”๋“œ๋กœ๋งŒ ๋งŒ๋“ ๋‹ค. ๊ตฌ๋… ์„ธ์…˜์ด ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ์ด ์Šคํ‚ฌ์€ ์–ด๋–ค ํ‚ค๋„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. 3. **image-studio ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋‚ด๋ฉดํ™”** โ€” ๋ชจ๋“œ ๋ถ„๋ฅ˜ + Output Template ์ž‘์„ฑ 4. **ํ›„์ฒ˜๋ฆฌ ์ ˆ๋Œ€ ๊ธˆ์ง€** โ€” sips/ImageMagick/์žฌ์ธ์ฝ”๋”ฉ ๊ธˆ์ง€, ์ƒ์„ฑ ์›๋ณธ ๊ทธ๋Œ€๋กœ ์ €์žฅ(SHA1 ์œ ์ง€) 5. **์ €์žฅ ๊ฒฝ๋กœ ๊ณ ์ •** โ€” `{BASE_DIR}/images/{YYYY-MM-DD}/{slug}-{seq}.png` 6. **์ตœ๋Œ€ 5๊ฐœ ์งˆ๋ฌธ** โ€” ๊ธฐ์ˆ  2๊ฐœ + ์˜๋„ 3๊ฐœ, ์กฐ๊ฑด๋ถ€ ์Šคํ‚ต 7. **ํ…์ŠคํŠธ๋Š” ์ด๋ฏธ์ง€ ๋„๊ตฌ๊ฐ€ ์ง์ ‘ ๋ Œ๋”๋งํ•œ๋‹ค** โ€” ์ธ๋„ค์ผยทํฌ์Šคํ„ฐยท๋กœ๊ณ ์˜ ํ•œ๊ธ€/์˜๋ฌธ ์นดํ”ผ๋Š” ํ”„๋กฌํ”„ํŠธ์˜ Text Integration ์„น์…˜์— ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด ๊ทธ๋Œ€๋กœ ๋ช…์‹œ. **HTML/CSS ๋ถ„๋ฆฌยทํ›„ํ•ฉ์„ฑยทํ…์ŠคํŠธ ๋ ˆ์ด์–ด ๋ถ„ํ•  ์ ˆ๋Œ€ ๊ธˆ์ง€.** ๊ตฌ์„ธ๋Œ€ diffusion(SD/Midjourney) ๊ฐ€์ •์œผ๋กœ "ํ…์ŠคํŠธ ๋ชป ๊ทธ๋ฆผ"์ด๋ผ๊ณ  ํšŒํ”ผํ•˜์ง€ ๋ง ๊ฒƒ โ€” ๋‹ค์Œ ยง์˜ capability snapshot ์ฐธ์กฐ. --- ## gpt-image-2 capability snapshot (as of 2026-05) > ๋ชฉ์ : ๊ตฌ์„ธ๋Œ€ diffusion ์ง๊ฐ์œผ๋กœ ํšŒํ”ผ ํ–‰๋™(HTML/CSS ๋ถ„๋ฆฌ, ํ…์ŠคํŠธ ๋นผ๊ณ  ํ•ฉ์„ฑ, ์žฌ์‹œ๋„ ํšŒํ”ผ)์„ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ capability๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ•๋Š”๋‹ค. ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ ์‹œ `as of` ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ๊ฐฑ์‹ . ### CAN (์ž์‹  ์žˆ๊ฒŒ ์‹œ๋„) - **ํ•œ๊ธ€/์˜๋ฌธ ํ—ค๋“œ๋ผ์ธ ํ…์ŠคํŠธ** โ€” 16pt ์ด์ƒ ๊ตต์€ sans-serif/serif, ์ •ํ™•ํ•œ ์ž๋ชจ/ํš - **๋‹ค๊ตญ์–ด ํ˜ผ์šฉ** โ€” ํ•œ+์˜ ๋™์‹œ ๋…ธ์ถœ(์˜ˆ: "๊ด‘์•ˆ๋Œ€๊ต BEST 5 / Best Spots") - **๋กœ๊ณ  ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ** โ€” ์›Œ๋“œ๋งˆํฌ, ๋ ˆํ„ฐ๋งˆํฌ, ํ•œ์ž/ํ•œ๊ธ€ ๋””์ž์ธ ํƒ€์ดํฌ - **์ˆซ์ž/๋‚ ์งœ ๋‹จ์ˆœ ํ‘œ๊ธฐ** โ€” "2026", "BEST 5", "Vol.3" ์ •๋„๋Š” ์•ˆ์ •์  - **๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ** โ€” ํ—ค๋“œ๋ผ์ธ + ์„œ๋ธŒ์นดํ”ผ + ๊ฐ€๊ฒฉํ‘œ + CTA ๋ฒ„ํŠผ ํ•œ ์ปท์— - **ํ‘œยทUI ๋ชฉ์—…ยท์ฐจํŠธ** โ€” ํ–‰/์—ด ์ •๋ ฌ, ๋ผ๋ฒจ, ๋ฒ”๋ก€, ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ํ…์ŠคํŠธ - **์†/์–ผ๊ตด/ํฌ์ฆˆ ๋””ํ…Œ์ผ** โ€” ์†๊ฐ€๋ฝ ๊ฐœ์ˆ˜, ํ‘œ์ •, ์‹œ์„  ๋ฐฉํ–ฅ ์ •ํ™• - **์‚ฌ์ง„ ์‚ฌ์‹ค์„ฑ** โ€” DSLR ๋ฃฉ, ์กฐ๋ช… ์ผ๊ด€์„ฑ, ๊ทธ๋ฆผ์ž/๋ฐ˜์‚ฌ ๋ฌผ๋ฆฌ ### WEAK (์กฐ์‹ฌํ•ด์„œ ์‹œ๋„, ๊ฒฐ๊ณผ ๋ณด๊ณ  ํŒ๋‹จ) - **๋งค์šฐ ์ž‘์€ ๊ธ€์”จ** โ€” 8pt ์ดํ•˜ ๋ณธ๋ฌธ์€ ๊นจ์งˆ ํ™•๋ฅ  ๋†’์Œ โ†’ ํ—ค๋“œ๋ผ์ธ ์œ„์ฃผ๋กœ ์„ค๊ณ„ - **๊ธด ๋ณธ๋ฌธ ๋‹จ๋ฝ** โ€” ํ•œ ๋ธ”๋ก 50์ž ์ด์ƒ์€ ์ค‘๊ฐ„์— ์ž๋ชจ ํ”๋“ค๋ฆผ ๊ฐ€๋Šฅ - **์ •ํ™•์„ฑ์ด ์ค‘์š”ํ•œ ์ˆซ์ž** โ€” ๊ฐ€๊ฒฉ/๋‚ ์งœ/์ „ํ™”๋ฒˆํ˜ธ๋Š” 1-2๊ธ€์ž ๋ณ€ํ˜• ์œ„ํ—˜ (์ƒ์„ฑ ํ›„ ๊ฒ€์ˆ˜ ํ•„์ˆ˜) - **์†๊ธ€์”จ/์บ˜๋ฆฌ๊ทธ๋ž˜ํ”ผ ํ•œ๊ธ€** โ€” ์ž๋ชจ ๊ฒฐํ•ฉ ํ”๋“ค๋ฆผ ์žฆ์Œ, ์ •์ž์ฒด ํฐํŠธ๊ฐ€ ์•ˆ์ „ ### CAN'T ๊ฐ€์ • ๊ธˆ์ง€ (๊ตฌ์„ธ๋Œ€ diffusion ์ง๊ฐ ์ฐจ๋‹จ) - โŒ "ํ•œ๊ธ€์€ ์–ด์ฐจํ”ผ ๊นจ์ง€๋‹ˆ๊นŒ ์˜๋ฌธ์œผ๋กœ๋งŒ ๋งŒ๋“ค์ž" โ€” gpt-image-2๋Š” ํ•œ๊ธ€ OK - โŒ "ํ…์ŠคํŠธ๋Š” ๋นผ๊ณ  ๋งŒ๋“  ํ›„ HTML/CSS๋กœ ํ•ฉ์„ฑํ•˜์ž" โ€” 1์ฐจ ์ง์ ‘ ๋ Œ๋” ๊ธˆ์ง€ ์‚ฌ์œ  ์•„๋‹˜ - โŒ "์ธ๋„ค์ผ์ด๋‹ˆ๊นŒ ํ…์ŠคํŠธ ๋ถ€๋ถ„๋งŒ ๋”ฐ๋กœ ๋””์ž์ธํ•˜์ž" โ€” ํ•œ ์ปท์— ํ†ตํ•ฉ ๋ Œ๋”๊ฐ€ ์ •์„ - โŒ "๋กœ๊ณ ์— ํ•œ์ž/ํ•œ๊ธ€ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ ๋จ" โ€” ์›Œ๋“œ๋งˆํฌ ์ง์ ‘ ๋ Œ๋” ๊ฐ€๋Šฅ ### Grok image_gen ์ฐจ์ด (์„ ํƒ ๋ฐฑ์—”๋“œ) - ๋น„์œจ์€ **9:16 / 16:9 / 1:1๋งŒ** ์ง€์› โ€” ๊ทธ ์™ธ๋ฅผ ์ฃผ๋ฉด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ 1:1๋กœ ๊ฐ•์ œํ•˜๊ณ  ๊ฒฝ๊ณ ํ•œ๋‹ค - ํ€„๋ฆฌํ‹ฐ ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์Œ (ํ€„๋ฆฌํ‹ฐ ์งˆ๋ฌธ ์Šคํ‚ต) - ์‚ฐ์ถœ๋ฌผ์ด ๋ณดํ†ต **JPEG** โ€” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํƒ€๊นƒ ํ™•์žฅ์ž๋ฅผ ์†Œ์Šค์— ๋งž์ถฐ ์ž๋™ ์กฐ์ •ํ•˜๊ณ  ์ตœ์ข… ๊ฒฝ๋กœ๋ฅผ `path:`๋กœ ๋ณด๊ณ ํ•œ๋‹ค - ํ…์ŠคํŠธ ๋ Œ๋” ํ’ˆ์งˆ์€ gpt-image-2 ๋Œ€๋น„ ๋ฏธ๊ฒ€์ฆ. SuperGrok ๊ตฌ๋…์ด๋ฉด ํ•œ๊ณ„๋น„์šฉ 0 ### ์šด์˜ ๋ฃฐ 1. **1์ฐจ๋Š” ๋ฌด์กฐ๊ฑด ์ด๋ฏธ์ง€ ๋„๊ตฌ๋กœ ์ง์ ‘ ๋ Œ๋”** โ€” ํ…์ŠคํŠธ ํฌํ•จ ์—ฌ๋ถ€ ๋ฌด๊ด€ 2. **๊ฒฐ๊ณผ ๊ฒ€์ˆ˜** โ€” ์ด๋ฏธ์ง€ ํ‘œ์‹œ ํ›„ ํ…์ŠคํŠธ ์ •ํ™•๋„ ์‚ฌ์šฉ์ž ํ™•์ธ (Step 7 ๋ชจ๋“œ ์ฐธ์กฐ) 3. **์žฌ์‹œ๋„ ์šฐ์„ ** โ€” ์ฒซ ๊ฒฐ๊ณผ๊ฐ€ ๊นจ์กŒ์œผ๋ฉด ํ”„๋กฌํ”„ํŠธ ๋ณด๊ฐ•(ํฐํŠธ ๋ช…์‹œ, ํฌ๊ธฐ ๋ช…์‹œ)ํ•ด์„œ 1-2ํšŒ ์žฌ์ƒ์„ฑ 4. **ํ•ฉ์„ฑ ์˜ต์…˜์€ ์‚ฌ์šฉ์ž ๋ช…์‹œ ๊ฑฐ๋ถ€ ํ›„** โ€” "์ง์ ‘ ๋ Œ๋” ๊ฒฐ๊ณผ ๋งˆ์Œ์— ์•ˆ ๋“ค์–ด, ํ•ฉ์„ฑ์œผ๋กœ ๊ฐ€์ž"๋Š” ์‚ฌ์šฉ์ž ๋ฐœํ™”๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ ํ›„ํ•ฉ์„ฑ ์›Œํฌํ”Œ๋กœ์šฐ ์ œ์•ˆ --- ## ์›Œํฌํ”Œ๋กœ์šฐ ### Step 0: feature flag ํ™•์ธ (scripts ๊ฒฝ๋กœ๋ฅผ ์“ธ ๋•Œ๋งŒ) ๋„ค์ดํ‹ฐ๋ธŒ ๋„๊ตฌ๋ฅผ ์ง์ ‘ ์“ฐ๋ฉด ์ด ๋‹จ๊ณ„๋Š” ์—†๋‹ค. `scripts/imagen.sh` ์œ„์ž„ ๊ฒฝ๋กœ๋ฅผ ์“ธ ๋•Œ๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ `codex features list`๋กœ `image_generation` ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™•์ธํ•˜๊ณ  ๊บผ์ ธ ์žˆ์œผ๋ฉด `codex features enable image_generation`์œผ๋กœ ์ผ ๋‹ค โ€” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์กฐ์šฉํžˆ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ ๋งŒ ์งง๊ฒŒ ์•Œ๋ฆฐ๋‹ค. ### Step 1: ๋ชจ๋“œ ์ž๋™ ๊ฐ์ง€ ์‚ฌ์šฉ์ž ์š”์ฒญ์—์„œ 7๊ฐ€์ง€ ๋ชจ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค: | ๋ชจ๋“œ | ๊ฐ์ง€ ํ‚ค์›Œ๋“œ | |------|-----------| | MODE_A_PORTRAIT | "ํ”„๋กœํ•„", "์ธ๋ฌผ", "์–ผ๊ตด", "์ดˆ์ƒ" | | MODE_B_LANDSCAPE | "ํ’๊ฒฝ", "๋ฐฐ๊ฒฝ", "์ž์—ฐ", "๋„์‹œ", "๋ฐ”๋‹ค", "์‚ฐ" | | MODE_C_OBJECT | "์ œํ’ˆ", "๋ฌผ๊ฑด", "์•„์ดํ…œ", "์ƒํ’ˆ" | | MODE_D_ILLUSTRATION | "์ผ๋Ÿฌ์ŠคํŠธ", "๊ทธ๋ฆผ", "์•„ํŠธ", "๋“œ๋กœ์ž‰" | | MODE_E_THUMBNAIL | "์ธ๋„ค์ผ", "์ปค๋ฒ„", "๋Œ€ํ‘œ์ด๋ฏธ์ง€", "์œ ํŠœ๋ธŒ" | | MODE_F_LOGO | "๋กœ๊ณ ", "๋ธŒ๋žœ๋“œ", "์‹ฌ๋ณผ", "์•„์ด์ฝ˜" | | MODE_G_CONCEPTUAL | "์ปจ์…‰ํŠธ", "์ถ”์ƒ", "์•„์ด๋””์–ด", "์ƒ์ง•" | ๋ชจ๋“œ ํŒ๋‹จ ๋ถˆํ™•์‹ค ์‹œ Step 3์˜ ์งˆ๋ฌธ์— "๋ชจ๋“œ ์„ ํƒ" 1๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ### Step 2: ํ‚ค์›Œ๋“œ ์ž๋™ ๋งคํ•‘ โ†’ ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”์ถœ `references/keyword-mapping.md`๋ฅผ Readํ•˜์—ฌ ๋น„์œจยทํ€„๋ฆฌํ‹ฐ ์ž์—ฐ์–ด ํžŒํŠธ๋ฅผ ์ถ”์ถœํ•œ๋‹ค. - ๋น„์œจ ํ‚ค์›Œ๋“œ๊ฐ€ ์ž…๋ ฅ์— ์žˆ์œผ๋ฉด โ†’ ๋น„์œจ ์งˆ๋ฌธ ์Šคํ‚ต - ํ€„๋ฆฌํ‹ฐ ํ‚ค์›Œ๋“œ๊ฐ€ ์ž…๋ ฅ์— ์žˆ์œผ๋ฉด โ†’ ํ€„๋ฆฌํ‹ฐ ์งˆ๋ฌธ ์Šคํ‚ต ### Step 3: ์‚ฌ์šฉ์ž ์งˆ๋ฌธ (ยงA ๋ฒˆํ˜ธํ˜• ๋ธ”๋ก, ์ตœ๋Œ€ 5๊ฐœ) Codex CLI์—๋Š” ๊ฐ๊ด€์‹ ์นด๋“œํ˜• ์งˆ๋ฌธ UI๊ฐ€ **์—†๋‹ค.** ๊ฒฐ์ •์ด ๊ผญ ํ•„์š”ํ•˜๋ฉด `$PLUGIN_ROOT/shared/questioning-policy.md ยงA`์˜ **์ฑ„ํŒ… ๋ฒˆํ˜ธํ˜• ์„ ํƒ์ง€ ๋ธ”๋ก**์œผ๋กœ ๋ฌป๋Š”๋‹ค. `references/clarification-matrix.md`๋ฅผ Readํ•˜์—ฌ ๋ชจ๋“œ๋ณ„ ์˜๋„ ํŒŒ์•… ์นดํ…Œ๊ณ ๋ฆฌ 3๊ฐœ๋ฅผ ํ™•์ •ํ•œ๋‹ค. **์งˆ๋ฌธ ์ˆœ์„œ** (ํ•œ ํ„ด ์ตœ๋Œ€ 4๋ฌธํ•ญ โ€” ์ดˆ๊ณผ๋ถ„์€ ์šฐ์„ ์ˆœ์œ„ ๋‚ฎ์€ ์˜๋„ ์งˆ๋ฌธ๋ถ€ํ„ฐ ์ž˜๋ผ๋‚ธ๋‹ค): 0. **๋ฐฑ์—”๋“œ** (์ž…๋ ฅ์— "๊ทธ๋ก์œผ๋กœ"/"grok"/"์ฝ”๋ฑ์Šค๋กœ"/"codex" ์ง€๋ช…์ด ์žˆ์œผ๋ฉด ์Šคํ‚ต) ```text ์งˆ๋ฌธ: ์–ด๋–ค ๋ฐฑ์—”๋“œ๋กœ ์ƒ์„ฑํ• ๊นŒ์š”? 1. Codex gpt-image-2 (๊ถŒ์žฅ) โ€” ์ž„์˜ ๋น„์œจ, ํ•œ๊ธ€/์˜๋ฌธ ํ…์ŠคํŠธ ๋ Œ๋” ๊ฐ•ํ•จ 2. Grok image_gen โ€” SuperGrok ๊ตฌ๋… ์‹œ ํ•œ๊ณ„๋น„์šฉ 0. ๋‹จ ๋น„์œจ 9:16/16:9/1:1๋งŒ, ํ…์ŠคํŠธ ๋ Œ๋” ๋ฏธ๊ฒ€์ฆ 3. ๋ฌธ์žฅ์œผ๋กœ ์ง์ ‘ ์•Œ๋ ค์ฃผ๊ธฐ ``` 1. ๋น„์œจ (Step 2์—์„œ ํ™•์ •๋์œผ๋ฉด ์Šคํ‚ต. **Grok ์„ ํƒ ์‹œ ์„ ํƒ์ง€๋ฅผ 9:16/16:9/1:1๋กœ ์ œํ•œ**) 2. ํ€„๋ฆฌํ‹ฐ (Step 2์—์„œ ํ™•์ •๋์œผ๋ฉด ์Šคํ‚ต. Grok์—๋Š” ํ€„๋ฆฌํ‹ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ Grok ์„ ํƒ ์‹œ ์Šคํ‚ต) 3~5. ์˜๋„ ํŒŒ์•… 3๊ฐœ (๋ชจ๋“œ ๋งคํŠธ๋ฆญ์Šค ๊ธฐ๋ฐ˜) **์งˆ๋ฌธ ์›์น™**: - ยง1 + ยง2c: ์ด๋ฏธ ์ž…๋ ฅ์—์„œ ํ™•์ •๋œ ์ฐจ์›์€ **๋ฌป์ง€ ์•Š๋Š”๋‹ค**. ์š”์ฒญ์ด ๊ตฌ์ฒด์ ์ด๋ฉด ์งˆ๋ฌธ ์—†์ด ๋ฐ”๋กœ ์ƒ์„ฑํ•œ๋‹ค(๊ณผ์ž‰ ์งˆ๋ฌธ = ๋งˆ์ฐฐ ์‹คํŒจ). - ๋ฌผ์„ ๋•Œ๋Š” ยงA ๋ฒˆํ˜ธํ˜• ๋ธ”๋ก์œผ๋กœ โ€” ๊ฐ ์Šฌ๋กฏ๋‹น 5๊ฐœ ์ด์ƒ ์„ ํƒ์ง€, ๊ทธ์ค‘ 1~2๊ฐœ๋Š” ์ฐฝ์˜์  ๋Œ€์•ˆ(โ˜…), ๋งˆ์ง€๋ง‰์€ "๋ฌธ์žฅ์œผ๋กœ ์ง์ ‘ ์•Œ๋ ค์ฃผ๊ธฐ"(Other ๋Œ€์ฒด). - "์ž๋™ ์ถ”์ฒœ(AI ํŒ๋‹จ)" ์•ˆ์ „๋ง ์„ ํƒ์ง€๋ฅผ ํ•ญ์ƒ ํฌํ•จํ•˜๊ณ , "๋ชจ๋ฅด๋ฉด 1๋ฒˆ(์ž๋™ ์ถ”์ฒœ)์œผ๋กœ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค"๋กœ ์•ˆ๋‚ดํ•œ๋‹ค. - ์—ฌ๋Ÿฌ ์Šฌ๋กฏ์„ ํ•œ ๋ฒˆ์— ๋ฌผ์„ ๋•Œ๋Š” ๊ฐ ์งˆ๋ฌธ ๋ธ”๋ก์„ ์ด์–ด์„œ ์ถœ๋ ฅํ•˜๊ณ  "์—ฌ๋Ÿฌ ๊ฐœ๋ฉด 1,3์ฒ˜๋Ÿผ ์ ์–ด์ฃผ์„ธ์š”"๋กœ ์•ˆ๋‚ด. ์นด๋“œ UI๋ฅผ ํ‰๋‚ด๋‚ด์ง€ ๋ง ๊ฒƒ. ยงA ๋ธ”๋ก ์˜ˆ์‹œ (๋‹จ์ผ ์Šฌ๋กฏ): ```text ์งˆ๋ฌธ: ์–ด๋–ค ๋ถ„์œ„๊ธฐ๋กœ ๊ฐˆ๊นŒ์š”? 1. ์ž๋™ ์ถ”์ฒœ โ€” ๋‚ด์šฉ์— ๋งž๊ฒŒ ํŒ๋‹จ. ๊ฒฐ์ • ํ”ผ๋กœ ์—†์ด ์ง„ํ–‰ 2. ๋‹คํฌ ์‹œ๋„ค๋งˆํ‹ฑ โ€” ์˜ํ™”์ , ๊นŠ์€ ๊ทธ๋ฆผ์ž 3. ๋”ฐ๋œปํ•จ โ€” ์นœ๊ทผ, ํ–‡์‚ด, ํŒŒ์Šคํ…” 4. ์กฐ์šฉํ•œ ์œ„๋กœ๊ฐ (โ˜…) โ€” ์ž”์ž”ํ•จ, ์—ฌ์šด 5. ๋ฌธ์žฅ์œผ๋กœ ์ง์ ‘ ์•Œ๋ ค์ฃผ๊ธฐ ``` ### Step 4: image-studio ๋‚ด๋ฉดํ™” + Output Template ์ž‘์„ฑ `references/image-studio-prompt.md`๋ฅผ Readํ•˜์—ฌ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋‚ด๋ฉดํ™”ํ•œ๋‹ค. ๋‚ด๋ฉดํ™” ํ›„: 1. Normalization JSON ๋‚ด๋ถ€์ ์œผ๋กœ ์ž‘์„ฑ (๋…ธ์ถœํ•˜์ง€ ์•Š์Œ) 2. ์„ ํƒ๋œ ๋ชจ๋“œ์˜ Output Template์„ 200~500 ๋‹จ์–ด ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ๋กœ ์ž‘์„ฑ 3. ์‚ฌ์šฉ์ž ์„ ํƒ ๊ฐ’(๋น„์œจยทํ€„๋ฆฌํ‹ฐยท์˜๋„ 3๊ฐœ)์„ Technical Specifications / Anti-Patterns ์„น์…˜์— ๋ฐ˜์˜ 4. ๋น„์œจยทํ€„๋ฆฌํ‹ฐ ์ž์—ฐ์–ด ํžŒํŠธ๋ฅผ Technical Specifications์— ์‚ฝ์ž… (keyword-mapping.md ์ฐธ์กฐ) 5. **Format / Medium Guard** โ€” ๋‹จ์ผ ์‹ฌ๋ณผ ์ปจ์…‰(๋‹๋ณด๊ธฐยท๋กœ์ผ“ยท๋ฐฉํŒจ ๋“ฑ)์„ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ณ /์•„์ด์ฝ˜์„ ์š”์ฒญํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ์•ฑ์•„์ด์ฝ˜ยท๊ธ€๋ž˜์Šค ๋ฐฐ์ง€๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. hero/๋ฐฐ๋„ˆ/์ปค๋ฒ„/์”ฌ์€ ํ”„๋ ˆ์ž„์„ ๊ฐ€๋“ ์ฑ„์šฐ๋Š” full-bleed ์žฅ๋ฉด์œผ๋กœ ๋ฒˆ์—ญํ•œ๋‹ค (image-studio-prompt.md์˜ ๊ฐ€๋“œ ์ฐธ์กฐ) ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋‹ค์Œ ๊ฒฝ๋กœ์— ์ €์žฅ (์—†์œผ๋ฉด `mkdir -p`): ``` {BASE_DIR}/.imagen/prompt-{timestamp}.md ``` ### Step 4-bis (์„ ํƒ, feature flag ๋’ค): ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ์„ codex ์›Œ์ปค์— ์œ„์ž„ ํ™˜๊ฒฝ๋ณ€์ˆ˜ `PUMASI_IMAGE_DELEGATE_PROMPT=1` ์„ค์ • ์‹œ: 1. Step 4์˜ image-studio-prompt.md Read + ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ ๋‹จ๊ณ„ **์Šคํ‚ต** 2. Step 6์—์„œ `scripts/imagen-full.sh` ํ˜ธ์ถœ โ€” ์˜๋„ ํ•œ ์ค„ + mode + aspect + quality + ํƒ€๊นƒ ๊ฒฝ๋กœ(+ ์„ ํƒ ref ์ด๋ฏธ์ง€)๋งŒ ์ „๋‹ฌ 3. ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ์€ codex ์›Œ์ปค ์ธก์—์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  prompt.md + manifest.json + codex.log๋ฅผ `{ํƒ€๊นƒ๋””๋ ‰ํ† ๋ฆฌ}/.imagen-full/`์— ์ €์žฅ (refine ๋ณต๊ตฌ์šฉ) 4. **์ž๋™ fallback**: imagen-full.sh๊ฐ€ exit โ‰  0์ด๋ฉด ์ฆ‰์‹œ Step 4(์ง์ ‘ ์ž‘์„ฑ) + ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋กœ ํด๋ฐฑ. ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” "์œ„์ž„ ๊ฒฝ๋กœ ์‹คํŒจ โ†’ ์ง์ ‘ ์ž‘์„ฑ ๊ฒฝ๋กœ๋กœ ์ „ํ™˜" ํ•œ ์ค„ ์•ˆ๋‚ด. codex ๋ฐฑ์—”๋“œ ์ „์šฉ(Grok์—๋Š” ์—†์Œ). ### Step 5: ์ €์žฅ ๊ฒฝ๋กœ ๊ณ„์‚ฐ **๊ธฐ์ค€ ๋””๋ ‰ํ† ๋ฆฌ (ํ•˜๋“œ์ฝ”๋”ฉ ๊ธˆ์ง€, ๋™์  ๊ณ„์‚ฐ)**: ```bash BASE_DIR=$(git rev-parse --show-toplevel 2>/dev/null || pwd) DATE=$(date +%Y-%m-%d) TARGET_DIR="${BASE_DIR}/images/${DATE}" mkdir -p "$TARGET_DIR" SLUG="busan-gwangan-bridge-night" # ์š”์ฒญ์—์„œ ๊ณ„์‚ฐ (ํ•ต์‹ฌ ๋ช…์‚ฌ 1~2๊ฐœ โ†’ ์˜๋ฌธ kebab-case) SEQ=1 TARGET_PATH="${TARGET_DIR}/${SLUG}-$(printf '%02d' $SEQ).png" while [[ -e "$TARGET_PATH" ]]; do SEQ=$((SEQ + 1)) TARGET_PATH="${TARGET_DIR}/${SLUG}-$(printf '%02d' $SEQ).png" done echo "$TARGET_PATH" ``` **์™œ git root ๊ธฐ์ค€์ธ๊ฐ€**: ์„ธ์…˜์˜ cwd๊ฐ€ ํ•ญ์ƒ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ๋Š” ์•„๋‹ˆ๋‹ค. ๋‹จ์ˆœ ์ƒ๋Œ€๊ฒฝ๋กœ๋Š” ์—‰๋šฑํ•œ ๊ณณ์— ์ €์žฅ๋  ์œ„ํ—˜์ด ์žˆ์–ด, ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ `images/` ํ•˜์œ„๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‘”๋‹ค. git ์ €์žฅ์†Œ ๋ฐ–์ด๋ฉด `pwd` ๊ธฐ์ค€. slug ์˜ˆ: "๋ถ€์‚ฐ ๊ด‘์•ˆ๋Œ€๊ต ์•ผ๊ฒฝ" โ†’ `busan-gwangan-bridge-night`, "AI ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๋กœ๊ณ " โ†’ `ai-marketplace-logo`. ํ™•์žฅ์ž๋Š” `.png`. Grok ๋ฐฑ์—”๋“œ๋Š” ์‚ฐ์ถœ๋ฌผ์ด ๋ณดํ†ต JPEG๋ผ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™•์žฅ์ž๋ฅผ ๋งž์ถฐ ์กฐ์ •ํ•˜๋ฏ€๋กœ **๊ฒฐ๊ณผ ๋ณด๊ณ ๋Š” ์Šคํฌ๋ฆฝํŠธ ์ถœ๋ ฅ์˜ `path:`๋ฅผ ๊ธฐ์ค€**์œผ๋กœ ํ•œ๋‹ค. ### Step 6: ์ด๋ฏธ์ง€ ์ƒ์„ฑ ํ˜ธ์ถœ **๊ธฐ๋ณธ ๊ฒฝ๋กœ โ€” Codex ๋„ค์ดํ‹ฐ๋ธŒ ์ด๋ฏธ์ง€ ๋„๊ตฌ๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•œ๋‹ค.** - ๋ฐฑ๊ทธ๋ผ์šด๋“œ CLI ์„ธ์…˜์„ ๋„์šฐ์ง€ ์•Š๋Š”๋‹ค. - Step 4์˜ ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ + Step 5์˜ ํƒ€๊นƒ ๊ฒฝ๋กœ๋ฅผ ๋„๊ตฌ์— ์ „๋‹ฌํ•œ๋‹ค. - ํ”„๋กฌํ”„ํŠธ ๋์— ํ›„์ฒ˜๋ฆฌ ๊ธˆ์ง€ ๊ฐ€๋“œ(์›๋ณธ ์œ ์ง€, ์žฌ์ธ์ฝ”๋”ฉ ๊ธˆ์ง€)๋ฅผ ๋ช…์‹œํ•œ๋‹ค. - ํ…์ŠคํŠธ๊ฐ€ ๊นจ์กŒ์œผ๋ฉด ํ•ฉ์„ฑํ•˜์ง€ ๋ง๊ณ  ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ณด๊ฐ•ํ•ด 1~2ํšŒ ์žฌ์ƒ์„ฑํ•œ๋‹ค(์šด์˜ ๋ฃฐ 3). - ๋„๊ตฌ๊ฐ€ ๋Œ๋ ค์ค€ ์ด๋ฏธ์ง€๋ฅผ **์ด๋ฒˆ ํ˜ธ์ถœ ์‚ฐ์ถœ๋ฌผ๋งŒ** Step 5์˜ ํƒ€๊นƒ ๊ฒฝ๋กœ์— ์ €์žฅํ•œ๋‹ค. ์ƒ์„ฑ์ด 0์žฅ์ด๋ฉด ๊ฑฐ์ง“ ์„ฑ๊ณต์„ ๋ณด๊ณ ํ•˜์ง€ ๋ง๊ณ  ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. **์Šคํƒ€์ผ ์•ต์ปค(๋ ˆํผ๋Ÿฐ์Šค)**: ์—ฌ๋Ÿฌ ์žฅ์„ ๊ฐ™์€ ์Šคํƒ€์ผ๋กœ ๋ฝ‘์„ ๋•Œ๋Š” 1์žฅ์„ ๋จผ์ € ์ƒ์„ฑยท์Šน์ธ๋ฐ›๊ณ , ๋‚˜๋จธ์ง€๋ฅผ ์ „๋ถ€ ๊ทธ ํŒŒ์ผ์„ ๋ ˆํผ๋Ÿฐ์Šค๋กœ ๋ฌผ๋ ค ํŽธ์ง‘ ๋„๊ตฌ๋กœ ์ƒ์„ฑํ•œ๋‹ค(์•ต์ปค ์šฐ์„  ํŒจํ„ด). ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ํ”„๋กฌํ”„ํŠธ์—์„œ ์Šคํƒ€์ผ ์„œ์ˆ ์„ ๊ฑท์–ด๋‚ด๊ณ  "์ฒจ๋ถ€ ์ด๋ฏธ์ง€์˜ ์Šคํƒ€์ผยท์กฐ๋ช…ยท์ƒ‰๊ฐ ์œ ์ง€" + ํ”ผ์‚ฌ์ฒดยท๊ตฌ๋„ ๋ธํƒ€๋งŒ ์“ด๋‹ค โ€” ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์ด๋ฏธ ๋ฌถ์€ ๊ฒƒ์„ ๊ธด ์‚ฐ๋ฌธ์œผ๋กœ ์žฌ์„œ์ˆ ํ•˜๋ฉด ๋‘˜์ด ์‹ธ์šด๋‹ค. ์Šคํƒ€์ผ ์ผ๊ด€์„ฑ ์ˆ˜๋‹จ ์„œ์—ด(1์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์„œ์น˜ 2026-08-22): ๋ ˆํผ๋Ÿฐ์Šค ์ด๋ฏธ์ง€ โ‰ซ ํ…์ŠคํŠธ ์žฌ์‚ฌ์šฉ โ‰ซ seed(์–ด๋А ๋ฒค๋”๋„ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋‹ฌ๋ผ์ง„ ๋’ค์˜ ์žฌํ˜„์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ). #### ์œ„์ž„ ๊ฒฝ๋กœ (์„ ํƒ) โ€” scripts ์‚ฌ์šฉ ๋ณ„๋„ `codex exec` ์›Œ์ปค์— ์ƒ์„ฑ์„ ์œ„์ž„ํ•˜๊ฑฐ๋‚˜(ํ˜ธ์ŠคํŠธ ์ปจํ…์ŠคํŠธ ์ ˆ์•ฝ), **Grok ๋ฐฑ์—”๋“œ**๋ฅผ ์“ฐ๊ฑฐ๋‚˜, ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ๊นŒ์ง€ ์œ„์ž„ํ•˜๋ ค๋ฉด `scripts/`์˜ ๊ฒฐ์ •์  ๋ž˜ํผ๋ฅผ ์“ด๋‹ค: ```bash # ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ์ž‘์„ฑ, ์ƒ์„ฑ๋งŒ ์œ„์ž„ (3๋ฒˆ์งธ ์ธ์ž ๋น„์œจ์€ ์‹ค์ธก ๋น„๊ต ๊ฒฝ๊ณ ์šฉ, --ref ๋ฐ˜๋ณต ๊ฐ€๋Šฅ) bash $PLUGIN_ROOT/skills/pumasi-image/scripts/imagen.sh \ "{prompt_file_path}" "{target_image_path}" "{aspect e.g. 16:9 โ€” ์ƒ๋žต ๊ฐ€๋Šฅ}" \ --backend "{codex|grok โ€” Step 3 ์„ ํƒ ๊ฒฐ๊ณผ, ์ƒ๋žต ์‹œ codex}" \ --ref "{anchor_image_path โ€” ์ƒ๋žต ๊ฐ€๋Šฅ}" # ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ๊นŒ์ง€ codex ์›Œ์ปค์— ์œ„์ž„ (PUMASI_IMAGE_DELEGATE_PROMPT ๊ฒฝ๋กœ) bash $PLUGIN_ROOT/skills/pumasi-image/scripts/imagen-full.sh \ "{intent}" "{mode}" "{aspect}" "{quality}" "{target_image_path}" "{ref_image โ€” ์ƒ๋žต ๊ฐ€๋Šฅ}" # ์—ฌ๋Ÿฌ ์žฅ ์ผ๊ด„ (partial success + per-item retry manifest; ํ•ญ๋ชฉ์— "ref" ํ‚ค๋กœ ์•ต์ปค ์ง€์ • ๊ฐ€๋Šฅ) bash $PLUGIN_ROOT/skills/pumasi-image/scripts/imagen-batch.sh "{batch_json_path}" ``` `--backend grok`: `grok` ํ—ค๋“œ๋ฆฌ์Šค `image_gen`์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค(`--ref`๋ฅผ ์ฃผ๋ฉด `image_edit`). ์‚ฌ์ „ ์กฐ๊ฑด: grok CLI ์„ค์น˜(`$HOME/.grok/bin/grok`) + `grok login`. ๋ฏธ์„ค์น˜/๋ฏธ๋กœ๊ทธ์ธ์ด๋ฉด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ exit 3์œผ๋กœ ์‹คํŒจํ•˜๋‹ˆ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  codex ์žฌ์ƒ์„ฑ ์—ฌ๋ถ€๋ฅผ ยงA ๋ธ”๋ก์œผ๋กœ ํ™•์ธํ•œ๋‹ค. ๋ž˜ํผ ๋‚ด๋ถ€ ๋™์ž‘(codex ๋ฐฑ์—”๋“œ): 1. `codex features list`๋กœ image_generation feature flag ์žฌํ™•์ธ (์•ˆ์ „๋ง) 2. `codex exec --json โ€ฆ < /dev/null` ํ˜ธ์ถœ โ€” codex๊ฐ€ ์ด๋ฏธ์ง€ ๋„๊ตฌ๋กœ 1์žฅ ์ƒ์„ฑ. `< /dev/null`์€ exec๊ฐ€ stdin EOF๋ฅผ ๋ฌดํ•œ ๋Œ€๊ธฐ(ํ—ค๋“œ๋ฆฌ์Šค ํ–‰)ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค๋Š” `--image=<path>`(ํŒŒ์ผ๋‹น 1๊ฐœ)๋กœ ์ „๋‹ฌ โ€” `-i FILE...`์€ ๊ฐ€๋ณ€ ์ธ์ž๋ผ ๋’ค๋”ฐ๋ฅด๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋กœ ์‚ผ์ผœ "No prompt provided" ์‹คํŒจ๋ฅผ ๋งŒ๋“ ๋‹ค(์‹ค์ธก 2026-08-22). 3. **ํšŒ์ˆ˜ ๊ณ„์•ฝ (codex-cli 0.147+ ์‹ค์ธก)**: `codex exec`๋Š” ์ด๋ฏธ์ง€๋ฅผ `~/.codex/generated_images/<thread_id>/exec-*.png`๋กœ **์ €์žฅ**ํ•˜๊ณ  stdout JSONL์—๋Š” base64๋ฅผ ์‹ฃ์ง€ ์•Š๋Š”๋‹ค. ๋ž˜ํผ๋Š” stdout์˜ `thread.started.thread_id`(๋””๋ ‰ํ† ๋ฆฌ๋ช…๊ณผ 1:1)๋กœ **์ด ์„ธ์…˜ ์‚ฐ์ถœ๋ฌผ๋งŒ** ์ง‘์–ด ํƒ€๊นƒ์— ๋ณต์‚ฌํ•œ๋‹ค(๋™์‹œ ์‹คํ–‰๊ณผ ๊ฒฝํ•ฉ ์—†์Œ, ์Šคํ…Œ์ผ ์˜ค์ง‘์Œ ์—†์Œ). ๊ตฌ๋ฒ„์ „ codex ํ˜ธํ™˜์šฉ์œผ๋กœ stdout(JSONL)ยท์„ธ์…˜ rollout์˜ base64 ๋””์ฝ”๋”ฉ ํด๋ฐฑ(`extract_image.py`)์„ ์œ ์ง€ํ•œ๋‹ค. ์ƒ์„ฑ 0์žฅ์ด๋ฉด ๊ฑฐ์ง“ ์„ฑ๊ณต ์—†์ด exit 5. 4. ์‹ค์ธก ํ•ด์ƒ๋„(`sips`) + ์š”์ฒญ ๋น„์œจ๊ณผ 15%โ†‘ ๊ดด๋ฆฌ ์‹œ ๊ฒฝ๊ณ . ํ›„์ฒ˜๋ฆฌ๋Š” ์ ˆ๋Œ€ ํ•˜์ง€ ์•Š์Œ. 5. **ํ”„๋ก์‹œ ์šฐํšŒ** โ€” ๋กœ์ปฌ ํ”„๋ก์‹œ(`HTTP_PROXY`/`HTTPS_PROXY`)๊ฐ€ ํ™˜๊ฒฝ์— ์ƒ์†๋ผ ์žˆ์œผ๋ฉด codex ํ˜ธ์ถœ์—์„œ๋งŒ ๋ฒ—๊ธด๋‹ค. ํ”„๋ก์‹œ๋ฅผ ๊ฒฝ์œ ํ•˜๋ฉด ์ด๋ฏธ์ง€ ์—”๋“œํฌ์ธํŠธ ์š”์ฒญ์ด ~153์ดˆ ๋’ค `network error`๋กœ ์ฃฝ๋Š”๋‹ค(2026-07-23 ์‹ค์ธก: ๊ฒฝ์œ  89/89 ์‹คํŒจ, ์šฐํšŒ ์‹œ ๋™์ผ ํ”„๋กฌํ”„ํŠธ 44์ดˆ ์„ฑ๊ณต). ํ•ด์ œ๋Š” `PUMASI_IMAGE_KEEP_PROXY=1`. 6. **์‹คํŒจ ์‚ฌ์œ  ํ‘œ๋ฉดํ™”** โ€” codex๊ฐ€ ๋‚จ๊ธด `image generation failed: โ€ฆ` ์›๋ฌธ์„ `REASON:`์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ , network error๋ฉด ํ”„๋ก์‹œ ํžŒํŠธ๋ฅผ ๋ง๋ถ™์ธ๋‹ค. ๋„คํŠธ์›Œํฌ ์‹คํŒจ์™€ ์ •์ฑ… ๊ฑฐ๋ถ€๋ฅผ ๊ตฌ๋ถ„ํ•ด ๋ณด๊ณ ํ•œ๋‹ค. > โš ๏ธ **์ƒŒ๋“œ๋ฐ•์Šค/์Šน์ธ ์šฐํšŒ ๊ฒฝ๊ณ„ (opt-in).** ๋ž˜ํผ๋Š” `codex exec --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox`๋กœ > ๋น„๋Œ€ํ™”ํ˜• ์‹คํ–‰ํ•œ๋‹ค โ€” ๋™์ž‘์€ ๋Œ€์ƒ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ 1๊ฐœ ์“ฐ๊ธฐ๋กœ ํ•œ์ •๋œ๋‹ค. **์‹ ๋ขฐํ•˜๋Š” ๋ณธ์ธ ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ** ์‚ฌ์šฉํ•œ๋‹ค. ### Step 7: ๊ฒฐ๊ณผ ํ™•์ธ + ํ‘œ์‹œ (๋ชจ๋“œ๋ณ„) ์ƒ์„ฑ ๋ชจ๋“œ๋ฅผ ํŒ์ •ํ•œ ํ›„ ๊ทธ์— ๋งž๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. (PNG 1์žฅ ํ‘œ์‹œ = ์•ฝ 1,400~3,000 ๋น„์ „ ํ† ํฐ์ด cached prefix์— ๋ฐ•ํžˆ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’์€ ํ‘œ์‹œ ์•ˆ ํ•จ.) #### ๋ชจ๋“œ ํŒ์ • ๊ทœ์น™ - **fast/no-show** (๊ธฐ๋ณธ๊ฐ’): ๊ฒ€์ˆ˜/audit ํ‚ค์›Œ๋“œ ์—†๊ณ , ๋ชจ๋“œ๊ฐ€ ํ…์ŠคํŠธ ์˜์กด(E_THUMBNAIL/F_LOGO)๋„ ์•„๋‹ˆ๊ณ , ์˜๋„์— ํ•œ๊ธ€/์˜๋ฌธ ์นดํ”ผ๊ฐ€ ์—†์„ ๋•Œ - **review/show-one**: ๋ชจ๋“œ๊ฐ€ `MODE_E_THUMBNAIL` / `MODE_F_LOGO` / ์˜๋„์— ์ง์ ‘ ์ธ์šฉ๋œ ์นดํ”ผ(๋”ฐ์˜ดํ‘œ)๊ฐ€ ์žˆ์„ ๋•Œ โ€” ๋งˆ์ง€๋ง‰ 1์žฅ๋งŒ ํ‘œ์‹œ - **audit/show-all**: ์‚ฌ์šฉ์ž๊ฐ€ "๊ฒ€์ˆ˜ํ•ด์ค˜", "์ „๋ถ€ ๋ณด์—ฌ์ค˜", "๊ผผ๊ผผํžˆ ํ™•์ธ", "review all" ๋ช…์‹œํ•  ๋•Œ โ€” ์ „์ฒด ํ‘œ์‹œ #### ๋™์ž‘ 1. ํŒŒ์ผ ์กด์žฌ ํ™•์ธ + `file {target_image_path}`๋กœ ํ•ด์ƒ๋„/ํฌ๋งท/sha1 ํ™•์ธ (์Šคํฌ๋ฆฝํŠธ ๊ฒฝ๋กœ๋ฉด ์ถœ๋ ฅ์˜ `path:` ๊ธฐ์ค€) 2. ๋ชจ๋“œ๋ณ„ ๋ถ„๊ธฐ: - **fast**: ๊ฒฝ๋กœ๋งŒ ์•ˆ๋‚ด (`โœ… ์ƒ์„ฑ ์™„๋ฃŒ: {path} ({ํ•ด์ƒ๋„} {ํฌ๋งท}, sha1: {prefix})` + "๊นจ์กŒ์œผ๋ฉด '์ด๋ฏธ์ง€ ๋ณด์—ฌ์ค˜'๋ผ๊ณ  ๋ง์”€ํ•ด์ฃผ์„ธ์š”"). ์ด๋ฏธ์ง€ ํ‘œ์‹œ ์•ˆ ํ•จ. - **review**: ์œ„ ์•ˆ๋‚ด + ๋งˆ์ง€๋ง‰ 1์žฅ๋งŒ ํ‘œ์‹œ (ํ…์ŠคํŠธ ๋ Œ๋”๋ง ๊ฒ€์ˆ˜). ์•ˆ๋‚ด์— "[review ๋ชจ๋“œ]" ์ถ”๊ฐ€. - **audit**: ์œ„ ์•ˆ๋‚ด + ๋ชจ๋“  ์ด๋ฏธ์ง€ ํ‘œ์‹œ. ์•ˆ๋‚ด์— "[audit ๋ชจ๋“œ]" ์ถ”๊ฐ€. ### Step 8: MODE_REFINE ๋ฃจํ”„ (state ์œ ์ง€ + Step 4 ์žฌ๋กœ๋“œ ๊ธˆ์ง€) ์ƒ์„ฑ ์งํ›„ ๋‹ค์Œ์„ ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ(skill state)๋กœ ์œ ์ง€: - `last_prompt_path`: ๋งˆ์ง€๋ง‰ ์˜๋ฌธ ํ”„๋กฌํ”„ํŠธ ํŒŒ์ผ ๊ฒฝ๋กœ (Step 4 ์‚ฐ์ถœ๋ฌผ) - `last_image_path`: ๋งˆ์ง€๋ง‰ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ (์•ต์ปค ํ›„๋ณด) - `last_manifest_path`: ๋งˆ์ง€๋ง‰ manifest.json ๊ฒฝ๋กœ (imagen-full.sh ์‚ฌ์šฉ ์‹œ) - ์„ ํƒ ํŒŒ๋ผ๋ฏธํ„ฐ (backend / mode / aspect / quality / ์˜๋„ ๋‹ต๋ณ€ 3๊ฐœ) **๋ฆฌํŒŒ์ธ ํŒ์ •**: - **๋™์ผ ์ด๋ฏธ์ง€ ๋ฆฌํŒŒ์ธ** ("์ƒ‰๊ฐ ์ข€ ๋ฐ”๊ฟ”์ค˜", "๋” ๋ฐ๊ฒŒ"): - Step 4 ์žฌ๋กœ๋“œ **๊ธˆ์ง€** โ€” `last_prompt_path` Read + ์‚ฌ์šฉ์ž ๋ธํƒ€๋งŒ patch - ์‹œ๊ฐ ์ปจํ…์ŠคํŠธ ํ•„์š” ์‹œ `last_image_path` ํ‘œ์‹œ (์ž๋™ review ๋ชจ๋“œ)
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub