From 507ac1847b3fadd112a0f472704288c9d683937c Mon Sep 17 00:00:00 2001 From: Godopu Date: Sun, 19 Jul 2026 16:18:09 +0900 Subject: [PATCH] docs: add PLAN_HERDR.md and herdr_docs.md reference file --- .agents/references/herdr_docs.md | 59 +++++++++++++++++++++++++ PLAN_HERDR.md | 74 ++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 .agents/references/herdr_docs.md create mode 100644 PLAN_HERDR.md diff --git a/.agents/references/herdr_docs.md b/.agents/references/herdr_docs.md new file mode 100644 index 0000000..64f6697 --- /dev/null +++ b/.agents/references/herdr_docs.md @@ -0,0 +1,59 @@ +# ๐Ÿ“˜ herdr_docs.md: Herdr ๊ณต์‹ ๋ฌธ์„œ ์‚ฌ์ด๋“œ๋งต ๋ฐ ๋ฌธ์„œ ๊ตฌ์กฐ ๋ ˆํผ๋Ÿฐ์Šค + +์ด ๋ฌธ์„œ๋Š” AI ์—์ด์ „ํŠธ ์ธ์ง€ํ˜• ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ์ธ **herdr**์˜ ๊ณต์‹ ๋ฌธ์„œ ๊ตฌ์กฐ ๋ฐ ํ•ต์‹ฌ ๊ฒฝ๋กœ ๋งํฌ๋“ค์„ ์ •๋ฆฌํ•œ ์ฐธ๊ณ ์„œ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๊ณผ์ • ๋ฐ ์Šคํ‚ฌ ์„ค๊ณ„ ์‹œ ์ฐธ์กฐ์šฉ ์‚ฌ์–‘์œผ๋กœ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. + +--- + +## ๐Ÿ”— Herdr ๊ณต์‹ ๋ฌธ์„œ ์‚ฌ์ดํŠธ ๊ตฌ์กฐ + +๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ ๋ฐ ๋ฉ”์ธ ์„ค๋ช…: **[herdr.dev](https://herdr.dev)** + +### 1. ๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ (Start here) +* **Overview (๊ฐœ์š”)**: [herdr.dev/docs/](https://herdr.dev/docs/) + * Herdr์˜ ๋„์ž… ๋ชฉ์  ๋ฐ ํ•ต์‹ฌ ์ฒ ํ•™ +* **Install (์„ค์น˜ ๋ฐฉ๋ฒ•)**: [herdr.dev/docs/install/](https://herdr.dev/docs/install/) + * ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ์ œ๊ณต +* **Quick start (๋น ๋ฅธ ์‹œ์ž‘)**: [herdr.dev/docs/quick-start/](https://herdr.dev/docs/quick-start/) + * ๊ธฐ๋ณธ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ ๋ฐ ์—์ด์ „ํŠธ ์‹คํ–‰ ์˜ˆ์‹œ +* **Concepts (ํ•ต์‹ฌ ๊ฐœ๋…)**: [herdr.dev/docs/concepts/](https://herdr.dev/docs/concepts/) + * ์—์ด์ „ํŠธ ์ธ์ง€์‹ ํ„ฐ๋ฏธ๋„ ๊ตฌ์กฐ, Pane, Tab, Workspace ๊ด€๊ณ„ +* **Keyboard (ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค)**: [herdr.dev/docs/keyboard/](https://herdr.dev/docs/keyboard/) + * ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ฃผ์š” ๊ธฐ๋ณธ ๋‹จ์ถ•ํ‚ค ๋ชฉ๋ก + +### 2. ๐Ÿค– Herdr ์‹ค๋ฌด ํ™œ์šฉ (Using Herdr) +* **How to work with Herdr (์ž‘์—… ์›Œํฌํ”Œ๋กœ์šฐ)**: [herdr.dev/docs/how-to-work/](https://herdr.dev/docs/how-to-work/) + * ๊ฐœ๋ฐœ์ž์™€ ์—์ด์ „ํŠธ ๊ฐ„์˜ ํ™”๋ฉด ๋ถ„ํ•  ๋ฐ ํ˜‘์—… ๋ชจ๋ฒ” ์‚ฌ๋ก€ +* **Agents (์—์ด์ „ํŠธ ์ œ์–ด)**: [herdr.dev/docs/agents/](https://herdr.dev/docs/agents/) + * Claude Code, Cline, Agy ๋“ฑ ์ฃผ์š” ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ์‹คํ–‰ ๋ฐ ์—ฐ๋™ ๊ทœ์น™ +* **Session state and restore (์„ธ์…˜ ์ƒํƒœ ๋ฐ ๋ณต์›)**: [herdr.dev/docs/session-state/](https://herdr.dev/docs/session-state/) + * ํ˜ธ์ŠคํŠธ ๋ฆฌ๋ถ€ํŒ… ๋ฐ ์—ฐ๊ฒฐ ์œ ์‹ค ์‹œ ๋Œ€ํ™” ์ƒํƒœ ์›์ž์  ๋ฐฑ์—… ๋ฐ ๋ณต์› +* **Persistence and remote access (์˜์†์„ฑ ๋ฐ ์›๊ฒฉ ์ ‘์†)**: [herdr.dev/docs/persistence-remote/](https://herdr.dev/docs/persistence-remote/) + * ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์˜์† ๊ตฌ๋™ ๋ฐ ์›๊ฒฉ ํ„ฐ๋ฏธ๋„์—์„œ์˜ Attach ๋ฐฉ๋ฒ• + +### 3. โš™๏ธ ์„ค์ • ๊ฐ€์ด๋“œ (Configure) +* **Configuration (์„ค์ • ๊ธฐ์ดˆ)**: [herdr.dev/docs/configuration/](https://herdr.dev/docs/configuration/) + * ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ์„ค์ • ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์—ฐ๋™ +* **Config reference (์„ค์ • ์ฐธ์กฐ)**: [herdr.dev/docs/config-reference/](https://herdr.dev/docs/config-reference/) + * `config.toml` ๊ตฌ์กฐ ๋ฐ ์ „์—ญ ํ‚ค ๋งต ๋ณ€๊ฒฝ ์ŠคํŽ™ +* **Plugins (ํ”Œ๋Ÿฌ๊ทธ์ธ)**: [herdr.dev/docs/plugins/](https://herdr.dev/docs/plugins/) + * Herdr ํ™•์žฅ์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์–‘ ๋ฐ ์—ฐ๋™ +* **Marketplace (๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค)**: [herdr.dev/docs/marketplace/](https://herdr.dev/docs/marketplace/) + * ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ณต์œ  ๋ฐ ๋‹ค์šด๋กœ๋“œ + +### 4. ๐Ÿ“š ๋ ˆํผ๋Ÿฐ์Šค ๋ฐ ์‚ฌ์–‘ (Reference) +* **CLI reference (๋ช…๋ น์–ด ์ฐธ์กฐ)**: [herdr.dev/docs/cli-reference/](https://herdr.dev/docs/cli-reference/) + * `herdr run`, `herdr capture`, `herdr kill` ๋“ฑ CLI ์ธ์ž ์„ค๋ช… +* **Socket API (์†Œ์ผ“ API)**: [herdr.dev/docs/socket-api/](https://herdr.dev/docs/socket-api/) + * ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ฐฝ ๋ถ„ํ• , ์ž…๋ ฅ ์ „์†ก, ์ƒํƒœ ์กฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ปฌ Unix ์†Œ์ผ“ ๊ทœ๊ฒฉ +* **Integrations (์™ธ๋ถ€ ์—ฐ๋™)**: [herdr.dev/docs/integrations/](https://herdr.dev/docs/integrations/) + * CI/CD ํ™˜๊ฒฝ ๋ฐ ์™ธ๋ถ€ IDE ์–ด๋Œ‘ํ„ฐ ์—ฐ๋™ ๋ฐฉ์•ˆ +* **Agent skill file (์—์ด์ „ํŠธ ์Šคํ‚ฌ ํŒŒ์ผ)**: [herdr.dev/docs/agent-skill/](https://herdr.dev/docs/agent-skill/) + * ์—์ด์ „ํŠธ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ Herdr ํ™˜๊ฒฝ์„ ์ง„๋‹จํ•  ๋•Œ ์ฝ๋Š” ๊ทœ์น™ ์ •์˜ +* **Windows beta (์œˆ๋„์šฐ ๋ฒ ํƒ€)**: [herdr.dev/docs/windows-beta/](https://herdr.dev/docs/windows-beta/) + * Windows ํ™˜๊ฒฝ ๊ตฌ๋™ ํ˜„ํ™ฉ ๋ฐ ์ œ์•ฝ ์‚ฌํ•ญ + +### 5. ๐Ÿš‘ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ๊ธฐํƒ€ (Help) +* **Troubleshooting (๋ฌธ์ œ ํ•ด๊ฒฐ)**: [herdr.dev/docs/troubleshooting/](https://herdr.dev/docs/troubleshooting/) + * ์ธ์ฆ ์‹คํŒจ, PTY ๋ธ”๋กœํ‚น, ์„ธ์…˜ ํฌ๋ž˜์‹œ ์ž๊ฐ€ ์ง„๋‹จ ๋ฐ ๋Œ€์ฒ˜๋ฒ• +* **Preview docs (ํ”„๋ฆฌ๋ทฐ ๋ฌธ์„œ)**: [herdr.dev/docs/preview/](https://herdr.dev/docs/preview/) + * ์ฐจ๊ธฐ ์—…๋ฐ์ดํŠธ ์˜ˆ์ • ๊ธฐ๋Šฅ ๋ฌธ์„œ diff --git a/PLAN_HERDR.md b/PLAN_HERDR.md new file mode 100644 index 0000000..0c9a5dc --- /dev/null +++ b/PLAN_HERDR.md @@ -0,0 +1,74 @@ +# ๐Ÿ“‹ PLAN_HERDR.md: herdr ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ ๋ฐฑ์—”๋“œ ์ „ํ™˜ ์ž‘์—… ๊ณ„ํš์„œ + +์ด ๋ฌธ์„œ๋Š” ๊ธฐ์กด `tmux` ๊ธฐ๋ฐ˜์˜ ์—์ด์ „ํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ๋ฅผ Rust ๊ธฐ๋ฐ˜์˜ ์—์ด์ „ํŠธ ์ธ์ง€ํ˜• ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ์ธ **herdr**๋กœ ์ „๋ฉด ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๋„์ž… ๋ฐฐ๊ฒฝ, ์•„ํ‚คํ…์ฒ˜ ์ „๋žต ๋ฐ ์ƒ์„ธ ์ž‘์—… ๋‹จ๊ณ„๋“ค์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. + +--- + +## 1. ๐Ÿ” ๋„์ž… ๋ฐฐ๊ฒฝ ๋ฐ ํ•„์š”์„ฑ + +ํ˜„์žฌ ์šด์˜ ์ค‘์ธ `tmux` ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ๋Š” ํ›Œ๋ฅญํ•œ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์  ํ•œ๊ณ„์™€ ๊ฐ„ํ—์ ์ธ ํ”„๋กฌํ”„ํŠธ ์œ ์‹ค ์˜ค๋ฅ˜(Prompt-lock)๋ฅผ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. + +### ๐Ÿ”ด ๊ธฐ์กด tmux ํ™˜๊ฒฝ์˜ ํ•œ๊ณ„ +* **๋Œ€๋žต์ ์ธ ์ •์  ์ƒํƒœ ๊ฐ์ง€ (Coarse Quiescence)**: ์ž…๋ ฅ์„ ์ฃผ์ž…ํ•˜๊ธฐ ์ „์— ํ„ฐ๋ฏธ๋„์ด ํ‚ค๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ๋Š” ํœด์ง€ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด, ์…ธ ์Šคํฌ๋ฆฝํŠธ ์ƒ์—์„œ `capture-pane`์„ 0.1~0.5์ดˆ ์ฃผ๊ธฐ๋กœ ๋Œ๋ ค ํ™”๋ฉด ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด CPU ์ž์›์ด ๊ธ‰์ฆํ•˜๋Š” ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๊ตฌ๋™ ์ƒํ™ฉ์—์„œ ์ž…๋ ฅ์„ ์œ ์‹คํ•˜๊ฑฐ๋‚˜ `Enter` ํ‚ค๊ฐ€ ์”นํžˆ๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. +* **TUI ๋ชจ๋‹ฌ ์ƒํƒœ ๊ธฐ๊ณ„ ํŒŒ์‹ฑ์˜ ๋น„ํšจ์œจ**: ์—์ด์ „ํŠธ๊ฐ€ ๋„์šด ๋‹ค์ด์–ผ๋กœ๊ทธ(์˜ˆ: ์ธ์ฆ, ์‹ ๋ขฐ ํ™•์ธ)๋ฅผ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด ํ„ฐ๋ฏธ๋„ ํ•˜๋‹จ 20์ค„์˜ ๋ฌธ์ž์—ด์„ ์ •๊ทœ์‹์œผ๋กœ ์ง์ ‘ ํŒŒ์‹ฑํ•˜๋ฏ€๋กœ, ์—์ด์ „ํŠธ ๋ฒ„์ „์—…์— ๋”ฐ๋ฅธ TUI ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ์— ๋งค์šฐ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. + +### ๐ŸŸข herdr ๋„์ž… ์‹œ ๊ธฐ๋Œ€ ํšจ๊ณผ +* **PTY ๋ ˆ๋ฒจ์˜ ๋ฐ€๋ฆฌ์ดˆ(ms) ๋‹จ์œ„ ์ด๋ฒคํŠธ ์ œ์–ด**: `herdr`์€ Rust ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ž‘์„ฑ๋˜์–ด PTY(๊ฐ€์ƒ ํ„ฐ๋ฏธ๋„) ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์œ ํœด ์ƒํƒœ๋ฅผ ์„œ๋ธŒ-๋ฐ€๋ฆฌ์ดˆ ๋ ˆ๋ฒจ๋กœ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… ์‹คํŒจ ๋ฐ ๋ช…๋ น ์œ ์‹ค ์˜ค๋ฅ˜๊ฐ€ **๊ทผ๋ณธ์ ์œผ๋กœ ์ œ๋กœ(0)์— ๊ฐ€๊น๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.** +* **์—์ด์ „ํŠธ ์ƒํƒœ ์ธ์ง€ API**: ์—์ด์ „ํŠธ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ(Working, Idle, Blocked, Done)๋ฅผ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ ๋ ˆ๋ฒจ์—์„œ ํ•ด์„ํ•ด ์†Œ์ผ“ API๋กœ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ์ง€์ €๋ถ„ํ•œ ํ™”๋ฉด ํŒŒ์‹ฑ ์ฝ”๋“œ ์—†์ด ์ •๊ตํ•œ ์ž์œจ ๊ด€์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +--- + +## 2. ๐Ÿ”€ ํ˜•์ƒ ๊ด€๋ฆฌ ๋ฐ ๋ฐฐํฌ ์ „๋žต + +๋‘ ๋ฐฑ์—”๋“œ(tmux/herdr)๋ฅผ ๋‹จ์ผ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋“€์–ผ ์Šค์œ„์นญ(`if/else`) ๋ฐฉ์‹์œผ๋กœ ์ง€์›ํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋ฌด๊ฑฐ์›Œ์ง€๊ณ  ๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ **๋…๋ฆฝ๋œ ๋ธŒ๋žœ์น˜ ๊ตฌ์กฐ**๋กœ ๊นจ๋—ํ•˜๊ฒŒ ์ด์›ํ™”ํ•˜์—ฌ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + +* **`main` ๋ธŒ๋žœ์น˜ (tmux ๊ธฐ๋ฐ˜)**: + * **๋ชฉํ‘œ**: ์–ด๋””์„œ๋‚˜ ์ฆ‰์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ณ ํ˜ธํ™˜์„ฑ ํ”„๋กœ๋•์…˜ ๋ฒ„์ „. + * **์˜์กด์„ฑ**: ์ถ”๊ฐ€ ์„ค์น˜๊ฐ€ ํ•„์š” ์—†๋Š” ํ‘œ์ค€ `tmux` ํ™˜๊ฒฝ. +* **`herdr` ๋ธŒ๋žœ์น˜ (herdr ๊ธฐ๋ฐ˜)**: + * **๋ชฉํ‘œ**: ๋Œ€ํ™”์‹ ๋ฝ ์˜ค๋ฅ˜๊ฐ€ ์™„๋ฒฝํžˆ ํ†ต์ œ๋˜๋Š” ์›Œํฌ์Šคํ…Œ์ด์…˜(macOS/Linux) ์ตœ์ ํ™” ๊ณ ์•ˆ์ „์„ฑ ๋ฒ„์ „. + * **์˜์กด์„ฑ**: `herdr` CLI ๋ฐ Unix ์†Œ์ผ“ API ํ™˜๊ฒฝ. + +--- + +## 3. ๐ŸŽฏ ์ƒ์„ธ ๊ตฌํ˜„ ๋งˆ์ผ์Šคํ†ค ๋ฐ ์ž‘์—… ๊ณ„ํš + +### ๐Ÿ“ Milestone 1: ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ ์˜์กด์„ฑ ์ง„๋‹จ +* [ ] **๋ธŒ๋žœ์น˜ ๊ฒฉ๋ฆฌ**: `git checkout -b herdr` ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ๊ฒฉ๋ฆฌ ๊ฐœ๋ฐœ ๊ณต๊ฐ„ ํ™•๋ณด. +* [ ] **์ธ์Šคํ†จ๋Ÿฌ ๊ฐœ์ • (`deploy/install_mam.sh`)**: + * ํ˜ธ์ŠคํŠธ ์˜์กด์„ฑ ์ฒดํฌ ๋Œ€์ƒ์— `herdr` ์ถ”๊ฐ€ (`tmux` ์ง„๋‹จ ์ œ๊ฑฐ). + * `herdr`์ด ๋ฏธ์„ค์น˜๋œ ๊ฒฝ์šฐ, ๊ณต์‹ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ผ์ธ(`https://herdr.dev/install.sh`) ์•ˆ๋‚ด ์ถœ๋ ฅ ๋ฐ ์กฐ๊ธฐ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ. + * `.mam/` ๊ฒฉ๋ฆฌ ํด๋” ๋ฐ ํ™˜๊ฒฝ์„ค์ • ๋ฐฐํฌ ๊ทœ์น™์„ `herdr` ์ŠคํŽ™์— ๋งž๊ฒŒ ์กฐ์ •. + +### ๐Ÿ“ Milestone 2: ๋กœ์šฐ๋ ˆ๋ฒจ ์–ด๋Œ‘ํ„ฐ ์ „๋ฉด ๋ฆฌํŒฉํ† ๋ง (`lib.sh`) +* [ ] **๋ช…๋ น์–ด ๋งคํ•‘**: `lib.sh` ๋‚ด์˜ ๋ชจ๋“  `tmux` API ํ˜ธ์ถœ์„ `herdr` ๋ช…๋ น์œผ๋กœ ์ „๋ฉด ๊ฐœ์ •. + * `_tmux new-session` โžก๏ธ `herdr run -d --name "$SESSION_NAME" -- "$CMD_FULL"` + * `_tmux capture-pane` โžก๏ธ `herdr capture --name "$SESSION_NAME"` + * `_tmux send-keys` โžก๏ธ `herdr send-keys --name "$SESSION_NAME" "$KEYS"` + * `_tmux kill-session` โžก๏ธ `herdr kill --name "$SESSION_NAME"` +* [ ] **์ •์  ์ƒํƒœ ๊ฐ์ง€ ํ•จ์ˆ˜ ์žฌ์ž‘์„ฑ (`_pane_quiescent`)**: + * `herdr`์ด ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” ์„ธ์…˜ ์ƒํƒœ ์กฐํšŒ API๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ PTY ์ •์  ์ƒํƒœ ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•˜๋„๋ก ๋Œ€ํญ ๊ฒฝ๋Ÿ‰ํ™” ๋ฐ ๊ณ ๋„ํ™”. +* [ ] **์ธํ’‹ ์ฃผ์ž… ์—”์ง„ ๊ณ ๋„ํ™” (`send_keys_safe`)**: + * ๋ณต์žกํ•œ ๋ฒ„ํผ ์ œ์–ด(`set-buffer`/`paste-buffer`) ๋Œ€์‹ , `herdr` API๋ฅผ ๊ฒฝ์œ ํ•œ ๋‹ค์ด๋ ‰ํŠธ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… ๋ฐฉ์‹์œผ๋กœ ๋‹จ์ˆœํ™”. + +### ๐Ÿ“ Milestone 3: ์—์ด์ „ํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ ๋„๊ตฌ ์ด๊ด€ +* [ ] **`create_session.sh` ์ˆ˜์ •**: + * `herdr` ๊ธฐ๋™ ๋ฐฉ์‹ ๋ฐ pane PID ์ˆ˜์ง‘ ๋กœ์ง ๊ต์ฒด. + * `.mam/agent-sessions.yaml` ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ทœ๊ฒฉ์„ `herdr` ์‚ฌ์–‘(์˜ˆ: `tmux_server` โžก๏ธ `herdr_workspace`)์— ๋งž๊ฒŒ ์ •๋ ฌ. +* [ ] **`resume_session.sh` ์ˆ˜์ •**: + * ์ฃฝ์€ `herdr` ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ €์žฅ๋œ ๋Œ€ํ™” ID์™€ ํ•จ๊ป˜ `herdr run`์œผ๋กœ ๋ณต์›ํ•˜๋Š” ํ๋ฆ„ ์ด์‹. +* [ ] **`stop_session.sh` ์ˆ˜์ •**: + * ์—์ด์ „ํŠธ ์„ธ์…˜์˜ ๊น”๋”ํ•œ graceful ์ข…๋ฃŒ ๋ฐ ์ตœ์ข… TUI ์บก์ฒ˜ ํ๋ฆ„์„ `herdr` ๊ทœ๊ฒฉ์œผ๋กœ ์ „ํ™˜. + +### ๐Ÿ“ Milestone 4: ๊ฒ€์ฆ ๋ฐ ๋ฃจํ”„ ์™„์ฃผ +* [ ] **์ •์  ๋ถ„์„**: `bash -n` ๋ฐ `shellcheck` ์‹ ๊ทœ ๊ฒฝ๊ณ  0๊ฑด ๊ฒ€์ฆ. +* [ ] **์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฃจํ”„ ๊ฒ€์ฆ (`run_loop.sh`)**: + * `run_loop.sh` ๋‚ด๋ถ€์˜ `delegate_job_safe` ์‹คํ–‰์„ `herdr` ์„ธ์…˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐ๋™ํ•˜์—ฌ 100% ์ž์œจ ๋ฃจํ”„ ๊ตฌ๋™ ํ™•์ธ. + * ํ”ผ์–ด ๋ฆฌ๋ทฐ์–ด(`cline`, `claude`)๋“ค๋กœ๋ถ€ํ„ฐ ์ตœ์ข… `[VERDICT: PASS]` ์„œ๋ช… ํš๋“. + +--- + +## 4. ๐Ÿ“ˆ ์‚ฌํ›„ ๊ด€๋ฆฌ ๋ฐ ํ˜•์ƒ ๋ณ‘ํ•ฉ ์ •์ฑ… + +* `herdr` ๋ธŒ๋žœ์น˜์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ฒ€์ฆ์ด ์™„์ฃผ๋˜์–ด `PASS` ์„œ๋ช…์ด ๋ˆ„์ ๋˜๋ฉด, `deploy/INSTALL.md` ๋ฐ `README.md` ๋ฌธ์„œ๋ฅผ ๊ฐœ์ •ํ•˜์—ฌ ๊ฐ ๋ธŒ๋žœ์น˜๋ณ„ ์„ค์น˜ ์ ˆ์ฐจ๋ฅผ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค. +* `main` ๋ธŒ๋žœ์น˜์˜ ๊ณตํ†ต ๊ทœ์น™ ๋ฒ„๊ทธ ์ˆ˜์ • ์‚ฌํ•ญ(์˜ˆ: `AGENTS.md` ์ˆ˜์ • ๋“ฑ)์€ ์ฃผ๊ธฐ์ ์œผ๋กœ `herdr` ๋ธŒ๋žœ์น˜๋กœ `git merge`ํ•˜์—ฌ ์ •์ฑ…์  ์ผ์น˜์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.