Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ The Act Operator project consists of several components.
- `architecting-act`: Architecture design, subgraph composition strategies & CLAUDE.md generation
- `developing-cast`: LangGraph cast implementation patterns (create_agent, nodes, memory, middleware)
- `developing-deepagent`: DeepAgent harness patterns (create_deep_agent, subagents, backends, sandbox)
- `streaming-cast`: LangGraph v2 streaming patterns (stream modes, StreamWriter, subgraph/agent streaming, SSE/WebSocket integration)
- `testing-cast`: Testing strategies

### 4๏ธโƒฃ Documentation (Separate Repository)
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING_KR.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ Act Operator ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
- `architecting-act`: ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ ์ „๋žต ๋ฐ CLAUDE.md ์ƒ์„ฑ
- `developing-cast`: LangGraph Cast ๊ตฌํ˜„ ํŒจํ„ด (create_agent, ๋…ธ๋“œ, ๋ฉ”๋ชจ๋ฆฌ, ๋ฏธ๋“ค์›จ์–ด)
- `developing-deepagent`: DeepAgent ํ•˜๋„ค์Šค ํŒจํ„ด (create_deep_agent, ์„œ๋ธŒ์—์ด์ „ํŠธ, ๋ฐฑ์—”๋“œ, ์ƒŒ๋“œ๋ฐ•์Šค)
- `streaming-cast`: LangGraph v2 ์ŠคํŠธ๋ฆฌ๋ฐ ํŒจํ„ด (์ŠคํŠธ๋ฆผ ๋ชจ๋“œ, StreamWriter, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„/์—์ด์ „ํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ, SSE/WebSocket ํ†ตํ•ฉ)
- `testing-cast`: ํ…Œ์ŠคํŒ… ์ „๋žต

### 4๏ธโƒฃ ๋ฌธ์„œ (๋ณ„๋„ ๋ ˆํฌ)
Expand Down
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ Skills encode that knowledge as **living files that agents read directly**. Inst
โ”‚ โ””โ”€โ”€ resources/ # 50+ patterns: core, agents, tools, memory, middleware
โ”œโ”€โ”€ developing-deepagent/ # DeepAgent harness
โ”‚ โ””โ”€โ”€ resources/ # create_deep_agent, subagents, backends, sandbox, HITL
โ”œโ”€โ”€ streaming-cast/ # Streaming phase harness
โ”‚ โ””โ”€โ”€ resources/ # Stream modes, subgraph streaming, SSE/WebSocket integration
โ””โ”€โ”€ testing-cast/ # Testing phase harness
โ””โ”€โ”€ resources/ # Mocking strategies, fixtures, coverage guides
```
Expand All @@ -140,6 +142,7 @@ Skills encode that knowledge as **living files that agents read directly**. Inst
- `architecting-act` โ€” Design graph architectures and node composition strategies. Uses an interactive question sequence to understand requirements before producing a CLAUDE.md that becomes the persistent spec for the implementation phase. Supports 4 modes: initial design, add cast, extract sub-cast, redesign cast.
- `developing-cast` โ€” Implement LangGraph casts (state, nodes, agents with `create_agent`, tools, memory, middlewares, graph assembly). Reads CLAUDE.md as its source of truth.
- `developing-deepagent` โ€” Implement DeepAgent harnesses (`create_deep_agent`, subagents, backends, sandbox execution, HITL). Used when a cast node requires multi-step planning or subagent delegation.
- `streaming-cast` โ€” Implement LangGraph v2 streaming for graphs with subgraphs and agents. Covers stream modes (values, messages, updates, custom, events), StreamWriter, subgraph/agent streaming with namespace parsing, and transport integration (SSE, WebSocket).
- `testing-cast` โ€” Write pytest tests with LLM mocking strategies. Covers node-level unit tests and graph integration tests.

## The CLAUDE.md Feedback Loop
Expand Down Expand Up @@ -168,6 +171,7 @@ sequenceDiagram
participant AA as architecting-act
participant DC as developing-cast
participant DD as developing-deepagent
participant SC as streaming-cast
participant TC as testing-cast
end
participant P as Act Project
Expand All @@ -190,6 +194,12 @@ sequenceDiagram
DD->>P: backend โ†’ tools โ†’ subagents โ†’ middleware โ†’ agent assembly
end

opt Streaming required
U->>SC: "Add streaming to the chatbot cast"
SC->>P: Read graph.py (graph structure)
SC->>P: Stream mode selection โ†’ StreamWriter โ†’ subgraph/agent streaming
end

Note over U,P: Phase 3 โ€” Testing (Harness: mocking strategies + coverage guides)
U->>TC: "Write tests for the chatbot cast"
TC->>P: Read implementation code
Expand All @@ -210,7 +220,10 @@ sequenceDiagram
3. Implement โ†’ "Implement the chatbot based on CLAUDE.md"
(developing-cast: reads CLAUDE.md โ†’ implements state/nodes/agents/graph)

4. Test โ†’ "Write comprehensive tests for the chatbot"
4. Add Streaming โ†’ "Add streaming to the chatbot cast"
(streaming-cast: stream mode selection โ†’ token streaming, subgraph streaming)

5. Test โ†’ "Write comprehensive tests for the chatbot"
(testing-cast: LLM mocking + node unit tests + graph integration tests)
```

Expand Down Expand Up @@ -262,6 +275,7 @@ my_workflow/
โ”‚ โ”œโ”€โ”€ architecting-act/ # Design phase: patterns, templates, validation
โ”‚ โ”œโ”€โ”€ developing-cast/ # Implementation phase: 50+ reference patterns
โ”‚ โ”œโ”€โ”€ developing-deepagent/ # DeepAgent phase: backends, subagents, sandbox
โ”‚ โ”œโ”€โ”€ streaming-cast/ # Streaming phase: stream modes, subgraph streaming
โ”‚ โ””โ”€โ”€ testing-cast/ # Testing phase: mocking, fixtures, coverage
โ”œโ”€โ”€ casts/
โ”‚ โ”œโ”€โ”€ base_node.py # Base node class (sync/async, signature validation)
Expand Down
16 changes: 15 additions & 1 deletion README_KR.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ OpenCode๋Š” ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ `.env`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(`langgraph.json`์˜
โ”‚ โ””โ”€โ”€ resources/ # 50๊ฐœ ์ด์ƒ ํŒจํ„ด: core, agents, tools, memory, middleware
โ”œโ”€โ”€ developing-deepagent/ # DeepAgent ํ•˜๋„ค์Šค
โ”‚ โ””โ”€โ”€ resources/ # create_deep_agent, ์„œ๋ธŒ์—์ด์ „ํŠธ, ๋ฐฑ์—”๋“œ, ์ƒŒ๋“œ๋ฐ•์Šค, HITL
โ”œโ”€โ”€ streaming-cast/ # ์ŠคํŠธ๋ฆฌ๋ฐ ๋‹จ๊ณ„ ํ•˜๋„ค์Šค
โ”‚ โ””โ”€โ”€ resources/ # ์ŠคํŠธ๋ฆผ ๋ชจ๋“œ, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ์ŠคํŠธ๋ฆฌ๋ฐ, SSE/Websocket ํ†ตํ•ฉ
โ””โ”€โ”€ testing-cast/ # ํ…Œ์ŠคํŒ… ๋‹จ๊ณ„ ํ•˜๋„ค์Šค
โ””โ”€โ”€ resources/ # ๋ชจํ‚น ์ „๋žต, ํ”ฝ์Šค์ฒ˜, ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฐ€์ด๋“œ
```
Expand All @@ -140,6 +142,7 @@ OpenCode๋Š” ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ `.env`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(`langgraph.json`์˜
- `architecting-act` โ€” ๊ทธ๋ž˜ํ”„ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋…ธ๋“œ ๊ตฌ์„ฑ ์ „๋žต ์„ค๊ณ„. ์š”๊ตฌ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€ํ™”ํ˜• ์งˆ๋ฌธ ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ตฌํ˜„ ๋‹จ๊ณ„์˜ ์ง€์†์ ์ธ ๋ช…์„ธ๊ฐ€ ๋˜๋Š” CLAUDE.md๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. 4๊ฐ€์ง€ ๋ชจ๋“œ: ์ดˆ๊ธฐ ์„ค๊ณ„, Cast ์ถ”๊ฐ€, Sub-Cast ์ถ”์ถœ, Cast ์žฌ์„ค๊ณ„.
- `developing-cast` โ€” LangGraph Cast ๊ตฌํ˜„ (state, nodes, `create_agent` ์—์ด์ „ํŠธ, tools, memory, middlewares, graph ์กฐ๋ฆฝ). CLAUDE.md๋ฅผ ๋‹จ์ผ ์ง„์‹ค ์†Œ์Šค(Source of Truth)๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.
- `developing-deepagent` โ€” DeepAgent ํ•˜๋„ค์Šค ๊ตฌํ˜„ (`create_deep_agent`, ์„œ๋ธŒ์—์ด์ „ํŠธ, ๋ฐฑ์—”๋“œ, ์ƒŒ๋“œ๋ฐ•์Šค ์‹คํ–‰, HITL). Cast ๋…ธ๋“œ์— ๋‹ค๋‹จ๊ณ„ ๊ณ„ํš์ด๋‚˜ ์„œ๋ธŒ์—์ด์ „ํŠธ ์œ„์ž„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
- `streaming-cast` โ€” ์„œ๋ธŒ๊ทธ๋ž˜ํ”„์™€ ์—์ด์ „ํŠธ๊ฐ€ ํฌํ•จ๋œ ๊ทธ๋ž˜ํ”„๋ฅผ ์œ„ํ•œ LangGraph v2 ์ŠคํŠธ๋ฆฌ๋ฐ ๊ตฌํ˜„. ์ŠคํŠธ๋ฆผ ๋ชจ๋“œ (values, messages, updates, custom, events), StreamWriter, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํŒŒ์‹ฑ์„ ํ†ตํ•œ ์„œ๋ธŒ๊ทธ๋ž˜ํ”„/์—์ด์ „ํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ, ์ „์†ก ๊ณ„์ธต ํ†ตํ•ฉ (SSE, WebSocket)์„ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค.
- `testing-cast` โ€” LLM ๋ชจํ‚น ์ „๋žต์„ ์‚ฌ์šฉํ•œ pytest ํ…Œ์ŠคํŠธ ์ž‘์„ฑ. ๋…ธ๋“œ ๋ ˆ๋ฒจ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ๊ทธ๋ž˜ํ”„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค.

## CLAUDE.md ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„
Expand Down Expand Up @@ -168,6 +171,7 @@ sequenceDiagram
participant AA as architecting-act
participant DC as developing-cast
participant DD as developing-deepagent
participant SC as streaming-cast
participant TC as testing-cast
end
participant P as Act Project
Expand All @@ -190,6 +194,12 @@ sequenceDiagram
DD->>P: backend โ†’ tools โ†’ subagents โ†’ middleware โ†’ agent assembly
end

opt ์ŠคํŠธ๋ฆฌ๋ฐ ํ•„์š”
U->>SC: "์ฑ—๋ด‡ Cast์— ์ŠคํŠธ๋ฆฌ๋ฐ ์ถ”๊ฐ€"
SC->>P: graph.py ์ฝ๊ธฐ (๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ)
SC->>P: ์ŠคํŠธ๋ฆผ ๋ชจ๋“œ ์„ ํƒ โ†’ StreamWriter โ†’ ์„œ๋ธŒ๊ทธ๋ž˜ํ”„/์—์ด์ „ํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ
end

Note over U,P: 3๋‹จ๊ณ„ โ€” ํ…Œ์ŠคํŒ… (ํ•˜๋„ค์Šค: ๋ชจํ‚น ์ „๋žต + ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฐ€์ด๋“œ)
U->>TC: "์ฑ—๋ด‡ Cast ํ…Œ์ŠคํŠธ ์ž‘์„ฑ"
TC->>P: ๊ตฌํ˜„ ์ฝ”๋“œ ์ฝ๊ธฐ
Expand All @@ -210,7 +220,10 @@ sequenceDiagram
3. ๊ตฌํ˜„ โ†’ "CLAUDE.md ๊ธฐ๋ฐ˜์œผ๋กœ ์ฑ—๋ด‡ ๊ตฌํ˜„"
(developing-cast: CLAUDE.md ์ฝ๊ธฐ โ†’ state/nodes/agents/graph ๊ตฌํ˜„)

4. ํ…Œ์ŠคํŠธ โ†’ "์ฑ—๋ด‡์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ"
4. ์ŠคํŠธ๋ฆฌ๋ฐ ์ถ”๊ฐ€ โ†’ "์ฑ—๋ด‡ Cast์— ์ŠคํŠธ๋ฆฌ๋ฐ ์ถ”๊ฐ€"
(streaming-cast: ์ŠคํŠธ๋ฆผ ๋ชจ๋“œ ์„ ํƒ โ†’ ํ† ํฐ ์ŠคํŠธ๋ฆฌ๋ฐ, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ์ŠคํŠธ๋ฆฌ๋ฐ)

5. ํ…Œ์ŠคํŠธ โ†’ "์ฑ—๋ด‡์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ"
(testing-cast: LLM ๋ชจํ‚น + ๋…ธ๋“œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ + ๊ทธ๋ž˜ํ”„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ)
```

Expand Down Expand Up @@ -262,6 +275,7 @@ my_workflow/
โ”‚ โ”œโ”€โ”€ architecting-act/ # ์„ค๊ณ„ ๋‹จ๊ณ„: ํŒจํ„ด, ํ…œํ”Œ๋ฆฟ, ๊ฒ€์ฆ
โ”‚ โ”œโ”€โ”€ developing-cast/ # ๊ตฌํ˜„ ๋‹จ๊ณ„: 50๊ฐœ ์ด์ƒ ์ฐธ์กฐ ํŒจํ„ด
โ”‚ โ”œโ”€โ”€ developing-deepagent/ # DeepAgent ๋‹จ๊ณ„: ๋ฐฑ์—”๋“œ, ์„œ๋ธŒ์—์ด์ „ํŠธ, ์ƒŒ๋“œ๋ฐ•์Šค
โ”‚ โ”œโ”€โ”€ streaming-cast/ # ์ŠคํŠธ๋ฆฌ๋ฐ ๋‹จ๊ณ„: ์ŠคํŠธ๋ฆผ ๋ชจ๋“œ, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ์ŠคํŠธ๋ฆฌ๋ฐ
โ”‚ โ””โ”€โ”€ testing-cast/ # ํ…Œ์ŠคํŒ… ๋‹จ๊ณ„: ๋ชจํ‚น, ํ”ฝ์Šค์ฒ˜, ์ปค๋ฒ„๋ฆฌ์ง€
โ”œโ”€โ”€ casts/
โ”‚ โ”œโ”€โ”€ base_node.py # ๋ฒ ์ด์Šค ๋…ธ๋“œ ํด๋ž˜์Šค (๋™๊ธฐ/๋น„๋™๊ธฐ, ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๊ฒ€์ฆ)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ See [patterns/integration.md](./resources/patterns/integration.md). SSE is the L
|----------|----------|
| filtering by node name, tag, or namespace | [patterns/filtering.md](./resources/patterns/filtering.md) |
| combining multiple stream modes | [patterns/multiple-modes.md](./resources/patterns/multiple-modes.md) |
| SSE / WebSocket transport integration | [patterns/frontend-integration.md](./resources/patterns/frontend-integration.md) |
| SSE / WebSocket transport integration | [patterns/integration.md](./resources/patterns/integration.md) |

---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ Agent Skills are folders of instructions that enable AI agents to **discover** c
| `@architecting-act` | Design architecture | Starting {{ cookiecutter.act_name }} Project, Planning new cast, redesigning existing cast, unclear about structure, need CLAUDE.md |
| `@developing-cast` | Implement LangGraph cast | Building nodes/agents (create_agent)/tools, need LangGraph patterns |
| `@developing-deepagent` | Implement DeepAgent | Using create_deep_agent, need subagents/backends/sandbox/long-term memory |
| `@streaming-cast` | Add streaming | Adding streaming to runtime/API endpoint, need token streaming, custom stream events, subgraph streaming |
| `@testing-cast` | Write tests | Creating pytest tests, mocking strategies, fixtures |

### How to Use
Expand All @@ -205,6 +206,7 @@ Skills guide you through their specific domain:
- `architecting-act`: Interactive Q&A โ†’ generates `CLAUDE.md` (architecture diagram, node specs, development commands)
- `developing-cast`: Reads `CLAUDE.md` (Optional) โ†’ implements LangGraph cast code
- `developing-deepagent`: Reads `CLAUDE.md` (Optional) โ†’ implements DeepAgent components (create_deep_agent)
- `streaming-cast`: Reads graph.py โ†’ implements streaming (stream modes, StreamWriter, subgraph/agent streaming)
- `testing-cast`: Creates pytest test files

### Recommended Development Flow
Expand All @@ -215,6 +217,8 @@ Skills guide you through their specific domain:
2. @developing-cast โ†’ Implement nodes, agents (create_agent), graphs
โ†“ (if DeepAgent nodes needed)
@developing-deepagent โ†’ Implement create_deep_agent, subagents, backends
โ†“ (if streaming needed)
@streaming-cast โ†’ Add streaming (stream modes, token streaming, subgraph streaming)
โ†“
3. @testing-cast โ†’ Write and run tests
```
Expand Down Expand Up @@ -522,6 +526,7 @@ Agent Skills๋Š” AI ์—์ด์ „ํŠธ๊ฐ€ ๊ธฐ๋Šฅ์„ **๋ฐœ๊ฒฌ(Discover)** ํ•˜๊ณ , ๊ด€๋ จ
| `@architecting-act` | ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ | {{ cookiecutter.act_name }} ํ”„๋กœ์ ํŠธ ์‹œ์ž‘, ์ƒˆ cast ๊ณ„ํš, ๊ธฐ์กด cast ์žฌ์„ค๊ณ„, ๊ตฌ์กฐ ๋ถˆ๋ช…ํ™•, CLAUDE.md ํ•„์š” ์‹œ |
| `@developing-cast` | LangGraph Cast ๊ตฌํ˜„ | ๋…ธ๋“œ/์—์ด์ „ํŠธ(create_agent)/ํˆด ๊ตฌํ˜„, LangGraph ํŒจํ„ด ํ•„์š” ์‹œ |
| `@developing-deepagent` | DeepAgent ๊ตฌํ˜„ | create_deep_agent ์‚ฌ์šฉ, ์„œ๋ธŒ์—์ด์ „ํŠธ/๋ฐฑ์—”๋“œ/์ƒŒ๋“œ๋ฐ•์Šค/์žฅ๊ธฐ ๋ฉ”๋ชจ๋ฆฌ ํ•„์š” ์‹œ |
| `@streaming-cast` | ์ŠคํŠธ๋ฆฌ๋ฐ ๊ตฌํ˜„ | ๋Ÿฐํƒ€์ž„/API ์—”๋“œํฌ์ธํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ์ถ”๊ฐ€, ํ† ํฐ ์ŠคํŠธ๋ฆฌ๋ฐ, ์ปค์Šคํ…€ ์ŠคํŠธ๋ฆผ ์ด๋ฒคํŠธ, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ์ŠคํŠธ๋ฆฌ๋ฐ ํ•„์š” ์‹œ |
| `@testing-cast` | ํ…Œ์ŠคํŠธ ์ž‘์„ฑ | pytest ํ…Œ์ŠคํŠธ ์ƒ์„ฑ, ๋ชจํ‚น ์ „๋žต, ํ”ฝ์Šค์ฒ˜ |

### ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
Expand All @@ -541,6 +546,7 @@ Agent Skills๋Š” AI ์—์ด์ „ํŠธ๊ฐ€ ๊ธฐ๋Šฅ์„ **๋ฐœ๊ฒฌ(Discover)** ํ•˜๊ณ , ๊ด€๋ จ
- `architecting-act`: ๋Œ€ํ™”ํ˜• Q&A โ†’ `CLAUDE.md` ์ƒ์„ฑ (์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ, ๋…ธ๋“œ ๋ช…์„ธ, ๊ฐœ๋ฐœ ๋ช…๋ น์–ด)
- `developing-cast`: `CLAUDE.md` ์ฝ๊ธฐ(์„ ํƒ) โ†’ LangGraph Cast ์ฝ”๋“œ ๊ตฌํ˜„
- `developing-deepagent`: `CLAUDE.md` ์ฝ๊ธฐ(์„ ํƒ) โ†’ DeepAgent ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (create_deep_agent)
- `streaming-cast`: graph.py ์ฝ๊ธฐ โ†’ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ตฌํ˜„ (์ŠคํŠธ๋ฆผ ๋ชจ๋“œ, StreamWriter, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„/์—์ด์ „ํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ)
- `testing-cast`: pytest ํ…Œ์ŠคํŠธ ํŒŒ์ผ ์ƒ์„ฑ

### ๊ถŒ์žฅ ๊ฐœ๋ฐœ ํ๋ฆ„
Expand All @@ -551,6 +557,8 @@ Agent Skills๋Š” AI ์—์ด์ „ํŠธ๊ฐ€ ๊ธฐ๋Šฅ์„ **๋ฐœ๊ฒฌ(Discover)** ํ•˜๊ณ , ๊ด€๋ จ
2. @developing-cast โ†’ ๋…ธ๋“œ, ์—์ด์ „ํŠธ(create_agent), ๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„
โ†“ (DeepAgent ๋…ธ๋“œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ)
@developing-deepagent โ†’ create_deep_agent, ์„œ๋ธŒ์—์ด์ „ํŠธ, ๋ฐฑ์—”๋“œ ๊ตฌํ˜„
โ†“ (์ŠคํŠธ๋ฆฌ๋ฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ)
@streaming-cast โ†’ ์ŠคํŠธ๋ฆฌ๋ฐ ์ถ”๊ฐ€ (์ŠคํŠธ๋ฆผ ๋ชจ๋“œ, ํ† ํฐ ์ŠคํŠธ๋ฆฌ๋ฐ, ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ์ŠคํŠธ๋ฆฌ๋ฐ)
โ†“
3. @testing-cast โ†’ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๋ฐ ์‹คํ–‰
```
Expand Down