์๋ฆฌ์ฆ: oh-my-claudecode ๋ด๋ถ ๊ตฌ์กฐ๋ถํฐ ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ๊น์ง
์ด ์๋ฆฌ์ฆ๋ Claude Code ํ๋ฌ๊ทธ์ธ ์์คํ ์ ๋ด๋ถ ๋์์ ๋จ๊ณ๋ณ๋ก ํด๋ถํ๊ณ , ์ต์ข ์ ์ผ๋ก ๋๋ง์ ํ๋ฌ๊ทธ์ธ์ ์ง์ ๊ฐ๋ฐํ๋ ๊ฒ๊น์ง ๋๋ฌํ๋ ๊ณผ์ ์ด๋ค.
| ํธ | ๋ด์ฉ | ํต์ฌ |
|---|---|---|
| 1ํธ | Plugin Anatomy | plugin.json ํ๋๋ก ์์ํ๋ ํ๋ฌ๊ทธ์ธ ๋ผ๋ |
| 2ํธ | Hook System | ์ด๋ฒคํธ โ stdin JSON โ ์คํฌ๋ฆฝํธ โ stdout JSON |
| 3ํธ (๋ณธ๋ฌธ) | Skill System | SKILL.md๋ก ์ํฌํ๋ก์ฐ๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ |
| 4ํธ | Agent System | Task tool๋ก ์์๋๋ ์ค์ ์์ ์ํ์ |
| 5ํธ | MCP Tools Bridge | LSP, AST ๋ฑ ์ปค์คํ ๋๊ตฌ ์๋ฒ |
| 6ํธ | State & Lifecycle | .omc/ ์ํ ๊ด๋ฆฌ์ ๋ชจ๋ ์ง์ |
| 7ํธ | Parallel Orchestration | Ultrawork, Team, Autopilot, Ralph ํจํด |
- OMC์ Skill์ Claude์ ํ๋์ ์ง์ํ๋ ํ๋กฌํํธ ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ ์ ์ ํ์ผ
- ์ฝ๋๊ฐ ์๋๋ผ ๋งํฌ๋ค์ด์ด๋ฉฐ, SKILL.md์ ์์ฑ๋ ์ง์นจ์ด Claude์ context์ ์ฃผ์ ๋์ด ํ๋์ ๋ณ๊ฒฝํ๋ ๊ตฌ์กฐ
- ๊ณต์ Skill ์์คํ (YAML frontmatter + ๋งํฌ๋ค์ด ๋ณธ๋ฌธ) ์์ OMC ์์ฒด ์ปจ๋ฒค์ (XML ํ๊ทธ ๊ตฌ์กฐ, ํค์๋ ์๋ ๊ฐ์ง, 3๊ณ์ธต ํฉ์ฑ)์ ์น์ ํ์ฅ ์ฌ์ฉ ํจํด
ํด๋น ๊ฐ๋ ์ด ํ์ํ ์ด์
- 2ํธ(Hook System)์์ keyword-detector๊ฐ โultrawork skill์ ์คํํ๋ผโ๊ณ Claude์๊ฒ ์ง์ํ๋ ๊ฒ๊น์ง ํ์ต
- ํ์ง๋ง **โultrawork ๋ชจ๋์์ Claude๊ฐ ์ด๋ป๊ฒ ํ๋ํด์ผ ํ๋์งโ**์ ์ ์๊ฐ ๋น ์ ธ ์์
- Skill์ด ์ด ๋น ์นธ์ ์ฑ์ โ Hook์ด ํธ๋ฆฌ๊ฑฐ๋ผ๋ฉด Skill์ ์ง์นจ์
AS-IS
sequenceDiagram autonumber participant H as keyword-detector (Hook) participant CC as Claude Code H-->>CC: additionalContext: "ultrawork skill์ ์คํํ๋ผ" CC->>CC: "ultrawork๊ฐ ๋ญ๋ฐ?" Note over CC: ํ๋ ์ง์นจ์ด ์์ผ๋ฏ๋ก ์๋ฌด๊ฒ๋ ๋ฌ๋ผ์ง์ง ์์
TO-BE
sequenceDiagram autonumber participant H as keyword-detector (Hook) participant CC as Claude Code participant ST as Skill Tool participant SK as skills/ultrawork/SKILL.md H-->>CC: additionalContext: "ultrawork skill์ ์คํํ๋ผ" CC->>ST: Skill("oh-my-claudecode:ultrawork") ST->>SK: SKILL.md ํ์ผ ๋ก๋ SK-->>CC: ๋งํฌ๋ค์ด ๋ด์ฉ์ด Claude context์ ์ฃผ์ Note over CC: "๋ ๋ฆฝ ์์ ์ ๋ณ๋ ฌ๋ก ์คํํ๋ผ"<br/>"Task(run_in_background=true) ์ฌ์ฉ"<br/>์ง์นจ์ ๋ฐ๋ผ ํ๋
๊ณต์ Skill ์์คํ vs OMC ํ์ฅ
OMC์ Skill์ ๊ณต์ Skill ์์คํ ์์ ๊ตฌ์ถ๋๋ค. ๊ณต์ ๊ธฐ๋ฅ๊ณผ OMC ๊ณ ์ ๊ธฐ๋ฅ์ ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ค์ํ๋ค.
| ๊ตฌ๋ถ | ๊ณต์ Claude Code | OMC ํ์ฅ |
|---|---|---|
| ํ์ผ ๊ตฌ์กฐ | YAML frontmatter + ๋งํฌ๋ค์ด ๋ณธ๋ฌธ | ๋งํฌ๋ค์ด ๋ณธ๋ฌธ์ XML ํ๊ทธ๋ก ๊ตฌ์กฐํ |
| ํธ์ถ ๋ฐฉ์ | /skill-name ๋๋ Claude ์๋ ํธ์ถ | + ํค์๋ ์๋ ๊ฐ์ง (Hook ์ฐ๋) |
| ์ธ์ ์ ๋ฌ | $ARGUMENTS, $0, $1 ๋ฑ | ๋์ผ |
| ์คํ ๊ฒฉ๋ฆฌ | context: fork โ subagent ์คํ | ๋์ผ |
| ๋๊ตฌ ์ ํ | allowed-tools frontmatter | ๋์ผ |
| ์คํฌ ํ์ต | ์์ | skill-injector.mjs / mnemosyne ์๋ ์ฃผ์ |
| ์คํฌ ํฉ์ฑ | ์์ | 3๊ณ์ธต ํฉ์ฑ (Guarantee > Enhancement > Execution) |
| ์ฐ์ ์์ | ์์ | resolveConflicts() ํค์๋ ์ฐ์ ์์ |
๊ณต์ Skill ์์คํ ์ ์์ธ ์คํ์ Claude Code Skills ์ฐธ๊ณ
SKILL.md ๊ตฌ์กฐ โ ๊ณต์ + OMC ์ปจ๋ฒค์
๊ณต์ ๋ถ๋ถ: YAML frontmatter
---
name: ultrawork
description: Parallel execution engine for high-throughput task completion
---๊ณต์ frontmatter ํ๋ ์ค OMC ์คํฌ์ด ํ์ฉํ๋ ๊ฒ:
| ํ๋ | OMC ํ์ฉ ์ |
|---|---|
name | ultrawork, ralph, autopilot ๋ฑ |
description | Claude ์๋ ํธ์ถ ํ๋จ์ ์ฌ์ฉ |
aliases | team ์คํฌ์ ๋ณ์นญ ๋ชฉ๋ก (๋น ๋ฐฐ์ด) |
OMC ์ปจ๋ฒค์ : XML ํ๊ทธ ๋ณธ๋ฌธ
OMC๋ ๋งํฌ๋ค์ด ๋ณธ๋ฌธ์ XML ํ๊ทธ๋ก ๊ตฌ์กฐํํ๋ค. ์ด๊ฑด OMC ์์ฒด ์ปจ๋ฒค์ ์ด์ง, ๊ณต์ ์คํ์ด ์๋๋ค.
<Purpose>
๋ณ๋ ฌ ์คํ ์์ง. ๋
๋ฆฝ ์์
์ ๋์์ ์คํํ์ฌ ์ฒ๋ฆฌ ์๊ฐ์ ์ค์ธ๋ค.
</Purpose>
<Use_When>
์ฌ๋ฌ ์์
์ด ๋์์ ์คํ ๊ฐ๋ฅํ ๋
</Use_When>
<Do_Not_Use_When>
๋ณด์ฅ๋ ์๋ฃ๊ฐ ํ์ํ ๋ (โ ralph ์ฌ์ฉ)
</Do_Not_Use_When>
<Execution_Policy>
๋
๋ฆฝ ์์
์ Task(run_in_background=true)๋ก ๋์ ์คํ.
</Execution_Policy>
<Steps>
1. ์์
๋ถ์ โ 2. ์์ด์ ํธ ์ ํ โ 3. ๋ณ๋ ฌ ์คํ โ 4. ๊ฒฐ๊ณผ ๊ฒ์ฆ
</Steps>| ํ๊ทธ | ์ญํ |
|---|---|
<Purpose> | ์ด Skill์ด ๋ญ ํ๋์ง |
<Use_When> | ์ธ์ ์ฌ์ฉํด์ผ ํ๋์ง |
<Do_Not_Use_When> | ์ธ์ ์ฌ์ฉํ๋ฉด ์ ๋๋์ง |
<Execution_Policy> | ์คํ ๊ท์น (ํต์ฌ ์ง์นจ) |
<Steps> | ๋จ๊ณ๋ณ ์ ์ฐจ |
<Examples> | ์ข์/๋์ ์ฌ์ฉ ์์ |
<Advanced> | ๊ณ ๊ธ ์ค์ , ๋ค๋ฅธ Skill๊ณผ์ ๊ด๊ณ |
XML ํ๊ทธ๋ฅผ ์ฐ๋ ์ด์ : Claude๊ฐ ๊ตฌ์กฐํ๋ ์ง์๋ฅผ ๋ ์ ํํ๊ฒ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ. ๋จ์ ๋งํฌ๋ค์ด๋ณด๋ค ํ๊ทธ๋ก ๊ฐ์ธ๋ฉด ์น์ ๊ฒฝ๊ณ๊ฐ ๋ช ํํด์ง๋ค.
Skill ํธ์ถ ๊ฒฝ๋ก 3๊ฐ์ง
graph TD subgraph Path1["๊ฒฝ๋ก 1: ํค์๋ ์๋ ๊ฐ์ง (OMC ๊ณ ์ , ๊ฐ์ฅ ์ผ๋ฐ์ )"] U1["์ฌ์ฉ์: 'ultrawork refactor API'"] --> KD1["keyword-detector.mjs (Hook)"] KD1 -->|"additionalContext ์ฃผ์ "| CC1["Claude: Skill tool ํธ์ถ"] CC1 --> SK1["SKILL.md ๋ก๋"] end subgraph Path2["๊ฒฝ๋ก 2: ์ฌ๋์ ์ปค๋งจ๋ (๊ณต์ ๊ธฐ๋ฅ)"] U2["์ฌ์ฉ์: /oh-my-claudecode:ultrawork"] --> CC2["Claude Code ์ง์ ํธ์ถ"] CC2 --> SK2["SKILL.md ๋ก๋"] end subgraph Path3["๊ฒฝ๋ก 3: ํ์ต๋ ์คํฌ ์๋ ์ฃผ์ (OMC ๊ณ ์ )"] U3["์ฌ์ฉ์: 'ํ ์คํธ ๋จผ์ ์์ฑํด์ค'"] --> SI3["skill-injector.mjs (Hook)"] SI3 -->|"mnemosyne ํ๊ทธ๋ก ์ฃผ์ "| CC3["Claude context์ ์คํฌ ๋ด์ฉ ์ถ๊ฐ"] end
๊ฒฝ๋ก 1์ด OMC์ ํต์ฌ ํจํด: Hook(2ํธ)์ด ํค์๋๋ฅผ ๊ฐ์ง โ Skill(3ํธ)์ด ์ง์นจ์ ์ฃผ์ โ Agent(4ํธ)๊ฐ ์คํ.
OMC์ 28๊ฐ Skill ๋ถ๋ฅ
์ํฌํ๋ก์ฐ Skill (ํต์ฌ)
| Skill | ์ค ์ | ์ญํ | ํค์๋ ํธ๋ฆฌ๊ฑฐ |
|---|---|---|---|
ultrawork | 128 | ๋ณ๋ ฌ ์คํ ์์ง | ultrawork, ulw |
ralph | 214 | ๊ฒ์ฆ ๋ฃจํ (์๋ฃ๊น์ง ๋ฐ๋ณต) | ralph |
autopilot | 189 | ์ ์ฒด ์๋ํ (์์ด๋์ดโ์ฝ๋) | autopilot, fullsend |
team | 967 | N๊ฐ worker ๋ณ๋ ฌ ์กฐ์จ | /team (๋ช
์์ ๋ง) |
cancel | 317 | ํ์ฑ ๋ชจ๋ ์ทจ์ | cancelomc, stopomc |
ccg | โ | Claude-Codex-Gemini 3๋ชจ๋ธ ๋ณ๋ ฌ ์คํ | ccg |
ralplan | โ | ํฉ์ ๊ธฐ๋ฐ ๋ฐ๋ณต ๊ณํ | ralplan |
์ ํธ๋ฆฌํฐ Skill
| Skill | ์ญํ |
|---|---|
omc-setup | ์ด๊ธฐ ์ค์ |
omc-doctor | ์ค์น ์ํ ์ง๋จ |
hud | ์ํ ๋์๋ณด๋ (HUD = Heads-Up Display. ํฐ๋ฏธ๋ ํ๋จ status line์ ํ์ฌ ํ์ฑ ๋ชจ๋, ์๋ธ์์ด์ ํธ ์ ๋ฑ์ ์ค์๊ฐ ํ์. ~/.claude/hud/omc-hud.mjs๊ฐ settings.json์ statusLine๊ณผ ์ฐ๊ฒฐ๋์ด ๋์) |
note | ๋ฉ๋ชจ |
learner | ์คํฌ ํ์ต/์ถ์ถ |
trace | ์์ด์ ํธ ํ๋ฆ ์ถ์ |
release | ๋ฆด๋ฆฌ์ฆ ์๋ํ |
team ์คํฌ์ด 967์ค๋ก ๊ฐ์ฅ ํฌ๋ค โ ์ฌ์ค์ ํ๋์ ์ค์ผ์คํธ๋ ์ด์
์์คํ
.
Skill Composition โ 3๊ณ์ธต ํฉ์ฑ (OMC ๊ณ ์ )
์ฌ๋ฌ Skill์ด ๋์์ ํ์ฑํ๋ ๋ 3๊ณ์ธต์ผ๋ก ํฉ์ฑ๋๋ค:
graph TB subgraph Guarantee["Guarantee Layer (๋ณด์ฅ)"] R["ralph: ์๋ฃ๋ ๋๊น์ง ๋ฉ์ถ์ง ๋ง๋ผ<br/>โ Stop hook์์ ์ข ๋ฃ ์ฐจ๋จ"] end subgraph Enhancement["Enhancement Layer (๊ฐํ)"] UW["ultrawork: ๋ณ๋ ฌ๋ก ์คํํ๋ผ<br/>โ ์คํ ๋ฐฉ์์ ๋ณ๊ฒฝ"] end subgraph Execution["Execution Layer (์คํ)"] REQ["์ฌ์ฉ์์ ์ค์ ์์ฒญ<br/>โ refactor the API"] end Guarantee --> Enhancement --> Execution
์: ralph refactor the API ์
๋ ฅ ์:
- ralph Skill ํ์ฑํ โ โ์๋ฃ๊น์ง ๋ฐ๋ณตโ ๋ณด์ฅ
- ralph๋ ๋ด๋ถ์ ์ผ๋ก ultrawork๋ ํ์ฑํ โ โ๋ณ๋ ฌ ์คํโ ๊ฐํ
- ์ค์ ์์ : API ๋ฆฌํฉํฐ๋ง ์คํ
keyword-detector.mjs์ resolveConflicts()๊ฐ ์ฐ์ ์์๋ฅผ ๊ด๋ฆฌ:
cancel > ralph > autopilot > ultrawork > ccg > ralplan > ...
๋๋ง์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ ๋ค๋ฉด
์ต์ Skill ์ ์:
my-plugin/
โโโ skills/
โโโ my-workflow/
โโโ SKILL.md
---
name: my-workflow
description: My custom workflow for code review
---
<Purpose>
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์๋ํํ๋ ์ํฌํ๋ก์ฐ
</Purpose>
<Steps>
1. ๋ณ๊ฒฝ๋ ํ์ผ ๋ชฉ๋ก ํ์ธ
2. ๊ฐ ํ์ผ์ diff ๋ถ์
3. ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ ์์ฑ
</Steps>plugin.json์ "skills": "./skills/" ์ค์ ํ๋ฉด Claude Code๊ฐ ์๋ ์ธ์. /my-plugin:my-workflow๋ก ํธ์ถ ๊ฐ๋ฅ.
ํค์๋ ์๋ ๊ฐ์ง๊น์ง ์ํ๋ฉด keyword-detector์ ํค์๋๋ฅผ ๋ฑ๋กํด์ผ ํ์ง๋ง, ๊ทธ๊ฑด Hook ์์ญ์ด๋ค.
Deep Dive ํ ํฝ
-
SKILL.md Anatomyโ frontmatter, XML ํ๊ทธ ์น์ , ๊ฐ ํ๊ทธ์ ์ญํ -
Skill Compositionโ 3๊ณ์ธต ํฉ์ฑ, resolveConflicts ์ฐ์ ์์ -
Skill Invocation Flowโ ํค์๋ ๊ฐ์ง โ Skill tool โ SKILL.md ๋ก๋ ์ ์ฒด ํ๋ฆ -
Learned Skillsโ skill-injector, mnemosyne ํ๊ทธ, ์๋ ํ์ต/์ถ์ถ
์ฐธ๊ณ ๋ฌธ์
- Claude Code Skills ๊ณต์ ๋ฌธ์
- Claude Code Skills โ ๊ณต์ Skill ์์คํ ๊ฐ๋ ์ ๋ฆฌ
๋ค์: 4ํธ Agent System โ Skill์ด โ๋ณ๋ ฌ๋ก ์์ด์ ํธ๋ฅผ ํ์ฉํ๋ผโ๊ณ ์ง์ํ๋ค. ์์ด์ ํธ๊ฐ ๋ญ๊ณ , ์ด๋ป๊ฒ ์ ์๋๊ณ , ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ ํ๋๋์ง๋ฅผ ๋ค์ ํํธ์์ ๋ค๋ฃฌ๋ค.