์‹œ๋ฆฌ์ฆˆ: oh-my-claudecode ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ถ€ํ„ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ๊นŒ์ง€

์ด ์‹œ๋ฆฌ์ฆˆ๋Š” Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ๋‹จ๊ณ„๋ณ„๋กœ ํ•ด๋ถ€ํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ ๋‚˜๋งŒ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๋„๋‹ฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

ํŽธ๋‚ด์šฉํ•ต์‹ฌ
1ํŽธPlugin Anatomyplugin.json ํ•˜๋‚˜๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ผˆ๋Œ€
2ํŽธHook System์ด๋ฒคํŠธ โ†’ stdin JSON โ†’ ์Šคํฌ๋ฆฝํŠธ โ†’ stdout JSON
3ํŽธ (๋ณธ๋ฌธ)Skill SystemSKILL.md๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
4ํŽธAgent SystemTask tool๋กœ ์œ„์ž„๋˜๋Š” ์‹ค์ œ ์ž‘์—… ์ˆ˜ํ–‰์ž
5ํŽธMCP Tools BridgeLSP, AST ๋“ฑ ์ปค์Šคํ…€ ๋„๊ตฌ ์„œ๋ฒ„
6ํŽธState & Lifecycle.omc/ ์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋ชจ๋“œ ์ง€์†
7ํŽธParallel OrchestrationUltrawork, 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 CodeOMC ํ™•์žฅ
ํŒŒ์ผ ๊ตฌ์กฐ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 ํ™œ์šฉ ์˜ˆ
nameultrawork, ralph, autopilot ๋“ฑ
descriptionClaude ์ž๋™ ํ˜ธ์ถœ ํŒ๋‹จ์— ์‚ฌ์šฉ
aliasesteam ์Šคํ‚ฌ์˜ ๋ณ„์นญ ๋ชฉ๋ก (๋นˆ ๋ฐฐ์—ด)

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์ค„ ์ˆ˜์—ญํ• ํ‚ค์›Œ๋“œ ํŠธ๋ฆฌ๊ฑฐ
ultrawork128๋ณ‘๋ ฌ ์‹คํ–‰ ์—”์ง„ultrawork, ulw
ralph214๊ฒ€์ฆ ๋ฃจํ”„ (์™„๋ฃŒ๊นŒ์ง€ ๋ฐ˜๋ณต)ralph
autopilot189์ „์ฒด ์ž๋™ํ™” (์•„์ด๋””์–ดโ†’์ฝ”๋“œ)autopilot, fullsend
team967N๊ฐœ worker ๋ณ‘๋ ฌ ์กฐ์œจ/team (๋ช…์‹œ์ ๋งŒ)
cancel317ํ™œ์„ฑ ๋ชจ๋“œ ์ทจ์†Œ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 ์ž…๋ ฅ ์‹œ:

  1. ralph Skill ํ™œ์„ฑํ™” โ†’ โ€œ์™„๋ฃŒ๊นŒ์ง€ ๋ฐ˜๋ณตโ€ ๋ณด์žฅ
  2. ralph๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ultrawork๋„ ํ™œ์„ฑํ™” โ†’ โ€œ๋ณ‘๋ ฌ ์‹คํ–‰โ€ ๊ฐ•ํ™”
  3. ์‹ค์ œ ์ž‘์—…: 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 ํƒœ๊ทธ, ์ž๋™ ํ•™์Šต/์ถ”์ถœ

์ฐธ๊ณ  ๋ฌธ์„œ


๋‹ค์Œ: 4ํŽธ Agent System โ€” Skill์ด โ€œ๋ณ‘๋ ฌ๋กœ ์—์ด์ „ํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ผโ€๊ณ  ์ง€์‹œํ–ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ๋ญ๊ณ , ์–ด๋–ป๊ฒŒ ์ •์˜๋˜๊ณ , ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์„ ํƒ๋˜๋Š”์ง€๋ฅผ ๋‹ค์Œ ํŒŒํŠธ์—์„œ ๋‹ค๋ฃฌ๋‹ค.