oh-my-claudecode (OMC) ์์ ์ ๋ณต ๊ฐ์ด๋
๋ฒ์ : v4.6.0 ๊ธฐ์ค | ์ต์ข ์ ๋ฐ์ดํธ: 2026-03-04
Claude Code๋ฅผ 500% ํ์ฉํ๊ธฐ ์ํ ์ค์ ๊ฐ์ด๋.
"๋๊ตฌ๊ฐ ์๋๋ผ ๋ฌด๊ธฐ๋ค (A weapon, not a tool)"
๋ชฉ์ฐจ
- OMC๊ฐ ํ์ํ ์ด์
- ์ค์น ๋ฐ ์ด๊ธฐ ์ค์
- ํต์ฌ ๊ฐ๋ : ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ด์
- ์คํ ๋ชจ๋ ์์ ์ ๋ฆฌ
- 30์ข ์์ด์ ํธ ์นดํ๋ก๊ทธ
- ๋งค์ง ํค์๋ & ์คํฌ ๋ ํผ๋ฐ์ค
- ๋ฉ๋ชจ๋ฆฌ ์์คํ ํ์ฉ
- MCP ๋๊ตฌ ์ฌ์ธต ํ์ฉ
- ๋ฉํฐ AI ์ค์ผ์คํธ๋ ์ด์ (Claude + Gemini + Codex)
- ์ค์ ์๋๋ฆฌ์ค๋ณ ์ํฌํ๋ก์ฐ
- Hook ์์คํ ์ดํดํ๊ธฐ
- ๋น์ฉ ์ต์ ํ ์ ๋ต
- ์๋ฆผ ์์คํ ์ค์
- ํ๊ฒฝ ๋ณ์ & ์ค์ ๋ ํผ๋ฐ์ค
- ํธ๋ฌ๋ธ์ํ
- ๋น ๋ฅธ ์ฐธ์กฐ ์นด๋
1. OMC๊ฐ ํ์ํ ์ด์
์ผ๋ฐ Claude Code์ ํ๊ณ
Claude Code๋ ๊ฐ๋ ฅํ์ง๋ง ๊ธฐ๋ณธ ์ํ์์๋ ํ ๋ฒ์ ํ๋์ฉ ์์ ํฉ๋๋ค. ๋๊ท๋ชจ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊น๋๋ค.
[์ผ๋ฐ Claude Code]
์ฌ์ฉ์: "ํ์๊ฐ์
/๋ก๊ทธ์ธ/ํ๋กํ ์์ ๊ธฐ๋ฅ ์ ๋ถ ๋ง๋ค์ด์ค"
Claude: (ํผ์์ ์์ฐจ์ ์ผ๋ก...)
→ ํ์๊ฐ์
๊ตฌํ ์ค... (10๋ถ)
→ ๋ก๊ทธ์ธ ๊ตฌํ ์ค... (8๋ถ)
→ ํ๋กํ ๊ตฌํ ์ค... (7๋ถ)
→ ์ด 25๋ถ ์์, ์ค๊ฐ์ ์ปจํ
์คํธ ์์ด๋ฒ๋ฆผ
OMC๊ฐ ์์ผ๋ฉด
[OMC Claude Code]
์ฌ์ฉ์: "ralph: ํ์๊ฐ์
/๋ก๊ทธ์ธ/ํ๋กํ ์์ ๊ธฐ๋ฅ ์ ๋ถ ๋ง๋ค์ด์ค"
Claude (์งํ์):
โโโ executor #1 → ํ์๊ฐ์
API ๊ตฌํ โโ
โโโ executor #2 → ๋ก๊ทธ์ธ API ๊ตฌํ โโผโ (๋์์!)
โโโ executor #3 → ํ๋กํ API ๊ตฌํ โโ
โโโ test-engineer → ํ
์คํธ ์ฝ๋ ์์ฑ
โโโ verifier → "๋ชจ๋ ์๋ฃ๋๋์ง ํ์ธ"
→ ์ด 8๋ถ ์์, verifier๊ฐ ์๋ฃ ๋ณด์ฆ
OMC๊ฐ ์ฃผ๋ ํต์ฌ ๊ฐ์น
| ๊ฐ์น | ์ค๋ช | ์ฒด๊ฐ ํจ๊ณผ |
|---|---|---|
| ์๋ | ๋ ๋ฆฝ์ ์ธ ์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ | 3~5๋ฐฐ ๋น ๋ฆ |
| ์์ฑ๋ | verifier๊ฐ ์๋ฃ ๋ณด์ฆ | "๋ค ๋๋ค" ๋ฏฟ์ ์ ์์ |
| ๋น์ฉ | ์์ ๋์ด๋๋ณ ๋ชจ๋ธ ์๋ ์ ํ | 30~50% ์ ๊ฐ |
| ํ์ง | ์ ๋ฌธ ์์ด์ ํธ ์ญํ ๋ถ๋ฆฌ | ์ฝ๋ ํ์ง ํฅ์ |
| ์ง์์ฑ | ralph ๋ชจ๋๋ก ์๋ฃ๊น์ง ๋ฐ๋ณต | ์ค๊ฐ์ ํฌ๊ธฐ ์์ |
2. ์ค์น ๋ฐ ์ด๊ธฐ ์ค์
์ค์น (2๋จ๊ณ)
Step 1: ํ๋ฌ๊ทธ์ธ ์ค์น
Claude Code ํฐ๋ฏธ๋์์ ์คํ:
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
Step 2: ์ด๊ธฐ ์ค์
/oh-my-claudecode:omc-setup
์ค์ ๋ง๋ฒ์ฌ๊ฐ ๋ค์์ ์๋ ๊ตฌ์ฑํฉ๋๋ค.
~/.claude/CLAUDE.md— OMC ์ง์๋ฌธ (์์ด์ ํธ/์คํฌ ์ ์)~/.claude/settings.json— ํ๋ฌ๊ทธ์ธ ๋ฑ๋ก, HUD, ํ๊ฒฝ๋ณ์- Hook ์์คํ ํ์ฑํ
์ค์น ํ์ธ
/omc-doctor
์ถ๋ ฅ ์์:
OMC Health Check
โ Plugin installed: v4.6.0
โ CLAUDE.md configured
โ Hooks active (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse)
โ Team mode: CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
โ HUD statusline active
settings.json ๊ธฐ๋ณธ ๊ตฌ์กฐ
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
},
"statusLine": {
"type": "command",
"command": "node ~/.claude/hud/omc-hud.mjs"
},
"enabledPlugins": {
"oh-my-claudecode@omc": true
}
}
ํ๋ก์ ํธ ์ฒซ ์์
์ ํ๋ก์ ํธ์ ๋ค์ด๊ฐ๋ฉด ํญ์ ์ด๊ฒ๋ถํฐ:
/deepinit
OMC๊ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ๊ณ AGENTS.md ๊ณ์ธต ๋ฌธ์๋ฅผ ์๋ ์์ฑํฉ๋๋ค.
์คํ ๊ฒฐ๊ณผ:
AGENTS.md ← ๋ฃจํธ ๋ฌธ์ (์ ์ฒด ๊ตฌ์กฐ, ๊ธฐ์ ์คํ)
src/AGENTS.md ← ์์ค ๋๋ ํ ๋ฆฌ ๋ฌธ์
src/app/AGENTS.md ← App Router ๋ผ์ฐํ
๋ฌธ์
src/components/AGENTS.md ← ์ปดํฌ๋ํธ ๋ฌธ์
3. ํต์ฌ ๊ฐ๋ : ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ด์
์ํคํ ์ฒ ๊ตฌ์กฐ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ฌ์ฉ์ (VSCode / ํฐ๋ฏธ๋) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ํ๋กฌํํธ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude Code + OMC ํ๋ฌ๊ทธ์ธ โ
โ โ
โ Hook ์์คํ
CLAUDE.md ์ง์๋ฌธ โ
โ (์๋ ํธ๋ฆฌ๊ฑฐ/ํค์๋ ๊ฐ์ง) (์์ด์ ํธ/์คํฌ/๋์ ์ ์) โ
โ ↓ ↓ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ์ค์ผ์คํธ๋ ์ด์
์์ง โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโ โ โ
โ โ โ explore โ โexecutor โ โverifyโ โ โ
โ โ โ (haiku) โ โ(sonnet) โ โ(son) โ โ โ
โ โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโ โ โ
โ โ ๋ณ๋ ฌ ๋๋ ์์ฐจ ์คํ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ MCP ๋๊ตฌ ๋ฉ๋ชจ๋ฆฌ ์ํ โ
โ (LSP, AST, REPL) (notepad) (.omc/) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๋ชจ๋ธ ๋ผ์ฐํ : ๋น์ฉ ์ต์ ํ์ ํต์ฌ
OMC๋ ์์ ๋ณต์ก๋์ ๋ฐ๋ผ ์๋์ผ๋ก ๋ชจ๋ธ์ ์ ํํฉ๋๋ค.
haiku (์ ๋น์ฉ, ๋น ๋ฆ)
→ ํ์ผ ํ์, ๊ตฌ์กฐ ๋ถ์, ๋ฌธ์ ์์ฑ, ๊ฐ๋จํ ๊ฒ์
→ ์: explore, writer ์์ด์ ํธ
sonnet (์ค๊ฐ ๋น์ฉ, ๊ท ํ)
→ ์ผ๋ฐ ๊ตฌํ, ํ
์คํธ, ๋๋ฒ๊น
, ๋ฆฌํฉํ ๋ง
→ ์: executor, test-engineer, debugger ์์ด์ ํธ
opus (๊ณ ๋น์ฉ, ์ต๊ณ ์ฑ๋ฅ)
→ ์ํคํ
์ฒ ์ค๊ณ, ๋ณต์กํ ๋ถ์, ์ข
ํฉ ๋ฆฌ๋ทฐ, ๋นํ์ ๊ฒํ
→ ์: architect, code-reviewer, critic ์์ด์ ํธ
์ค์ ๋ก ์ด๋ ๊ฒ ๋์ํฉ๋๋ค:
์ฌ์ฉ์: "autopilot: ์ธ์ฆ ์์คํ
๋ง๋ค์ด์ค"
OMC ๋ด๋ถ:
1. explore (haiku) → ํ์ฌ ์ฝ๋ ๊ตฌ์กฐ ํ์
2. planner (opus) → ๊ตฌํ ๊ณํ ์๋ฆฝ
3. architect (opus) → ์ธํฐํ์ด์ค ์ค๊ณ
4. executor (sonnet) × 3 → ๋ณ๋ ฌ ๊ตฌํ
5. test-engineer (sonnet) → ํ
์คํธ ์์ฑ
6. verifier (sonnet) → ์๋ฃ ๊ฒ์ฆ
ํ์ผ ๊ตฌ์กฐ
~/.claude/
โโโ CLAUDE.md ← OMC ํต์ฌ ์ง์๋ฌธ
โโโ settings.json ← ์ค์ ํ์ผ
โโโ plugins/cache/omc/ ← ํ๋ฌ๊ทธ์ธ ์์ค
ํ๋ก์ ํธ/
โโโ .omc/
โ โโโ state/ ← ์คํ ๋ชจ๋ ์ํ
โ โโโ notepad.md ← ์๊ตฌ ๋ฉ๋ชจ (์ปจํ
์คํธ ์์ถ์๋ ์ ์ง)
โ โโโ project-memory.json ← ํ๋ก์ ํธ ๋ฉ๋ชจ๋ฆฌ
โ โโโ plans/ ← ๊ณํ ๋ฌธ์
โ โโโ prd.json ← PRD (v4.6.0 ralph ์๋ ์์ฑ)
โ โโโ logs/ ← ์คํ ๋ก๊ทธ
โโโ AGENTS.md ← AI์ฉ ํ๋ก์ ํธ ๋ฌธ์ (deepinit ์์ฑ)
โโโ src/AGENTS.md
4. ์คํ ๋ชจ๋ ์์ ์ ๋ฆฌ
๋ชจ๋ ๊ฐ๋ ์คํํธ๋ผ
๋ฎ์ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโบ ๋์
๋ํ plan autopilot ralph team ralph
(๋จ์ผ) (๊ณํ) (์์จ์คํ) (๋ฌดํ) (ํ+๋ฌดํ)
Autopilot — ์์ ์์จ ์คํ
๋ณต์กํ ๋จ์ผ ๊ธฐ๋ฅ ๊ตฌํ์ ์ต์ . ๊ณํ๋ถํฐ ๊ฒ์ฆ๊น์ง ์๋.
ํธ๋ฆฌ๊ฑฐ ํค์๋: autopilot:, build me, I want a
์ฌ์ฉ์: "autopilot: ํ ์ผ ๋ชฉ๋ก(Todo) ์ฑ ํ์ด์ง ๋ง๋ค์ด์ค"
Phase 1 — ํ์ฅ (Expansion)
"ํ ์ผ ๋ชฉ๋ก"์ ๊ตฌ์ฒด์ ์๊ตฌ์ฌํญ์ผ๋ก ํ์ฅ
→ ํ ์ผ ์ถ๊ฐ/์ญ์ /์๋ฃ ํ ๊ธ, ๋ก์ปฌ ์ํ ๊ด๋ฆฌ, ๋ฐ์ํ UI
Phase 2 — ๊ณํ (Planning)
planner ์์ด์ ํธ๊ฐ ์์
๋ถํด
→ Todo ํ์
์ ์ → TodoItem ์ปดํฌ๋ํธ → TodoList → ํ์ด์ง ํตํฉ
Phase 3 — ์คํ (Execution)
executor ์์ด์ ํธ๋ค ๋ณ๋ ฌ ๊ตฌํ
→ src/types/todo.ts ์์ฑ
→ src/components/TodoItem.tsx ์์ฑ
→ src/components/TodoList.tsx ์์ฑ
→ src/app/todos/page.tsx ์์
Phase 4 — QA
qa-tester ๊ฐ ๋น๋/๋ฆฐํธ/ํ
์คํธ ์คํ
→ npm run build → ํต๊ณผ
→ npm run lint → ํต๊ณผ
Phase 5 — ๊ฒ์ฆ (Verification)
verifier ์์ด์ ํธ๊ฐ ์๊ตฌ์ฌํญ ์ฒดํฌ๋ฆฌ์คํธ ํ์ธ
→ โ ํ ์ผ ์ถ๊ฐ ๊ธฐ๋ฅ
→ โ ์ญ์ ๊ธฐ๋ฅ
→ โ ์๋ฃ ํ ๊ธ
→ "์๋ฃ ํ์ธ๋จ"
Ralph — ๋๊น์ง ๋ฉ์ถ์ง ์๋ ๋ชจ๋
v4.6.0๋ถํฐ Ralph๋ ์๋์ผ๋ก prd.json์ ์์ฑํฉ๋๋ค. ๋ชจ๋ ์์ฉ ๊ธฐ์ค์ด ํต๊ณผํ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
ํธ๋ฆฌ๊ฑฐ ํค์๋: ralph:, don't stop, must complete
์ฌ์ฉ์: "ralph: ์ด ์ฑ์ JWT ์ธ์ฆ ์์คํ
์ ์ฒด ๊ตฌํํด์ค"
์๋ ์์ฑ: .omc/prd.json
{
"title": "JWT ์ธ์ฆ ์์คํ
",
"acceptance_criteria": [
"ํ์๊ฐ์
API (/api/auth/register) ๋์",
"๋ก๊ทธ์ธ API (/api/auth/login) JWT ๋ฐ๊ธ",
"๋ณดํธ๋ ๋ผ์ฐํธ์์ ํ ํฐ ๊ฒ์ฆ",
"๋ฆฌํ๋ ์ ํ ํฐ ๊ฐฑ์ ",
"๋ชจ๋ ์๋ฌ ์ผ์ด์ค ํธ๋ค๋ง"
]
}
Iteration 1: ๊ธฐ๋ณธ ๊ตฌ์กฐ + ํ์๊ฐ์
๊ตฌํ
Iteration 2: ๋ก๊ทธ์ธ + JWT ๋ฐ๊ธ ๊ตฌํ
Iteration 3: ๋ฏธ๋ค์จ์ด + ํ ํฐ ๊ฒ์ฆ ๊ตฌํ
Iteration 4: ๋ฆฌํ๋ ์ ํ ํฐ ๊ตฌํ
Iteration 5: verifier ๊ฒ์ฆ → "์๋ฌ ํธ๋ค๋ง ๋ฏธํก"
Iteration 6: ์๋ฌ ํธ๋ค๋ง ์ ์ฒด ๋ณด๊ฐ
Iteration 7: verifier ๊ฒ์ฆ → "๋ชจ๋ ๊ธฐ์ค ํต๊ณผ" → ์๋ฃ
PRD ์์ด ์์ํ๋ ค๋ฉด: "ralph --no-prd: ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋ง๋ค์ด์ค"
Ultrawork — ์ต๋ ๋ณ๋ ฌ ์คํ
5๊ฐ ์ด์์ ์์ด์ ํธ๋ฅผ ๋์์ ํฌ์ . ๋ ๋ฆฝ์ ์ธ ์์ ๋๋ ์ฒ๋ฆฌ์ ์ต์ .
ํธ๋ฆฌ๊ฑฐ ํค์๋: ultrawork, ulw
์ฌ์ฉ์: "ulw: ์ด 5๊ฐ API ์๋ํฌ์ธํธ ์ ๋ถ ๊ตฌํํด์ค
(users, posts, comments, likes, notifications)"
๋์ ์คํ:
executor #1 → /api/users ๊ตฌํ โโ
executor #2 → /api/posts ๊ตฌํ โโค
executor #3 → /api/comments ๊ตฌํ โโค ๋ณ๋ ฌ
executor #4 → /api/likes ๊ตฌํ โโค
executor #5 → /api/notifications โโ
์ด ์์ ์๊ฐ ≈ ๋จ์ผ ์์
์๊ฐ × 1.2 (๋ณ๋ ฌ ์ค๋ฒํค๋ ํฌํจ)
Ecomode — ํ ํฐ ํจ์จ ์ต๋ํ
๋น์ฉ์ด ์ค์ํ ๋. ๊ฐ๋ฅํ ํ ์ ๋ ดํ ๋ชจ๋ธ ์ฐ์ ์ฌ์ฉ.
ํธ๋ฆฌ๊ฑฐ ํค์๋: eco
์ฌ์ฉ์: "eco: ๋ฆฐํธ ์๋ฌ ์ ๋ถ ์์ ํด์ค"
→ haiku ๋ชจ๋ธ๋ก ๋จผ์ ์๋
→ haiku๊ฐ ํด๊ฒฐ ๋ชปํ๋ฉด sonnet์ผ๋ก ์์ค์ปฌ๋ ์ด์
→ opus๋ ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ
→ ์์ ๋น์ฉ ์ ๊ฐ: 30~50%
Team — ๋ค์ดํฐ๋ธ ํ ํ์
Claude Code ๋ค์ดํฐ๋ธ ํ ๊ธฐ๋ฅ์ ํ์ฉํ ์กฐ์จ ๋ฐฉ์.
ํธ๋ฆฌ๊ฑฐ ํค์๋: team
์ฌ์ฉ์: "team 3:executor ๋ชจ๋ ์ปดํฌ๋ํธ ํ
์คํธ ์ฝ๋ ์์ฑ"
→ executor ์์ด์ ํธ 3๊ฐ๊ฐ ํ์ผ๋ก ์กฐ์จํ๋ฉฐ ์์
→ ์ค์๊ฐ ๋ฉ์์ง๋ก ์์
์ํ ๊ณต์
→ ๊ณต์ ํ์คํฌ ๋ฆฌ์คํธ์์ ๊ฐ์ ์์
ํฝ์
ํ์ดํ๋ผ์ธ:
team-plan → team-prd → team-exec → team-verify → team-fix
Deep Interview — ๋ง์ฐํ ์์ด๋์ด ๋ช ํํ
v4.6.0 ์ ๊ธฐ๋ฅ. ์คํ ์ ์ํฌ๋ผํ ์ค์ ์ง๋ฌธ์ผ๋ก ๋ชจํธํจ์ ์ ๊ฑฐํฉ๋๋ค.
ํธ๋ฆฌ๊ฑฐ ํค์๋: /deep-interview
์ฌ์ฉ์: "/deep-interview '๋์๋ณด๋ ๋ง๋ค์ด์ค'"
OMC๊ฐ ์ํ์ ๋ชจํธ์ฑ ์ ์๋ฅผ ๊ณ์ฐํ๊ณ ์ง๋ฌธ ์์ฑ:
Q1: "์ด๋ค ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋์๋ณด๋์ธ๊ฐ์?
(a) ์ฌ์ฉ์ ๋ถ์ (b) ๋งค์ถ ํํฉ (c) ์์คํ
๋ชจ๋ํฐ๋ง (d) ๊ธฐํ"
Q2: "์ค์๊ฐ ์
๋ฐ์ดํธ๊ฐ ํ์ํ๊ฐ์?"
Q3: "๋์ ์ฌ์ฉ์๋ ๋๊ตฌ์ธ๊ฐ์? ๊ธฐ์ ์ ์ง์ ์์ค์?"
→ ๋ช
ํ์ฑ ์ ์๊ฐ ์๊ณ๊ฐ ์ด์์ด ๋๋ฉด ์คํ ์์
→ ์ ๋งคํ ์๊ตฌ์ฌํญ์ผ๋ก ์ธํ ์ฌ์์
๋ฐฉ์ง
์ฌ์ฉ ์์ : ์๊ตฌ์ฌํญ์ด ์ถ์์ ์ด๊ฑฐ๋ ๊ท๋ชจ๊ฐ ํฐ ์์
์
Plan — ์ ๋ต์ ๊ณํ ์๋ฆฝ
์คํ ์ ๊ณํ์ ๋จผ์ ์ธ์ฐ๊ณ ์น์ธ์ ๋ฐ๋ ๋ฐฉ์.
ํธ๋ฆฌ๊ฑฐ ํค์๋: plan this:, plan the
์ฌ์ฉ์: "plan this: ๊ฒฐ์ ์์คํ
์ฐ๋"
→ ํ์ฌ ์ฝ๋ ๋ถ์ (explore)
→ ๊ตฌํ ๊ณํ ์์ธ ์์ฑ
→ ๊ณํ์ ์ฌ์ฉ์์๊ฒ ์ ์ → ์น์ธ ์์ฒญ
์ถ๋ ฅ ์์:
๊ตฌํ ๊ณํ: ๊ฒฐ์ ์์คํ
์ฐ๋
Step 1: ํ๊ฒฝ ๋ณ์ ์ค์ (5๋ถ)
- .env์ STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY ์ถ๊ฐ
Step 2: Stripe SDK ์ค์น ๋ฐ ํด๋ผ์ด์ธํธ ์ค์ (10๋ถ)
- npm install @stripe/stripe-js stripe
- src/lib/stripe.ts ์์ฑ
Step 3: ๊ฒฐ์ API ๋ผ์ฐํธ ๊ตฌํ (20๋ถ)
- POST /api/checkout → Stripe ์ธ์
์์ฑ
- GET /api/checkout/success → ๊ฒฐ์ ํ์ธ
Step 4: ํ๋ก ํธ์๋ ๊ฒฐ์ ๋ฒํผ ๊ตฌํ (15๋ถ)
- src/components/CheckoutButton.tsx ์์ฑ
Step 5: ์นํ
์ฒ๋ฆฌ (15๋ถ)
- POST /api/webhooks/stripe → ๊ฒฐ์ ์๋ฃ ์ฒ๋ฆฌ
์ด ๊ณํ์ผ๋ก ์งํํ ๊น์?
Ralplan — ํฉ์ ๊ธฐ๋ฐ ๊ณํ
Planner, Architect, Critic ์ธ ์์ด์ ํธ๊ฐ ํฉ์์ ์ด๋ฅผ ๋๊น์ง ๋ฐ๋ณต ๊ฒํ .
ํธ๋ฆฌ๊ฑฐ ํค์๋: ralplan, consensus plan
์ฌ์ฉ์: "ralplan: ๋ฉํฐํ
๋ํธ SaaS ์ํคํ
์ฒ ์ค๊ณํด์ค"
Round 1:
planner → ์ด์ ์์ฑ (๋ง์ดํฌ๋ก์๋น์ค ์ ์)
architect → ๊ฒํ : "๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ ๋ฐฉ์ ๋ช
์ ํ์"
critic → ๋นํ: "๋ฐฐํฌ ๋ณต์ก์ฑ ๊ณผ์ํ๊ฐ๋จ"
Round 2:
planner → ์์ ์ (๋ชจ๋๋ฆฌ์ค + ๋ชจ๋์)
architect → ์์ : "ํ
๋ํธ๋ณ ์คํค๋ง ๊ฒฉ๋ฆฌ ์ถ๊ฐ"
critic → "ํ์ฉ ๊ฐ๋ฅ, ์ค์ผ์ผ๋ง ๊ณํ ๋ณด๊ฐ ํ์"
Round 3:
ํฉ์ ๋๋ฌ → ์ต์ข
์ํคํ
์ฒ ๋ฌธ์ ์์ฑ
์ต์
: "ralplan --deliberate: ..."
→ ์ฌ์ ์ํ ๋ถ์ + ํ์ฅ๋ ํ
์คํธ ๊ณํ ํฌํจ
๋ชจ๋๋ณ ์ถ์ฒ ์ํฉ
| ์์ | ์ถ์ฒ ๋ชจ๋ | ์ด์ |
|---|---|---|
| ๋ฒ๊ทธ 1๊ฐ | ์ผ๋ฐ ๋ํ | ๋จ์, ๋น ๋ฆ |
| ์ปดํฌ๋ํธ 1๊ฐ ์ถ๊ฐ | plan → ์ง์ ๊ตฌํ |
๊ณํ ํ ์คํ |
| ๊ธฐ๋ฅ 1๊ฐ (์ฌ๋ฌ ํ์ผ) | autopilot: |
์๋ ๊ณํ~๊ฒ์ฆ |
| ๋๊ท๋ชจ ๊ธฐ๋ฅ | ralph: |
์๋ฃ๊น์ง ๋ฐ๋ณต |
| ํ์คํ ํ๋ก์ ํธ | team + ralph: |
ํ + ๋ฌดํ๋ฐ๋ณต |
| ์ฌ๋ฌ ํ์ผ ๋ฆฌํฉํ ๋ง | ulw |
๋ณ๋ ฌ ์ฒ๋ฆฌ |
| ์ํคํ ์ฒ ์ค๊ณ | ralplan: |
์ ๋ฌธ๊ฐ ํฉ์ |
| ๋ง์ฐํ ์์ด๋์ด | /deep-interview |
๋ช ํํ ๋จผ์ |
| ๋น์ฉ ์ ๊ฐ | eco: |
์ ๋ ดํ ๋ชจ๋ธ ์ฐ์ |
5. 30์ข ์์ด์ ํธ ์นดํ๋ก๊ทธ
๋น๋ & ๋ถ์ ์์ด์ ํธ
| ์์ด์ ํธ | ๋ชจ๋ธ | ํต์ฌ ์ญํ | ์ค์ ์ฌ์ฉ ์์ |
|---|---|---|---|
explore |
haiku | ์ฝ๋ ํ์, ํ์ผ/์ฌ๋ณผ ๋งคํ | "์ด ํ๋ก์ ํธ์์ ์ธ์ฆ ๊ด๋ จ ํ์ผ ์ฐพ์์ค" |
analyst |
opus | ์๊ตฌ์ฌํญ ๋ถ์, ์์ฉ ๊ธฐ์ค ์ ์ | "์ด ๊ธฐ๋ฅ์ ์ฃ์ง์ผ์ด์ค ๋ชจ๋ ์ ๋ฆฌํด์ค" |
planner |
opus | ์์ ์์ ๊ณํ, ์คํ ๊ณํ ์๋ฆฝ | "๋ง์ด๊ทธ๋ ์ด์ ์ ์ด๋ค ์์๋ก ํด์ผ ํด?" |
architect |
opus | ์์คํ ์ค๊ณ, ์ธํฐํ์ด์ค ์ ์ | "ํ์ฅ ๊ฐ๋ฅํ API ๊ตฌ์กฐ ์ค๊ณํด์ค" |
debugger |
sonnet | ๊ทผ๋ณธ ์์ธ ๋ถ์, ํ๊ท ๋ถ๋ฆฌ | "์ด TypeError๊ฐ ์ ๋๋์ง ์ถ์ ํด์ค" |
executor |
sonnet | ์ฝ๋ ๊ตฌํ, ๋ฆฌํฉํ ๋ง | "์ด ํจ์ TypeScript๋ก ๋ณํํด์ค" |
deep-executor |
opus | ๋ณต์กํ ์์จ ๊ตฌํ | ๋๊ท๋ชจ, ๋คํ์ผ ๊ตฌํ ์์ |
verifier |
sonnet | ์๋ฃ ์ฆ๊ฑฐ ์์ง, ๊ฒ์ฆ | "์ ๋ง ๋ชจ๋ ๊ธฐ๋ฅ์ด ๋์ํ๋์ง ํ์ธํด์ค" |
๋ฆฌ๋ทฐ ์์ด์ ํธ
| ์์ด์ ํธ | ๋ชจ๋ธ | ํต์ฌ ์ญํ | ์ค์ ์ฌ์ฉ ์์ |
|---|---|---|---|
quality-reviewer |
sonnet | ๋ก์ง ๊ฒฐํจ, ์ํฐํจํด, ์ฑ๋ฅ ์ด์ | ์ฝ๋ ํ์ง ์ ๊ฒ |
security-reviewer |
sonnet | ๋ณด์ ์ทจ์ฝ์ , ์ธ์ฆ/์ธ๊ฐ, SQL ์ธ์ ์ | ๋ฐฐํฌ ์ ๋ณด์ ๊ฐ์ฌ |
code-reviewer |
opus | ์ข ํฉ ๋ฆฌ๋ทฐ, API ๊ณ์ฝ, ํ์ํธํ์ฑ | PR ์ต์ข ๋ฆฌ๋ทฐ |
๋ฆฌ๋ทฐ ์์ด์ ํธ ์ง์ ํธ์ถ ์์:
"review code" → code-reviewer ์์ด์ ํธ ์คํ
"security review" → security-reviewer ์์ด์ ํธ ์คํ
๋๋ฉ์ธ ์ ๋ฌธ๊ฐ ์์ด์ ํธ
| ์์ด์ ํธ | ๋ชจ๋ธ | ํต์ฌ ์ญํ | ์ค์ ์ฌ์ฉ ์์ |
|---|---|---|---|
test-engineer |
sonnet | ํ ์คํธ ์ ๋ต, ์ปค๋ฒ๋ฆฌ์ง, TDD | "์ด ํจ์ ๋จ์ ํ ์คํธ ์์ฑํด์ค" |
build-fixer |
sonnet | ๋น๋/ํ์ ์๋ฌ ์์ | "ํ์ ์๋ฌ ์ ๋ถ ๊ณ ์ณ์ค" |
designer |
sonnet | UI/UX ์ค๊ณ, ์ปดํฌ๋ํธ ๋์์ธ | "์ด ํผ UX ๊ฐ์ ํด์ค" |
writer |
haiku | ๊ธฐ์ ๋ฌธ์, README, ์ฃผ์ | "์ด API ๋ฌธ์ ์์ฑํด์ค" |
qa-tester |
sonnet | ๋ฐํ์ ๊ฒ์ฆ, E2E ํ ์คํธ | "์ค์ ๋ก ์คํํด์ ํ ์คํธํด๋ด" |
scientist |
sonnet | ๋ฐ์ดํฐ/ํต๊ณ ๋ถ์ | "์ด ๋ก๊ทธ ๋ฐ์ดํฐ ํจํด ๋ถ์ํด์ค" |
document-specialist |
sonnet | ์ธ๋ถ ๊ณต์ ๋ฌธ์ ์กฐํ | "Next.js 15 ๊ณต์ ๋ฌธ์ ํ์ธํด์ค" |
git-master |
sonnet | Git ์์ , ์ปค๋ฐ ๊ด๋ฆฌ, ๋ธ๋์น ์ ๋ต | "์ปค๋ฐ ์ ๋ฆฌํ๊ณ PR ์ค๋ช ์์ฑํด์ค" |
code-simplifier |
opus | ์ฝ๋ ๋จ์ํ, ์ค๋ณต ์ ๊ฑฐ, ์ ๋ฆฌ | "์ด ๋ณต์กํ ๋ก์ง ๋จ์ํํด์ค" |
์กฐ์จ ์์ด์ ํธ
| ์์ด์ ํธ | ๋ชจ๋ธ | ํต์ฌ ์ญํ | ์ค์ ์ฌ์ฉ ์์ |
|---|---|---|---|
critic |
opus | ๊ณํ/์ค๊ณ ๋นํ์ ๊ฒํ , ์ฝ์ ๋ฐ๊ฒฌ | "์ด ์ํคํ ์ฒ ๊ณํ์ ๋ฌธ์ ์ ์ฐพ์์ค" |
6. ๋งค์ง ํค์๋ & ์คํฌ ๋ ํผ๋ฐ์ค
๋งค์ง ํค์๋ ์ ์ฒด ๋ชฉ๋ก
ํ๋กฌํํธ์ ์ด ํค์๋๋ฅผ ํฌํจํ๋ฉด ์๋์ผ๋ก ํด๋น ๋ชจ๋๊ฐ ํ์ฑํ๋ฉ๋๋ค.
| ํค์๋ | ์คํ ๋ชจ๋ | ์ค์ ์ฌ์ฉ ์์ |
|---|---|---|
autopilot: |
์์ ์์จ ์คํ | "autopilot: ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐํด์ค" |
build me |
์์ ์์จ ์คํ | "build me a REST API" |
ralph: |
์๋ฃ๊น์ง ๋ฐ๋ณต | "ralph: ์ธ์ฆ ์์คํ
์ ์ฒด ๊ตฌํ" |
don't stop |
์๋ฃ๊น์ง ๋ฐ๋ณต | "don't stop until all tests pass" |
ulw |
์ต๋ ๋ณ๋ ฌ | "ulw ์ด 10๊ฐ ์ปดํฌ๋ํธ ์ ๋ถ ๋ฆฌํฉํ ๋ง" |
ultrawork |
์ต๋ ๋ณ๋ ฌ | "ultrawork: API 5๊ฐ ๋์ ๊ตฌํ" |
eco |
ํ ํฐ ํจ์จ | "eco: ๋ฆฐํธ ์๋ฌ ์ ๋ถ ์์ " |
plan this: |
๊ณํ ์๋ฆฝ | "plan this: ๊ฒฐ์ ์์คํ
์ฐ๋" |
ralplan |
ํฉ์ ๊ธฐ๋ฐ ๊ณํ | "ralplan: DB ์คํค๋ง ์ค๊ณ" |
team |
ํ ํ์ | "team 3:executor ํ
์คํธ ์์ฑ" |
analyze |
๋ถ์/๋๋ฒ๊น | "analyze: ์ด ๋ฉ๋ชจ๋ฆฌ ๋์ ์์ธ" |
debug |
๋ถ์/๋๋ฒ๊น | "debug: ์ด API๊ฐ 500 ์๋ฌ ๋ด๋ ์ด์ " |
review code |
์ฝ๋ ๋ฆฌ๋ทฐ | "review code" |
security review |
๋ณด์ ๋ฆฌ๋ทฐ | "security review" |
fix build |
๋น๋ ์์ | "fix build" |
type errors |
ํ์ ์๋ฌ ์์ | "fix all type errors" |
tdd |
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ | "tdd: ๋ก๊ทธ์ธ ๊ธฐ๋ฅ" |
์ฌ๋์ ๋ช ๋ น์ด ์ ์ฒด ๋ชฉ๋ก
์ง์ ํ์ดํํ๋ ๋ช ๋ น์ด๋ค:
ํต์ฌ ์ํฌํ๋ก์ฐ
/deepinit → ํ๋ก์ ํธ AGENTS.md ๊ณ์ธต ๋ฌธ์ ์๋ ์์ฑ
/deep-interview → ์ํฌ๋ผํ
์ค์ ์๊ตฌ์ฌํญ ๋ช
ํํ (v4.6.0)
/autopilot → ์์จ ์คํ ๋ชจ๋
/ralph → ๋ฐ๋ณต ์๋ฃ ๋ชจ๋
/ultrawork → ์ต๋ ๋ณ๋ ฌ ๋ชจ๋
/team → ๋ค์ดํฐ๋ธ ํ ํ์
/plan → ๊ณํ ์๋ฆฝ
/ralplan → ํฉ์ ๊ธฐ๋ฐ ๊ณํ
/analyze → ๋ถ์/๋๋ฒ๊น
์ฝ๋ ํ์ง
/code-review → ์ข
ํฉ ์ฝ๋ ๋ฆฌ๋ทฐ (opus)
/security-review → ๋ณด์ ์ทจ์ฝ์ ์ ๊ฒ
/build-fix → ๋น๋ ์๋ฌ ์์
/tdd → ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ
/sciomc → ๊ณผํ์ ๋ฐ์ดํฐ ๋ถ์ (๋ณ๋ ฌ scientist)
๋ฉํฐ AI
/omc-teams → tmux ๊ธฐ๋ฐ ์ธ๋ถ AI ์์ปค (Codex, Gemini)
/ccg → 3๋ชจ๋ธ ๋์ ํ์ฉ (Claude+Codex+Gemini)
์ ํธ๋ฆฌํฐ
/note [๋ด์ฉ] → ๋ฉ๋ชจ ์ ์ฅ
/cancel → ํ์ฌ ๋ชจ๋ ์ทจ์
/cancel --force → ๋ชจ๋ ์ํ ์ด๊ธฐํ
/trace → ์์ด์ ํธ ์คํ ํ์๋ผ์ธ
/hud → HUD ์ํ๋ฐ ์ค์
/learner → ํ์ฌ ์ธ์
์์ ์ฌ์ฌ์ฉ ํจํด ์ถ์ถ
/skill → ๋ก์ปฌ ์ปค์คํ
์คํฌ ๊ด๋ฆฌ
/configure-notifications → ์๋ฆผ ์ค์
/omc-setup → OMC ์ฌ์ค์
/omc-doctor → ์ค์น ์ง๋จ
/omc-help → ๋์๋ง
7. ๋ฉ๋ชจ๋ฆฌ ์์คํ ํ์ฉ
์ปจํ ์คํธ๊ฐ ์์ถ๋์ด๋ ์ค์ํ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง์ง ์๊ฒ ํ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ข ๋ฅ ๋น๊ต
| ์ข ๋ฅ | ์์น | ์๋ช | ์ฉ๋ |
|---|---|---|---|
| Priority Context | .omc/notepad.md |
์๊ตฌ | ํ๋ก์ ํธ ํต์ฌ ๊ท์น |
| Working Memory | .omc/notepad.md |
7์ผ | ์์ ์์ ๋ฉ๋ชจ |
| Manual | .omc/notepad.md |
์๊ตฌ | ์๋ ๊ด๋ฆฌ ํญ๋ชฉ |
| Project Memory | .omc/project-memory.json |
์๊ตฌ | ๊ธฐ์ ์คํ, ์ปจ๋ฒค์ |
| Auto Memory | ~/.claude/projects/*/memory/ |
์๊ตฌ | ์ธ์ ๊ฐ ์๋ ํ์ต |
Notepad ํ์ฉ๋ฒ
# ์๊ตฌ ๊ธฐ์ต (์ปจํ
์คํธ ์์ถ์๋ ์ ์ง)
<remember priority>
์ด ํ๋ก์ ํธ๋ ๋ฐ๋์ bun ์ฌ์ฉ (npm, yarn ๊ธ์ง)
TypeScript strict mode ํญ์ ํ์ฑํ
Tailwind CSS๋ง ์ฌ์ฉ, styled-components ๊ธ์ง
</remember>
# 7์ผ๊ฐ ๊ธฐ์ต (์์
์ค ๋ฉ๋ชจ)
<remember>
์ค๋ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ: UserContext๊ฐ SSR์์ hydration ์ค๋ฅ ๋ฐ์
์์ธ: useLayoutEffect ์ฌ์ฉ → useEffect๋ก ๊ต์ฒด ํ์
</remember>
/note ๋ช ๋ น์ด ํ์ฉ
/note API ์๋ํฌ์ธํธ ๋ชฉ๋ก:
POST /api/auth/register → ํ์๊ฐ์
POST /api/auth/login → ๋ก๊ทธ์ธ
DELETE /api/auth/logout → ๋ก๊ทธ์์
GET /api/users/me → ๋ด ์ ๋ณด ์กฐํ
Project Memory ์ค์
.omc/project-memory.json์ ์ง์ ํธ์งํ๊ฑฐ๋ OMC์๊ฒ ์์ฒญ:
"project_memory_add_directive ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์:
directive: 'ํญ์ Server Components ์ฐ์ ์ฌ์ฉ, Client Components๋ ์ต์ํ'
priority: 'high'"
๊ถ์ฅ project-memory.json ๊ตฌ์กฐ:
{
"techStack": "Next.js 15, React 19, TypeScript 5.4, Tailwind v4",
"runtime": "bun",
"build": "bun run dev / bun run build",
"conventions": "App Router, Server Components ๊ธฐ๋ณธ, Zustand ์ํ๊ด๋ฆฌ",
"structure": "src/app/ ๋ผ์ฐํ
, src/components/ ์ปดํฌ๋ํธ, src/lib/ ์ ํธ",
"testing": "vitest + testing-library",
"directives": [
{ "directive": "TypeScript strict mode ํญ์ ์ฌ์ฉ", "priority": "high" },
{ "directive": "์ปดํฌ๋ํธ๋ ๋ฐ๋์ ํ์
์ ์ ํฌํจ", "priority": "high" },
{ "directive": "console.log ๋์ logger ์ฌ์ฉ", "priority": "medium" }
]
}
์ค์ : ์ปจํ ์คํธ ์์ถ ๋๋นํ๊ธฐ
๊ธด ์์ ์ค๊ฐ์ ์ปจํ ์คํธ๊ฐ ์์ถ๋์ด๋ ์ค์ํ ์ ๋ณด๊ฐ ์ ์ง๋๊ฒ:
# ์์
์์ ์
<remember priority>
ํ์ฌ ์์
: ๊ฒฐ์ ์์คํ
์ฐ๋
์๋ฃ๋ ๊ฒ: Stripe SDK ์ค์น, /api/checkout ๋ผ์ฐํธ ์์ฑ
๋ค์ ์์
: ์นํ
์ฒ๋ฆฌ (/api/webhooks/stripe)
์ฃผ์์ฌํญ: Stripe webhook ์ํฌ๋ฆฟ์ STRIPE_WEBHOOK_SECRET ํ๊ฒฝ๋ณ์
</remember>
8. MCP ๋๊ตฌ ์ฌ์ธต ํ์ฉ
LSP (Language Server Protocol) ๋๊ตฌ
IDE ์์ค์ ์ฝ๋ ์ดํด๋ฅผ Claude์๊ฒ ๋ถ์ฌํฉ๋๋ค.
ํ์ ์ ๋ณด ํ์ธ
์ฌ์ฉ์: "์ด ํ์ผ์ UserProfile ์ปดํฌ๋ํธ props ํ์
๋ณด์ฌ์ค"
→ lsp_hover ์คํ
→ ์ถ๋ ฅ: UserProfile์ props ์ธํฐํ์ด์ค ์ ์ฒด ํ์
์ฌ๋ณผ ์ฐธ์กฐ ์ถ์
์ฌ์ฉ์: "useAuth ํ
์ด ์ด๋์ ์ฐ์ด๊ณ ์์ด?"
→ lsp_find_references ์คํ
→ ์ถ๋ ฅ:
src/app/dashboard/page.tsx:12
src/app/profile/page.tsx:8
src/components/Header.tsx:23
์ด 3๊ฐ ํ์ผ, 3๊ฐ ์ฐธ์กฐ
ํ๋ก์ ํธ ์ ์ฒด ์๋ฌ ํ์ธ
์ฌ์ฉ์: "ํ๋ก์ ํธ ์ ์ฒด์ ํ์
์๋ฌ ์์ด?"
→ lsp_diagnostics_directory ์คํ
→ ์ถ๋ ฅ:
src/lib/api.ts:45 - Type 'string | undefined' is not assignable to type 'string'
src/components/Form.tsx:12 - Property 'onSubmit' is missing
์ด 2๊ฐ ์๋ฌ ๋ฐ๊ฒฌ
์ ์ฒด ์ฌ๋ณผ ์ด๋ฆ ๋ณ๊ฒฝ
์ฌ์ฉ์: "getUserInfo ํจ์๋ฅผ fetchUserProfile๋ก ์ด๋ฆ ๋ฐ๊ฟ์ค (์ ์ฒด ํ์ผ)"
→ lsp_rename ์คํ
→ ๋ชจ๋ ํ์ผ์์ ์ฐธ์กฐ๊น์ง ๋์์ ๋ณ๊ฒฝ๋จ
LSP ๋๊ตฌ ์ ์ฒด ๋ชฉ๋ก
| ๋๊ตฌ | ๊ธฐ๋ฅ |
|---|---|
lsp_hover |
์ฌ๋ณผ์ ํ์ /๋ฌธ์ ์ ๋ณด |
lsp_goto_definition |
์ ์ ์์น๋ก ์ด๋ |
lsp_find_references |
๋ชจ๋ ์ฐธ์กฐ ๊ฒ์ |
lsp_document_symbols |
ํ์ผ ๋ด ์ฌ๋ณผ ๋ชฉ๋ก |
lsp_workspace_symbols |
์ํฌ์คํ์ด์ค ์ฌ๋ณผ ๊ฒ์ |
lsp_diagnostics |
ํ์ผ ์๋ฌ/๊ฒฝ๊ณ ํ์ธ |
lsp_diagnostics_directory |
ํ๋ก์ ํธ ์ ์ฒด ์๋ฌ ํ์ธ |
lsp_rename |
์ฌ๋ณผ ์ ์ฒด ์ด๋ฆ ๋ณ๊ฒฝ |
lsp_code_actions |
๋ฆฌํฉํ ๋ง/ํตํฝ์ค ์ ์ |
AST Grep — ๊ตฌ์กฐ์ ์ฝ๋ ๊ฒ์/์นํ
ํ ์คํธ ๊ฒ์์ด ์๋ ๊ตฌ๋ฌธ ๊ตฌ์กฐ ๊ธฐ๋ฐ ๊ฒ์. ํจ์ฌ ์ ํํฉ๋๋ค.
ํจํด ๊ฒ์
# ๋ชจ๋ console.log ์ฐพ๊ธฐ
ast_grep_search: pattern="console.log($MSG)"
# ๋ชจ๋ useState ์ฌ์ฉ์ฒ ์ฐพ๊ธฐ
ast_grep_search: pattern="useState($INIT)"
# ํน์ ์ปดํฌ๋ํธ ์ฌ์ฉ ์ฐพ๊ธฐ
ast_grep_search: pattern="<Button $$$PROPS />"
# async/await ์๋ fetch ํธ์ถ ์ฐพ๊ธฐ
ast_grep_search: pattern="fetch($URL)"
ํจํด ์นํ (์ ์ฒด ํ์ผ ์ผ๊ด ์ ์ฉ)
# console.log → logger.info ์ ์ฒด ๊ต์ฒด
ast_grep_replace:
pattern: "console.log($MSG)"
replace: "logger.info($MSG)"
# React.FC → ์ง์ ํจ์ ํ์
์ผ๋ก ๋ณ๊ฒฝ
ast_grep_replace:
pattern: "const $NAME: React.FC<$PROPS>"
replace: "function $NAME($PROPS: $PROPS)"
Python REPL — ๋ฐ์ดํฐ ๋ถ์
์ธ์ ๊ฐ ๋ณ์๊ฐ ์ ์ง๋๋ ์์์ Python ํ๊ฒฝ.
# CSV ๋ฐ์ดํฐ ๋ถ์
action: "execute"
code: """
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data/users.csv')
print(df.describe())
print(f"\nํ์ฑ ์ฌ์ฉ์ ์: {df[df['active'] == True].shape[0]}")
"""
# ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํธ์ถ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ (๋ณ์ ์ ์ง๋จ)
action: "execute"
code: "df.groupby('region')['revenue'].sum().plot(kind='bar')"
9. ๋ฉํฐ AI ์ค์ผ์คํธ๋ ์ด์
Claude, Gemini, Codex๋ฅผ ๋์์ ํ์ฉํ๋ OMC์ ๊ณ ๊ธ ๊ธฐ๋ฅ.
/omc-teams — tmux ๊ธฐ๋ฐ ์ธ๋ถ AI ์์ปค
์ค์ Gemini CLI, Codex CLI ํ๋ก์ธ์ค๋ฅผ tmux ํจ๋์์ ์คํ.
์๊ตฌ์ฌํญ: tmux ์ค์น ํ์
# Codex์๊ฒ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ
/omc-teams 1:codex ์ด PR ์ฝ๋ ๋ฆฌ๋ทฐํด์ค
# Gemini์๊ฒ UI ๋์์ธ ๊ฒํ ์์ฒญ (1M ์ปจํ
์คํธ ํ์ฉ)
/omc-teams 1:gemini ์ ์ฒด codebase์ UI/UX ์ผ๊ด์ฑ ๊ฒํ ํด์ค
# Claude ์์ปค 2๊ฐ ๋ณ๋ ฌ ์คํ
/omc-teams 2:claude ๊ฐ์ ๋ค๋ฅธ ๋ชจ๋ ๊ตฌํํด์ค
๊ฐ AI์ ๊ฐ์
| AI | ๊ฐ์ | ์ถ์ฒ ์์ |
|---|---|---|
| Claude | ์งํ/์ข ํฉ/๋ณต์กํ ์ถ๋ก | ์ค์ผ์คํธ๋ ์ด์ , ์ํคํ ์ฒ |
| Gemini | 1M ์ปจํ ์คํธ, UI/UX | ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค ๋ถ์, ๋์์ธ ๊ฒํ |
| Codex | ์ฝ๋ ๋ถ์, ๋ณด์ | ์ํคํ ์ฒ ๊ฒ์ฆ, ๋ณด์ ๋ฆฌ๋ทฐ |
/ccg — 3๋ชจ๋ธ ๋์ ํ์ฉ
์ฌ์ฉ์: "/ccg ์ด ์ธ์ฆ ์์คํ
์ ์ฒด ๋ฆฌ๋ทฐํด์ค"
๋ด๋ถ ์คํ:
Codex → ๋ฐฑ์๋ ๋ณด์, ์๊ณ ๋ฆฌ์ฆ ๋ถ์
Gemini → ํ๋ก ํธ์๋ UX, ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค ์ผ๊ด์ฑ
↓ ↓
Claude → ๋ ๊ฒฐ๊ณผ ์ข
ํฉ → ์ต์ข
๋ฆฌ๋ทฐ ๋ณด๊ณ ์ ์์ฑ
Rate Limit ์๋ ๋๊ธฐ
OMC๋ Claude Code์ rate limit์ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
# ์ํ ํ์ธ ๋ฐ ์๋ด
omc wait
# ์๋ ์ฌ๊ฐ ๋ฐ๋ชฌ ํ์ฑํ (tmux ํ์)
omc wait --start
# ๋ฐ๋ชฌ ๋นํ์ฑํ
omc wait --stop
10. ์ค์ ์๋๋ฆฌ์ค๋ณ ์ํฌํ๋ก์ฐ
์๋๋ฆฌ์ค 1: ์ ํ๋ก์ ํธ ํฅ์คํ
# 1๋จ๊ณ: ํ๋ก์ ํธ ๋ฌธ์ํ
/deepinit
# 2๋จ๊ณ: ์ํคํ
์ฒ ํฉ์
ralplan: ์ ์ฒด ์์คํ
์ํคํ
์ฒ ์ค๊ณํด์ค (๊ธฐ์ ์คํ: Next.js 15, PostgreSQL, Redis)
# 3๋จ๊ณ: ํต์ฌ ์๊ตฌ์ฌํญ ๋ช
ํํ
/deep-interview '์์
๋ก๊ทธ์ธ์ด ์๋ SaaS ์ฑ'
# 4๋จ๊ณ: ํ์ผ๋ก ๊ตฌํ
team ralph: ๊ธฐ๋ณธ CRUD ๊ธฐ๋ฅ ์ ์ฒด ๊ตฌํํด์ค
์๋๋ฆฌ์ค 2: ๊ธฐ๋ฅ ์ถ๊ฐ
# ์๊ตฌ์ฌํญ์ด ๋ช
ํํ ๋
autopilot: ์ด๋ฉ์ผ ์๋ฆผ ๊ธฐ๋ฅ ์ถ๊ฐํด์ค
(๊ฐ์
ํ์, ๋น๋ฐ๋ฒํธ ์ฌ์ค์ , ์ฃผ๋ฌธ ํ์ธ ์ด๋ฉ์ผ)
# ์๊ตฌ์ฌํญ์ด ๋ชจํธํ ๋
/deep-interview '์๋ฆผ ๊ธฐ๋ฅ ์ถ๊ฐ'
→ ๋ช
ํํ ํ →
autopilot: [๋ช
ํํด์ง ์๊ตฌ์ฌํญ]์ผ๋ก ๊ตฌํํด์ค
์๋๋ฆฌ์ค 3: ๋ ๊ฑฐ์ ์ฝ๋ ๋ฆฌํฉํ ๋ง
# 1๋จ๊ณ: ํํฉ ํ์
"analyze: ์ด ์ฝ๋๋ฒ ์ด์ค์ ๊ธฐ์ ๋ถ์ฑ ํ์
ํด์ค"
# 2๋จ๊ณ: ๊ณํ
"plan this: JavaScript → TypeScript ๋ง์ด๊ทธ๋ ์ด์
"
# 3๋จ๊ณ: ๋ณ๋ ฌ ์คํ
"ulw: ์ด 15๊ฐ ํ์ผ ์ ๋ถ TypeScript๋ก ๋ณํํด์ค"
# 4๋จ๊ณ: ๊ฒ์ฆ
"review code"
"fix build"
์๋๋ฆฌ์ค 4: ๋ฒ๊ทธ ์ถ์ ๋ฐ ์์
# ์๋ฌ ๋ฉ์์ง๋ฅผ ๊ทธ๋๋ก ๋ถ์ฌ๋ฃ๊ธฐ
"analyze:
Error: Cannot read property 'user' of undefined
at AuthMiddleware (middleware.ts:45)
at Layer.handle [as handle_request]"
→ debugger ์์ด์ ํธ๊ฐ:
1. ์คํ ํธ๋ ์ด์ค ๋ถ์
2. AuthMiddleware ์ฝ๋ ํ์ธ
3. ๊ทผ๋ณธ ์์ธ ํ์
: user ๊ฐ์ฒด๊ฐ ์ด๊ธฐํ ์ ์ ์ ๊ทผ๋จ
4. ์์ ๋ฐฉ์ ์ ์
# ์์
"fix build" ๋๋ ์ง์ ์์ ์ง์
์๋๋ฆฌ์ค 5: ๋ฐฐํฌ ์ ์ฝ๋ ๋ฆฌ๋ทฐ
# ์ ์ฒด ๋ฆฌ๋ทฐ ํ์ดํ๋ผ์ธ
"review code" → ๋ก์ง, ์ํฐํจํด, ์ฑ๋ฅ
"security review" → ๋ณด์ ์ทจ์ฝ์ ์ ๊ฒ
"/sciomc ์ฑ๋ฅ ๋ถ์" → ๋ฐ์ดํฐ ๋ถ์ (์ ํ)
# ๋ฐ๊ฒฌ๋ ๋ฌธ์ ์ผ๊ด ์์
"ralph: ์ฝ๋ ๋ฆฌ๋ทฐ์์ ๋ฐ๊ฒฌ๋ ๋ชจ๋ ๋ฌธ์ ์์ ํด์ค"
์๋๋ฆฌ์ค 6: TDD ๊ฐ๋ฐ
# ํ
์คํธ ๋จผ์ , ๊ตฌํ ๋์ค
"tdd: ์ฌ์ฉ์ ์ธ์ฆ ์๋น์ค ๊ฐ๋ฐํด์ค"
→ test-engineer ์์ด์ ํธ:
1. ํ
์คํธ ์ผ์ด์ค ๋ชฉ๋ก ์์ฑ
2. ์คํจํ๋ ํ
์คํธ ์์ฑ (Red)
3. executor์๊ฒ ๊ตฌํ ์์
4. ํ
์คํธ ํต๊ณผ ํ์ธ (Green)
5. ๋ฆฌํฉํ ๋ง (Refactor)
6. ๋ฐ๋ณต
์๋๋ฆฌ์ค 7: ๋ฐ์ดํฐ ๋ถ์ ์์
# ๋ก๊ทธ ๋ฐ์ดํฐ ๋ถ์
"/sciomc ์ด CSV ํ์ผ ๋ถ์ํด์ค:
- ์ฌ์ฉ์ ํ๋ ํจํด
- ์ดํ ์์ธ ๋ถ์
- ๋งค์ถ ๊ธฐ์ฌ๋ ๋์ ๊ธฐ๋ฅ"
→ ์ฌ๋ฌ scientist ์์ด์ ํธ ๋ณ๋ ฌ ์คํ
→ Python REPL๋ก pandas/matplotlib ๋ถ์
→ ์ข
ํฉ ๋ณด๊ณ ์ ์์ฑ
์๋๋ฆฌ์ค 8: Git ์์ ์๋ํ
# ์ปค๋ฐ ์ ๋ฆฌ
"git-master์๊ฒ ์์: ์ง๊ธ๊น์ง ๋ณ๊ฒฝ๋ ํ์ผ๋ค ์๋ฏธ์๋ ๋จ์๋ก ์ปค๋ฐ ์ ๋ฆฌํด์ค"
# PR ์ค๋น
"git-master: ์ด ๋ณ๊ฒฝ์ฌํญ PR ์ค๋ช
์์ฑํด์ค (ํ๊ตญ์ด, ๋ณ๊ฒฝ ์ด์ /๋ด์ฉ/ํ
์คํธ ๋ฐฉ๋ฒ ํฌํจ)"
# ๋ธ๋์น ์ ๋ต
"git-master: feature/auth-system ๋ธ๋์น์์ ์์
ํ๊ณ main์ squash merge ์ค๋นํด์ค"
11. Hook ์์คํ ์ดํดํ๊ธฐ
Hook์ด๋?
Claude Code์ ํน์ ์ด๋ฒคํธ์ ์๋์ผ๋ก ์คํ๋๋ ์คํฌ๋ฆฝํธ์ ๋๋ค. OMC๋ ์ด๋ฅผ ํตํด ์ปจํ ์คํธ๋ฅผ ์ฃผ์ ํ๊ณ ์คํฌ์ ์๋ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Hook ํ์ด๋ฐ
์ธ์
์์ โโโโโโโโโโโบ SessionStart hook
"OMC ์ด๊ธฐํ, notepad/project-memory ๋ก๋,
ํ์ฌ ์คํ ๋ชจ๋ ์ํ ๋ณต๊ตฌ"
ํ๋กฌํํธ ์ ์ถ โโโโโโบ UserPromptSubmit hook
"๋งค์ง ํค์๋ ๊ฐ์ง, ์คํฌ ์๋ ๋งคํ,
์ปจํ
์คํธ ์ฃผ์
"
๋๊ตฌ ์ฌ์ฉ ์ โโโโโโโบ PreToolUse hook
"๋ณ๋ ฌ ์ฝ๊ธฐ ๊ถ์ฅ ํํธ,
๊ด๋ จ ํ์ผ ์ฌ์ ๋ก๋ ์ ์"
๋๊ตฌ ์ฌ์ฉ ํ โโโโโโโบ PostToolUse hook
"๊ฒฐ๊ณผ ๊ฒ์ฆ, ํ์ ์กฐ์น ์ ์,
์๋ฌ ๊ฐ์ง ์ ์๋ ์์ ์ ์"
๋ํ ์ค ๋์ค๋ ๋ฉ์์ง ํด์
<system-reminder>hook success: Success</system-reminder>
→ ์ ์ ์๋ ์ค, ๋ฌด์ํ๊ณ ์งํ
<system-reminder>hook additional context:
๋ณ๋ ฌ ํ์ผ ์ฝ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
</system-reminder>
→ ์ ์ฉํ ํํธ, ์ฐธ๊ณ ํ์ฌ ์ ์ฉ
<system-reminder>[MAGIC KEYWORD: ralph detected]</system-reminder>
→ ralph ๋ชจ๋ ์๋ ํ์ฑํ๋จ
<system-reminder>The boulder never stops rolling</system-reminder>
→ ralph/ultrawork ํ์ฑ ์ํ, ๊ณ์ ์คํ ์ค
Hook ๋นํ์ฑํ (ํ์ํ ๊ฒฝ์ฐ)
# ์ ์ฒด ๋นํ์ฑํ
export DISABLE_OMC=1
# ํน์ hook๋ง ๊ฑด๋๋ฐ๊ธฐ
export OMC_SKIP_HOOKS=PreToolUse,PostToolUse
12. ๋น์ฉ ์ต์ ํ ์ ๋ต
๋ชจ๋ธ๋ณ ๋น์ฉ ๋น๊ต
haiku โโโ ๊ธฐ์ค ๋น์ฉ 1x (๊ฐ์ฅ ์ ๋ ด)
sonnet โโโ ๊ธฐ์ค ๋น์ฉ 5x (์ค๊ฐ)
opus โโโ ๊ธฐ์ค ๋น์ฉ 15x (๊ฐ์ฅ ๋น์)
๋น์ฉ ์ ๊ฐ ์ ๋ต
์ ๋ต 1: Ecomode ์ ๊ทน ํ์ฉ
# ๋จ์ํ ์์
์ ๋ฌด์กฐ๊ฑด eco
"eco: ๋ชจ๋ ํ์ผ์์ ๋ถํ์ํ console.log ์ ๊ฑฐ"
"eco: import ์ ๋ฆฌํด์ค"
"eco: ์ฃผ์ ๋ฒ์ญํด์ค (์์ด → ํ๊ตญ์ด)"
์ ๋ต 2: ์์ ๋ณต์ก๋์ ๋ง๋ ๋ชจ๋ ์ ํ
๋ฒ๊ทธ 1๊ฐ → ์ง์ ๋ํ (๋ถํ์ํ ์์ด์ ํธ ํธ์ถ ์์)
์ปดํฌ๋ํธ 1๊ฐ → ์ง์ ๋ํ
์ฌ๋ฌ ํ์ผ → autopilot ๋๋ ulw
๋๊ท๋ชจ ๊ธฐ๋ฅ → ralph (๋ด๋ถ์ ์ผ๋ก ์ต์ ๋ชจ๋ธ ์ ํ)
์ ๋ต 3: /note๋ก ๋ฐ๋ณต ํ์ ๋ฐฉ์ง
# ์์ฃผ ์ฐ๋ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฅํด๋๋ฉด
# ๋งค๋ฒ explore ์์ด์ ํธ ํธ์ถ ๋น์ฉ ์ ๊ฐ
/note
Auth ๊ด๋ จ ํ์ผ:
- src/lib/auth.ts (JWT ์ ํธ)
- src/middleware.ts (ํ ํฐ ๊ฒ์ฆ)
- src/app/api/auth/ (API ๋ผ์ฐํธ)
์ ๋ต 4: deepinit์ผ๋ก ํ์ ๋น์ฉ ์ ํฌ์
# ์ฒ์์ ํ ๋ฒ๋ง ํฌ์
/deepinit
# ์ดํ explore ์์ด์ ํธ๊ฐ AGENTS.md๋ฅผ ์ฐธ์กฐํ์ฌ
# ๋ถํ์ํ ํ์ผ ํ์ ์ต์ํ
์ ๋ต 5: modelAliases ์ค์ (v4.6.0)
// settings.json์ ์ถ๊ฐ
{
"modelAliases": {
"opus": "claude-sonnet-4-5", // opus ๋์ sonnet ์ฌ์ฉ
"sonnet": "claude-haiku-4-5" // sonnet ๋์ haiku ์ฌ์ฉ
}
}
HUD๋ก ๋น์ฉ ๋ชจ๋ํฐ๋ง
HUD ์ํ๋ฐ์์ ์ค์๊ฐ์ผ๋ก ํ ํฐ ์ฌ์ฉ๋ ํ์ธ:
OMC [ralph] | agents: 3 | tokens: 45.2k | est. cost: $0.23
13. ์๋ฆผ ์์คํ ์ค์
์ฅ์๊ฐ ์คํ๋๋ ์์ (ralph, autopilot)์ด ์๋ฃ๋๋ฉด ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
์ง์ ํ๋ซํผ
/configure-notifications
์คํ ํ ํ๋ซํผ ์ ํ:
Telegram
OMC_TELEGRAM_BOT_TOKEN=7123456789:AAHxxxxxxxxxxxxxxxxxxxxxx
OMC_TELEGRAM_CHAT_ID=123456789
Discord
OMC_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/xxx/yyy
Slack
OMC_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T.../B.../xxx
ํ์ผ ์ถ๋ ฅ
OMC_NOTIFY_FILE=/tmp/omc-notifications.log
์๋ฆผ์ด ์ค๋ ์์
| ์ด๋ฒคํธ | ์ค๋ช |
|---|---|
| ์ธ์ ์์ | ์์ ์ด ์์๋จ |
| ์ธ์ ์ข ๋ฃ | ์์ ์ด ์๋ฃ๋จ |
| ์ง๋ฌธ ๋๊ธฐ | Claude๊ฐ ๋ต๋ณ ๋๊ธฐ ์ค |
| ์์ด์ ํธ ์์ฑ | ์ ๋ฌธ ์์ด์ ํธ ํฌ์ ๋จ |
| ์ ํด ์ํ | ์์ ์์ด ๋๊ธฐ ์ค |
์๋ฆผ ๋นํ์ฑํ:
export OMC_NOTIFY=0
14. ํ๊ฒฝ ๋ณ์ & ์ค์ ๋ ํผ๋ฐ์ค
ํต์ฌ ํ๊ฒฝ ๋ณ์
| ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS |
1 |
Team ๋ชจ๋ ํ์ฑํ (ํ์) |
DISABLE_OMC |
๋ฏธ์ค์ | ๋ชจ๋ OMC hook ๋นํ์ฑํ |
OMC_SKIP_HOOKS |
๋ฏธ์ค์ | ํน์ hook ๊ฑด๋๋ฐ๊ธฐ (์ผํ ๊ตฌ๋ถ) |
OMC_NOTIFY |
ํ์ฑ | 0์ด๋ฉด ์๋ฆผ ๋นํ์ฑํ |
OMC_TEAM_NO_RC |
๋ฏธ์ค์ | RC ํ์ผ ๋ก๋ฉ ๋ช ์์ ๋นํ์ฑํ (v4.6.0) |
settings.json ์ ์ฒด ๊ตฌ์กฐ
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
},
"statusLine": {
"type": "command",
"command": "node ~/.claude/hud/omc-hud.mjs"
},
"enabledPlugins": {
"oh-my-claudecode@omc": true
},
"modelAliases": {
"opus": "claude-opus-4-5",
"sonnet": "claude-sonnet-4-5",
"haiku": "claude-haiku-4-5-20251001"
},
"extraKnownMarketplaces": {
"omc": {
"source": {
"source": "git",
"url": "https://github.com/Yeachan-Heo/oh-my-claudecode.git"
}
}
}
}
ํ๋ฌ๊ทธ์ธ ์ ๋ฐ์ดํธ
/plugin marketplace update omc
15. ํธ๋ฌ๋ธ์ํ
์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์
| ๋ฌธ์ ์ํฉ | ํด๊ฒฐ ๋ฐฉ๋ฒ |
|---|---|
| hook์ด ์๋ ์ ํจ | /omc-doctor ์คํ ํ ์๋ด ๋ฐ๋ฅด๊ธฐ |
| ๋งค์ง ํค์๋๊ฐ ํธ๋ฆฌ๊ฑฐ ์ ๋จ | /oh-my-claudecode:์คํฌ๋ช
์ผ๋ก ์ง์ ์คํ |
| Team ๋ชจ๋ ์๋ฌ | CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 ํ๊ฒฝ๋ณ์ ํ์ธ |
| ์ํ๊ฐ ๊ผฌ์ | /cancel --force ๋ก ์ ์ฒด ์ด๊ธฐํ |
| ralph๊ฐ ๋ฉ์ถ์ง ์์ | /cancel ๋๋ ๋ํ์์ "์ค๋จํด์ค" |
| ํ๋ฌ๊ทธ์ธ ์ ๋ฐ์ดํธ ํ์ | /plugin marketplace update omc |
| ์ฒ์๋ถํฐ ์ฌ์ค์ | /omc-setup ์ฌ์คํ |
| ๋ณด์ ๊ด๋ จ ๊ฒฝ๊ณ (v4.6.0) | CLI ๊ฒฝ๋ก ์ ๋ขฐ ์ค์ ํ์ธ, OMC_TEAM_NO_RC ์ค์ ๊ฒํ |
์ง๋จ ๋ช ๋ น์ด
/omc-doctor → ์ค์น ์ํ ์ข
ํฉ ์ง๋จ
/trace → ์์ด์ ํธ ์คํ ํ์๋ผ์ธ ํ์ธ
/cancel --force → ๋ชจ๋ ํ์ฑ ๋ชจ๋ ๊ฐ์ ์ข
๋ฃ + ์ํ ํ์ผ ์ญ์
/omc-setup → ์ฌ์ค์ ๋ง๋ฒ์ฌ
์คํ ์ค์ธ ๋ชจ๋ ์ทจ์
/cancel → ํ์ฌ ํ์ฑ ๋ชจ๋ ์ ์ ์ทจ์
/cancel --force → ๋ชจ๋ ์ํ ํ์ผ ์ญ์ + ์ ์ฒด ์ด๊ธฐํ
๋ํ์์:
"stop"
"์ค๋จํด์ค"
"์ ๊น ๋ฉ์ถฐ"
v4.6.0 ๋ณด์ ๋ณ๊ฒฝ์ฌํญ
- CLI ๊ฒฝ๋ก ์ ๋ขฐ ๊ฒ์ฆ์ด ๊ฐํ๋จ. ๋ฐ์ด๋๋ฆฌ ๊ฒฝ๋ก๊ฐ ๊ฒ์ฆ๋ ์ ๋ ๊ฒฝ๋ก๋ก ๊ณ ์ ๋จ.
OMC_TEAM_NO_RCํ๊ฒฝ๋ณ์๋ก RC ํ์ผ ๋ก๋ฉ์ ๋ช ์์ ์ผ๋ก ๋นํ์ฑํ ๊ฐ๋ฅ.- ์ผ์์ ์คํจ ์ฌ์๋ + watchdog
done.jsonํ์ฑ ๋ณต๊ตฌ ๊ธฐ๋ฅ ์ถ๊ฐ.
16. ๋น ๋ฅธ ์ฐธ์กฐ ์นด๋
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OMC ๋น ๋ฅธ ์ฐธ์กฐ ์นด๋ (v4.6.0) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ์ฒ์ ์์ โ
โ /deepinit ํ๋ก์ ํธ ๋ฌธ์ํ โ
โ /deep-interview '์์ด๋์ด' ์๊ตฌ์ฌํญ ๋ช
ํํ (์ ๊ธฐ๋ฅ) โ
โ /omc-doctor ์ค์น ์ง๋จ โ
โ โ
โ ๊ณํ โ
โ plan this: [๊ธฐ๋ฅ] ๊ณํ ์๋ฆฝ ํ ์น์ธ โ
โ ralplan: [๊ธฐ๋ฅ] ์ ๋ฌธ๊ฐ ํฉ์ ๊ธฐ๋ฐ ๊ณํ โ
โ โ
โ ์คํ (๊ฐ๋ ์) โ
โ autopilot: [์ง์] ์์จ ์คํ (๊ณํ~๊ฒ์ฆ ์๋) โ
โ ralph: [์ง์] ์๋ฃ๊น์ง ๋ฐ๋ณต (PRD ์๋ ์์ฑ) โ
โ ulw [์ง์] ์ต๋ ๋ณ๋ ฌ ์คํ โ
โ team N:agent [์ง์] N๊ฐ ์์ด์ ํธ ํ ํ์
โ
โ eco: [์ง์] ํ ํฐ ์ ์ฝ ๋ชจ๋ โ
โ โ
โ ๋ถ์ & ๋ฆฌ๋ทฐ โ
โ analyze: [๋ฌธ์ ] ๋๋ฒ๊น
/์์ธ ๋ถ์ โ
โ review code ์ข
ํฉ ์ฝ๋ ๋ฆฌ๋ทฐ โ
โ security review ๋ณด์ ์ทจ์ฝ์ ์ ๊ฒ โ
โ fix build ๋น๋/ํ์
์๋ฌ ์์ โ
โ tdd: [๊ธฐ๋ฅ] ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ โ
โ โ
โ ๋ฉํฐ AI โ
โ /omc-teams N:ai [์ง์] Codex/Gemini ๋ณ๋ ฌ ํ์ฉ โ
โ /ccg [์ง์] 3๋ชจ๋ธ ๋์ ๋ถ์ โ
โ โ
โ ์ ํธ๋ฆฌํฐ โ
โ /note [๋ด์ฉ] ๋ฉ๋ชจ ์ ์ฅ โ
โ <remember>...</remember> 7์ผ ๊ธฐ์ต โ
โ <remember priority>...</remember> ์๊ตฌ ๊ธฐ์ต โ
โ /cancel ํ์ฌ ๋ชจ๋ ์ทจ์ โ
โ /cancel --force ์ ์ฒด ์ด๊ธฐํ โ
โ /trace ์คํ ํ์๋ผ์ธ โ
โ /learner ํจํด ์ถ์ถ ๋ฐ ์ฌ์ฌ์ฉ โ
โ โ
โ ๊ฐ๋: ๋ํ < plan < autopilot < ralph < team ralph โ
โ ๋น์ฉ: haiku < sonnet << opus โ
โ โ
โ GitHub: github.com/Yeachan-Heo/oh-my-claudecode โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๋ถ๋ก: ์์ด์ ํธ ์ง์ ํธ์ถ
์ฌ๋์ ๋ช ๋ น์ด ๋์ ์์ด์ ํธ๋ฅผ ์ง์ ์ง๋ช ํด์ ํธ์ถํ ์๋ ์์ต๋๋ค.
# ํน์ ์์ด์ ํธ์๊ฒ ์ง์ ์์
"explore ์์ด์ ํธ: src/app ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ์ ์ฒด ๋งคํํด์ค"
"architect ์์ด์ ํธ: ํ์ฌ ์ธ์ฆ ์์คํ
UML ๋ค์ด์ด๊ทธ๋จ ๊ทธ๋ ค์ค"
"security-reviewer ์์ด์ ํธ: ์ด ํ์ผ๋ง ๋ณด์ ์ ๊ฒํด์ค"
"writer ์์ด์ ํธ: ์ด ํจ์๋ค JSDoc ์ฃผ์ ์ ๋ถ ์์ฑํด์ค"
"git-master ์์ด์ ํธ: conventional commits ํ์์ผ๋ก ์ปค๋ฐํด์ค"
๋ถ๋ก: /learner — ํจํด ํ์ต ๋ฐ ์ฌ์ฌ์ฉ
์ธ์ ์์ ํจ๊ณผ์ ์ด์๋ ๋ฌธ์ ํด๊ฒฐ ํจํด์ ์ถ์ถํ๊ณ ์ปค์คํ ์คํฌ๋ก ์ ์ฅ:
# ์ธ์
ํ ํจํด ์ถ์ถ
/learner
→ "์ด๋ฒ ์ธ์
์์ ๋ค์ ํจํด์ด ํจ๊ณผ์ ์ด์์ต๋๋ค:
1. ํ์
์๋ฌ ์์ : lsp_diagnostics → ์ผ๊ด ์์ → ์ฌ๊ฒ์ฆ
2. API ๊ตฌํ: architect → executor × 3 (๋ณ๋ ฌ) → test-engineer
์ด๋ฅผ ์ปค์คํ
์คํฌ๋ก ์ ์ฅํ ๊น์?"
# ์ ์ฅ ํ ๋ค์์ ๋ฐ๋ก ์ฌ์ฉ
/skill run api-implementation-pattern
์ด ๊ฐ์ด๋๋ oh-my-claudecode v4.6.0 ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค.
๊ณต์ ์ ์ฅ์: https://github.com/Yeachan-Heo/oh-my-claudecode
๊ณต์ ์ฌ์ดํธ: https://yeachan-heo.github.io/oh-my-claudecode-website/