- name
- pumasi
- description
- Host-controlled parallel coding for Codex. The current Codex session stays the host (plans, writes signatures and gates, verifies, integrates) and delegates bounded implementation tasks to N parallel CLI workers โ Codex workers by default, or grok / cursor-agent / gjc / agy / claude CLI workers chosen per task. Best for 3 or more independent modules with clear gates and interfaces. Korean triggers โ "ํ์์ด๋ก ๋ง๋ค์ด์ค", "ํ์์ด ์ผ์ค", "๋ณ๋ ฌ๋ก ์ธ์ฃผ", "codex ์์ปค๋ก", "grok์ผ๋ก ์ธ์ฃผ". English triggers โ "pumasi", "parallel codex workers", "delegate to codex", "parallel with grok". Image generation belongs to the separate pumasi-image skill โ do not trigger on "์ด๋ฏธ์ง/๊ทธ๋ฆผ/์ธ๋ค์ผ/๋ก๊ณ ๋ง๋ค์ด์ค" even when Codex is named.
# ํ์์ด (Pumasi) โ Codex ๋ณ๋ ฌ ์ธ์ฃผ ๊ฐ๋ฐ
> ํ์์ด: ์๋ก ํ๋ ฅํ๋ฉฐ ์ผ์ ๋๋ ํ๋ ํ๊ตญ ์ ํต ๋ฐฉ์
> Host = ์ค๊ณ/๊ฐ๋
(PM) | ์์ปค ร N = ๋ณ๋ ฌ ๊ตฌํ์
>
> ์ด ์คํฌ์ ์คํํ๋ **ํธ์คํธ๋ Codex ์์ **์ด๋ค. ๋ณ๋ ฌ ์์ปค๋ Codex ๋ฉํฐ์์ด์ ํธ
> (v0.139์์ ์์ ํ) ๋๋ `codex exec` ์ธ์
์ผ๋ก ์คํฐํ๊ณ , ํ์ํ๋ฉด ๋ค๋ฅธ CLI ์์ปค๋ก ๊ต์ฒดํ๋ค.
> ๋ค๋ฅธ ์์ด์ ํธ ์ ์ฉ ๋๊ตฌยทํ
ยท์ค์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ํ์ง ์๋๋ค.
## ํธ์คํธ์ ์์ปค ๊ณ์ฝ
ํ์์ด๋ฅผ ๋ถ๋ฅธ **ํ์ฌ ์ธ์
์ด ํญ์ ํธ์คํธ**(๊ธฐํยท๊ฐ๋
ยท์น์ธยท์ต์ข
๊ฒ์ฆ ๋ด๋น)๋ค. ์์ปค๋ ๋ธ๋ฆฌํ ํ๋๋ฅผ ๋ฐ์
๊ฒฝ๊ณ ์์์ ๊ตฌํํ๊ณ ์ฆ๊ฑฐ(ํ์ผยท๋ณด๊ณ )๋ฅผ ๋๋ ค์ฃผ๋ ์กด์ฌ๋ค. ์์ปค์๊ฒ ์ ์ฒด ์ค์ผ์คํธ๋ ์ด์
์ ๋ค์ ๋งก๊ธฐ๊ฑฐ๋
ํ์์ด๋ฅผ ์ฌ๊ท ์คํํ์ง ์๋๋ค.
- **ํธ์คํธ = Codex, ๊ธฐ๋ณธ ์์ปค = Codex** (`codex exec`). ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์์ปค๋ฅผ ์ง๋ช
ํ๊ฑฐ๋ Phase 0.5์์
์ ํํ์ผ๋ฉด ๊ทธ ์์ปค์ ์คํฐ ๋ช
๋ น์ ์ด๋ค(์๋ "์ธ์ฃผ ์์ปค ๊ต์ฒด"). ๋ช
์๋ ์์ปค๋ฅผ ๋ค๋ฅธ ์์ปค๋ก ๋ชฐ๋ ๋ฐ๊พธ์ง ์๋๋ค.
- ์์ปค ๋ช
๋ น ์ฐ์ ์์: ํ์คํฌ๋ณ ์ง์ > ์ก ๊ธฐ๋ณธ ์ง์ > ํธ์คํธ ๊ธฐ๋ณธ๊ฐ(Codex). ํ์คํฌ๋ณ๋ก ์์ด ์ธ ์ ์๋ค.
- `claude` CLI๋ฅผ ์์ปค๋ก ์ธ ๋์ ๋ช
๋ น์ `claude --print --permission-mode acceptEdits`๋ค. ํ๋กฌํํธ๋ stdin์ผ๋ก
์ฃผ๊ณ `--output-format json`์ผ๋ก ๊ตฌ์กฐํ ๋ณด๊ณ ๋ฅผ ๋ฐ๋๋ค. ๋ชจ๋ธยทํ์ฉ ๋๊ตฌยท๊ถํ์ ๋ช
์์ ๋ช
๋ น ์ต์
์ผ๋ก ์กฐ์ ํ๋ฉฐ
ํธ์คํธ ์ธ์ฆ์ ๋ณต์ฌํ์ง ์๋๋ค. `acceptEdits`๋ ๋ฌด์ ํ ์
ธ ์น์ธ์ด ์๋๋ค โ ๊ฑฐ๋ถ๋ ๊ถํ์ด ์๋์ง ๋ณด๊ณ ์์ ํ์ธํ๋ค.
- ์ก ์ํ๋ ํธ์ถ ํ๋ก์ ํธ์ `.pumasi/`์ ๋๋ค. ์์ปค ์ข
๋ฃ๊ฐ ๊ณง ์ฑ๊ณต์ ์๋๋ค โ **๊ฐ ์์ปค์ ์ข
๋ฃ ์ฝ๋ยท๋ณด๊ณ ์ยท๊ฒ์ดํธ๋ฅผ
๋ฐ๋ก ํ์ธ**ํ๋ค. ์คํจ/๋ถ๋ถ ์๋ฃ/์๋ชป๋ JSON/๋๋ฝ๋ ๋ณด๊ณ ๋ ์๋ฃ๋ก ์น๊ฒฉํ์ง ์๊ณ , ์๋ณธ stdoutยทstderr์
`report.json`์ ๋ณด์กดํ ๋ค ํธ์คํธ๊ฐ ์ฌ์์ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
- ์ด ๋ฌธ์์ ์์์์ **ํธ์คํธ(๊ธฐํ์)** ๋ ํ์ฌ Codex ์ธ์
, **Codex(๊ตฌํ์)** ๋ ์ ํ๋ ์์ปค ์ญํ ๋ก ์ฝ๋๋ค.
Codex ์ ์ฉ ์ฐธ๊ณ (`codex-guide.md`)๋ Codex ์์ปค์๋ง ์ ์ฉํ๋ค.
## ๋จผ์ ์ฝ์ ๊ฒ
instruction(์์
๋ธ๋ฆฌํ) ์์ฑ ์ ๋ฐ๋์ Read:
- `$PLUGIN_ROOT/skills/pumasi/references/anti-patterns.md` โ ๋ณต๋ถํ instruction ์ ๋ ๊ธ์ง ๊ท์น + Red Flags ์๊ฐ์ฒดํฌํ
- `$PLUGIN_ROOT/skills/pumasi/references/role-separation.md` โ ํธ์คํธ vs ์์ปค ์ญํ ๊ฒฝ๊ณ
- `$PLUGIN_ROOT/skills/pumasi/references/codex-guide.md` โ Codex ์์ปค ํน์ฑ, DO/DON'T, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ฒด ๋ฐฉ์ง (Codex ์์ปค์ผ ๋๋ง)
- `$PLUGIN_ROOT/skills/pumasi/references/instruction-templates.md` โ ํ
ํ๋ฆฟ, ์ข์/๋์ ์์, ์๊ธฐ ์ ๊ฒ ์ฒดํฌ๋ฆฌ์คํธ
- `$PLUGIN_ROOT/skills/pumasi/references/tech-stack.md` โ 2025-2026 ๋ชจ๋ ์คํ ์ถ์ฒํ
ํ์ํ ๋ Read:
- `$PLUGIN_ROOT/skills/pumasi/references/examples.md` โ ์คํ ์์ (Todo ์ฑ, ์ธ์ฆ ์์คํ
, ๋ธ๋ฆฌํ ์์)
## ๊ฐ๋
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Host (Codex ์ธ์
, ์ค๊ณ/๊ฐ๋
/PM) โ
โ 1. ์๊ตฌ์ฌํญ ๋ถ์ โ ๊ธฐํ โ ๋
๋ฆฝ ์๋ธํ์คํฌ ๋ถํด โ
โ 2. ์๊ทธ๋์ฒ + ์๊ตฌ์ฌํญ + ๊ฒ์ดํธ ์์ฑ โ
โ 3. .pumasi/tasks ๋ธ๋ฆฌํ ์์ฑ โ ์์ปค ๋ณ๋ ฌ ์คํฐ โ
โ 4. ๊ฒ์ดํธ ๊ฒ์ฆ โ ํตํฉ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Worker 1 โ โ Worker 2 โ โ Worker 3 โ
โ ์๊ทธ๋์ฒ โ โ ์๊ทธ๋์ฒ โ โ ์๊ทธ๋์ฒ โ
โ ๊ธฐ๋ฐ ๊ตฌํ โ โ ๊ธฐ๋ฐ ๊ตฌํ โ โ ๊ธฐ๋ฐ ๊ตฌํ โ
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ
โ
โผ
๊ฒ์ดํธ ๊ฒ์ฆ โ ํตํฉ โ ์์ฑ
```
## ํต์ฌ ๊ฐ์น
**ํ์์ด์ ์กด์ฌ ์ด์ ๋ "ํธ์คํธ๊ฐ ์ฝ๋๋ฅผ ์ง์ ์ง์ง ์๋ ๊ฒ"์ด๋ค.**
| ๊ฐ์น | ์ค๋ช
|
|------|------|
| ํธ์คํธ ํ ํฐ ์ ์ฝ | ํธ์คํธ๋ ์ค๊ณ๋ง, ๊ตฌํ์ ์์ปค๊ฐ ๋ด๋น |
| ์๋ ํฅ์ | N๊ฐ ๋ชจ๋์ ์์ปค๊ฐ ๋ณ๋ ฌ๋ก ๋์ ๊ตฌํ |
| ๊ฒ์ฆ ์ต์ ํ | ๋์ ๊ฒ์ดํธ(bash, ํ ํฐ 0)๋ก ์๋ ๊ฒ์ฆ |
**์ ์ ์กฐ๊ฑด**: ์์ปค๊ฐ **์ค์ ๊ตฌํ**์ ํด์ผ ํ๋ค. ํธ์คํธ๊ฐ ์ฝ๋๋ฅผ ๋ค ์ง๊ณ ์์ปค์๊ฒ ํ์ผ ์ ์ฅ๋ง ์ํค๋ฉด ํ ํฐ ์ ์ฝ ํจ๊ณผ = 0.
---
## ์ํฐํจํด ๋ฐ ์ญํ ๋ถ๋ฆฌ
**ํต์ฌ ์์น ์์ฝ**: ํธ์คํธ๋ ์๊ทธ๋์ฒ+์๊ตฌ์ฌํญ๋ง ์์ฑ. ์ฝ๋ ๋ณธ๋ฌธ(body)์ ์ ๋ ์์ฑ ๊ธ์ง. ๊ฐํ ๊ฒ์ดํธ(tsc/build/test)๋ก ๊ฒ์ฆ. ์์ธ ๊ท์น์ ์ `anti-patterns.md` / `role-separation.md` ์ฐธ์กฐ.
---
## ํธ๋ฆฌ๊ฑฐ ์กฐ๊ฑด
```
๋ช
์์ ํธ๋ฆฌ๊ฑฐ:
- "ํ์์ด๋ก [์์
]ํด์ค"
- "ํ์์ด ์ผ์ค"
- "codex ์์ปค๋ก [์์
]" / "grok์ผ๋ก [์์
] ์ธ์ฃผ"
- "๋ณ๋ ฌ๋ก [์์
] ์ธ์ฃผ"
์๋ ๊ฐ์ง (๋๊ท๋ชจ ์ฝ๋ฉ ์์ฒญ ์):
- 4๊ฐ ์ด์์ ๋
๋ฆฝ ํ์ผ/๋ชจ๋ ๋์ ์์ฑ ์์ฒญ
- "์ ์ฒด [๊ธฐ๋ฅ] ๊ตฌํํด์ค" + ๊ท๋ชจ๊ฐ ํฐ ๊ฒฝ์ฐ
- ์ฌ๋ฌ ์ปดํฌ๋ํธ/์๋น์ค๋ฅผ ํ ๋ฒ์ ๋ง๋ค์ด์ผ ํ ๋
ํธ๋ฆฌ๊ฑฐ ์ ์ธ:
- "์ด๋ฏธ์ง/๊ทธ๋ฆผ/์ธ๋ค์ผ/๋ก๊ณ ๋ง๋ค์ด์ค" โ "์ฝ๋ฑ์ค๋ก"๊ฐ ๋ถ์ด๋ pumasi-image ์คํฌ ์์ . ์ฌ๊ธฐ๋ก ๋ฐ์ง ์๋๋ค.
```
### ์ธ์ ์์ด ํธ์ถ๋์ ๋
"ํ์์ด ์ผ์ค"์ฒ๋ผ ๋ง๋ค ๋์์ด ์์ผ๋ฉด ยงA ๋ฒํธํ ๋ธ๋ก์ผ๋ก ํ ๋ฒ ๋ฌป๊ณ , ๋ต๋ณ์ ๋ฐ์ ๋ค ์์ธ ์ค๋ช
์ ์์ฒญํ๋ค:
```text
์ง๋ฌธ: ํ์์ด ๋ชจ๋๋ก ๋ฌด์์ ๋ง๋ค๊น์?
1. ์ ํ๋ก์ ํธ โ ์๋ก์ด ์ฑ/์๋น์ค๋ฅผ ํ์์ด ๋ชจ๋๋ก ๊ตฌํ
2. ๊ธฐ๋ฅ ์ถ๊ฐ โ ๊ธฐ์กด ํ๋ก์ ํธ์ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ณ๋ ฌ๋ก ์ถ๊ฐ
3. ๋ฆฌํฉํ ๋ง โ ์ฌ๋ฌ ๋ชจ๋์ ๋์์ ๋ฆฌํฉํ ๋ง
4. ๋ฌธ์ฅ์ผ๋ก ์ง์ ์๋ ค์ฃผ๊ธฐ
```
### ์์
๊ท๋ชจ๋ณ ๋ถ๊ธฐ (์ค์)
| ๊ท๋ชจ | ๊ถ์ฅ ๋ฐฉ์ | ์ด์ |
|------|----------|------|
| ํ์คํฌ 1~2๊ฐ | **ํธ์คํธ ์ง์ ์ฝ๋ฉ** | ํ์์ด ์ค๋ฒํค๋๊ฐ ๋ ํผ |
| ํ์คํฌ 3~4๊ฐ | **ํ์์ด ์ฌ์ฉ ๊ฐ๋ฅ** | ๋ณ๋ ฌ ์ด๋์ด ์ค๋ฒํค๋์ ๋น์ท |
| ํ์คํฌ 5๊ฐ+ | **ํ์์ด ๊ฐ๋ ฅ ๊ถ์ฅ** | ๋ณ๋ ฌ ์ด๋์ด ํ์คํ ํผ |
**๋ํ ๋ค์ ๊ฒฝ์ฐ์๋ ํ์์ด๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค:**
- ๊ธฐ์กด ์ฝ๋ ์์ /๋ฒ๊ทธ ์์ (์ปจํ
์คํธ ์ฃผ์
์ด ๊ณผ๋ํด์ง)
- ๋จ์ผ ํ์ผ ์์
(๋ณ๋ ฌ ์ด์ ์์)
- ๊ฒ์ดํธ๋ฅผ ๋ง๋ค ์ ์๋ ์์
(UI ๋ฏธ์ธ ์กฐ์ ๋ฑ)
### ํ์์ด ๋ชจ๋ ์ง์
์ ํธ์คํธ์ ํ๋ ๋ณํ
```
์ผ๋ฐ ๋ชจ๋: ํ์์ด ๋ชจ๋:
ํธ์คํธ๊ฐ ์ง์ ์ฝ๋ฉ ํธ์คํธ๊ฐ ์๊ทธ๋์ฒ+์๊ตฌ์ฌํญ ์์ฑ
โ .pumasi/tasks ๋ธ๋ฆฌํ โ ์์ปค ์คํฐ
โ ๊ฒ์ดํธ ์๋ ๊ฒ์ฆ โ ํตํฉ
```
---
## ์ฌ์ฉ์ ์ง๋ฌธ ๊ท์น (ยงA)
Codex CLI์๋ ๊ฐ๊ด์ ์นด๋ํ ์ง๋ฌธ UI๊ฐ **์๋ค.** ๊ฒฐ์ ์ด ๊ผญ ํ์ํ ๋๋
`$PLUGIN_ROOT/shared/questioning-policy.md ยงA`์ **์ฑํ
๋ฒํธํ ์ ํ์ง ๋ธ๋ก**์ผ๋ก ๋ฌป๋๋ค.
- ํ์์ด ์์ฒญ์ ๋๊ฐ **์ด๋ฏธ ๊ตฌ์ฒด์ **์ด๋ค(๋ง๋ค ๊ฒ์ด ๋ช
ํ). ยง1 + ยง2c์ ๋ฐ๋ผ ์ถ๋ก ๊ฐ๋ฅํ ๊ฑด ๋ฌป์ง ๋ง๊ณ ,
์์ฒญ์ด ์ถฉ๋ถํ ๊ตฌ์ฒด์ ์ด๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ง์ํ์ผ๋ฉด **์ฆ์ ์งํ**ํ๋ค(๊ณผ์ ์ง๋ฌธ = ๋ง์ฐฐ ์คํจ).
- ์ง์ง๋ก ๊ฒฐ์ ์ด ํ์ํ ๊ฒฝ์ฐ(์: ์คํ ์ ํ์ง๊ฐ ๊ฐ๋ฆด ๋)๋ง ์๋ ํ์์ผ๋ก ํ ๋ฒ ๋ฌป๋๋ค:
```text
์ง๋ฌธ: ์ด๋ค ๋ฐฑ์๋ ์คํ์ผ๋ก ๊ฐ๊น์?
1. Next.js Route Handlers โ ํ ๋ ํฌ์ ํตํฉ, ๋ฐฐํฌ ๋จ์. ํธ๋ ์ด๋์คํ: ๋ฌด๊ฑฐ์ด ๋ฐฑ์๋์ ๋ถ๋ด
2. ๋ณ๋ Fastify API โ ์ญํ ๋ถ๋ฆฌ ๋ช
ํ. ํธ๋ ์ด๋์คํ: ๋ ํฌ/๋ฐฐํฌ 2๊ฐ
3. ๋ฌธ์ฅ์ผ๋ก ์ง์ ์๋ ค์ฃผ๊ธฐ
```
- ์ถ์ฒ์์ ํญ์ **1๋ฒ**. "๋ชจ๋ฅด๋ฉด 1๋ฒ์ผ๋ก ์งํํ๊ฒ ์ต๋๋ค"๋ก ์๋ดํ๋ค. ์นด๋ UI๋ฅผ ํ๋ด๋ด์ง ๋ง ๊ฒ.
- ์ด๋ฏธ ๋ช
์๋ ์์ปคยท์คํ์ ๋ค์ ๋ฌป์ง ์๋๋ค.
---
## 7๋จ๊ณ ์ํฌํ๋ก์ฐ
### Phase 0: ๊ธฐํ (Host as PM)
์ฌ์ฉ์ ์์ฒญ์ ๋ถ์ํ์ฌ **์์ฑ๋ ์๋ ๊ธฐํ์**์ ์์ฑ. ๊ธฐํ ์ฒดํฌ๋ฆฌ์คํธ ํต๊ณผ ํ ์ฌ์ฉ์ ์น์ธ์ ๋ฐ๋๋ค.
**๊ธฐํ ์ฒดํฌ๋ฆฌ์คํธ** (ํ์คํฌ ๋ถํด ์ ๋ฐ๋์ ํ์ธ):
```
โก ์ด ์ฑ/๊ธฐ๋ฅ์ ํต์ฌ ์ฌ์ฉ ์๋๋ฆฌ์ค๋?
โก ๊ฒฝ์ ์ ํ/์ผ๋ฐ์ ๊ธฐ๋์น ๋๋น ๋น ์ง ๊ธฐ๋ฅ์?
โก ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํ์ํ ํ๋๊ฐ ์ถฉ๋ถํ๊ฐ?
โก UX ๊ด์ : ๊ฒ์, ์ ๋ ฌ, ํํฐ, ๋ฒํฌ ์์
์ด ํ์ํ๊ฐ?
โก ๋น๊ธฐ๋ฅ ์๊ตฌ์ฌํญ: ๋ฐ์ํ, ๋คํฌ๋ชจ๋, ์ ๊ทผ์ฑ์?
โก ํ์คํฌ ์๊ฐ 4๊ฐ ์ด์์ธ๊ฐ? (์๋๋ฉด ํธ์คํธ ์ง์ ์ฝ๋ฉ)
```
**๋ฐ์ดํฐ ๋ชจ๋ธ ์ค๊ณ ์์น**: ํ์
/์ธํฐํ์ด์ค๋ ํธ์คํธ๊ฐ ์ค๊ณ. ๊ตฌํ ๋ก์ง์ ์์ปค๊ฐ ์์ฑ.
### Phase 0.5: ์์ปค ์ ํ (๊ธฐํ ์น์ธ๊ณผ ๊ฐ์ ์ง๋ฌธ์ ํฌํจ โ ์คํต ์กฐ๊ฑด ์์)
๊ธฐํ ์น์ธ์ ๋ฐ๋ **๊ฐ์ ํด**์ ์์ปค ์ ํ ๋ฌธํญ์ ยงA ๋ธ๋ก์ผ๋ก ํจ๊ป ๋ธ๋ค.
**์คํต ์กฐ๊ฑด**: ์ฌ์ฉ์๊ฐ ์์ฒญ์์ ์์ปค๋ฅผ ์ด๋ฏธ ์ง๋ช
ํ ๊ฒฝ์ฐ("grok์ผ๋ก", "codexํํ
", "cursor๋ก", "agy ์ธ์ฃผ") โ ์ง๋ช
๋ ์์ปค๋ฅผ ๊ทธ๋๋ก ์ฐ๊ณ ๋ฌป์ง ์๋๋ค.
```text
์ง๋ฌธ: ์ด๋ค CLI ์์ปค์๊ฒ ์ธ์ฃผ๋ฅผ ๋งก๊ธธ๊น์?
1. Codex ์์ปค (๊ถ์ฅ) โ codex exec. ๊ตฌ์กฐํ ๋ณด๊ณ (report.json) ์ง์, ๊ธฐ๋ณธ ์๋๋ฐ์ค
2. Grok โ xAI Grok Build (grok-4.6). SuperGrok ๊ตฌ๋
์ด๋ฉด ํ๊ณ๋น์ฉ 0. report.json ์์ด output.txt ํตํฉ
3. ํผํฉ โ ํ์คํฌ ์ฑ๊ฒฉ๋ณ๋ก codex/grok/cursor/agy/gjc ๋๋ ๋ฐฐ์ (๋ฐฐ์ ์์ ํธ์คํธ๊ฐ ์ ์ ํ ํ์คํฌ๋ณ ๋ช
๋ น์ผ๋ก ๋ฐ์)
4. Cursor / agy / gjc / claude โ Cursor Ultra ๊ตฌ๋
์ด๋ฉด cursor-agent(ComposerยทCodexยทOpus/Fable๊ธ ๋ชจ๋ธ๊น์ง ์ ํ ๊ฐ๋ฅ), ๋์์ธยทUI๋ Antigravity(agy), ๋ฉํฐ๋ชจ๋ธ์ gajae-code(gjc), claude CLI(report.json ์ง์)
```
์ ํ ๊ฒฐ๊ณผ๋ Phase 2์ `.pumasi/job.json`์ `defaults.command`(ํผํฉ์ด๋ฉด ํ์คํฌ๋ณ `command`)๋ก ๊ธฐ๋กํ๋ค. ๊ฐ ์์ปค์ ์ ํํ ๋ช
๋ น ๋ฌธ์์ด์ ์๋ **"์ธ์ฃผ ์์ปค ๊ต์ฒด"** ์ ์ ๊ฒ์ ๊ทธ๋๋ก ์ด๋ค.
**์ ํ ์งํ ์ค์น ํ์ธ 1ํ**: `command -v <cli>` (grok์ ์คํจ ์ `$HOME/.grok/bin/grok` ํด๋ฐฑ). ๋ฏธ์ค์นยท๋ฏธ์ธ์ฆ์ด๋ฉด ๊ทธ๋๋ก ์๋ฆฌ๊ณ ์ค๋จํ๊ฑฐ๋ ยงA ๋ธ๋ก์ผ๋ก ๋ค๋ฅธ ์์ปค๋ฅผ ๋ค์ ์ ํ๋ฐ๋๋ค. ๋ช
์ํ ์์ปค๋ฅผ Codex๋ก ๋ชฐ๋ ๋ฐ๊พธ์ง ์๋๋ค.
### Phase 1: ๋ถ์ (Host)
์์ฒญ์ ๋ฐ์ผ๋ฉด **๋
๋ฆฝ์ ์ผ๋ก ๋ณ๋ ฌ ์คํ ๊ฐ๋ฅํ** ์๋ธํ์คํฌ๋ก ๋ถํด.
**์ข์ ์๋ธํ์คํฌ ์กฐ๊ฑด**:
- ๋ค๋ฅธ ์๋ธํ์คํฌ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ๋จ
- ๋ช
ํํ ์
์ถ๋ ฅ(์๊ทธ๋์ฒ) ์ ์ ๊ฐ๋ฅ
- ์์ปค ํผ์ ๊ตฌํ ๊ฐ๋ฅํ ๋ฒ์
- ํ์ผ/๊ธฐ๋ฅ ๊ฒฝ๊ณ๊ฐ ๋ช
ํํจ
### Phase 2: ๊ณต์ ์ํ ์ด๊ธฐํ + ๋ธ๋ฆฌํ ์์ฑ (Host)
```bash
python3 $PLUGIN_ROOT/skills/pumasi/scripts/init_workspace.py --root "$PWD" --task "<์์
์์ฝ>"
```
์์ฑ๋ฌผ:
- `.pumasi/job.json` โ ์ก ์ํ(ํ์คํฌ/๋ผ์ด๋/์ ํ๋ ์์ปค ๋ช
๋ น)
- `.pumasi/plan.md` โ ํตํฉ ์ปจํ
์คํธ (์์ปค ์คํ ์ค ๊ณ์ ๊ฐฑ์ )
- `.pumasi/tasks/<task>.md` โ ํ์คํฌ๋ณ ์์
๋ธ๋ฆฌํ
- `.pumasi/reports/` โ ์์ปค ๋ณด๊ณ ์์ง ์์น
**์์
๋ธ๋ฆฌํ(`.pumasi/tasks/<task>.md`)์ ๋ฐ๋์ ๋ด์ ๊ฒ:**
1. ์๊ทธ๋์ฒ์ ์๊ตฌ์ฌํญ๋ง ์์ฑ (์ฝ๋ ๋ณธ๋ฌธ ์์ฑ ๊ธ์ง)
2. owned files / ๋๋ ํ ๋ฆฌ (๋ค๋ฅธ ์์ปค์ ๊ฒน์น์ง ์๊ฒ)
3. ํ์ import / ๋ผ์ด๋ธ๋ฌ๋ฆฌ + ๊ธ์ง ๋์ฒด
4. ๊ฐํ ๊ฒ์ดํธ ๋ช
๋ น (tsc/build/test ์ค์ฌ)
5. "๋ค๋ฅธ ์์ปค๊ฐ ๊ฐ์ ๋ ํฌ๋ฅผ ๋์์ ํธ์ง ์ค"์ด๋ผ๋ ์๋ฆผ
6. ๋ณด๊ณ ํ์ โ Codex/claude ์์ปค๋ `$PLUGIN_ROOT/skills/pumasi/scripts/codex-output-schema.json` ์คํค๋ง์ JSON์ `.pumasi/reports/<task>.report.json`์ผ๋ก, ๊ทธ ์ธ ์์ปค๋ ๋ง์ง๋ง ์๋ต์ `.pumasi/reports/<task>.output.txt`๋ก ๋จ๊ธฐ๊ฒ ํ๋ค
### Phase 3: ์์ปค ์คํฐ (Host โ ๋ณ๋ ฌ ์์ปค)
ํ์คํฌ๋น ์์ปค 1๊ฐ๋ฅผ ๋ณ๋ ฌ๋ก ์คํฐํ๋ค. ๊ฐ ์์ปค ํ๋กฌํํธ์๋ ํด๋น `.pumasi/tasks/<task>.md` ๋ธ๋ฆฌํ๋ฅผ ๊ทธ๋๋ก ์ ๋ฌํ๋ค.
- **Codex ๋ฉํฐ์์ด์ ํธ**(v0.139+ ์์ ): ํ์คํฌ๋ณ sub-agent๋ฅผ ๋์ ์คํ
- ๋๋ **`codex exec`** ์ธ์
์ ํ์คํฌ๋ณ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํฐ โ ์: `codex exec --dangerously-bypass-approvals-and-sandbox --output-schema $PLUGIN_ROOT/skills/pumasi/scripts/codex-output-schema.json -o .pumasi/reports/<task>.report.json "<๋ธ๋ฆฌํ>" < /dev/null`
- ๋ค๋ฅธ ์์ปค๋ฅผ ์ ํํ์ผ๋ฉด "์ธ์ฃผ ์์ปค ๊ต์ฒด" ์ ์ ๋ช
๋ น์ผ๋ก ์คํฐํ๋ค. **`--output-schema`/`-o`๋ Codex ์ ์ฉ ํ๋๊ทธ**๋ผ ๋ค๋ฅธ CLI์ ๋๊ธฐ๋ฉด ์ ์ ์๋ ํ๋๊ทธ๋ก ์ฆ์ฌํ๋ค โ ์ ๋ ์์ง ์๊ฒ ํ๋ค.
> ์์ปค๋ ๋ธ๋ฆฌํ์ ์๊ทธ๋์ฒ/์๊ตฌ์ฌํญ/๊ฒ์ดํธ๋ง ๋ฐ๊ณ **๊ตฌํ ๋ณธ๋ฌธ์ ์์ปค๊ฐ ์์ฑ**ํ๋ค. ํธ์คํธ๊ฐ ๋ณธ๋ฌธ์ ์จ์ ๋๊ธฐ๋ฉด ์ ๋๋ค.
> โ ๏ธ **์๋๋ฐ์ค/์น์ธ ์ฐํ ๊ฒฝ๊ณ (opt-in).** ๋น๋ํํ ๋ณ๋ ฌ ์์ปค๊ฐ ์น์ธ ํ๋กฌํํธ ์์ด ํ์ผ์ ์ฐ๋ ค๋ฉด
> `codex exec --dangerously-bypass-approvals-and-sandbox`(๋๋ `--full-auto`) / `--sandbox workspace --always-approve`(grok) /
> `--force`(cursor-agent) / `--dangerously-skip-permissions`(agy)๊ฐ ํ์ํ๋ค โ ๋ณ๋ ฌ ์ธ์ฃผ ์๋ํ๋ฅผ ์ํด ํ์ํ ๋์์ด๋ค.
> ๋ฐ๋ผ์ ํ์์ด๋ **์ ๋ขฐํ๋ ๋ณธ์ธ ๋ ํฌ์์๋ง** ์คํํ๊ณ , ์ธ๋ถ์์ ๋ฐ์/๊ฒํ ์ ๋ ์ฝ๋๋ฒ ์ด์ค๋ ํ๋กฌํํธ์๋ ์ฐ์ง ์๋๋ค.
> ํ์์ด ํธ์ถ ์์ฒด๊ฐ ์ด ์ฐํ์ ๋ํ ๋ช
์์ ๋์์ด๋ฉฐ, ์ฐํ ์์ด ๋๋ฆฌ๋ ค๋ฉด ํด๋น ํ๋๊ทธ๋ฅผ ๋นผ๊ณ codex ๊ธฐ๋ณธ ์๋๋ฐ์ค(`--full-auto` ๋ฑ)๋ก ์์ปค๋ฅผ ์คํฐํ๋ค.
### Phase 4: ๋ชจ๋ํฐ๋ง (Host)
์์ปค๊ฐ ๋๋ ๋์ `.pumasi/plan.md`์ ํตํฉ ์ปจํ
์คํธ๋ฅผ ์ต์ ์ผ๋ก ์ ์งํ๋ค. ์๋ฃ ๋ณด๊ณ /์ฐ์ถ ํ์ผ์ `.pumasi/reports/`์์ ์์งํ๋ค.
ํ ์์ปค๊ฐ ๋๋ฌ๋ค๊ณ ์ ์ฒด๊ฐ ๋๋ ๊ฒ์ด ์๋๋ค โ ๋ชจ๋ ์์ปค๊ฐ ์ข
๋ฃ ์ํ์ ๋๋ฌํ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ๋ค Phase 5๋ก ๊ฐ๋ค.
### Phase 5: ๊ฒ์ดํธ ๊ฒ์ฆ + ์ ํ์ ์ฝ๋ ๋ฆฌ๋ทฐ (Host)
**4๋จ๊ณ ๊ฒ์ฆ ํ๋ก์ธ์ค:**
```
Step 0: ์์กด์ฑ ํ์ธ (๊ฒ์ดํธ ์คํ ์ ํ์)
โโโ node_modules๊ฐ ์์ผ๋ฉด: ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ์์ npm install --silent
โโโ tsc/build/test ๊ฒ์ดํธ๋ ์์กด์ฑ ์ค์น ํ์๋ง ์ ํจ
Step 1: ์๋ ๊ฒ์ดํธ ์คํ (bash, ํ ํฐ 0)
โโโ tsc --noEmit โ npm run build โ npm test โ grep ํ์ธ
Step 2: ๊ฒฐ๊ณผ ํ์
โโโ ์ ๋ถ ํต๊ณผ โ ์์ปค ๋ณด๊ณ ์(report.json / output.txt)๋ง ์ฝ๊ธฐ (ํ ํฐ ์๋)
โโโ ์คํจ ์์ โ ์คํจํ ๊ฒ์ดํธ ๊ด๋ จ ์ฝ๋๋ง ์ฝ๊ธฐ (ํ ํฐ ์ต์ํ)
Step 3: ์๋ธํ์คํฌ ๊ฐ ์ธํฐํ์ด์ค ํ์ธ
โโโ ํ์
/import ๊ฒฝ๋ก ๋ฑ ๊ต์ฐจ ๊ฒ์ฆ
```
๋ณด๊ณ ์๋ฅผ ์ฝ์ ๋๋ ์๋ฌธ ํ๋กฌํํธยทstdoutยทstderr๋ฅผ ๋ค์ ํผ์น์ง ๋ง๊ณ **๊ตฌ์กฐํ ๋ณด๊ณ + ๊ฒ์ดํธ ๊ฒฐ๊ณผ + ์๋ณธ ํ์ผ ๊ฒฝ๋ก**๋ง ๋ณด๋ compact ๋ฐฉ์์ผ๋ก ์์ํ๋ค. ์คํจยท๋ถ๋ถ ์๋ฃยท๋ณด๊ณ ๋๋ฝ์ ์กฐ์ฌํ ๋๋ง ํด๋น ์๋ณธ ํ์ผ์ ์ฝ๋๋ค.
**๊ณต์ ์ฝ๊ธฐ ์ ์ฉ ๊ฒ์ดํธ**: ์ฌ๋ฌ ํ์คํฌ๊ฐ ๊ฐ์ ์์
๋๋ ํฐ๋ฆฌ์์ ๊ฐ์ ๊ฒฐ์ ๋ก ์ ยท์ฝ๊ธฐ ์ ์ฉ ๊ฒ์ฌ(์: `npx tsc --noEmit`)๋ฅผ ์๊ตฌํ๋ฉด, ๋ชจ๋ ์์ปค๊ฐ ์๋ฃ๋ ๋ค ํ ๋ฒ๋ง ์คํํด ํต๊ณผ ๊ฒฐ๊ณผ๋ฅผ ํ์คํฌ๋ณ๋ก ๊ท์์ํฌ ์ ์๋ค. ์คํจยทํ์์์, ์์
๋๋ ํฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ๊ฒ์ฌ, ํฌ๋งทํฐยท์ค๋
์ท ๊ฐฑ์ ยท์ธ๋ถ ์๋น์คยท์คํ ์์์ ์์กดํ๋ ๊ฒ์ฌ์๋ ์ ์ฉํ์ง ์๊ณ , ๋ค์ ๊ฒ์ฆ ๋ผ์ด๋์์๋ ํญ์ ๋ค์ ๊ฒ์ฌํ๋ค.
### Phase 5.5: ์ฝ๋ ์ ๋ฆฌ (์ ํ์ )
> ๊ฒ์ดํธ๊ฐ ๋ชจ๋ ํต๊ณผํ์ง๋ง ์ฝ๋ ํ์ง์ ํ ๋จ๊ณ ๋์ด๊ณ ์ถ์ ๋ ์ฌ์ฉ.
**์กฐ๊ฑด**: Phase 5 ๊ฒ์ดํธ ์ ๋ถ PASS + ํ์คํฌ 3๊ฐ ์ด์์ผ ๋ ๊ถ์ฅ.
์ ๋ฆฌ(simplify) ํจ์ค ํ ๊ฒ์ดํธ๋ฅผ ์ฌ์คํํ๊ณ Phase 6 ํตํฉ์ผ๋ก ๋์ด๊ฐ๋ค.
### Phase 6: ํตํฉ ๋ฐ ์์ (Host ํ๋จ + ์์ปค ์ฌ์์)
**์์ ์ด ํ์ํ ๊ฒฝ์ฐ**: ํธ์คํธ๊ฐ ์ง์ ๊ณ ์น์ง ์๊ณ ํด๋น ํ์คํฌ๋ง ์์ปค์๊ฒ ์ฌ์์. ์ฌ์์์๋ Phase 0.5์์ ๊ณ ๋ฅธ ์์ปค๋ฅผ ๊ทธ๋๋ก ์ด๋ค.
```
ํธ์คํธ๊ฐ ํ๋ ์ผ: "๋ญ ๊ณ ์น ์ง" ๊ฒฐ์ (์์ฐ์ด ์์ ์ง์ + ์ขํ ์ปจํ
์คํธ)
์์ปค๊ฐ ํ๋ ์ผ: ์ค์ ์์ ์คํ
```
**์์ ์ด ํ์ ์๋ ๊ฒฝ์ฐ**: ์๋ธํ์คํฌ ๊ฐ ์ฐ๊ฒฐ๋ง ํ์ธ ํ ํตํฉํ๋ค. ๊ฒ์ฆ์ด ๋๋๊ธฐ ์ ์๋ `.pumasi/` ์ฐ์ถ๋ฌผ์ ์ง์ฐ์ง ์๋๋ค.
> **์คํ ์์ ์ฐธ๊ณ **: `$PLUGIN_ROOT/skills/pumasi/references/examples.md`
---
## ๋ผ์ด๋ (์์ ์์กด์ฑ ์ฒ๋ฆฌ)
ํ์คํฌ ๊ฐ ์์กด์ฑ์ด ์์ผ๋ฉด **๋ผ์ด๋**๋ก ๋ถ๋ฆฌํ๋ค. ๊ณต์ ์ธํฐํ์ด์ค๋ฅผ ๋๊ณ ๋ณ๋ ฌ ์์ปค๊ฐ
๊ฒฝ์(race)ํ์ง ์๋๋ก, ์์กด์ฑ์ด ์์ ๋๋ ํญ์ ๋ผ์ด๋๋ฅผ ์ด๋ค.
```
Round 1: ๊ณต์ ํ์
/์คํค๋ง/์ ํธ๋ฆฌํฐ (3๊ฐ ๋ณ๋ ฌ)
Round 2+: Round 1 ๊ฒฐ๊ณผ(์ธํฐํ์ด์ค)๋ฅผ ์ฌ์ฉํ๋ ํ์คํฌ (2๊ฐ ๋ณ๋ ฌ)
Final: ํธ์คํธ๊ฐ ์ง์ ๋ก์ปฌ ํตํฉ ๋ฐ ๊ฒ์ฆ
```
---
## ์์ปค ๋ฃฐ (์์ฝ)
- ํธ์คํธ(lead)๊ฐ ์๊ทธ๋์ฒยทํ์
ยท์ ์ฝยท๊ฒ์ดํธ๋ฅผ ์์ฑํ๋ค.
- ์์ปค๊ฐ ๊ตฌํ ๋ณธ๋ฌธ์ ์์ฑํ๋ค.
- ์์
๋ธ๋ฆฌํ์ ์์ฑ๋ ํจ์ ๋ณธ๋ฌธ์ ์ ๋ ๋ถ์ฌ๋ฃ์ง ์๋๋ค.
- ๋ชจ๋ ์์ปค ํ๋กฌํํธ์ ๋ฐ๋์ ํฌํจ:
- owned files / ๋๋ ํ ๋ฆฌ
- ํ์ ์๊ทธ๋์ฒ์ import
- ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ + ๊ธ์ง ๋์ฒด
- ์ ํํ ๊ฒ์ดํธ ๋ช
๋ น
- ๋ค๋ฅธ ์์ปค๊ฐ ๊ฐ์ ๋ ํฌ๋ฅผ ํธ์ง ์ค์ด๋ผ๋ ์๋ฆผ
---
## ์ธ์ฃผ ์์ปค ๊ต์ฒด (์ ํ) โ Grok(`grok`) / Cursor(`cursor-agent`) / gajae-code(`gjc`) / Antigravity CLI(`agy`) / `claude`
๊ธฐ๋ณธ ์์ปค(Codex) ๋์ ํ์คํฌ๋ณ ๋๋ ์ก ์ ์ฒด์ ๋ค๋ฅธ CLI๋ฅผ ๋ช
์ํ ์ ์๋ค. ํ๋กฌํํธ(๋ธ๋ฆฌํ)๋ **๋ง์ง๋ง positional ์ธ์**๋ก ์ ๋ฌํ๋ค
(`claude`๋ง stdin). Codex ์ ์ฉ `--output-schema`/`-o`๋ ๋ค๋ฅธ CLI์ ๋ฃ์ง ์๋๋ค โ ๊ทธ ์์ปค๋ค์ `report.json` ์์ด `output.txt` ๊ธฐ๋ฐ์ผ๋ก ํตํฉํ๋ค(graceful).
**Grok CLI(`grok`)** โ xAI Grok Build (์ฝ๋ยท๋๊ท๋ชจ ๋ถ์):
```text
grok --no-auto-update --no-alt-screen --sandbox workspace --always-approve -p "<๋ธ๋ฆฌํ>"
```
- ์ค์ธก(2026-08-23, grok 1.0.4): ์์ปค 3๊ฐ ๋์ ์คํ ์ ๋ถ exit 0, ๊ฒ์ดํธ 9/9 ํต๊ณผ, ๋น-TTY ํ์ดํ์์ stdout ์ ์ โ agy ๊ฐ์ ๋๋ฝ ๋ฒ๊ทธ ์์.
- **์๋๋ฐ์ค๊ฐ ๊ธฐ๋ณธ off**๋ผ `--sandbox workspace`๋ก ์กฐ์ธ๋ค (codex์ ๋ฐ๋ โ codex๋ ๊ธฐ๋ณธ ์๋๋ฐ์ค).
- **์๋ ์
๋ฐ์ดํฐ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋๋ฏ๋ก `--no-auto-update` ํ์.** ๋ฃ์ง ์์ผ๋ฉด ์์ปค ์คํ ์ค ์
๋ฐ์ดํธ๊ฐ ๋ผ์ด๋ ๋ค.
- grok ์์ฒด๋ `--json-schema`๋ก ๊ตฌ์กฐํ ์ถ๋ ฅ์ ์ง์ํ์ง๋ง ๊ฒฐ๊ณผ๊ฐ stdout JSON์ `.text`์ **๋ฌธ์์ด๋ก ์ค์ฒฉ**๋๋ฏ๋ก ํ์ผ๋ก ๋จ์ด์ง์ง ์๋๋ค (์ธ๋ฉ ํ์ โ ๋ฏธ๊ตฌํ).
- ๋ชจ๋ธ์ grok ๊ธฐ๋ณธ๊ฐ(`grok-4.6`) ์ฌ์ฉ. `grok-code-fast-1`์ 2026-08-15 ํ๊ธฐ๋์์ผ๋ฏ๋ก ์ฐ์ง ์๋๋ค.
- ์ธ์ฆ: `grok login`(๊ตฌ๋
์ธ์
, `XAI_API_KEY` ๋ถํ์) ๋๋ `XAI_API_KEY` ํ๊ฒฝ๋ณ์.
- โ ๏ธ **PATH ์ฃผ์**: `~/.grok/bin/grok`์ ์ค์น๋๊ณ ์
ธ ํ๋กํ์ ํตํด PATH์ ๋ค์ด๊ฐ๋ค. ๋น๋ํํ ์
ธ์์ `command -v grok`์ด ์คํจํ๋ฉด ์ ๋๊ฒฝ๋ก(`$HOME/.grok/bin/grok`)๋ก ์ง์ ํ๋ค. npm ์๋ํํฐ `@vibe-kit/grok-cli`๊ฐ ๊ฐ์ `grok` ์ด๋ฆ์ ์ฐ๋ฏ๋ก ์ด๋ ์ชฝ์ด ์กํ๋์ง ํ์ธํ๋ค.
- ์ค์น: `curl -fsSL https://x.ai/cli/install.sh | bash` (์๊ฒฉ ์คํฌ๋ฆฝํธ ์ฆ์ ์คํ โ ๋ด์ฉ์ ๋จผ์ ํ์ธํ๋ ค๋ฉด `-o`๋ก ๋ฐ์์ ์ฝ๊ณ ์คํ).
**Cursor CLI(`cursor-agent`)** โ Cursor Ultra ๊ตฌ๋
์์ปค (Composer/Codex/OpusยทFable๊ธ ๋ฉํฐ๋ชจ๋ธ):
```text
cursor-agent -p --force --output-format text "<๋ธ๋ฆฌํ>"
# ๋ชจ๋ธ ํ ์: cursor-agent -p --force --model composer-2.5 --output-format text "<๋ธ๋ฆฌํ>"
```
- **๋ชจ๋ธ ์ ํ์ด ์ต๋ ๊ฐ์ **: `--model`๋ก `composer-2.5`(๋น ๋ฅธ ํธ์ง), `gpt-5.3-codex-*` ๊ณ์ด, `claude-opus-5-thinking-high` / `claude-fable-5-thinking-high`๊น์ง ์ง์ ๊ฐ๋ฅ โ ๋ค๋ฅธ ๊ตฌ๋
์ฟผํฐ๊ฐ ์์ง๋์ ๋ Cursor ๊ตฌ๋
์ผ๋ก ์๋ ์ฐํ ๊ฒฝ๋ก๊ฐ ๋๋ค. ๋ชฉ๋ก: `cursor-agent --list-models`.
- `-p`(print) + `--output-format text` ํ์.
Auf GitHub ansehen