# Claude Code Skills
Robin์ด ๋ง๋ค์ด ์ฌ์ฉํ๋ Claude Code Skill ๋ชจ์์
๋๋ค.
์ ํ์ฉํด์ฃผ์ธ์!
## Skills ๋ชฉ๋ก
| ์คํฌ | ์ค๋ช
| ํธ๋ฆฌ๊ฑฐ ์์ |
|------|------|------------|
| [spring-boot-init](#spring-boot-init) | Spring Boot ํ๋ก์ ํธ ์ด๊ธฐ ์์ฑ | `์คํ๋ง ๋ถํธ ํ๋ก์ ํธ ๋ง๋ค์ด์ค` |
| [a4-print-design](#a4-print-design) | ํ๋ฐฑ A4 ์ธ์๋ฌผ ๋์์ธ | `์ํฌ์ต ํธ๋์์ ๋ง๋ค์ด์ค` |
| [hwp](#hwp) | HWP/HWPX ํ์ผ ์ฝ๊ธฐยท์ฐ๊ธฐยท๋ณํ | `์ด hwp ํ์ผ ๋งํฌ๋ค์ด์ผ๋ก ๋ณํํด์ค` |
| [gemini-3-pro-imagegen](#gemini-3-pro-imagegen) | Google Gemini ์ด๋ฏธ์ง ์์ฑ/ํธ์ง | `AI ์ด๋ฏธ์ง ์์ฑํด์ค` |
| [gpt-image2](#gpt-image2) | OpenAI GPT Image 2 ์ด๋ฏธ์ง ์์ฑ/ํธ์ง | `gpt-image-2๋ก ๋ก๊ณ ๋ง๋ค์ด์ค` |
| [agent-research](#agent-research) | ์์ด์ ํธ ํ ๊ธฐ๋ฐ ์ข
ํฉ ๋ฆฌ์์น | `~์ ๋ํด ์กฐ์ฌํด์ค` |
| [agent-1on1](#agent-1on1) | ์์ด์ ํธ 1:1 ๋ํ๋ก ๊ฐ์ | `์์ด์ ํธ๋ 1on1 ํ๊ณ ์ถ์ด` |
| [agent-stat](#agent-stat) | ํธ๋ ์ ๋ฒกํฐ ๊ธฐ๋ฐ ์์ด์ ํธ ์ค๊ณยท์์ฑ | `๋ฆฌ๋ทฐ์ด ์์ด์ ํธ ๋ง๋ค์ด์ค` |
| [manpower](#manpower) | AI ํ๋กฌํํ
์คํฌ ๋ ๋ฒจ ์ธก์ | `/manpower` |
| [paper-trending](#paper-trending) | HuggingFace ํธ๋ ๋ฉ ๋
ผ๋ฌธ ์์ฝ | `ํธ๋ ๋ฉ ๋
ผ๋ฌธ ๋ณด์ฌ์ค` |
| [worklog](#worklog) | Claude Code ์ธ์
๊ธฐ๋ฐ ์ํฌ๋ก๊ทธ | `/worklog` |
| [project-spec-writer](#project-spec-writer) | XML ๊ธฐ๋ฐ ํ๋ก์ ํธยท๊ธฐ๋ฅ ์คํ(PRD)ยท๋น๋ ํ๋ ์์ฑ | `ํ๋ก์ ํธ ์คํ ์จ์ค` |
| [codex-cli](#codex-cli) | OpenAI Codex CLI(`codex exec`) ํธ์ถยท๋ ๋ฒ์งธ ์๊ฒฌยท์ฝ๋ ๋ฆฌ๋ทฐ | `codex ๋ก ํ ๋ฒ ๋ ๋ด์ค` |
| [codex-image](#codex-image) | Codex CLI ๋ด์ฅ `image_generation` ํด๋ก N์ฅ ๋ณ๋ ฌ ์ด๋ฏธ์ง ์์ฑ | `codex ๋ก ์ด๋ฏธ์ง 5์ฅ ๋์์` |
| [power-crawl](#power-crawl) | Playwright MCP ๊ธฐ๋ฐ ๊ณ ์ ์น ๋ฐ์ดํฐ ์์งยทํฌ๋กค๋ง | `์ด ์ฌ์ดํธ ์ ์ฒด ํ์ด์ง ๋๋ฉด์ ๊ธ์ด์` |
| [photoreal](#photoreal) | AI ํฐ ์ ๋๋ ์ค์ฌ ์ธ๋ฌผ ์ฌ์ง ํ๋กฌํํธ ์ค๊ณ | `AI ํฐ ์ ๋๊ฒ ์ค์ฌ ์ฌ์ง ๋ง๋ค์ด์ค` |
---
### spring-boot-init
Spring Boot ํ๋ก์ ํธ๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํ๋ ์คํฌ์
๋๋ค.
- start.spring.io API๋ฅผ ํ์ฉํ์ฌ ํ๋ก์ ํธ ์์ฑ
- ๋ค์ํ ํ๋ฆฌ์
์ง์: REST API, ์น ์ ํ๋ฆฌ์ผ์ด์
, AI ์ ํ๋ฆฌ์ผ์ด์
, ๋ฐฐ์น ์ฒ๋ฆฌ, ๋ง์ดํฌ๋ก์๋น์ค
- Spring AI (OpenAI, Claude, Ollama ๋ฑ) ํตํฉ ์ง์
- Java/Kotlin ์ ํ ๊ฐ๋ฅ
**์ฌ์ฉ ์์:**
```
/spring-boot-init ์คํฌ์ ์ด์ฉํด์ @API_SPEC.md ๋ฌธ์๋ฅผ ํ ๋๋ก api ์๋ฒ ๊ฐ๋ฐํด์ค
```
---
### a4-print-design
ํ๋ฐฑ ํ๋ฆฐํฐ๋ก ์ถ๋ ฅํด๋ ๊ฐ๋
์ฑ์ด ์ข์ A4 ๋ฌธ์๋ฅผ ์ ๋ฌธ์ ์ธ ๋์์ธ ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ผ ์์ฑํฉ๋๋ค.
- ๋ธ๋/ํ์ดํธ/๊ทธ๋ ์ด๋ง ์ฌ์ฉํ๋ ์ธ์ ์ต์ ํ ๋์์ธ
- 2์ด ๊ทธ๋ฆฌ๋, ์น์
๋ฒํธ, ์ฒดํฌ๋ฆฌ์คํธ ๋ฑ ๋ค์ํ ๋ ์ด์์ ํจํด
- HTML artifact ๊ธฐ๋ณธ ์ถ๋ ฅ (๋ธ๋ผ์ฐ์ ์์ Ctrl+P๋ก ์ธ์)
- ์์ฒญ ์ docx, PDF ๋ณํ ์ง์
**์ ํฉํ ์ฉ๋:** ์ํฌ์ต ํธ๋์์, ๊ต์ก ์๋ฃ, ์ํฌ์ํธ, ์ฒดํฌ๋ฆฌ์คํธ, ํ์ ๋ฌธ์
---
### hwp
ํ๊ธ(HWP/HWPX) ํ์ผ์ ์ฒ๋ฆฌํ๋ ์คํฌ์
๋๋ค.
- HWP ๋ฐ์ด๋๋ฆฌ(OLE2/CFB) ๋ฐ HWPX(ZIP/XML) ํฌ๋งท ์ง์
- ํ
์คํธ, ํ
์ด๋ธ, ์ด๋ฏธ์ง ์ถ์ถ
- ๋งํฌ๋ค์ด ๋ฑ ๋ค๋ฅธ ํฌ๋งท์ผ๋ก ๋ณํ
- HWPX ํ์ผ ์์ฑ (๋งํฌ๋ค์ด/ํ
์คํธ โ HWPX)
- Node.js/TypeScript ๋ฐ Python ์ฝ๋ ๋ ์ํผ ์ ๊ณต
---
### gemini-3-pro-imagegen
Google Gemini ๋ชจ๋ธ์ ์ฌ์ฉํ ๊ณ ํ์ง ์ด๋ฏธ์ง ์์ฑ ๋ฐ ํธ์ง ์คํฌ์
๋๋ค.
- **Nano Banana Pro** (`gemini-3-pro-image-preview`): ๊ณ ํ์ง, 4K, ํ
์คํธ ๋ ๋๋ง
- **Nano Banana 2** (`gemini-3.1-flash-image-preview`): Flash ์๋ + Pro ํ์ง
- ํ
์คํธโ์ด๋ฏธ์ง ์์ฑ, ๊ธฐ์กด ์ด๋ฏธ์ง ํธ์ง, ๋ฉํฐํด ํธ์ง
- Google ๊ฒ์ ๊ทธ๋ผ์ด๋ฉ์ผ๋ก ์ค์๊ฐ ์ ๋ณด ๊ธฐ๋ฐ ์ด๋ฏธ์ง ์์ฑ
- ๋ค์ํ ๋น์จ(1:1, 16:9, 9:16 ๋ฑ) ๋ฐ ํด์๋(1K~4K) ์ง์
---
### gpt-image2
OpenAI `gpt-image-2` ๋ชจ๋ธ์ ์ฌ์ฉํ ๊ณ ํ์ง ์ด๋ฏธ์ง ์์ฑ ๋ฐ ํธ์ง ์คํฌ์
๋๋ค.
- ๋ชจ๋ธ์ `gpt-image-2` ๋ก ๊ณ ์ (์ต๋ 3840px ํ ๋ณ, 2K/4K ์์ฐ ์์ฑ ๊ฐ๋ฅ)
- Image API ๊ธฐ๋ฐ ํ
์คํธโ์ด๋ฏธ์ง, ๋จ์ผ/๋ง์คํน ํธ์ง, ๋ฉํฐ ๋ ํผ๋ฐ์ค ํฉ์ฑ
- Responses API ๋ฉํฐํด ํธ์ง (`previous_response_id` ๋ก ์ด์ด์ ์์ )
- ๋ถ๋ถ ์ด๋ฏธ์ง ์คํธ๋ฆฌ๋ฐ(`partial_images`) ์ง์
- ์ฌ์ค์ ์ฌ์งยทํ
์คํธ ๋ ๋๋งยท์ธ๋ฌผยท๋ก๊ณ ๋ณด์กด๋ ฅ ๊ฐํ (`background="transparent"` ๋ฏธ์ง์)
- CLI ํฌํผ `scripts/generate_image.py` ์ ๊ณต
---
### agent-research
์์ด์ ํธ ํ์ ๊ตฌ์ฑํ์ฌ ์ข
ํฉ ๋ฆฌ์์น ๋ณด๊ณ ์๋ฅผ ์์ฑํ๋ ์คํฌ์
๋๋ค.
- ์กฐ์ฌ ๋์์ ๋ถ์ํ์ฌ 11๊ฐ ์ ๋ฌธ๊ฐ ํ์์ ์ต์ ์ ์์ด์ ํธ๋ฅผ ๋์ ์ผ๋ก ์ ํยท๊ตฌ์ฑ
- 3๋จ๊ณ ์กฐ์ฌ ๊น์ด: quick(2~3๋ช
) / standard(3~4๋ช
) / deep(4~6๋ช
)
- ์์ด์ ํธ ๊ฐ ๊ต์ฐจ ๊ณต์ ํ๋กํ ์ฝ๋ก ์ ๋ณด ํ์ง ํฅ์
- ๊ต์ฐจ ๊ฒ์ฆ, ๊ฐญ ๋ถ์, ๋ณด์ถฉ ์กฐ์ฌ๋ฅผ ๊ฑฐ์ณ ๋ถ์์ ์ข
ํฉ ๋ณด๊ณ ์ ์ฐ์ถ
- ์ ๋ณด ์ ๋ขฐ๋ ๋ฑ๊ธ(ํ์ธ๋จ/๋ณด๋๋จ/๋ฏธํ์ธ/์์ถฉ) ํ์
**์ ๋ฌธ๊ฐ ํ:** ๊ณต์ ์ ๋ณด, ๋ฏธ๋์ด, ์ปค๋ฎค๋ํฐ, ํ์ , ์ฌ๋ฌด, ์ฐ์
ยท๊ฒฝ์, ํํ, ๊ฒฝ๋ ฅยท๋ฐฐ๊ฒฝ, ์
์ ยท์ ์, ๊ธฐ์ ์ฌ์ธต, ๊ท์ ยท์ ์ฑ
---
### agent-1on1
ํ๋ค์ค ์์ด์ ํธ์ 1:1 ๋ํ๋ฅผ ํตํด ์์ด์ ํธ ์ ์๋ฅผ ์ ๊ฒํ๊ณ ๊ฐ์ ํ๋ ์คํฌ์
๋๋ค.
- Claude๊ฐ ์ ํํ ์์ด์ ํธ๋ก 1์ธ์นญ ๋ชฐ์
(roleplay)ํ์ฌ ๋ํ
- ์ญํ ๋ช
ํ์ฑ, ์คํจ ๋ณต๊ธฐ, ์ฃ์ง ์ผ์ด์ค ๋ฐ๊ตด, ํ์
๊ฐ์ ๋ฑ์ ์ ๊ฒ
- ๋ํ์์ ๋์ถ๋ ๊ฐ์ ์ ์ ์์ด์ ํธ ์ ์ ํ์ผ(`.claude/agents/*.md`)์ ์ง์ ๋ฐ์
- ๊ธฐ์กด ๋ด์ฉ ๋ณด์กด ์์น โ ์ถ๊ฐยท์ ์ ยท๊ฐํ ์ฐ์ , ์ญ์ ๋ ๋ช
์์ ์์ฒญ ์์๋ง
---
### agent-stat
์์ด์ ํธ๋ฅผ ๋ง์ฐํ ์ฐ๋ฌธ ํ๋กฌํํธ ๋์ **์คํฏ์ ์ฐ๋ฏ์ด** 3๊ณ์ธต ๊ตฌ์กฐ(Role ยท Trait Vector ยท Policy)๋ก ์ค๊ณยท์์ฑํ๋ ์คํฌ์
๋๋ค.
- **3๊ณ์ธต ๋ชจ๋ธ**: Role(๋ฌด์์) โ Trait Vector(์ด๋ค ๋ฐฉ์์ผ๋ก) โ Policy(์ค์ ํ๋)๋ก ์์์ ์๋๋ก ์ ๋
- **8์ถ ํธ๋ ์ ๋ฒกํฐ**(๊ฐ 1~5): ์ฃผ๋์ฑยท๊ทผ๊ฑฐ์ฑยท๊ณํ์ฑยท์ฌํ์ฑยทํ๋ ฅ์ฑยท์ํ์ฑํฅยท๋๊ตฌ์ฑํฅยท๋ฐ์ฑ์ฑ
- ๊ฐ ์ถ์ ๊ฐ์ ๊ตฌ์ฒด์ ํ๋ ์ ์ฑ
์ผ๋ก ๋ฒ์ญํ๊ณ , ์ ์ฑ
์ค๋ง๋ค ์ถ์ฒ ํธ๋ ์ ํ๊ทธ(์: `(๊ทผ๊ฑฐ์ฑ5)`)๋ก ์ถ์ ์ฑ ๋ถ์ฌ
- ์ํคํ์
ํ๋ฆฌ์
(๋ฆฌ๋ทฐ์ดยท๋ฆฌ์์ฒยท๋น๋ยท์ฝ์นยท์กฐ์จ์ยท๋ถ์๊ฐ ๋ฑ)์์ ์ถ๋ฐํด ๋ฏธ์ธ์กฐ์
- ์ ํฉ์ฑ ์ ๊ฒ(์๊ทน ์ถฉ๋ยท์์น ์กฐํฉยท์ฌ-5 ๊ฒฝ๊ณ )๊ณผ ์ ์ฑ
์ถฉ๋ ํด์(์์ > ์ ํ์ฑ > ์ฃผ๋์ฑ) ๋ด์ฅ
- ๊ฒฐ๊ณผ๋ฌผ์ `.claude/agents/{name}.md` ์ ์ ํ์ผ(์คํฏ ์ํธ ํ ํฌํจ)
- `references/trait-policy-map.md`(์ถ๋ณ ์ ์ฑ
์ฌ์ ), `references/archetypes.md`(ํ๋ฆฌ์
), `assets/agent-template.md` ํฌํจ
**๋ค๋ฅธ ์คํฌ๊ณผ์ ๊ฒฝ๊ณ:** ์์ด์ ํธ 1๋ช
์ ์๋์ ์ผ๋ก ์ค๊ณยท์์ฑํ๋ฉด ์ด ์คํฌ, ํ ์ ์ฒด ์ํคํ
์ฒ+์ค์ผ์คํธ๋ ์ดํฐ๊น์ง ๊ตฌ์ฑํ๋ฉด `/harness:harness`, ์ด๋ฏธ ์๋ ์์ด์ ํธ๋ฅผ ๋ํ๋ก ์ ๊ฒยท๊ฐ์ ํ๋ฉด [`agent-1on1`](#agent-1on1).
---
### manpower
Claude Code ์ธ์
๋ก๊ทธ์์ ์ฌ์ฉ์์ AI ํ๋กฌํํ
์คํฌ ๋ ๋ฒจ์ ์ธก์ ํฉ๋๋ค.
- 8๊ฐ ์ญ๋ ์ถ ๋ถ์: ๋ช
ํ์ฑ, ๊ตฌ์ฒด์ฑ, ์ปจํ
์คํธ ์ ๊ณต, ์์
๋ถํด, ๋๊ตฌ ํ์ฉ, ๋ฐ๋ณต ๊ฐ์ , ์ฐฝ์์ ํ์ฉ, ํจ์จ์ฑ
- ๋ฐฉ์ฌํ ๊ทธ๋ํ๋ก ์ญ๋ ์๊ฐํ
- ์ฃผ๊ฐ ์ฑ์ฅ ์ถ์ด ์ถ์
---
### paper-trending
HuggingFace Daily Papers์์ ํธ๋ ๋ฉ ๋
ผ๋ฌธ์ ์์งํ์ฌ ํ์ค ์์ฝ ๋ฆฌํฌํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ํน์ ๋ ์ง, ์ฃผ์ฐจ, ์ ๋จ์๋ก ๋
ผ๋ฌธ ์กฐํ
- ํ๊ตญ์ด ํ์ค ์์ฝ ํ
์ด๋ธ ์ถ๋ ฅ
- ์ ํ์ ์ผ๋ก ๋
ผ๋ฌธ PDF ๋ค์ด๋ก๋ (์์ N๊ฐ ๋๋ ์ ์ฒด)
- arxiv HTML ๋ฒ์ ์ ์ฝ์ด ์์ธ ๋ถ์ ๊ฐ๋ฅ
---
### worklog
์ค๋ ์งํํ ๋ชจ๋ Claude Code ์ธ์
์ ๋ถ์ํ์ฌ ์ฃผ๊ฐ ์ํฌ๋ก๊ทธ๋ก ์ ๋ฆฌํฉ๋๋ค.
- `~/.claude/projects/` ํ์์ JSONL ์ธ์
๋ก๊ทธ๋ฅผ ์๋ ์์ง
- ์ค๋(00์~ํ์ฌ) ์งํํ ์ ์ฒด ์ธ์
๋ถ์
- ์ฃผ๊ฐ ์ํฌ๋ก๊ทธ ๋งํฌ๋ค์ด ํ์ผ(`YYYY-WXX.md`) ์์ฑ
---
### project-spec-writer
์ํํธ์จ์ด ํ๋ก์ ํธ์ ๋น๋ ํ๋ยท๊ธฐ์ ์คํ(PRD)์ XML ๊ตฌ์กฐ์ ๋งํฌ๋ค์ด ๋ฌธ์๋ก ์์ฑํ๋ ์คํฌ์
๋๋ค.
- **3๊ฐ์ง ๋ชจ๋** โ ์ ๊ท ํ๋ก์ ํธ ์คํ / ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค ๊ธฐ๋ฅ ์คํ / ๊ธฐ์กด ์คํ ์ ์
- `<project_specification>` ๋ฃจํธ ํ๊ทธ ๊ธฐ๋ฐ 27๊ฐ ์น์
ํ์คํ (overview, assumptions, technology_stack, core_data_entities, route_definitions, pages_and_interfaces, deployment_and_operations ๋ฑ)
- ํ๋ก์ ํธ ์ ํ๋ณ ์น์
๊ต์ฒด โ ๋ฐฑ์๋๋ `api_endpoints`, CLI ๋ `commands_and_flags`, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ `public_api`
- ์์์ hex(`#1B4332`), ์น์๋ px, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฒ์ ๊น์ง โ ๋ชจํธํจ ์๋ ๊ตฌ์ฒด์ ์ฌ์ ๊ฐ์
- ์คํ ๋ณธ๋ฌธ์ ํ๊ตญ์ด ๊ธฐ๋ณธ, XML ํ๊ทธยทํ๋๋ช
ยท๊ฒฝ๋กยท๋ช
๋ น์ด๋ ์๋ฌธ ์ ์ง
- ์ถ์ธก์ `<assumptions>`, ์ฌ์ฉ์ ๊ฒฐ์ ์ด ํ์ํ ์ฌํญ์ `<open_questions>` ๋ก ๋ถ๋ฆฌํด ๋ช
์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ์ค์ ํ์ธ ํ ๊ธฐ์ฌ โ ๋ฏธ๊ฒ์ฆ ๋ง์ด๋ ๋ฒ์ ๊ธฐ์
๊ธ์ง
- `scripts/validate_spec.py` ๋ก ๊ตฌ์กฐยท์ผ๊ด์ฑ ๊ธฐ๊ณ ๊ฒ์ฆ ํ ๋ฉํ
**์ฐธ์กฐ ๋ฌธ์:** `references/xml-schema.md`(์คํค๋ง), `references/example-spec.md`(์น์ฑ ์์), `references/example-api-spec.md`(๋ฐฑ์๋ API ์์), `references/feature-spec-mode.md`(๊ธฐ๋ฅ ์คํ ๋ชจ๋)
**์ ํฉํ ์ฉ๋:** ์ ๊ท ์ฑ ๋น๋ ํ๋, ๊ธฐ์กด ์๋น์ค ๊ธฐ๋ฅ ์คํ, ๊ธฐ์กด ์คํ ์ ์ ยทํ์ฅ, AI ์์ด์ ํธ์๊ฒ ์์ํ ๊ฐ๋ฐ ๋ช
์ธ ์์ฑ
---
### codex-cli
OpenAI Codex CLI(`codex`)๋ฅผ Claude Code ์ธ์
์์์ ๋น๋ํํ์ผ๋ก ํธ์ถํ๊ธฐ ์ํ ์คํฌ์
๋๋ค.
- `codex exec` ์ค์ฌ โ TUI ํํผ, ๋ชจ๋ ํธ์ถ์ `--sandbox`(๊ธฐ๋ณธ `read-only`) ๋ช
์
- ๋ ๋ฒ์งธ ์๊ฒฌ(second opinion) ํจํด: Claude ๊ฒฐ๋ก + ์๋ณธ ์ปจํ
์คํธ๋ฅผ ๊ฐ์ด ๋๊ฒจ OpenAI ๋ชจ๋ธ๋ก ๋
๋ฆฝ ํ๋จ
- `codex review` ๋ก ๋ธ๋์น/์ปค๋ฐ/์ธ์ปค๋ฐ ๋น๋ํํ ์ฝ๋ ๋ฆฌ๋ทฐ
- `--json` ์ด๋ฒคํธ ์คํธ๋ฆผ + `--output-last-message` ๋ถ๋ฆฌ, `--output-schema` ๋ก ๊ตฌ์กฐํ ์ถ๋ ฅ ๊ฐ์
- ๋ชจ๋ธยทํ๋กํ์ผ ์ ํ(`-m`, `-p`, `--oss`), MCP ์๋ฒ ๋ฑ๋ก(`codex mcp`), ์ธ์
์ฌ๊ฐ(`codex resume`)
- ์๋๋ฐ์ค ๊ฐ์ด๋์ ์ํฐํจํด(์: `codex exec` ์ `--ask-for-approval` ๋ถ์ฐฉ ๊ธ์ง)๊น์ง ๋ง๋ผ
**OpenAI ๊ณต์ [`codex-plugin-cc`](https://github.com/openai/codex-plugin-cc) ์์ ์ฐจ์ด.** `codex-plugin-cc` ๋ Claude Code ํ๋ฌ๊ทธ์ธ์ผ๋ก, `/codex:review` ยท `/codex:adversarial-review` ยท `/codex:rescue` ยท `/codex:status` ๊ฐ์ **๊ณ ์์ค ์ฌ๋์ ๋ช
๋ น**์ ์ ๊ณตํฉ๋๋ค(์ฝ๋ ๋ฆฌ๋ทฐยทํ์คํฌ ์์ ์ค์ฌ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์ก ๊ด๋ฆฌ ํฌํจ). ๋ฐ๋ฉด ์ด `codex-cli` ์คํฌ์ Claude ๊ฐ `codex` ๋ฐ์ด๋๋ฆฌ๋ฅผ **์ง์ ํธ์ถ**ํ ๋ ํ์ํ ํ๋๊ทธยท์๋๋ฐ์คยท์ถ๋ ฅ ์บก์ฒยทMCPยทํ๋กํ์ผ๊น์ง **์ ์์ค ์ฌ์ฉ๋ฒ ์ ๋ฐ**์ ๊ฐ๋ฅด์น๋ ๊ฐ์ด๋์
๋๋ค. ์ฆ, ์ ํํ๋ ๋ฆฌ๋ทฐยท์์ ์ํฌํ๋ก๊ฐ ํ์ํ๋ฉด ๊ณต์ ํ๋ฌ๊ทธ์ธ์ด ๋น ๋ฅด๊ณ , JSON ์๋ํยท์ถ๋ ฅ ์คํค๋งยท์์ ํ๋กฌํํธยท์ธ์
์ฌ๊ฐยท๋ก์ปฌ OSS ๋ชจ๋ธ ๊ฐ์ ์์ ๋๊ฐ ํ์ํ๋ฉด ์ด ์คํฌ์ด ์ ํฉํฉ๋๋ค. ๋์ ์ถฉ๋ํ์ง ์์ผ๋ฉฐ ํจ๊ป ์จ๋ ๋ฉ๋๋ค.
---
### codex-image
Codex CLI ์ ๋ด์ฅ `image_generation` ํด๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ์คํฌ์
๋๋ค. ํต์ฌ์ **์ต๋ 5์ฅ ๋์ ๋ณ๋ ฌ ์์ฑ**.
- ChatGPT OAuth ์ธ์ฆ๋ง์ผ๋ก ๋์ โ ๋ณ๋ `OPENAI_API_KEY` ยท Python SDK ยท curl ๋ถํ์
- `codex exec` ๋ฅผ `run_in_background: true` ๋ก N๊ฐ ๋์ ์ง์ ํ ๋ณ๋ ฌ (์ค์ธก: 5์ฅ ๋์ = ์ง๋ ฌ ๋๋น ์ฝ 2.85๋ฐฐ)
- 5๊ฐ์ฉ ๋ฌถ์ด ์์ฐจ ์คํํ๋ ๋ฐฐ์น ํฌํผ `scripts/codex_imagegen_batch.sh` ์ ๊ณต
- ์์
ํด๋์ PNG ์๋ ์ ์ฅ, ๊ฒฐ๊ณผ ๊ฒ์ฆ ํจํด ํฌํจ
---
### power-crawl
Playwright MCP ๋ฅผ e2e ํ
์คํธ ๋๊ตฌ๊ฐ ์๋๋ผ **๊ณ ์ ๋ฐ์ดํฐ ์์ง ์์ง**์ผ๋ก ์ฐ๋ ํฌ๋กค๋ง ์คํฌ์
๋๋ค.
- **์์ง ์ฌ๋ค๋ฆฌ**(L0 ๋ด๋ถ JSON API โ L1 ์๋ฒ ๋๋ JSON โ L2 DOM ์ถ์ถ โ L3 ์ค์ ๋ ๋)๋ฅผ ์์์๋ถํฐ ์๋ํด ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ ํ
- `browser_network_requests` ๋ก ํ์ด์ง ๋ค์ ์จ์ JSON API ๋ฅผ ๋ฐ๊ตด โ ์ฐพ์ผ๋ฉด ์์ฒ ๊ฑด๋ ํธ์ถ ๋ช ๋ฒ์ ์ข
๋ฃ
- ํ์ด์ง๋ค์ด์
ยท๋ฌดํ์คํฌ๋กค์ **๋จ์ผ ๋๊ตฌ ํธ์ถ ์์์ ๋ฃจํ**๋ก ์ฒ๋ฆฌ, ์์ธ ํฌ์์์ ์์ปค ํ๋ก ๋์์ฑ 8~16
- ์์ง ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ ์ปจํ
์คํธ์ ํต๊ณผ์ํค์ง ์๊ณ `filename` ์ผ๋ก **๊ณง๋ฐ๋ก ํ์ผ ์ ์ฅ**(JSONL/CSV)
- `scripts/finalize.py` ๋ก ์ค๋ณต ์ ๊ฑฐ + **ํ๋๋ณ ์ฑ์๋ฅ ** ์ฐ์ถ โ ์กฐ์ฉํ ์
๋ ํฐ ์คํจ ํ์ง
- ์ฌํ ๊ฐ๋ฅํ `crawl-report.md`(์์ง ๊ฒฝ๋กยท์คํค๋งยท๋๋ฝยท์ ์ฝ) ์ฐ์ถ
- ๋ก๊ทธ์ธ์ ์ฌ์ฉ์ ๋ณธ์ธ์ด ์ํ, 2FAยท์บก์ฐจยท๋ด ์ฐจ๋จ ์ฐํ๋ ํ์ง ์์
- `references/recipes.md`(์ํฉ๋ณ ์ฝ๋ ๋ ์ํผ), `references/mechanics.md`(๋๊ตฌ ์ค์ธก ๋์), `references/troubleshooting.md` ํฌํจ
**์ ํฉํ ์ฉ๋:** ์ํยท๊ฐ๊ฒฉ ์์ง, ์ฑ์ฉ๊ณต๊ณ ยท๋ฆฌ๋ทฐ ๋ชจ๋ํฐ๋ง, ๊ฒฝ์์ฌ ๋ฐ์ดํฐ ์์ง, ๋ก๊ทธ์ธ ํ ๋ด ๋ฐ์ดํฐ ๋ฐฑ์
**๋ฒ์ ๋ฐ:** ๋จ์ผ ํ์ด์ง 1ํ ์กฐํยท์์ฝ(WebFetch ๋ก ์ถฉ๋ถ), e2e ํ
์คํธยทQA ์๋ํ
---
### photoreal
์ด๋ฏธ์ง ๋ชจ๋ธ์ด ์ฌ๋์ ๊ทธ๋ฆด ๋ ๊ธฐ๋ณธ์ผ๋ก ๋๋ฆฌ๋ ๊ด๊ณ ยทํ๋ณด์ ์๋ฒฝํจ์ ์์ํด, ํฐ์ผ๋ก ์ฐ์ ์ค๋
์ฒ๋ผ ๋ณด์ด๋ ํ๋กฌํํธ๋ฅผ ๋ง๋๋ ์คํฌ์
๋๋ค.
- ์ค์ฌ๊ฐ์ ๋ํ
์ผ์ ๋ํด์ ์ป๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ธ์ ๊ธฐ๋ณธ ๋๋ฆผ์ ๊น์์ ์ป๋๋ค๋ ์ ์ ๋ก ์ค๊ณ
- **๋ค์ฏ ๊ฐ ์ธต**: L1 ์ถ์ฒ(๋๊ฐ ์ ์ฐ์๋) โ L2 ๋นยทํ์ง โ L3 ๊ตฌ๋ยท์๊ฐ โ L4 ํด๋ถํ(์ผ๊ตดยทํผ๋ถยท์ยท๋จธ๋ฆฌ์นด๋ฝ) โ L5 ๋ฏธ์ ์ํ์
- ๋ชจ๋ธ์ด ํ๋ฆฌ๊ธฐ ์ฌ์ด ๋ถ์ ๋ฌธ(`๋งค๋๋ฝ๊ฒ ํ์ง ๋ง`)์ ๋จ๊ธธ ๊ฒ์ ์ง๋ชฉํ๋ ๊ธ์ ๋ฌธ(`๋ชจ๊ณต๊ณผ ์ํธ์ด ๋ณด์ด๋ ํผ๋ถ`)์ผ๋ก ๋ฐ๊ฟ ์ฐ๋ ๋์ํ
- L5 ๋ฏธ์ ์ํ์ ์ ๊ฐ๋ ์ธ ๋จ๊ณ(์ฝยท์คยท์์)๋ก ์กฐ์ โ ๋นผ๋ฉด ์ด๋ผํด์ง๊ณ ์ธ๊ฒ ์ฐ๋ฉด ๋ฐฐ์ฐ ์ผ๊ตด๋ก ๋๋์๊ฐ๋ค
- ์์ ํด๋ถํ๊ณผ ๋์ ๋
ผ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ง์ โ ์๊ฐ๋ฝ ๊ฐ์๊ฐ ๋ง์๋ ์นผ๋ ์์ ์์ ์ซ ํธ ์์ธ๊ฐ ๋์จ๋ค
- ๋์ด ์ง์ ์ปท๊ณผ ์ฌ๋ฌ ๋ช
๋์ค๋ ์ปท์ ๋ณ๋ ์ฒ๋ฆฌ โ ํผ๋ถ ์ง๊ฐ ์ง์๊ฐ ๋์ด๋ฅผ ์๋ก ๋ฏธ๋ ๋ฌธ์ , ์์ ์ ์ฌ๋ ์๋งํผ ๋๋๋ ๊ท์น
- ์ยท๋๋์ ํ์ด๋ผ์ดํธยท๊ธ์ยท๋์ดยทํผ๋ถ ๊ท ์ง๋ ๋ฑ ์ดํ ๊ฐ์ง ์์ฑ ํ ์ ๊ฒ ํญ๋ชฉ. ๊ฑธ๋ฆฐ ํญ๋ชฉ๋ง ๊ธ์ ๋ฌธ์ผ๋ก ๋ณด๊ฐํด ์ฌ์์ฑ
- ๊ฐ์ ํ๋กฌํํธ๋ ์ฅ๋ง๋ค ํธ์ฐจ๊ฐ ํฌ๋ฏ๋ก 3~5์ฅ ๋ณ๋ ฌ ์์ฑ์ ๊ธฐ๋ณธ ์ด์ฉ์ผ๋ก ์ก์. ๋ณํ์ ์ํฉ โ ์ดฌ์ ์์น โ ๊ฑฐ๋ฆฌ โ ์กฐ๋ช
์์ผ๋ก ํฌ๊ฒ ๊ฐ๋ฆฌ๋ฏ๋ก ์กฐ๋ช
๋ง ๋๋ฆฌ์ง ์์
- `scripts/build_prompt.py` ๋ก ์ฅ๋ฉดยท์์ธ๋ยท์
์นด ์ฌ๋ถยท์ธ์์(`--group`)ยท๋ฏธ์ ๊ฐ๋(`--charm`)ยท๋์ด ๊ณ ์ ยท์ธ์ด๋ฅผ ์ง์ ํด ๋ณํ N๊ฐ ํ๋กฌํํธ๋ฅผ ํ ๋ฒ์ ๋ฝ์
- `references/directives.md`(์๋ณธ ์ง์๋ฌธ 20๊ฐ์ ์๋ฌธ ๋์), `references/scenes.md`(ํ๊ตญยท์ผ๋ณธยท๋ฏธ๊ตญ ๋ํ
์ผ, ์ํฉ ํ๋ฆฌ์
) ํฌํจ
**๋ค๋ฅธ ์คํฌ๊ณผ์ ๊ฒฝ๊ณ:** ์ด ์คํฌ์ ํ๋กฌํํธ๋ง ๋ง๋ญ๋๋ค. ์ค์ ์ด๋ฏธ์ง ์์ฑ์ [`codex-image`](#codex-image)(๋ณ๋ ฌ N์ฅ), [`gpt-image2`](#gpt-image2), [`gemini-3-pro-imagegen`](#gemini-3-pro-imagegen)์ด ๋งก์ต๋๋ค.
**๋ฒ์ ๋ฐ:** ์ผ๋ฌ์คํธยท์ ๋ํยท3D ๋ ๋ยท๋ก๊ณ ์ฒ๋ผ ์ฌ์ง์ด ์๋ ๊ทธ๋ฆผ์ฒด, ์ค์กด ์ธ๋ฌผ์ ์ผ๊ตด ์ฌํ
---
## ์ค์น ๋ฐฉ๋ฒ
1. ์ด repository๋ฅผ cloneํฉ๋๋ค:
```bash
git clone https://github.com/revfactory/skills.git
```
2. ์ํ๋ skill ํด๋๋ฅผ `~/.claude/skills/` ๋๋ ํ ๋ฆฌ์ ๋ณต์ฌํ๊ฑฐ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์์ฑํฉ๋๋ค:
```bash
ln -s /path/to/skills/spring-boot-init ~/.claude/skills/spring-boot-init
```
## ๋ผ์ด์ ์ค
MIT License