jeo
npx skills add https://github.com/supercent-io/skills-template --skill jeo
Agent 安装分布
Skill 文档
JEO â Integrated Agent Orchestration
Keyword:
jeo| Platforms: Claude Code · Codex CLI · Gemini CLI · OpenCodeê³í(ralph+plannotator) â ì¤í(team/bmad) â ì 리(worktree cleanup) ì ìì ìëí ì¤ì¼ì¤í¸ë ì´ì íë¡ì°ë¥¼ ì ê³µíë íµí© ì¤í¬.
1. Quick Start
# ì ì²´ ì¤ì¹ (모ë AI í´ + 모ë ì»´í¬ëí¸)
bash scripts/install.sh --all
# ìí íì¸
bash scripts/check-status.sh
# ê° AI í´ ê°ë³ ì¤ì
bash scripts/setup-claude.sh # Claude Code íë¬ê·¸ì¸ + í
bash scripts/setup-codex.sh # Codex CLI developer_instructions
bash scripts/setup-gemini.sh # Gemini CLI í
+ GEMINI.md
bash scripts/setup-opencode.sh # OpenCode íë¬ê·¸ì¸ ë±ë¡
2. ì¤ì¹ ì»´í¬ëí¸
JEOê° ì¤ì¹íê³ ì¤ì íë ë구 목ë¡:
| ë구 | ì¤ëª | ì¤ì¹ ëª ë ¹ |
|---|---|---|
| omc (oh-my-claudecode) | Claude Code ë©í°ìì´ì í¸ ì¤ì¼ì¤í¸ë ì´ì | /plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode |
| omx | OpenCodeì© ë©í°ìì´ì í¸ ì¤ì¼ì¤í¸ë ì´ì | bunx oh-my-opencode setup |
| ohmg | Gemini CLIì© ë©í°ìì´ì í¸ íë ììí¬ | bunx oh-my-ag |
| bmad | BMAD ìí¬íë¡ì° ì¤ì¼ì¤í¸ë ì´ì | skillsì í¬í¨ë¨ |
| ralph | ì기참조 ìë£ ë£¨í | omcì í¬í¨ ëë ë³ë ì¤ì¹ |
| plannotator | ê³í/diff ìê°ì 리뷰 | bash scripts/install.sh --with-plannotator |
| agent-browser | AI ìì´ì í¸ì© í¤ëë¦¬ì¤ ë¸ë¼ì°ì â ë¸ë¼ì°ì ëì ê²ì¦ 기본 ë구 | npm install -g agent-browser |
| playwriter | Playwright ê¸°ë° ë¸ë¼ì°ì ìëí (ì í) | npm install -g playwriter |
3. JEO ìí¬íë¡ì°
ì ì²´ íë¡ì°
jeo "<task>"
â
â¼
[1] PLAN (ralph + plannotator)
ralphì¼ë¡ ê³í ì립 â plannotatorë¡ ìê°ì ê²í â Approve/Feedback
â
â¼
[2] EXECUTE
ââ team ì¬ì© ê°ë¥? â /omc:team N:executor "<task>"
â staged pipeline: planâprdâexecâverifyâfix
ââ team ìì? â /bmad /workflow-init â BMAD ë¨ê³ ì¤í
â
â¼
[3] VERIFY (agent-browser â 기본 ëì)
agent-browserë¡ ë¸ë¼ì°ì ëì ê²ì¦
â ì¤ë
ì· ìº¡ì² â UI/ê¸°ë¥ ì ì ì¬ë¶ íì¸
â
â¼
[4] CLEANUP
모ë ìì
ìë£ í â bash scripts/worktree-cleanup.sh
git worktree prune
3.1 PLAN ë¨ê³ (ralph + plannotator)
íë«í¼ ë ¸í¸:
/ralphì¬ëì 커맨ëë Claude Code (omc)ììë§ ì¬ì© ê°ë¥í©ëë¤. Codex/Gemini/OpenCodeììë ìë “ëì²´ ë°©ë²”ì ì¬ì©íì¸ì.
Claude Code (omc):
/ralph "jeo-plan: <task>" --completion-promise="PLAN_APPROVED" --max-iterations=5
Codex / Gemini / OpenCode (ëì²´):
# 1. plan.md ì§ì ìì± í plannotatorë¡ ê²í (ë¸ë¡í¹ ì¤í â & ìì)
python3 -c "
import json
print(json.dumps({'tool_input': {'plan': open('plan.md').read(), 'permission_mode': 'acceptEdits'}}))
" | plannotator > /tmp/plannotator_feedback.txt 2>&1
# â & ìì´ ì¤í: ì¬ì©ìê° ë¸ë¼ì°ì ìì Approve/Send Feedback í´ë¦ê¹ì§ ë기
# 2. ê²°ê³¼ íì¸ í ë¶ê¸°
if grep -q '"approved":true' /tmp/plannotator_feedback.txt 2>/dev/null; then
echo "PLAN_APPROVED" # â EXECUTE ë¨ê³ ì§ì
else
echo "PLAN_FEEDBACK" # â cat /tmp/plannotator_feedback.txt ì½ê³ ì¬ê³í í ì ê³¼ì ë°ë³µ
fi
ì¤ì:
&(백그ë¼ì´ë) ì¤í ê¸ì§. ë¸ë¡í¹ì¼ë¡ ì¤íí´ì¼ ì¬ì©ì í¼ëë°±ì ìì í ì ììµëë¤.
ê³µíµ íë¡ì°:
- ê³í 문ì (
plan.md) ìì± - plannotator ë¸ë¡í¹ ì¤í â ë¸ë¼ì°ì UI ìë ì¤í
- ë¸ë¼ì°ì ìì ê³í ê²í â Approve ëë Send Feedback
- Approve (
"approved":true) â [2] EXECUTE ë¨ê³ ì§ì - Feedback â
/tmp/plannotator_feedback.txtannotations ì½ê³ ì¬ê³í (루í)
Claude Code ìë ì¤í:
Shift+TabÃ2 â plan mode ì§ì
â ê³í ìë£ ì plannotator ìë ì¤í
3.2 EXECUTE ë¨ê³
team ì¬ì© ê°ë¥í ê²½ì° (Claude Code + omc):
/omc:team 3:executor "jeo-exec: <task based on approved plan>"
- staged pipeline: team-plan â team-prd â team-exec â team-verify â team-fix
- ë³ë ¬ ìì´ì í¸ ì¤íì¼ë¡ ìë ìµëí
team ìë ê²½ì° (BMAD fallback):
/workflow-init # BMAD ìí¬íë¡ì° ì´ê¸°í
/workflow-status # íì¬ ë¨ê³ íì¸
- Analysis â Planning â Solutioning â Implementation ììë¡ ì§í
- ê° ë¨ê³ ìë£ ì plannotatorë¡ ë¬¸ì ê²í
3.3 VERIFY ë¨ê³ (agent-browser â 기본 ëì)
ë¸ë¼ì°ì ê¸°ë° ê¸°ë¥ì´ ìì ê²½ì° agent-browserë¡ ëìì ê²ì¦í©ëë¤.
# ì± ì¤í ì¤ì¸ URLìì ì¤ë
ì· ìº¡ì²
agent-browser snapshot http://localhost:3000
# í¹ì ìì íì¸ (accessibility tree ref ë°©ì)
agent-browser snapshot http://localhost:3000 -i
# â @eN ref ë²í¸ë¡ ìì ìí íì¸
# ì¤í¬ë¦°ì· ì ì¥
agent-browser screenshot http://localhost:3000 -o verify.png
기본 ëì: ë¸ë¼ì°ì ê´ë ¨ ìì ìë£ ì ìëì¼ë¡ agent-browser ê²ì¦ ë¨ê³ë¥¼ ì¤íí©ëë¤. ë¸ë¼ì°ì UIê° ìë ë°±ìë/CLI ìì ì ì´ ë¨ê³ë¥¼ ê±´ëëëë¤.
3.4 CLEANUP ë¨ê³ (worktree ìë ì 리)
# 모ë ìì
ìë£ í ìë ì¤í
bash scripts/worktree-cleanup.sh
# ê°ë³ ëª
ë ¹
git worktree list # íì¬ worktree ëª©ë¡ íì¸
git worktree prune # ìì ë ë¸ëì¹ worktree ì 리
bash scripts/worktree-cleanup.sh --force # ê°ì ì 리
4. íë«í¼ë³ íë¬ê·¸ì¸ ì¤ì
4.1 Claude Code
# ìë ì¤ì
bash scripts/setup-claude.sh
# ëë ìëì¼ë¡:
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
/omc:omc-setup
# plannotator í
ì¶ê°
bash .agent-skills/plannotator/scripts/setup-hook.sh
ì¤ì íì¼: ~/.claude/settings.json
{
"hooks": {
"PermissionRequest": [{
"matcher": "ExitPlanMode",
"hooks": [{
"type": "command",
"command": "plannotator",
"timeout": 1800
}]
}]
}
}
4.2 Codex CLI
# ìë ì¤ì
bash scripts/setup-codex.sh
# ì¤ì ë´ì©:
# - developer_instructions: ~/.codex/config.toml
# - prompt íì¼: ~/.codex/prompts/jeo.md
# - notify hook: ~/.codex/hooks/jeo-notify.py
# - [tui] notifications: agent-turn-complete
notify hook (~/.codex/hooks/jeo-notify.py):
- ìì´ì í¸ í´ ìë£ ì
last-assistant-messageììPLAN_READYì í¸ ê°ì§ plan.mdì¡´ì¬ íì¸ í plannotator ìë ì¤í- 결과를
/tmp/plannotator_feedback.txtì ì ì¥
~/.codex/config.toml ì¤ì :
developer_instructions = """
# JEO Orchestration Workflow
# ...
"""
notify = ["python3", "~/.codex/hooks/jeo-notify.py"]
[tui]
notifications = ["agent-turn-complete"]
notification_method = "osc9"
developer_instructionsë ë°ëì top-level stringì´ì´ì¼ í©ëë¤.[developer_instructions]í ì´ë¸ íìì¼ë¡ ìì±íë©´ Codexê°invalid type: map, expected a stringì¤ë¥ë¡ ìì ì¤í¨í ì ììµëë¤.
Codexìì ì¬ì©:
/prompts:jeo # JEO ìí¬íë¡ì° íì±í
# ìì´ì í¸ê° plan.md ìì± í "PLAN_READY" ì¶ë ¥ â notify hook ìë ì¤í
4.3 Gemini CLI
# ìë ì¤ì
bash scripts/setup-gemini.sh
# ì¤ì ë´ì©:
# - AfterAgent backup hook: ~/.gemini/hooks/jeo-plannotator.sh
# - ì§ìì¬í (MANDATORY loop): ~/.gemini/GEMINI.md
íµì¬ ìì¹: ìì´ì í¸ê° plannotator를 ì§ì blocking í¸ì¶í´ì¼ ê°ì í´ í¼ëë°± ê°ë¥. AfterAgent í ì ìì ë§ ìí ë§ í¨ (í´ ì¢ ë£ í ì¤í â ë¤ì í´ì 주ì ).
AfterAgent backup hook (~/.gemini/settings.json):
{
"hooks": {
"AfterAgent": [{
"matcher": "",
"hooks": [{
"name": "plannotator-review",
"type": "command",
"command": "bash ~/.gemini/hooks/jeo-plannotator.sh",
"description": "plan.md ê°ì§ ì plannotator ì¤í (AfterAgent backup)"
}]
}]
}
}
GEMINI.mdì ì¶ê°ëë PLAN ì§ì (mandatory loop):
1. plan.md ìì±
2. plannotator blocking ì¤í (& ê¸ì§) â /tmp/plannotator_feedback.txt
3. approved=true â EXECUTE / 미ì¹ì¸ â ìì í 2ë² ë°ë³µ
NEVER proceed to EXECUTE without approved=true.
ì°¸ê³ : Gemini CLI í ì´ë²¤í¸ë
BeforeTool,AfterAgent를 ì¬ì©í©ëë¤.ExitPlanModeë Claude Code ì ì© í ì ëë¤.
4.4 OpenCode
# ìë ì¤ì
bash scripts/setup-opencode.sh
# opencode.jsonì ì¶ê°ë¨:
# "@plannotator/opencode@latest" íë¬ê·¸ì¸
# "@oh-my-opencode/opencode@latest" íë¬ê·¸ì¸ (omx)
OpenCode ì¬ëì 커맨ë:
/jeo-planâ ralph + plannotatorë¡ ê³í ì립/jeo-execâ team/bmadë¡ ì¤í/jeo-cleanupâ worktree ì 리
plannotator ì°ë (MANDATORY blocking loop):
# plan.md ìì± í blocking ì¤í (& ê¸ì§) â ê°ì í´ í¼ëë°± ìì
python3 -c "import json,sys; plan=open('plan.md').read(); sys.stdout.write(json.dumps({'tool_input':{'plan':plan,'permission_mode':'acceptEdits'}}))" | plannotator > /tmp/plannotator_feedback.txt 2>&1
# ê²°ê³¼ íì¸ í ë¶ê¸°
# approved=true â EXECUTE ì§ì
# not approved â í¼ëë°± ë°ì í plan.md ìì â ì ê³¼ì ë°ë³µ
NEVER skip plannotator. NEVER proceed to EXECUTE without
"approved":true.
5. 기ìµ/ìí ì ì§ (Memory & State)
JEOë ìë ê²½ë¡ì ìí를 ì ì¥í©ëë¤:
{worktree}/.omc/state/jeo-state.json # JEO ì¤í ìí
{worktree}/.omc/plans/jeo-plan.md # ì¹ì¸ë ê³í
{worktree}/.omc/logs/jeo-*.log # ì¤í ë¡ê·¸
ìí íì¼ êµ¬ì¡°:
{
"phase": "plan|execute|verify|cleanup",
"task": "íì¬ ìì
ì¤ëª
",
"plan_approved": true,
"team_available": true,
"worktrees": ["path/to/worktree1", "path/to/worktree2"],
"created_at": "2026-02-24T00:00:00Z",
"updated_at": "2026-02-24T00:00:00Z"
}
ì¬ìì í ë³µì:
# ìí íì¸ ë° ì¬ê°
bash scripts/check-status.sh --resume
6. ê¶ì¥ ìí¬íë¡ì°
# 1ë¨ê³: ì¤ì¹ (ìµì´ 1í)
bash scripts/install.sh --all
bash scripts/check-status.sh
# 2ë¨ê³: ìì
ìì
jeo "<ìì
ì¤ëª
>" # í¤ìëë¡ íì±í
# ëë Claudeìì: Shift+TabÃ2 â plan mode
# 3ë¨ê³: plannotatorë¡ ê³í ê²í
# ë¸ë¼ì°ì UIìì Approve ëë Send Feedback
# 4ë¨ê³: ìë ì¤í
# team ëë bmadê° ìì
ì²ë¦¬
# 5ë¨ê³: ìë£ í ì 리
bash scripts/worktree-cleanup.sh
7. Best Practices
- ê³í 먼ì : ralph+plannotatorë¡ íì ê³í ê²í í ì¤í (ì못ë ì ê·¼ 조기 ì°¨ë¨)
- team ì°ì : Claude Codeììë omc team 모ë ì¬ì©ì´ ê°ì¥ í¨ì¨ì
- bmad fallback: team ìë íê²½(Codex, Gemini)ìì BMAD ì¬ì©
- worktree ì 리: ìì
ìë£ ì¦ì
worktree-cleanup.shì¤í (ë¸ëì¹ ì¤ì¼ ë°©ì§) - ìí ì ì¥:
.omc/state/jeo-state.jsonì¼ë¡ ì¸ì ê° ìí ì ì§
8. Troubleshooting
| 문ì | í´ê²° |
|---|---|
| plannotator 미ì¤í | bash .agent-skills/plannotator/scripts/check-status.sh |
| plannotator í¼ëë°± 미ìì | & 백그ë¼ì´ë ì¤í ì ê±° â ë¸ë¡í¹ ì¤í í /tmp/plannotator_feedback.txt íì¸ |
Codex ìì ì¤í¨ (invalid type: map, expected a string) |
bash scripts/setup-codex.sh ì¬ì¤í í ~/.codex/config.tomlì developer_instructionsê° top-level stringì¸ì§ íì¸ |
| Gemini í¼ëë°± 루í ìì | ~/.gemini/GEMINI.mdì ë¸ë¡í¹ ì§ì í¸ì¶ ì§ì ì¶ê° |
| worktree ì¶©ë | git worktree prune && git worktree list |
| team 모ë 미ëì | CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 íê²½ë³ì ì¤ì |
| omc ì¤ì¹ ì¤í¨ | /omc:omc-doctor ì¤í |
| agent-browser ì¤ë¥ | agent-browser --version íì¸ |
9. References
- oh-my-claudecode â Claude Code ë©í°ìì´ì í¸
- plannotator â ê³í/diff ìê°ì 리뷰
- BMAD Method â 구조íë AI ê°ë° ìí¬íë¡ì°
- Agent Skills Spec â ì¤í¬ í¬ë§· ëª ì¸