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
31 changes: 27 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ Act Operator implements this with three layers:
| Layer | Role | How Act implements it |
|-------|------|----------------------|
| **Scaffolding** | Structure assembled before the first agent prompt | `act new` โ€” generates the full project skeleton with module conventions and base classes baked in |
| **Executable SSOT** | Knowledge encoded as living files agents read at runtime | Agent Skills โ€” 50+ reference patterns, decision trees, and architecture templates in `.claude/skills/` |
| **Executable SSOT** | Knowledge encoded as living files that agents and humans read at runtime | Act Template (project structure, CI, base classes, configs), Agent Skills (50+ patterns for agents), Drawkit (visual architecture for teams) |
| **Feedback Loop** | Specs that survive across sessions and keep agents aligned | `CLAUDE.md` โ€” architecture diagrams, node specifications, and development commands generated by skills and maintained across sessions |

These three layers work together. Scaffolding gives agents a consistent starting point. Skills give them the knowledge to reason correctly within that structure. CLAUDE.md gives them persistent memory of what was designed โ€” so the agent in your next session picks up exactly where the last one left off.
These three layers work together. Scaffolding gives agents a consistent starting point. The SSOT layer provides three forms of executable knowledge: the **Act Template** establishes project conventions (CI workflows, base classes, test structure, configs), **Skills** give agents the patterns to reason correctly within that structure, and the **Drawkit** gives teams a shared visual vocabulary for architecture diagrams. CLAUDE.md gives them persistent memory of what was designed โ€” so the agent in your next session picks up exactly where the last one left off.

> **Terminology**: An **Act** is a harness instance โ€” your LangGraph project. A **Cast** is a graph unit within it (one StateGraph = one Cast). A single Act can contain multiple Casts as independent packages in a monorepo.

Expand Down Expand Up @@ -114,11 +114,23 @@ opencode run "Design a customer support chatbot"

OpenCode reads environment variables from `.env` at the project root (configured in `langgraph.json` as `env: ".env"`).

## Skills: The Executable SSOT
## The Executable SSOT

Traditional teams share LangGraph knowledge through wikis, architecture docs, and tribal memory. The problem: documentation decays, wikis go stale, and tribal memory doesn't survive team changes.

Skills encode that knowledge as **living files that agents read directly**. Instead of you telling the agent what patterns exist, the skill shows the agent the exact patterns, decision trees, and reference implementations it needs โ€” at the moment it needs them. All patterns reference official LangChain 1.0+/LangGraph 1.0+ documentation, not guesswork. The skills are lean by design: context-aware guidance without unnecessary code generation, keeping token usage low across long sessions.
The harness encodes that knowledge as **living files** โ€” not static documentation, but executable references that agents and humans read directly. Act Operator scaffolds three complementary SSOT components:

| Component | Audience | What it provides |
|-----------|----------|------------------|
| **Act Template** (scaffold) | Developers | The project skeleton itself โ€” CI workflows, base classes, test structure, pre-commit hooks, monorepo config, `.env.example`, `TEMPLATE_README.md` usage guide |
| **Agent Skills** (`.claude/skills/`) | AI agents | 50+ reference patterns, decision trees, architecture templates โ€” agents read these at runtime |
| **Drawkit** (`drawkit.xml`) | Teams | Pre-defined draw.io shapes for Act architecture โ€” a shared visual vocabulary for human-to-human communication |

Each component targets a different audience while referencing the same underlying conventions. The Act Template establishes the structural foundation that agents and developers both work within; Skills tell agents how to build correctly inside that structure; the Drawkit tells teams how to communicate architecture visually.

### Agent Skills

Skills encode LangGraph knowledge as files that agents read directly. Instead of you telling the agent what patterns exist, the skill shows the agent the exact patterns, decision trees, and reference implementations it needs โ€” at the moment it needs them. All patterns reference official LangChain 1.0+/LangGraph 1.0+ documentation, not guesswork. The skills are lean by design: context-aware guidance without unnecessary code generation, keeping token usage low across long sessions.

```
.claude/skills/
Expand Down Expand Up @@ -181,6 +193,16 @@ The CLAUDE.md is not static documentation โ€” it is a **living specification** t

This loop is the harness feedback mechanism: every agent session anchors to the same spec, producing consistent output regardless of who prompts it.

## Architecture Diagram Kit (Drawkit)

The `drawkit.xml` file scaffolded in every Act project provides pre-defined [draw.io](https://app.diagrams.net/) shapes for designing Act architecture visually.

> **Note**: Drawkit is for **human-to-human communication** โ€” sharing architecture with teammates, stakeholders, or documentation.
> For **agent-to-agent communication**, use the Mermaid charts in `CLAUDE.md` generated by `@architecting-act`.
> For **runtime inspection**, use the LangGraph Development Server (LangSmith).

Import `drawkit.xml` into draw.io's Scratchpad to get drag-and-drop Act components. See `TEMPLATE_README.md` in your generated project for detailed import instructions and examples.

## Skill-Driven Development Flow

```mermaid
Expand Down Expand Up @@ -317,6 +339,7 @@ my_workflow/
โ”‚ โ”œโ”€โ”€ cast_tests/ # Graph integration tests
โ”‚ โ””โ”€โ”€ node_tests/ # Node unit tests
โ”œโ”€โ”€ CLAUDE.md # Root spec: Act overview + Cast index
โ”œโ”€โ”€ drawkit.xml # draw.io shapes for architecture diagrams
โ”œโ”€โ”€ langgraph.json # LangGraph entry points
โ”œโ”€โ”€ pyproject.toml # Monorepo workspace (uv workspace, shared deps)
โ””โ”€โ”€ TEMPLATE_README.md # Template usage guide
Expand Down
31 changes: 27 additions & 4 deletions README_KR.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ Act Operator๋Š” ์ด๋ฅผ ์„ธ ๊ฐ€์ง€ ๋ ˆ์ด์–ด๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค:
| ๋ ˆ์ด์–ด | ์—ญํ•  | Act์—์„œ์˜ ๊ตฌํ˜„ |
|--------|------|---------------|
| **์Šค์บํด๋”ฉ** | ์ฒซ ๋ฒˆ์งธ ์—์ด์ „ํŠธ ํ”„๋กฌํ”„ํŠธ ์ด์ „์— ์กฐ๋ฆฝ๋˜๋Š” ๊ตฌ์กฐ | `act new` โ€” ๋ชจ๋“ˆ ์ปจ๋ฒค์…˜๊ณผ ๋ฒ ์ด์Šค ํด๋ž˜์Šค๊ฐ€ ๋‚ด์žฅ๋œ ์™„์ „ํ•œ ํ”„๋กœ์ ํŠธ ์Šค์ผˆ๋ ˆํ†ค ์ƒ์„ฑ |
| **์‹คํ–‰ ๊ฐ€๋Šฅํ•œ SSOT** | ์—์ด์ „ํŠธ๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์ฝ๋Š” ์‚ด์•„์žˆ๋Š” ํŒŒ์ผ๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ง€์‹ | Agent Skills โ€” `.claude/skills/`์˜ 50๊ฐœ ์ด์ƒ ์ฐธ์กฐ ํŒจํ„ด, ๊ฒฐ์ • ํŠธ๋ฆฌ, ์•„ํ‚คํ…์ฒ˜ ํ…œํ”Œ๋ฆฟ |
| **์‹คํ–‰ ๊ฐ€๋Šฅํ•œ SSOT** | ์—์ด์ „ํŠธ์™€ ์‚ฌ๋žŒ์ด ๋Ÿฐํƒ€์ž„์— ์ฝ๋Š” ์‚ด์•„์žˆ๋Š” ํŒŒ์ผ๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ง€์‹ | Act Template (ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, CI, ๋ฒ ์ด์Šค ํด๋ž˜์Šค, ์„ค์ •), Agent Skills (์—์ด์ „ํŠธ์šฉ 50๊ฐœ ์ด์ƒ ํŒจํ„ด), Drawkit (ํŒ€์šฉ ์‹œ๊ฐ์  ์•„ํ‚คํ…์ฒ˜) |
| **ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„** | ์„ธ์…˜์„ ๋„˜์–ด ์—์ด์ „ํŠธ๋ฅผ ์ •๋ ฌ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ช…์„ธ | `CLAUDE.md` โ€” ์Šคํ‚ฌ์ด ์ƒ์„ฑํ•˜๊ณ  ์„ธ์…˜ ๊ฐ„ ์œ ์ง€๋˜๋Š” ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ, ๋…ธ๋“œ ๋ช…์„ธ, ๊ฐœ๋ฐœ ๋ช…๋ น์–ด |

์ด ์„ธ ๋ ˆ์ด์–ด๋Š” ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์Šค์บํด๋”ฉ์€ ์—์ด์ „ํŠธ์—๊ฒŒ ์ผ๊ด€๋œ ์‹œ์ž‘์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‚ฌ์€ ๊ทธ ๊ตฌ์กฐ ๋‚ด์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CLAUDE.md๋Š” ์„ค๊ณ„๋œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค โ€” ๋‹ค์Œ ์„ธ์…˜์˜ ์—์ด์ „ํŠธ๊ฐ€ ์ด์ „ ์„ธ์…˜์ด ์ค‘๋‹จ๋œ ์ง€์ ์—์„œ ์ •ํ™•ํžˆ ์ด์–ด๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์„ธ ๋ ˆ์ด์–ด๋Š” ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์Šค์บํด๋”ฉ์€ ์—์ด์ „ํŠธ์—๊ฒŒ ์ผ๊ด€๋œ ์‹œ์ž‘์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. SSOT ๋ ˆ์ด์–ด๋Š” ์„ธ ๊ฐ€์ง€ ํ˜•ํƒœ์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ง€์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค: **Act Template**์€ ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜(CI ์›Œํฌํ”Œ๋กœ์šฐ, ๋ฒ ์ด์Šค ํด๋ž˜์Šค, ํ…Œ์ŠคํŠธ ๊ตฌ์กฐ, ์„ค์ •)์„ ํ™•๋ฆฝํ•˜๊ณ , **์Šคํ‚ฌ**์€ ๊ทธ ๊ตฌ์กฐ ์•ˆ์—์„œ ์—์ด์ „ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์„, **Drawkit**์€ ํŒ€์—๊ฒŒ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์œ„ํ•œ ๊ณต์œ  ์‹œ๊ฐ ์–ดํœ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CLAUDE.md๋Š” ์„ค๊ณ„๋œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค โ€” ๋‹ค์Œ ์„ธ์…˜์˜ ์—์ด์ „ํŠธ๊ฐ€ ์ด์ „ ์„ธ์…˜์ด ์ค‘๋‹จ๋œ ์ง€์ ์—์„œ ์ •ํ™•ํžˆ ์ด์–ด๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

> **์šฉ์–ด ์ •๋ฆฌ**: **Act**๋Š” ํ•˜๋„ค์Šค ์ธ์Šคํ„ด์Šค โ€” LangGraph ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. **Cast**๋Š” ๊ทธ ์•ˆ์˜ ๊ทธ๋ž˜ํ”„ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค (ํ•˜๋‚˜์˜ StateGraph = ํ•˜๋‚˜์˜ Cast). ํ•˜๋‚˜์˜ Act๋Š” ๋ชจ๋…ธ๋ ˆํฌ ์•ˆ์— ๋…๋ฆฝ์ ์ธ ํŒจํ‚ค์ง€๋กœ ์—ฌ๋Ÿฌ Cast๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Expand Down Expand Up @@ -114,11 +114,23 @@ opencode run "๊ณ ๊ฐ ์ง€์› ์ฑ—๋ด‡์„ ์„ค๊ณ„ํ•ด์ค˜"

OpenCode๋Š” ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ `.env`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(`langgraph.json`์˜ `env: ".env"` ์„ค์ •).

## ์Šคํ‚ฌ: ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ SSOT
## ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ SSOT

์ „ํ†ต์ ์ธ ํŒ€์€ LangGraph ์ง€์‹์„ ์œ„ํ‚ค, ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œ, ๊ตฌ์ „ ์ง€์‹์œผ๋กœ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋ฌธ์„œ๊ฐ€ ๋‚ก์•„๊ฐ€๊ณ , ์œ„ํ‚ค๊ฐ€ ์˜ค๋ž˜๋˜๊ณ , ๊ตฌ์ „ ์ง€์‹์ด ํŒ€์› ๋ณ€ํ™”์—์„œ ์‚ด์•„๋‚จ์ง€ ๋ชปํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์Šคํ‚ฌ์€ ๊ทธ ์ง€์‹์„ **์—์ด์ „ํŠธ๊ฐ€ ์ง์ ‘ ์ฝ๋Š” ์‚ด์•„์žˆ๋Š” ํŒŒ์ผ**๋กœ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ์—๊ฒŒ ์–ด๋–ค ํŒจํ„ด์ด ์กด์žฌํ•˜๋Š”์ง€ ๋‹น์‹ ์ด ์„ค๋ช…ํ•  ํ•„์š” ์—†์ด, ์Šคํ‚ฌ์ด ์—์ด์ „ํŠธ์—๊ฒŒ ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ํŒจํ„ด, ๊ฒฐ์ • ํŠธ๋ฆฌ, ์ฐธ์กฐ ๊ตฌํ˜„์„ ์ง์ ‘ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒจํ„ด์€ ์ถ”์ธก์ด ์•„๋‹Œ ๊ณต์‹ LangChain 1.0+/LangGraph 1.0+ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‚ฌ์€ ์„ค๊ณ„์ƒ ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ƒ์„ฑ ์—†์ด ์ปจํ…์ŠคํŠธ ์ธ์‹ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ธด ์„ธ์…˜์—์„œ๋„ ํ† ํฐ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
ํ•˜๋„ค์Šค๋Š” ์ด ์ง€์‹์„ **์‚ด์•„์žˆ๋Š” ํŒŒ์ผ**๋กœ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค โ€” ์ •์  ๋ฌธ์„œ๊ฐ€ ์•„๋‹Œ, ์—์ด์ „ํŠธ์™€ ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ฝ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. Act Operator๋Š” ์„ธ ๊ฐ€์ง€ ์ƒํ˜ธ๋ณด์™„์  SSOT ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์Šค์บํด๋”ฉํ•ฉ๋‹ˆ๋‹ค:

| ๊ตฌ์„ฑ์š”์†Œ | ๋Œ€์ƒ | ์ œ๊ณตํ•˜๋Š” ๊ฒƒ |
|----------|------|------------|
| **Act Template** (scaffold) | ๊ฐœ๋ฐœ์ž | ํ”„๋กœ์ ํŠธ ์Šค์ผˆ๋ ˆํ†ค ์ž์ฒด โ€” CI ์›Œํฌํ”Œ๋กœ์šฐ, ๋ฒ ์ด์Šค ํด๋ž˜์Šค, ํ…Œ์ŠคํŠธ ๊ตฌ์กฐ, pre-commit ํ›…, ๋ชจ๋…ธ๋ ˆํฌ ์„ค์ •, `.env.example`, `TEMPLATE_README.md` ์‚ฌ์šฉ ๊ฐ€์ด๋“œ |
| **Agent Skills** (`.claude/skills/`) | AI ์—์ด์ „ํŠธ | 50๊ฐœ ์ด์ƒ ์ฐธ์กฐ ํŒจํ„ด, ๊ฒฐ์ • ํŠธ๋ฆฌ, ์•„ํ‚คํ…์ฒ˜ ํ…œํ”Œ๋ฆฟ โ€” ์—์ด์ „ํŠธ๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์ฝ์Œ |
| **Drawkit** (`drawkit.xml`) | ํŒ€ | draw.io์šฉ Act ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์ „ ์ •์˜ ์‰์ดํ”„ โ€” ์‚ฌ๋žŒ ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ณต์œ  ์‹œ๊ฐ ์–ดํœ˜ |

๊ฐ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋Œ€์ƒ์„ ๊ฒจ๋ƒฅํ•˜๋ฉด์„œ ๋™์ผํ•œ ๊ธฐ์ € ์ปจ๋ฒค์…˜์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. Act Template์€ ์—์ด์ „ํŠธ์™€ ๊ฐœ๋ฐœ์ž ๋ชจ๋‘๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๊ตฌ์กฐ์  ๊ธฐ๋ฐ˜์„ ํ™•๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‚ฌ์€ ๊ทธ ๊ตฌ์กฐ ์•ˆ์—์„œ ์—์ด์ „ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„, Drawkit์€ ํŒ€์—๊ฒŒ ์•„ํ‚คํ…์ฒ˜ ์‹œ๊ฐํ™” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

### Agent Skills

์Šคํ‚ฌ์€ LangGraph ์ง€์‹์„ ์—์ด์ „ํŠธ๊ฐ€ ์ง์ ‘ ์ฝ๋Š” ํŒŒ์ผ๋กœ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ์—๊ฒŒ ์–ด๋–ค ํŒจํ„ด์ด ์กด์žฌํ•˜๋Š”์ง€ ๋‹น์‹ ์ด ์„ค๋ช…ํ•  ํ•„์š” ์—†์ด, ์Šคํ‚ฌ์ด ์—์ด์ „ํŠธ์—๊ฒŒ ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ํŒจํ„ด, ๊ฒฐ์ • ํŠธ๋ฆฌ, ์ฐธ์กฐ ๊ตฌํ˜„์„ ์ง์ ‘ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒจํ„ด์€ ์ถ”์ธก์ด ์•„๋‹Œ ๊ณต์‹ LangChain 1.0+/LangGraph 1.0+ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‚ฌ์€ ์„ค๊ณ„์ƒ ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ƒ์„ฑ ์—†์ด ์ปจํ…์ŠคํŠธ ์ธ์‹ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ธด ์„ธ์…˜์—์„œ๋„ ํ† ํฐ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

```
.claude/skills/
Expand Down Expand Up @@ -181,6 +193,16 @@ CLAUDE.md๋Š” ์ •์  ๋ฌธ์„œ๊ฐ€ ์•„๋‹Œ **์‚ด์•„์žˆ๋Š” ๋ช…์„ธ**์ž…๋‹ˆ๋‹ค:

์ด ๋ฃจํ”„๊ฐ€ ํ•˜๋„ค์Šค์˜ ํ”ผ๋“œ๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค: ๋ชจ๋“  ์—์ด์ „ํŠธ ์„ธ์…˜์ด ๋™์ผํ•œ ๋ช…์„ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜์—ฌ, ๋ˆ„๊ฐ€ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋“  ์ผ๊ด€๋œ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

## ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ ํ‚คํŠธ (Drawkit)

๋ชจ๋“  Act ํ”„๋กœ์ ํŠธ์— ์Šค์บํด๋”ฉ๋˜๋Š” `drawkit.xml` ํŒŒ์ผ์€ [draw.io](https://app.diagrams.net/)์—์„œ Act ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ „ ์ •์˜๋œ ์‰์ดํ”„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

> **์ฐธ๊ณ **: Drawkit์€ **์‚ฌ๋žŒ ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜** โ€” ํŒ€์›, ์ดํ•ด๊ด€๊ณ„์ž, ๋ฌธ์„œ์™€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
> **์—์ด์ „ํŠธ ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜**์—๋Š” `@architecting-act`์ด ์ƒ์„ฑํ•˜๋Š” `CLAUDE.md`์˜ Mermaid ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
> **๋Ÿฐํƒ€์ž„ ๊ฒ€์‚ฌ**์—๋Š” LangGraph Development Server (LangSmith)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

draw.io์˜ Scratchpad์— `drawkit.xml`์„ importํ•˜๋ฉด ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ Act ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ import ๋ฐฉ๋ฒ•๊ณผ ์˜ˆ์‹œ๋Š” ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ์˜ `TEMPLATE_README.md`๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

## ์Šคํ‚ฌ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ํ๋ฆ„

```mermaid
Expand Down Expand Up @@ -317,6 +339,7 @@ my_workflow/
โ”‚ โ”œโ”€โ”€ cast_tests/ # ๊ทธ๋ž˜ํ”„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
โ”‚ โ””โ”€โ”€ node_tests/ # ๋…ธ๋“œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
โ”œโ”€โ”€ CLAUDE.md # ๋ฃจํŠธ ๋ช…์„ธ: Act ๊ฐœ์š” + Cast ์ธ๋ฑ์Šค
โ”œโ”€โ”€ drawkit.xml # draw.io์šฉ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ ์‰์ดํ”„
โ”œโ”€โ”€ langgraph.json # LangGraph ์ง„์ž…์ 
โ”œโ”€โ”€ pyproject.toml # ๋ชจ๋…ธ๋ ˆํฌ ์›Œํฌ์ŠคํŽ˜์ด์Šค (uv workspace, ๊ณต์œ  ์˜์กด์„ฑ)
โ””โ”€โ”€ TEMPLATE_README.md # ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ
Expand Down