ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ค opencode
์คํ ์์ค AI ์ฝ๋ฉ ์์ด์ ํธ
Key Features
โ ๋ชจ๋ธ ์์ ๋:
- Claude ๋ฟ๋ง ์๋๋ผ ChatGPT, OpenAI, GitHub Copilot, Google Gemini, ๋ก์ปฌ ๋ชจ๋ธ๊น์ง 75๊ฐ ์ด์์ LLM ํ๋ก๋ฐ์ด๋๋ฅผ ์ง์
โ LSP(Language Server Protocol) ๊ธฐ๋ณธ ๋ด์ฅ:
- LSP ๋๋ถ์ ์์ด์ ํธ๊ฐ IDE ์์ค์ผ๋ก ์ฝ๋๋ฅผ ์ดํด
- ํ๋ก์ ํธ๋ฅผ ์ด๋ฉด OpenCode๊ฐ ์์์ ์ ์ ํ Language Server๋ฅผ ์ฐพ์ ์คํ
- ํ์ ์ ๋ณด, ํจ์ ์๊ทธ๋์ฒ, ์ฐธ์กฐ ๊ด๊ณ๊น์ง ์ ํํ๊ฒ ํ์
โ ํด๋ผ์ด์ธํธ/์๋ฒ ์ํคํ ์ฒ:
- PC์์ OpenCode ์๋ฒ๋ฅผ ๋๋ฆฌ๊ณ , ๋ชจ๋ฐ์ผ์์ ์๊ฒฉ์ผ๋ก ์กฐ์ ๊ฐ๋ฅ
โ ๋ฉํฐ ์ธ์ ๊ณผ ์์ด์ ํธ ์์คํ :
- ๊ฐ์ ํ๋ก์ ํธ์์ ์ฌ๋ฌ ์์ด์ ํธ๋ฅผ ๋์์ ๋๋ฆด ์ ์์
- Build ๋ชจ๋์ Plan ๋ชจ๋
- Build๋ ์ ์ฒด ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ์คํ ์์ด์ ํธ
- Plan์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ถ์๊ณผ ํ์์ ๋ด๋น
- ๋ณต์กํ ์์ ์ ํ ๋ Plan ๋ชจ๋์์ ๋จผ์ ์ ๋ต์ ์ธ์ฐ๊ณ , Build ๋ชจ๋๋ก ๋์ด๊ฐ ์คํํ๋ ์ํฌํ๋ก์ฐ๊ฐ ์ ์ฉ
โ ๊ธฐ๋ฅ:
/share๋ช ๋ น์ผ๋ก ๋ํ๋ฅผ ๋งํฌ๋ก ๋ง๋ค์ด ๊ณต์- ์์ด์ ํธ๊ฐ ๋ง๋ ๋ณ๊ฒฝ ์ฌํญ์
/undo๋ก ๋๋๋ฆฌ๊ณ , ๋ง์์ด ๋ฐ๋๋ฉด/redo๋ก ๋ค์ ์ ์ฉ ๊ฐ๋ฅ
โ ํ๋ผ์ด๋ฒ์:
- ์ฌ์ฉ์ ์ฝ๋๋ ์ปจํ ์คํธ๋ฅผ ์ ์ฅํ์ง ์์
Install
์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ค์น > ์ต์ ๋ฆด๋ฆฌ์ค๋ OpenCode tap ์ฌ์ฉ์ ๊ถ์ฅ
$ curl -fsSL https://opencode.ai/install | bash
...
Installing opencode version: 1.2.10
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ 100%
Successfully added opencode to $PATH in /Users/aaron/.zshrc
โ
โโโโ โโโโ โโโโ โโโโ โโโโ โโโโ โโโโ โโโโ
โโโโ โโโโ โโโโ โโโโ โโโโ โโโโ โโโโ โโโโ
โโโโ โโโโ โโโโ โ โ โโโโ โโโโ โโโโ โโโโ
OpenCode includes free models, to start:
cd <project> # Open directory
opencode # Run command
For more information visit https://opencode.ai/docs
๋ค์ด๋ก๋๊ฐ ์๋ฃ๋์๋ค๋ฉด ~/.zshrc ํ์ผ ์ ์ฉ์ ํด์ฃผ์ด์ผ opencode ์ค์น ๊ฒฝ๋ก๊ฐ ์ ์์ ์ผ๋ก ๋ฑ๋ก๋ฉ๋๋ค.
$ source ~/.zshrc
...
export PATH=/Users/{id}/.opencode/bin:$PATH
Config
opencode TUI ๋ชจ๋ ์คํ
$ opencode
API ํค๋ฅผ ์ค์ ํ๋ฉด ์ํ๋ LLM ์ ๊ณต์๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ
- TUI์์
/connect๋ช ๋ น์ ์คํํ ๋ค ๊ตฌ๋ ํ๊ณ ์๋ LLM Provider ์ ํ ๋ฐ API ์ ์ฉ
Init
ํ๋ก์ ํธ ๊ฒฝ๋ก๋ก ์ด๋ํด์ OpenCode ์ด๊ธฐํ๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ ๋ถ์ํ๊ณ ํ๋ก์ ํธ ๋ฃจํธ์ AGENTS.md ํ์ผ์ ์์ฑ
- ์ด๋ ๊ฒ ํ๋ฉด OpenCode๊ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์ฌ์ฉ ์ค์ธ ์ฝ๋ฉ ํจํด์ ๋ ์ ์ดํด
$ cd /path/to/project
$ opencode
์ด์ , TUI์์ /init ๋ช
๋ น์ ์คํํ์ฌ ์ด๊ธฐํ
Reference
๐ ๏ธ oh-my-opencode
oh-my-opencode(OmO)๋ OpenCode์ ํ๋ฌ๊ทธ์ธ์ผ๋ก, AI ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ ์ค์ผ์คํธ๋ ์ด์ ํ๋ ๋๊ตฌ
๐๐ป ํ๋กฌํํธ๋ก LLM ์์ด์ ํธ์์ ์ค์น์ํค๊ธฐ
Install and configure oh-my-opencode by following the instructions here:
https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/refs/heads/master/docs/guide/installation.md
Key Features
๐ค Discipline Agents
๋ชจ๋ธ์ ๊ฐ์ ์ ๊ทน๋ํํ๋ ์ญํ ๊ธฐ๋ฐ ์์คํ
AI ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ ์ฐ๋ค ๋ณด๋ฉด ์ด๋ฐ ๊ฒฝํ์ด ์์ ๊ฒ์ด๋ค. ๊ฐ๋จํ ์์ ์ธ๋ฐ ์์ด์ ํธ๊ฐ ์ธ๋ฐ์์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ค์ง๊ฑฐ๋, ๋ฐ๋๋ก ๋ณต์กํ ์์ ์ธ๋ฐ ๊ณํ ์์ด ๋ค๋ฒผ๋ค๊ฑฐ๋. ๋ฌธ์ ๋ ๋ชจ๋ ์์ ์ ํ๋์ ๋ชจ๋ธ์ด ์ฒ๋ฆฌํ๋ ค ํ๋ค๋ ๋ฐ ์๋ค.
OmO๋ ์์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ธ ๊ฐ์ง ํต์ฌ ์์ด์ ํธ๋ฅผ ์๋์ผ๋ก ๋ฐฐ์นํ๋ค.
Sisyphus(claude-opus-4-6 / kimi-k2.5 / glm-5)๋ ๋ฉ์ธ ์ค์ผ์คํธ๋ ์ดํฐ
- ๊ณํ์ ์ธ์ฐ๊ณ , ํ์ ์์ด์ ํธ์ ์์ํ๊ณ , ๋ณ๋ ฌ๋ก ์คํ
- ์ฌ์ฉ์๊ฐ ultrawork ๋ช ๋ น์ ๋ด๋ฆฌ๋ฉด Sisyphus๋ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ์ค์ค๋ก๋ฅผ ์ฌํธ์ถ
Hephaestus(gpt-5.3-codex)๋ ์์จ์ ๋ฅ ์์ปค
- "์ด ๋ฒ๊ทธ ๊ณ ์ณ์ค" ๊ฐ์ ๋ชฉํ๋ง ๋์ ธ์ฃผ๋ฉด ์ค์ค๋ก ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํ์ํ๊ณ , ์ฐ๊ตฌํ๊ณ , ์คํ
- GPT-5.3-codex์ ์ฝ๋ ์ดํด ๋ฅ๋ ฅ์ด ํนํ ๊ฐ๋ ฅํด์ ๋ณต์กํ ๋ฒ๊ทธ ์ถ์ , ๋ฆฌํฉํ ๋ง ๊ฐ์ ์์ ์ ์ ํฉ
Prometheus(claude-opus-4-6 / kimi-k2.5 / glm-5)๋ ์ ๋ต ํ๋๋
- ๋ณต์กํ ์์ ์ ๋ฐ์ผ๋ฉด ์ธํฐ๋ทฐ ๋ชจ๋๋ก ์ ํํด์ ์ฌ์ฉ์์๊ฒ ์ง๋ฌธ
- "์ด ๊ธฐ๋ฅ ์ด๋๊น์ง ๊ตฌํํ ๊น์?", "๊ธฐ์กด ์ฝ๋ ์ค ๊ฑด๋๋ฆฌ์ง ๋ง์์ผ ํ ๋ถ๋ถ ์๋์?" ๊ฐ์ ์
- ๋ฒ์๋ฅผ ํ์ ํ๊ณ , ๋ชจํธ์ฑ์ ์ ๊ฑฐํ๊ณ , ๊ฒ์ฆ๋ ๊ณํ์ ์๋ฆฝํ ๋ค Sisyphus์๊ฒ ๋๊น
ํต์ฌ์ ์ด ์ธ ์์ด์ ํธ๊ฐ ๊ฐ์์ ๋ชจ๋ธ ๊ฐ์ ์ ๋ง๊ฒ ํ๋๋์ด ์๋ค๋ ์ ์ด๋ค. ์ฌ์ฉ์๋ ๋ชจ๋ธ์ ์๋์ผ๋ก ์ ํํ ํ์๊ฐ ์๋ค. ์์ ์นดํ ๊ณ ๋ฆฌ๋ง ์ง์ ํ๋ฉด(visual-engineering, deep, quick, ultrabrain ๋ฑ) ํ๋ค์ค๊ฐ ์ ์ ํ ๋ชจ๋ธ์ ์๋์ผ๋ก ์ ํํ๋ค. Claude๋ ๋ํ์ ๊ณํ์ ๊ฐํ๊ณ , GPT-5.3-codex๋ ์ฝ๋ ์ดํด์ ๊ฐํ๊ณ , Kimi๋ GLM์ ๊ธด ์ปจํ ์คํธ ์ฒ๋ฆฌ์ ๊ฐํ๋ค. ์ด๊ฑธ ์์คํ ์ด ์์์ ๋งค์นญํ๋ค.
โก ultrawork
ํ ๋จ์ด๋ก ๋๊น์ง ๊ฐ๋ ๋ฃจํ
AI ์์ด์ ํธ๊ฐ ์์ ์ค๊ฐ์ ๋ฉ์ถ๋ ์ด์ ๋ ๋๋ถ๋ถ ๋ ๊ฐ์ง
- ์ปจํ ์คํธ ์๋์ฐ๊ฐ ๋ถ์กฑํ๊ฑฐ๋
- ๋ค์ ๋จ๊ณ๋ฅผ ํ๋จํ์ง ๋ชปํด์
๊ฒฐ๊ตญ, ์ฌ์ฉ์๋ "๊ณ์ํด"๋ฅผ ๋ฐ๋ณต ์ ๋ ฅํ๊ฒ ๋๋ค.
ultrawork(์ถ์ฝ: ulw)๋ ์ด ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ํด๊ฒฐํ๋ค. ํ ๋จ์ด๋ฅผ ์
๋ ฅํ๋ฉด ๋ชจ๋ ์์ด์ ํธ๊ฐ ํ์ฑํ๋๊ณ , ์์
์ด 100% ์๋ฃ๋ ๋๊น์ง ๋ฉ์ถ์ง ์๋๋ค.
๋ด๋ถ์ ์ผ๋ก Ralph Loop์ ulw-loop๊ฐ ์๋ํ๋ค. ์์ด์ ํธ๊ฐ ์ค์ค๋ก๋ฅผ ๊ณ์ ํธ์ถํ๋ฉด์ todo ๋ฆฌ์คํธ๋ฅผ ์์ง ํ๋ค. Todo Enforcer๋ ์์ด์ ํธ๊ฐ ์ ํด ์ํ์ ๋น ์ง๋ฉด ์์คํ
์ด ๊ฐ์
ํด์ ๋ค์ ์์
ํ๊ฒ ๋ง๋ ๋ค. "์ด๊ฑฐ ๋๋ฌ์ผ๋ ๋ค์ ๋ญ ํ์ง?"๋ผ๊ณ ๋ฌผ์ด๋ณด๋ ๋์ , ์์คํ
์ด "๋ค์์ ์ด๊ฑฐ์ผ"๋ผ๊ณ ์๋ ค์ค๋ค.
Tip. OmO ์ ์์๋ ChatGPT($20) + Kimi($0.99) + GLM($10) ์กฐํฉ์ ์ถ์ฒ
- ์ 31๋ฌ๋ฌ๋ก ๊ฑฐ์ ๋ชจ๋ ์์
์ ์ปค๋ฒ
- Claude API๋ฅผ ์ง์ ์ฐ๋ ๊ฒ๋ณด๋ค ์ ๋ ดํ๊ณ , ๋ชจ๋ธ ์กฐํฉ๋ ๋ ์ ์ฐ๐ช IntentGate
๋ฆฌํฐ๋ดํ ์คํด์์ ๋ง๋ ์๋ ๋ถ์
AI ์์ด์ ํธ๋ ์ข ์ข ์ฌ์ฉ์์ ๋ง์ ๋๋ฌด ๋ฌธ์ ๊ทธ๋๋ก ๋ฐ์๋ค์ธ๋ค.
- "์ด ์ฝ๋ ์ดํด๋ด"๋ผ๊ณ ํ๋ฉด ์ ๋ง ์ฝ๋๋ง ์ฝ๊ณ ๋๋ธ๋ค.
- ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฑด ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ฑฐ๋ ๊ฐ์ ์ ์ ์ ์ํ๋ ๊ฒ์ด์๋๋ฐ ๋ง์ด๋ค.
IntentGate๋ ์ฌ์ฉ์์ ์ง์ง ์๋๋ฅผ ๋จผ์ ๋ถ์ํ ๋ค ๋ถ๋ฅํ๊ณ ํ๋ํ๋ค.
- "์ด๊ฑฐ ์ดํด๋ด"๊ฐ ๋จ์ ์กฐ์ฌ์ธ์ง, ๊ตฌํ๊น์ง ํ์ํ์ง, ์๋๋ฉด ์ค๋ช ๋ง ์ํ๋ ๊ฑด์ง ๋จผ์ ํ๋จํ๋ค.
์ด๊ฒ ์ค์ํ ์ด์ ๋, ์๋ชป๋ ๋ถ๋ฅ๊ฐ ์ ์ฒด ์์ ํ๋ฆ์ ๋ง์น๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ตฌํ์ด ํ์ํ๋ฐ ์กฐ์ฌ๋ง ํ๊ณ ๋๋๋ฉด, ์ฌ์ฉ์๋ ๋ค์ ํ๋กฌํํธ๋ฅผ ์์ฑํด์ผ ํ๋ค.
- ์ปจํ ์คํธ๋ ๋ญ๋น๋๊ณ , ์๊ฐ๋ ๋ญ๋น๋๋ค. IntentGate๋ ์ด ์ฒซ ๋จ๊ณ๋ฅผ ํ์คํ ์ก๋๋ค.
๐ Hashline
stale-line ์๋ฌ๋ฅผ ์ ๋ก๋ก ๋ง๋๋ ํธ์ง ๋๊ตฌ
AI ์ฝ๋ฉ ์์ด์ ํธ์ ๊ฐ์ฅ ์น๋ช ์ ์ธ ๋ฌธ์ ์ค ํ๋๋ ํธ์ง ๋๊ตฌ๋ค.
- ๊ธฐ์กด ์์ด์ ํธ๋ค์ ๋๋ถ๋ถ ์ค ๋ฒํธ ๊ธฐ๋ฐ ํธ์ง์ ์ด๋ค. "12๋ฒ์งธ ์ค์ ์ด๋ ๊ฒ ๋ฐ๊ฟ"๋ผ๋ ์.
- ๋ฌธ์ ๋ ํ์ผ์ด ๋์์ ๋ณ๊ฒฝ๋๋ฉด ์ค ๋ฒํธ๊ฐ ์ด๊ธ๋๋ค๋ ๊ฒ์ด๋ค. ๊ฒฐ๊ณผ๋ stale-line ์๋ฌ, ์ฝ๋ ์์, ์์ ์คํจ๋ค.
Hash-Anchored Edit Tool(Hashline)์ ์ด ๋ฌธ์ ๋ฅผ ์ฝํ
์ธ ํด์๋ก ํด๊ฒฐ ํ๋ค. (oh-my-pi์์ ์๊ฐ์ ๋ฐ์ ๊ตฌํ)
๋์ ๋ฐฉ์: ์์ด์ ํธ๊ฐ ํ์ผ์ ์ฝ์ผ๋ฉด ๊ฐ ์ค์ ํด์ ํ๊ทธ ๊ฐ ๋ถ๋๋ค.
11#VK| function hello() {
12#PM| console.log("world");
13#QR| }
์์ด์ ํธ๊ฐ ํธ์ง์ ์๋ํ ๋, ์์คํ ์ ํด์๋ฅผ ๊ฒ์ฆ
- 11๋ฒ์งธ ์ค์ ํด์๊ฐ ์ฌ์ ํ VK์ธ์ง ํ์ธ
- ๋ง์ฝ ๋ค๋ฅธ ์์ด์ ํธ๊ฐ ์ด๋ฏธ ๊ทธ ์ค์ ์์ ํ๋ค๋ฉด ํด์๊ฐ ๋ฌ๋ผ์ง๊ณ , ํธ์ง์ ๊ฑฐ๋ถ
- ์์ด์ ํธ๋ ํ์ผ์ ๋ค์ ์ฝ๊ณ , ์ต์ ํด์๋ฅผ ๊ฐ์ ธ์์ ์ฌ์๋
Grok Code Fast 1 ๋ฒค์น๋งํฌ์์ Hashline ์ ์ฉ ์ ์ฑ๊ณต๋ฅ 6.7% -> ์ ์ฉ ํ 68.3% 10๋ฐฐ ์ด์ ํฅ์
๐ ๏ธ LSP + AST-Grep
IDE ์์ค ์ ๋ฐ๋
๋๋ถ๋ถ์ AI ์์ด์ ํธ๋ ์ฝ๋๋ฅผ ํ ์คํธ๋ก ์ทจ๊ธ
- "์ด ํจ์ ์ด๋ฆ ๋ฐ๊ฟ"๋ผ๊ณ ํ๋ฉด ์ ๊ท์์ผ๋ก ๊ฒ์ํด์ ์นํ
- ๋ฌธ์ ๋ ๊ฐ์ ์ด๋ฆ์ ๋ค๋ฅธ ํจ์๊น์ง ๋ฐ๋๋ค๋ ๊ฒ
- ์ฃผ์ ์์ ํจ์ ์ด๋ฆ๋ ๋ฐ๋๋ค. ์ฌ์์ด๋ค.
OmO๋ LSP(Language Server Protocol)๋ฅผ ๋ด์ฅ
- lsp_rename์ IDE์ฒ๋ผ
์ฌ๋ณผ์ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ถ์ ํด์ ์ ํํ๋ฐ๊พผ๋ค. - lsp_goto_definition์ ์ ์๋ก ์ ํํ๊ณ , lsp_find_references๋ ๋ชจ๋ ์ฌ์ฉ์ฒ๋ฅผ ์ฐพ๊ณ , lsp_diagnostics๋ ์๋ฌ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฏธ๋ฆฌ ์ฒดํฌํ๋ค.
- ๋น๋ ์ ์ ๋ฌธ์ ๋ฅผ ์ก๋๋ค.
AST-Grep์ 25๊ฐ ์ธ์ด๋ฅผ ์ง์ํ๋ ํจํด ์ธ์ ์ฝ๋ ๊ฒ์/๋ฆฌ๋ผ์ดํ
๋๊ตฌ
- "๋ชจ๋ console.log๋ฅผ logger.info๋ก ๋ฐ๊ฟ"๋ผ๋ ์์ ์ AST ์์ค์์ ์ฒ๋ฆฌ
- ๋ฌธ์์ด ์์ console.log๋ ๊ฑด๋๋ฆฌ์ง ์๋๋ค. ์ฃผ์ ์์ ๊ฒ๋ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์ฝ๋๋ง ์ ํํ ๋ฐ๊พผ๋ค.
- ์ด ๋ ๋๊ตฌ์ ์กฐํฉ์ ์์ด์ ํธ๊ฐ ์ฝ๋๋ฅผ ํ ์คํธ๊ฐ ์๋๋ผ ๊ตฌ์กฐ๋ก ์ดํดํ๊ฒ ๋ง๋๋ฏ๋ก ๋ฆฌํฉํ ๋ง์ด ์์ ํด์ง๋ค.
๐ง Background Agents
์ค์ ํ์ฒ๋ผ ๋ถ์ ํ๋ ์์คํ
ํ๋์ ์์ด์ ํธ๊ฐ ๋ชจ๋ ์์ ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ๋๋ฆฌ๋ค.
- OmO๋
5๊ฐ ์ด์์ ์ ๋ฌธ ์์ด์ ํธ๋ฅผ ๋ณ๋ ฌ๋ก ๋์ ์คํ - ๋ฉ์ธ ์ปจํ ์คํธ ์๋์ฐ๋ ๊ฐ๋ณ๊ฒ ์ ์งํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ด์ ํธ๋ค์ด ๊ฐ์ ์์ ์ ์ฒ๋ฆฌ
- ๊ฒฐ๊ณผ๋ ์ค๋น๋๋ฉด ์์ง
์๋ฅผ ๋ค์ด, ํ๋ก ํธ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์์ ์ด๋ผ๋ฉด,
- ์์ด์ ํธ A๋ API ๋ฌธ์๋ฅผ ๊ฒ์
- ์์ด์ ํธ B๋ ๊ธฐ์กด ์ปดํฌ๋ํธ๋ฅผ ๋ถ์
- ์์ด์ ํธ C๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑ
- ๋ฉ์ธ ์์ด์ ํธ๋ ์ด ๊ฒฐ๊ณผ๋ค์ ์ข ํฉํด์ ๊ตฌํ
ultrawork์ ๊ฒฐํฉ๋๋ฉด, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ด์ ํธ๋ค์ด ๋ณ๋ ฌ๋ก ์์ ํ๊ณ , ๋ฉ์ธ ์์ด์ ํธ๋ ์๋ฃ๋ ๋๊น์ง ๋ฃจํ๋ฅผ ๋๋ฆฐ๋ค.
- ์ค์ ๊ฐ๋ฐํ์ด ์คํ๋ฆฐํธ๋ฅผ ๋๋ฆฌ๋ ๊ฒ๊ณผ ๋น์ทํ ๋๋
๐ Built-in MCPs
ํญ์ ์ผ์ ธ ์๋ ์ ๋ณด ํ์ดํ๋ผ์ธ
๋ณดํต AI ์์ด์ ํธ๊ฐ ์ธํฐ๋ท์์ ๊ฒ์ํ๊ฑฐ๋ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๋ ค๋ฉด ๋ณ๋ ๋๊ตฌ๋ฅผ ์ค์ ํด์ผ ํ๋ค. ๊ทธ๋ ๋ค ๋ณด๋ ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ๊ท์ฐฎ์์ ์ ํ๊ฒ ๋๋๋ฐ, ์ด๋ก ์ธํด ์์ด์ ํธ๋ ํ์ต ๋ฐ์ดํฐ์๋ง ์์กดํ๊ฒ ๋๊ณ , ์ค๋๋ ์ ๋ณด๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
OmO๋ ์ธ ๊ฐ์ง MCP(Model Context Protocol) ์๋ฒ๋ฅผ ๊ธฐ๋ณธ ํ์ฌ
Exa: ์น ๊ฒ์. ์ต์ ์ ๋ณด, ๋ธ๋ก๊ทธ ํฌ์คํธ, ๊ธฐ์ ๋ฌธ์๋ฅผ ์ค์๊ฐ์ผ๋ก ์กฐํContext7: ๊ณต์ ๋ฌธ์. Next.js, React, MongoDB ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ต์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐGrep.app: GitHub ์ฝ๋ ๊ฒ์. 100๋ง ๊ฐ ์ด์์ ์คํ์์ค ํ๋ก์ ํธ์์ ์ค์ ์ฌ์ฉ ์์ ์กฐํ
์ด ์ธ ๊ฐ๋ ์์ด์ ํธ๊ฐ ๋ฐ๋ก ์ธ ์ ์๋๋ก ํญ์ ์ผ์ ธ ์๋ค.
์๋ฅผ ๋ค์ด, "Next.js 15์์ Server Actions ์ด๋ป๊ฒ ์จ?"๋ผ๊ณ ๋ฌผ์ผ๋ฉด, ์์ด์ ํธ๋ ์๋ ์ค์ ์์ด๋ Context7์์ ๊ณต์ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค๊ณ , Grep.app์์ ์ค์ ์ฝ๋ ์์๋ฅผ ์ฐพ๊ณ , Exa๋ก ์ต์ ๋ธ๋ก๊ทธ ํฌ์คํธ๋ฅผ ์ฐธ์กฐ
Skill-Embedded MCPs
์ปจํ ์คํธ ์๋์ฐ๋ฅผ ์ ์ฝํ๋ ์ค๊ณ
MCP ์๋ฒ๋ ๊ฐ๋ ฅํ์ง๋ง ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ๋๊ตฌ์ ์คํค๋ง๊ฐ ํ๋กฌํํธ์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ์ปจํ ์คํธ ์๋์ฐ๋ฅผ ์ก์๋จน๋๋ค. 10๊ฐ MCP ์๋ฒ๋ฅผ ์ผ๋๋ฉด ์ปจํ ์คํธ์ ์ ๋ฐ์ด ๋๊ตฌ ์ค๋ช ์ผ๋ก ์ฑ์์ง๋ค.
Skill-Embedded MCP๋ ๊ฐ ์คํฌ(์: Playwright, Git Master)์ด ์์ฒด MCP ์๋ฒ๋ฅผ ํ์ฌํ์ฌ ํ์ํ ๋๋ง ๋ก๋๋๊ณ , ์์
์ด ๋๋๋ฉด ํด์ ๋๋ค. ๋ฐ๋ผ์, ์ปจํ
์คํธ ์๋์ฐ๋ ์ค์ ์์
์๋ง ์ฐ์ธ๋ค.
์๋ฅผ ๋ค์ด, ๋ธ๋ผ์ฐ์ ์๋ํ ์์ ์ด ํ์ํ๋ฉด Playwright ์คํฌ์ด ๋ก๋๋๊ณ , Playwright MCP ์๋ฒ๊ฐ ํ์ฑํ๋๋ค. ์์ ์ด ๋๋๋ฉด ์๋ฒ๋ ํด์ ๋๊ณ , ์ปจํ ์คํธ์์ ์ฌ๋ผ์ง๋ค. ๋ค์ ์์ ์ด Git ๊ด๋ จ์ด๋ฉด Git Master ์คํฌ์ด ๋ก๋๋๊ณ , Git MCP ์๋ฒ๊ฐ ํ์ฑํ๋๋ค.
์ด ๋ฐฉ์์ ํ ํฐ ํจ์จ์ฑ๊ณผ ์์ด์ ํธ ์ฑ๋ฅ์ ๋์์ ๋์ธ๋ค. ํ์ํ ๋๊ตฌ๋ง ๋ก๋๋๋ ์ปจํ ์คํธ๊ฐ ๊นจ๋ํ๊ณ , ์์ด์ ํธ๋ ํผ๋์ค๋ฌ์ํ์ง ์๋๋ค.
๐ Claude Code Compatible
๊ธฐ์กด์ Claude Code์์ ์ค์ ํด ๋ ํ
, ์ปค๋งจ๋, ์คํฌ, MCP, ํ๋ฌ๊ทธ์ธ์ ๋ชจ๋ ๊ทธ๋๋ก ์ธ ์ ์๋ค. ์ค์ ํ์ผ๋ ๊ทธ๋๋ก๋ค. OmO๋ Claude Code์ ํ์ฅ์ด์ง, ๋์ฒด๊ฐ ์๋๋ค.
์ด ๋๋ถ์ ๋ง์ด๊ทธ๋ ์ด์ ๋น์ฉ์ด ์๋ค. ์ค๋ OmO๋ฅผ ์ค์นํ๊ณ ultrawork ๋ช ๋ น์ด๋ง ์ตํ๋ฉด, ๋ด์ผ๋ถํฐ ๋ฐ๋ก ์์ฐ์ฑ์ด ์ฌ๋ผ๊ฐ๋ค.
๐ Prometheus Planner
"ํ๋กฌํํธ ์ค ํ๋ ์ด"๋ฅผ ๋์ด์
๋ณต์กํ ์์ ์ AI ์์ด์ ํธ์๊ฒ ๋์ง๋ ๊ฑด ๋๋ฐ์ด๋ค. ์ฌ์ฉ์๊ฐ ๋ชจ๋ ๊ฑธ ๋ช ํํ ์ค๋ช ํ๋ค๊ณ ์๊ฐํด๋, ์์ด์ ํธ๋ ์์ ๋ฐ์ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ค. ๋ฒ์๋ฅผ ์คํดํ๊ฑฐ๋, ์ ์ฝ ์ฌํญ์ ๋ฌด์ํ๊ฑฐ๋, ์์ ๋ค๋ฅธ ๊ฑธ ๊ตฌํํ๋ค.
Prometheus Planner(/start-work)๋ ๋ณต์กํ ์์
์ ๋ฐ์ผ๋ฉด ์ธํฐ๋ทฐ ๋ชจ๋๋ก ์ ํ
- "์ด ๊ธฐ๋ฅ ์ด๋๊น์ง ๊ตฌํํ ๊น์?"
- "๊ธฐ์กด ์ฝ๋ ์ค ๊ฑด๋๋ฆฌ์ง ๋ง์์ผ ํ ๋ถ๋ถ ์๋์?"
- "ํ ์คํธ๋ ์ด๋ ์์ค๊น์ง ์์ฑํ ๊น์?"
์ฌ์ฉ์๊ฐ ๋ต๋ณํ๋ฉด, Prometheus๋ ๋ฒ์๋ฅผ ํ์
ํ๊ณ ๋ชจํธ์ฑ์ ์ ๊ฑฐํ๊ณ ์์ธ ๊ณํ์ ์๋ฆฝํ๋ค. ์ด ๊ณํ์ ๊ฒ์ฆ๋๊ณ , Sisyphus์๊ฒ ๋์ด๊ฐ์ ์คํ๋๋ค.
"ํ๋กฌํํธ ์ค ํ๋ ์ด" ๋ฐฉ์์ ์ด์ ์๋ ์๊ธฐ๋ค. Prometheus๋ ์์
์ ์ ์ ๋ ฌ(alignment)์ ๋จผ์ ํ๋ค.
๐ /init-deep
์์ด์ ํธ์๊ฒ ํ๋ก์ ํธ๋ฅผ ์ค๋ช ํ๋ ์๋ํ
๋๊ท๋ชจ ํ๋ก์ ํธ์์ AI ์์ด์ ํธ๋ฅผ ์ฐ๋ ค๋ฉด ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํด์ผ ํ๋ค. "์ด ํ๋ก์ ํธ๋ ์ด๋ฐ ๊ตฌ์กฐ๊ณ , ์ด ๋ชจ๋์ ์ด๋ฐ ์ญํ ์ ํ๊ณ ..." ํ์ง๋ง ์ด๊ฑธ ๋งค๋ฒ ํ๋กฌํํธ์ ๋ฃ์ผ๋ฉด ํ ํฐ์ด ๋ญ๋น๋๋ค. ํ๋ก์ ํธ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฌธ์๋ ์๋์ผ๋ก ์ ๋ฐ์ดํธํด์ผ ํ๋ค.
/init-deep ๋ช
๋ น์ ํ๋ก์ ํธ ์ ์ฒด์ ๊ณ์ธต์ AGENTS.md๋ฅผ ์๋ ์์ฑ
- ํ๋ก์ ํธ ๋ฃจํธ์ ํ๋, 'src'์ ํ๋, 'src/components'์ ํ๋ ..
- ๊ฐ AGENTS.md๋ ํด๋น ๋๋ ํ ๋ฆฌ์ ํ์ ๋ชจ๋์ ์ปจํ ์คํธ๋ฅผ ๋ด๋๋ค.
- ์์ด์ ํธ๊ฐ ์์ ํ ๋ ๊ด๋ จ AGENTS.md๋ฅผ ์๋์ผ๋ก ์ฝ๋๋ค.
์๋ฅผ ๋ค์ด 'src/components/Button.tsx'๋ฅผ ์์ ํ๋ ค๋ฉด 'src/components/AGENTS.md'๋ฅผ ์ฝ๊ณ , ํ๋ก์ ํธ ์ ์ฒด ๊ตฌ์กฐ๊ฐ ํ์ํ๋ฉด ๋ฃจํธ์ 'AGENTS.md'๋ฅผ ์ฝ๋๋ค. ์๋ ๊ด๋ฆฌ๊ฐ ํ์ ์๋ค.
์ด ์์คํ ์ ํ ํฐ ํจ์จ์ฑ๊ณผ ์์ด์ ํธ ์ฑ๋ฅ์ ๋ชจ๋ ๋์ธ๋ค. ํ์ํ ์ปจํ ์คํธ๋ง ๋ก๋๋๋ ์๋์ฐ๊ฐ ์ ์ฝ๋๊ณ , ์์ด์ ํธ๋ ์ ํํ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์์ ํ๋ค.
๐ฌ Comment Checker
AI slop์ ๋ง๋ ๋ง์ง๋ง ๋ฐฉ์ด์
AI๊ฐ ์์ฑํ ์ฝ๋์๋ ํน์ ์ ๋์๊ฐ ์๋ค. ์๋ฏธ ์๋ ์ฃผ์, ๊ณผ๋ํ ์ค๋ช , ์ฅํฉํ ๋ฌธ์ํ. "์ด ํจ์๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ฒ์ฆํฉ๋๋ค" ๊ฐ์ ์ฝ๋ฉํธ๋ ์ฝ๋๋ง ๋ด๋ ์ ์ ์๋ ๋ด์ฉ์ด๋ค.
Comment Checker๋ ์์ด์ ํธ๊ฐ ์์ฑํ ์ฃผ์์ ๊ฒํ ํ๊ณ , ์๋ฏธ ์๋ ๊ฒ๋ค์ ์ ๊ฑฐํ๋ค. ๊ฒฐ๊ณผ๋ ์๋์ด ์์ง๋์ด๊ฐ ์์ฑํ ๊ฒ์ฒ๋ผ ์ฝํ๋ค.
๐ฅ๏ธ Tmux Integration
REPL๊ณผ ๋๋ฒ๊ฑฐ๋ ๋ผ์ด๋ธ๋ก
AI ์์ด์ ํธ๊ฐ ํฐ๋ฏธ๋์์ ํ ์ ์๋ ๊ฑด ์ ํ์ ์ด๋ค. ๋ช ๋ น์ ์คํํ๊ณ , ์ถ๋ ฅ์ ๋ฐ๊ณ , ๋์ด๋ค. ์ธ์ ์ด ์ ์ง๋์ง ์๊ธฐ ๋๋ฌธ์ Python REPL์์ ๋ณ์๋ฅผ ํ์ธํ๊ฑฐ๋, ๋๋ฒ๊ฑฐ๋ฅผ ๋ถ์ฌ์ ์คํ ์คํ์ ํ๊ฑฐ๋, TUI ์ฑ์ ์คํํ๋ ๊ฑด ๋ถ๊ฐ๋ฅํ๋ค.
OmO๋ Tmux๋ฅผ ๋ชจ๋ ๊ฒ์ ํตํฉ
- ์์ด์ ํธ๊ฐ Tmux ์ธ์ ์ ์ด๊ณ , ๊ทธ ์์์ ์ธํฐ๋ํฐ๋ธ ์์
- Python REPL์ ์ผ์ ๋ณ์๋ฅผ ํ์ธํ๊ณ , ๋๋ฒ๊ฑฐ๋ฅผ ๋ถ์ฌ์ ๋ธ๋ ์ดํฌํฌ์ธํธ๋ฅผ ๊ฑธ๊ณ , htop์ด๋ vim ๊ฐ์ TUI ์ฑ์ ์คํ
- ์ธ์ ์ ์ ์ง
์ด๊ฑด ๋จ์ํ ํธ์ ๊ธฐ๋ฅ์ด ์๋๋ค. ๋๋ฒ๊น ์ํฌํ๋ก์ฐ๊ฐ ์์ ํ ๋ฌ๋ผ์ง๋ค. ์์ด์ ํธ๊ฐ ์ฝ๋๋ฅผ ์์ ํ๊ณ , ๋ฐ๋ก REPL์์ ํ ์คํธํ๊ณ , ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋๋ฒ๊ฑฐ๋ก ์ถ์ ํ๋ค. ์ฌ๋์ฒ๋ผ ์ผํ๋ค.
Conclusion
OmO๋ ๋๊ตฌ๊ฐ ์๋๋ผ ์์คํ ์ผ๋ก, ์์ด์ ํธ๊ฐ ์ค์ ๋ก ์ผํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋๋ ๊ฒ
oh-my-opencode์ ๊ฐ ๊ธฐ๋ฅ์ ๋ ๋ฆฝ์ ์ผ๋ก๋ ๊ฐ๋ ฅํ์ง๋ง, ๊ฒฐํฉ๋๋ฉด ์๋์ง๊ฐ ์๊ธด๋ค.
Discipline Agents๋ ์์
์ ์ฌ๋ฐ๋ฅธ ๋ชจ๋ธ์ ๋ฐฐ์นํ๊ณ , ultrawork๋ ๋๊น์ง ์์
์ ์๋ฃ์ํค๊ณ , Background Agents๋ ๋ณ๋ ฌ๋ก ๋ถ์
ํ๋ค.
IntentGate๋ ์๋๋ฅผ ์ ํํ ํ์
ํ๊ณ , Hashline์ ํธ์ง์ ์์ ํ๊ฒ ๋ง๋ค๊ณ , LSP๋ ์ฝ๋๋ฅผ ๊ตฌ์กฐ๋ก ์ดํดํ๋ค.
Built-in MCPs๋ ์ต์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , Skill-Embedded MCPs๋ ์ปจํ
์คํธ๋ฅผ ์ ์ฝํ๊ณ , /init-deep๋ ํ๋ก์ ํธ๋ฅผ ์๋ ๋ฌธ์ํํ๋ค.
Prometheus๋ ๊ณํ์ ์ธ์ฐ๊ณ , Comment Checker๋ AI ๋์๋ฅผ ์ง์ฐ๊ณ , Tmux๋ ์ธํฐ๋ํฐ๋ธ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
Example
โ ๊ฐ์ธ ํ๋ก์ ํธ์ ๋ฆฌํํ ๋ง ์์ฒญ์ ํ์ ๋, ์์ด์ ํธ๋ณ ์ ๋ต ๋ถ์ ๋ต๋ณ
1๏ธโฃ. Sisyphus (๋ฉ์ธ ์ค์ผ์คํธ๋ ์ดํฐ) โ ์ ์ฒด ์ค๊ณ & ํ๋จ
| ์ญํ | ์ ๋ต |
|---|---|
| ์ฝ๋๋ฒ ์ด์ค ํ๊ฐ | ๋จผ์ ESLint, ๋น๋ ์ํ, ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ํ์ ํ์ฌ "๊ท์จ ์๋(Disciplined) ์ฝ๋๋ฒ ์ด์ค์ธ๊ฐ?"๋ฅผ ํ๋จ |
| ๋ฆฌํฉํ ๋ง ๋ฒ์ ๊ฒฐ์ | ์ ์ ์๊ฒ "๋ถ๋ถ ๋ฆฌํฉํ ๋ง vs ์ ๋ฉด ๋ฆฌํฉํ ๋ง" ์ ํ์ง๋ฅผ ์ ์ํ์ฌ ์ค์ฝํ ํ์ |
| ์์ ๋ถํด & ์ฐ์ ์์ | 10๊ฐ ์์ ์ ์์กด์ฑ ์์๋ก ๋ฐฐ์น โ ESLint ์๋ฌ(blocking) โ ๊ตฌ์กฐ ๋ณ๊ฒฝ โ ์คํ์ผ ํต์ผ(cosmetic) |
| ์ง์ ์ํ vs ์์ ํ๋จ | ๋ณต์กํ ๋ก์ง ๋ณ๊ฒฝ(hook ์ถ์ถ, ์ ํธ ์์ฑ, ๋ฐ์ดํฐ ๋งค๋์ ์ค๋ณต์ ๊ฑฐ)์ ์ง์ ์ํ, ๋จ์ ์คํ์ผ ํต์ผ์ ์์ |
| ๋๊ตฌ ์ ํ | ast_grep_replace๋ก JSON.parse(JSON.stringify()) โ structuredClone 7๊ฑด์ ํ ๋ฒ์ ์นํ (์๋ ํธ์ง ๋์ AST ๊ธฐ๋ฐ ์๋ํ) |
| ๊ฒ์ฆ ๋ฃจํ | ๋งค ์์ ์๋ฃ ์ npm run lint ์คํํ์ฌ ํ๊ท ํ์ธ |
ํต์ฌ ์ ๋ต: "๊ฐ์ฅ ์ํฅ๋ ๋์ ๊ฒ๋ถํฐ, ์์ ํ ๋ฐฉ๋ฒ์ผ๋ก" โ ESLint ์๋ฌ๋ฅผ ๋จผ์ ์ก์ CI๋ฅผ ๋ น์์ผ๋ก ๋ง๋ ๋ค, ๊ตฌ์กฐ์ ๊ฐ์ ์ ์งํ.
.
2๏ธโฃ. Explore Agent (ํ์ ์์ด์ ํธ) โ ์ฝ๋๋ฒ ์ด์ค ํจํด ๋ฐ๊ฒฌ
๋ฆฌํฉํ ๋ง ์ด๊ธฐ์ ๋ณ๋ ฌ ํ์์ผ๋ก ์ฌ์ฉ๋จ:
- ์ฃผ๊ฐ ๋ค๋น๊ฒ์ด์
ํจํด ํ์:
- 5๊ฐ ์ปดํฌ๋ํธ์์ currentDate, goToPrevWeek, goToNextWeek๊ฐ ๋ฐ๋ณต๋๋ ๊ฒ์ ๋ฐ๊ฒฌ โ useWeekNavigation ํ ์ถ์ถ์ ๊ทผ๊ฑฐ
- ๋ฐ์ดํฐ ๋ณํ ์ค๋ณต ํ์:
- dataManager.js์์ transformDailyData/transformTeacherDailyData, updateAttendance/updateTeacherAttendance ๋ฑ์ด ๊ฑฐ์ ๋์ผํ ๋ก์ง์ธ ๊ฒ์ ๋ฐ๊ฒฌ โ generic ํจ์ ์ถ์ถ์ ๊ทผ๊ฑฐ
- ๋๊ด์ ์
๋ฐ์ดํธ ํจํด ํ์:
- StudentList.jsx์ TeacherList.jsx์์ deep clone โ ensure structure โ apply update ํจํด์ด ~20์ค์ฉ ๋ฐ๋ณต โ applyOptimisticUpdate ์ ํธ ์ถ์ถ์ ๊ทผ๊ฑฐ
- AdminPanel ๋ํผ ํจ์ ํ์:
- handleDataUpdate = (newData) => setData(newData) ๊ฐ์ ๋ถํ์ํ passthrough ๋ํผ ๋ฐ๊ฒฌ โ ์ง์ setData ์ ๋ฌ๋ก ๋จ์ํ
ํต์ฌ ์ ๋ต: "์ค๋ณต์ ์ฐพ์๋ผ" โ Explore๋ grep ์ญํ ๋ก, ์ฌ๋ฌ ํ์ผ์ ๊ฑธ์น ํจํด ๋ฐ๋ณต์ ๋น ๋ฅด๊ฒ ์๋ณ. Sisyphus๊ฐ "์ด๊ฑด ์ถ์ถํ ๋งํ๊ฐ?"๋ฅผ ํ๋จํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต.
.
3๏ธโฃ. Sisyphus-Junior (Quick ์นดํ
๊ณ ๋ฆฌ) โ ๋จ์ ๋ฐ๋ณต ์์
์์
์ด 4๋ฒ ์์๋จ (์ด์ ์ธ์ 2ํ + ์ด๋ฒ ์ธ์ ์๋ 5ํ โ ์ทจ์):
์ด์ ์ธ์ ์์ ์ฑ๊ณตํ 2๊ฑด:
| ์์ ๋์ | ์์ ๋ด์ฉ | ์ ๋ต |
|---|---|---|
| ClassManagement.jsx | React import ์ ๊ฑฐ, export ์คํ์ผ ๋ณ๊ฒฝ, ์ธ๋ฏธ์ฝ๋ก ์ ๊ฑฐ | "ํ์ผ ํ๋, 3๊ฐ์ง ๊ธฐ๊ณ์ ๋ณํ" โ ๋ช ํํ 6-section ํ๋กฌํํธ๋ก ์ง์ |
| TeacherManagement.jsx | ๋์ผ ์์ | ์์ ๋์ผํ ํ๋กฌํํธ ํ ํ๋ฆฟ ์ฌํ์ฉ |
ํ๋กฌํํธ ์ ๋ต:
- TASK / EXPECTED OUTCOME / REQUIRED TOOLS / MUST DO / MUST NOT DO / CONTEXT 6๊ฐ ์น์ ์ ๋น ์ง์์ด ๋ช ์ํ์ฌ ์์ด์ ํธ๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๋๋ก ์ ํ.
์ด๋ฒ ์ธ์
์์ ์๋ โ ์ทจ์ํ 5๊ฑด:
์ธ๋ฏธ์ฝ๋ก ์ ๊ฑฐ๋ฅผ 5๊ฐ ํ์ผ์ ๋ณ๋ ฌ ์์ํ์ผ๋, ์์ด์ ํธ ์๋ต์ด ๋๋ ค ์ง์ sed ํ ์ค๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๋ผ๊ณ ํ๋จํ์ฌ ์ ์ ์ทจ์.
๊ตํ: ์์ ์ด "์์ด์ ํธ ๋ถํ ์๊ฐ > ์ค์ ์์ ์๊ฐ"์ธ ๊ฒฝ์ฐ, ์์๋ณด๋ค ์ง์ ์ํ์ด ๋ซ๋ค. sed 's/;$//'๋ก 3๊ฐ ํ์ผ์ 1์ด์ ์ฒ๋ฆฌ.
.
4๏ธโฃ. Sisyphus (์ง์ ์ํ) โ ํต์ฌ ๊ตฌ์กฐ ๋ณ๊ฒฝ
๊ฐ์ฅ ๋ง์ ์์ ์ ์ง์ ์ํ. ์์ํ์ง ์์ ์ด์ ๋ ์ปจํ ์คํธ ์์กด์ฑ์ด ๋์ ์์ ์ด์๊ธฐ ๋๋ฌธ:
| ์์ | ์ง์ ์ํ ์ด์ | ์ ๋ต |
|---|---|---|
| useWeekNavigation ํ ์์ฑ + 5๊ฐ ์ปดํฌ๋ํธ ์ ์ฉ | 5๊ฐ ํ์ผ์ ๊ธฐ์กด ๋ก์ง์ ์ ํํ ์ดํดํ ์ํ์์๋ง ์์ ํ ์ถ์ถ ๊ฐ๋ฅ | ๊ณตํต ํจํด์ ํ ์ผ๋ก ์ถ์ถ โ ๊ฐ ์ปดํฌ๋ํธ์์ ๊ธฐ์กด ์ฝ๋๋ฅผ ํ ํธ์ถ๋ก ๊ต์ฒด |
| dataManager.js ์ค๋ณต์ ๊ฑฐ | 6๊ฐ export ํจ์์ ์๊ทธ๋์ฒ๋ฅผ ์ ์งํ๋ฉด์ ๋ด๋ถ๋ง ๋ณ๊ฒฝํด์ผ ํจ | transformWeeklyData, upsertRecord, upsertPrayerRequest 3๊ฐ ์ ๋ค๋ฆญ ํจ์ ์์ฑ โ ๊ธฐ์กด 6๊ฐ ํจ์๋ฅผ thin wrapper๋ก ๋ณํ (ํ์ํธํ ์ ์ง) |
| applyOptimisticUpdate ์ ํธ | StudentList/TeacherList ๋ ํ์ผ์ ~20์ค ๋ณด์ผ๋ฌํ๋ ์ดํธ๋ฅผ ์ ํํ ์ดํดํด์ผ ์ถ์ถ ๊ฐ๋ฅ | ์์ ํจ์๋ก ์ค๊ณ (React hook์ด ์๋) โ deep clone + ensure structure + apply updater |
| WeeklyListView ๊ณตํต ์ปดํฌ๋ํธ | PrayerView(๋ฐฐ์ด)์ NotesView(๋จ์ผ ๋ฌธ์์ด)์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ extractItems ์ฝ๋ฐฑ์ผ๋ก ์ถ์ํ | ๊ณตํต ๋ ๋๋ง ๋ก์ง์ ๊ณต์ ์ปดํฌ๋ํธ๋ก ์ถ์ถ, ๋ฐ์ดํฐ ์ถ์ถ ๋ก์ง๋ง ๊ฐ ๋ํผ์ ๋จ๊น |
| AdminPanel ๋ํผ ์ ๊ฑฐ | App.jsx โ AdminPanel โ ํ์ ์ปดํฌ๋ํธ 3์ธต ๊ฐ์ prop ํ๋ฆ์ ์ ํํ ์ถ์ ํด์ผ ํจ | passthrough ํธ๋ค๋ฌ 3๊ฐ ์ ๊ฑฐ โ setData ์ง์ ์ ๋ฌ, ๋ถํ์ํ prop 2๊ฐ ์ ๊ฑฐ |
.
์ ์ฒด ์ํฌํ๋ก์ฐ ์์ฝ
Phase 1: ์ง๋จ
- Sisyphus โ npm run lint, npm run build๋ก ํ์ฌ ์ํ ํ์
- Explore โ ๋ณ๋ ฌ๋ก ์ฝ๋๋ฒ ์ด์ค ํจํด/์ค๋ณต ํ์
Phase 2: ๊ธด๊ธ ์์ (blocking issues)
- Sisyphus ์ง์ โ ESLint ์๋ฌ 3๊ฑด ์์ (CI ๋ น์ ํ๋ณด)
Phase 3: ๊ตฌ์กฐ์ ๊ฐ์ (high-impact)
- Sisyphus ์ง์ โ ํ ์ถ์ถ, ์ ํธ ์์ฑ, ์ค๋ณต ์ ๊ฑฐ
- AST-grep โ JSON.parse ํจํด ์ผ๊ด ์นํ (7๊ฑด)
Phase 4: ์คํ์ผ ํต์ผ (cosmetic)
- Junior ์์ โ ClassManagement, TeacherManagement ์คํ์ผ ๋ณ๊ฒฝ
- Sisyphus ์ง์ (sed) โ ๋๋จธ์ง ํ์ผ ์ธ๋ฏธ์ฝ๋ก ์ ๊ฑฐ
Phase 5: ๊ฒ์ฆ
- npm run lint โ 0 errors
- npm run build โ ์ฑ๊ณต (749ms)
ํต์ฌ ์์น: ๋ณต์กํ ํ๋จ์ด ํ์ํ ์์ ์ ์ง์ , ๊ธฐ๊ณ์ ๋ฐ๋ณต์ ์์(๋๋ ๋๊ตฌ). ๋งค ๋จ๊ณ๋ง๋ค lint/build๋ก ํ๊ท ๊ฒ์ฆ.
Reference
oh my opencode
'AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [AI] Gemini CLI + Atlassian MCP ์กฐํฉ์ผ๋ก SR ์์ฑํ๊ธฐ (0) | 2025.08.29 |
|---|---|
| [AI] genai๋ก ์ง๋ผ ์ด์ ๋ฆฌํฌํธ ์์ฑํ๊ธฐ (0) | 2025.08.27 |
| [MongoDB MCP] MongoDB MCP Server๋ก ๋ฐ์ดํฐ ์ถ์ถํด ๋ณด๊ธฐ (0) | 2025.06.22 |
| [Github MCP] 5๋ถ๋ง์ GitHub MCP Server ๊ตฌ์ถํด์ GitHub ์์ ์ํค๊ธฐ (0) | 2025.06.13 |
