An open API service indexing awesome lists of open source software.

https://github.com/lidge-jun/cli-jaw

๐Ÿฆˆ 2-line install personal AI assistant. 5 engines (Claude, Codex, Gemini, OpenCode, Copilot), 108 skills, zero ban risk.
https://github.com/lidge-jun/cli-jaw

ai assistant automation claude cli codex copilot gemini mcp multi-agent opencode orchestrator telegram-bot typescript

Last synced: 3 days ago
JSON representation

๐Ÿฆˆ 2-line install personal AI assistant. 5 engines (Claude, Codex, Gemini, OpenCode, Copilot), 108 skills, zero ban risk.

Awesome Lists containing this project

README

          

# ๐Ÿฆˆ CLI-JAW

### 5๋Œ€ AI ์—”์ง„์„ ํ’ˆ์€ ๋‚˜๋งŒ์˜ ๋กœ์ปฌ ๋น„์„œ

*Claude, Codex, Gemini... ์ด์ œ ๋ฒˆ๊ฐˆ์•„ ์“ฐ์ง€ ๋งˆ์„ธ์š”.*

[![Tests](https://img.shields.io/badge/tests-888%20pass-brightgreen)](#-ํ…Œ์ŠคํŠธ)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://typescriptlang.org)
[![Node](https://img.shields.io/badge/node-%3E%3D22-blue)](https://nodejs.org)
[![License](https://img.shields.io/badge/license-ISC-yellow)](LICENSE)
[![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
[![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker&logoColor=white)](#-๋„์ปค--์ปจํ…Œ์ด๋„ˆ-๊ฒฉ๋ฆฌ)
[![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20WSL%20%7C%20Docker-lightgrey)](#)

[English](README.md) / **ํ•œ๊ตญ์–ด** / [ไธญๆ–‡](README.zh-CN.md)

## ๋น ๋ฅธ ๋งํฌ

- [์„ค์น˜ & ์‹คํ–‰](#-์„ค์น˜--์‹คํ–‰-30์ดˆ) ยท [AI ์—”์ง„ ์ธ์ฆ](#-ai-์—”์ง„-์ธ์ฆ) ยท [CLI-JAW๋ž€?](#cli-jaw๋ž€-๋ฌด์—‡์ธ๊ฐ€์š”)
- [๊ธฐ๋Šฅ](#๋น„์„œ๊ฐ€-์–ด๋–ค-์ผ์„-ํ• -์ˆ˜-์žˆ๋‚˜์š”) ยท [์Šคํ‚ฌ](#-์Šคํ‚ฌ-์‹œ์Šคํ…œ) ยท [ํ…”๋ ˆ๊ทธ๋žจ](#-ํ…”๋ ˆ๊ทธ๋žจ--๋‚ด-์ฃผ๋จธ๋‹ˆ-์†์˜-๋น„์„œ) ยท [์Œ์„ฑ & STT](#-์Œ์„ฑ--stt--์Œ์„ฑ-์ธ์‹)
- [์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜](#-๋ฉ€ํ‹ฐ-์—์ด์ „ํŠธ-์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜) ยท [MCP](#-mcp--๋‹จ์ผ-์„ค์ •-6๊ฐœ์˜-ai-์—”์ง„) ยท [CLI ๋ช…๋ น์–ด](#๏ธ-cli-๋ช…๋ น์–ด)
- [๋ฉ€ํ‹ฐ ์ธ์Šคํ„ด์Šค](#๏ธ-๋ฉ€ํ‹ฐ-์ธ์Šคํ„ด์Šค--ํ”„๋กœ์ ํŠธ๋ณ„-๋…๋ฆฝ-ํ™˜๊ฒฝ) ยท [๋ชจ๋ธ](#-๋ชจ๋ธ) ยท [Docker](#-docker--์ปจํ…Œ์ด๋„ˆ-๊ฒฉ๋ฆฌ)
- [๊ฐœ๋ฐœ](#๏ธ-๊ฐœ๋ฐœ) ยท [ํ…Œ์ŠคํŠธ](#-ํ…Œ์ŠคํŠธ) ยท [๋ฌธ์„œ](#-๋ฌธ์„œ) ยท [๋ฌธ์ œ ํ•ด๊ฒฐ](#-๋ฌธ์ œ-ํ•ด๊ฒฐ) ยท [๊ธฐ์—ฌํ•˜๊ธฐ](#-๊ธฐ์—ฌํ•˜๊ธฐ)

๐ŸชŸ Windows ์‚ฌ์šฉ์ž์ด์‹ ๊ฐ€์š”? โ€” WSL ์›ํด๋ฆญ ์„ค์น˜

**Step 1: WSL ์„ค์น˜** (PowerShell ๊ด€๋ฆฌ์ž ๊ถŒํ•œ โ€” ์ตœ์ดˆ 1ํšŒ)

```powershell
wsl --install
```

์•ˆ๋‚ด์— ๋”ฐ๋ผ ์ปดํ“จํ„ฐ๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์„ธ์š”. ์žฌ๋ถ€ํŒ… ํ›„ ์‹œ์ž‘ ๋ฉ”๋‰ด์—์„œ **Ubuntu**๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

**Step 2: CLI-JAW ์„ค์น˜** (Ubuntu/WSL ํ„ฐ๋ฏธ๋„์—์„œ)

```bash
curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install-wsl.sh | bash
```

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์ˆ˜ ํŒจํ‚ค์ง€(`curl`, `unzip`, `git`), Node.js 22+, CLI-JAW๋ฅผ ์ž๋™ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

**Step 3: ์‰˜ ๋‹ค์‹œ ๋กœ๋“œ** (์ค‘์š” โ€” PATH ๋ณ€๊ฒฝ ์ ์šฉ)

```bash
source ~/.bashrc
```

**Step 4: AI ์—”์ง„ ์ธ์ฆ** (ํ•˜๋‚˜ ์„ ํƒ)

```bash
copilot login # GitHub Copilot (๋ฌด๋ฃŒ)
opencode # OpenCode (๋ฌด๋ฃŒ ๋ชจ๋ธ ์ œ๊ณต)
claude auth # Anthropic Claude
codex login # OpenAI Codex
gemini # Google Gemini
```

**Step 5: ์‹œ์ž‘ํ•˜๊ธฐ**

```bash
jaw serve
# โ†’ http://localhost:3457
```

> ๐Ÿ’ก ์Šคํฌ๋ฆฝํŠธ๋Š” [fnm](https://github.com/Schniz/fnm)์œผ๋กœ Node.js๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ `nvm`์ด ์žˆ์œผ๋ฉด ๊ทธ๊ฑธ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ง WSL ๋ฌธ์ œ ํ•ด๊ฒฐ

| ๋ฌธ์ œ | ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• |
| --------------------------------------- | ------------------------------------------------------- |
| `unzip: command not found` | ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์„ธ์š” โ€” `unzip`์„ ์ž๋™ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค |
| `jaw: command not found` (์„ค์น˜ ํ›„) | `source ~/.bashrc`๋กœ PATH๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜์„ธ์š” |
| ์—ฌ์ „ํžˆ `jaw`๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ | `export PATH="$(npm config get prefix)/bin:$PATH"` ์‹คํ–‰ |
| `npm install -g` ๊ถŒํ•œ ์˜ค๋ฅ˜ | `sudo chown -R $USER $(npm config get prefix)` ์‹คํ–‰ |

๐ŸŽ ํ„ฐ๋ฏธ๋„์ด ์ฒ˜์Œ์ด์‹ ๊ฐ€์š”? โ€” ์›ํด๋ฆญ Node.js + CLI-JAW ์„ค์น˜

**Step 1: ํ„ฐ๋ฏธ๋„ ์—ด๊ธฐ**

**Finder** โ†’ **์‘์šฉ ํ”„๋กœ๊ทธ๋žจ** โ†’ **์œ ํ‹ธ๋ฆฌํ‹ฐ** โ†’ **ํ„ฐ๋ฏธ๋„.app** ์„ ์—ด์–ด์ฃผ์„ธ์š”.
(๋˜๋Š” `โŒ˜ Space` ๋ˆ„๋ฅด๊ณ  `ํ„ฐ๋ฏธ๋„` ์ด๋ผ๊ณ  ์ž…๋ ฅํ•˜์„ธ์š”)

**Step 2: ์•„๋ž˜ ๋‚ด์šฉ์„ ๋ถ™์—ฌ๋„ฃ๊ณ  Enter**

```bash
curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install.sh | bash
```

Node.js + CLI-JAW๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰ ๊ฐ€ ๋œฐ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์ฃผ์„ธ์š”.

**Step 3: ๋กœ๊ทธ์ธ & ์‹คํ–‰**

```bash
copilot login # ๋˜๋Š”: claude auth / codex login / gemini login
jaw serve
```

๋ธŒ๋ผ์šฐ์ €์—์„œ **http://localhost:3457** ์„ ์—ด๋ฉด ๋! ๐Ÿฆˆ

---

## ๐Ÿš€ ์„ค์น˜ & ์‹คํ–‰ (30์ดˆ)

```bash
npm install -g cli-jaw
jaw serve
```

**๋.** **http://localhost:3457** ์—ด๊ณ  ๋ฐ”๋กœ ์ฑ„ํŒ…ํ•˜์„ธ์š”. ๐Ÿฆˆ

> ๐Ÿ• **24์‹œ๊ฐ„ ๋Œ์•„๊ฐ€๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ์„ธ์š”?** `jaw service install` โ€” systemd, launchd, Docker ์ž๋™ ๊ฐ์ง€.

> **Node.js โ‰ฅ 22** ([๋‹ค์šด๋กœ๋“œ](https://nodejs.org)) + ์•„๋ž˜์—์„œ **AI CLI ์ตœ์†Œ 1๊ฐœ** ์ธ์ฆ ํ•„์š”.

---

## ๐Ÿ”‘ AI ์—”์ง„ ์ธ์ฆ

**ํ•˜๋‚˜๋งŒ** ์žˆ์œผ๋ฉด ๋ผ์š” โ€” ๊ฐ€์ง„ ๊ฑฐ ๊ณจ๋ผ์„œ:

```bash
# โ”€โ”€ ๋ฌด๋ฃŒ โ”€โ”€
copilot login # GitHub Copilot (๋ฌด๋ฃŒ ํ”Œ๋žœ)
opencode # OpenCode โ€” ์ฒซ ์‹คํ–‰ ์‹œ ์ž๋™ ์ธ์ฆ (๋ฌด๋ฃŒ ๋ชจ๋ธ ์žˆ์Œ)

# โ”€โ”€ ์œ ๋ฃŒ โ”€โ”€
claude auth # Anthropic Claude
codex login # OpenAI Codex
gemini # Google Gemini โ€” ์ฒซ ์‹คํ–‰ ์‹œ ์ธ์ฆ
```

์ค€๋น„ ์ƒํƒœ ํ™•์ธ: `jaw doctor`

๐Ÿ“‹ jaw doctor ์ถœ๋ ฅ ์˜ˆ์‹œ

```
๐Ÿฆˆ CLI-JAW Doctor โ€” 12 checks

โœ… Node.js v22.15.0
โœ… npm v10.9.4
โœ… Claude CLI installed
โœ… Codex CLI installed
โš ๏ธ Gemini CLI not found (optional)
โœ… OpenCode CLI installed
โœ… Copilot CLI installed
โœ… Database jaw.db OK
โœ… Skills 22 active, 94 reference
โœ… MCP 3 servers configured
โœ… Memory MEMORY.md exists
โœ… Server port 3457 available
```

> ๐Ÿ’ก **5๊ฐœ ๋‹ค ๊น” ํ•„์š” ์—†์–ด์š”.** ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์—”์ง„์ด ์„ค์น˜๋ผ ์žˆ๋Š”์ง€ ์ž๋™ ๊ฐ์ง€ํ•˜๊ณ , ์—†์œผ๋ฉด ๋‹ค์Œ ์—”์ง„์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

---

## CLI-JAW๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

CLI-JAW๋Š” ๋‚ด ์ปดํ“จํ„ฐ์— ์ƒ์ฃผํ•˜๋ฉฐ ์ด๋ฏธ ์ต์ˆ™ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ธ **์›น, ํ„ฐ๋ฏธ๋„, ํ…”๋ ˆ๊ทธ๋žจ, ๋””์Šค์ฝ”๋“œ**์—์„œ ์ž‘๋™ํ•˜๋Š” **๊ฐœ์ธ์šฉ AI ๋น„์„œ**์ž…๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•œ ๊ฒƒ์„ ๋ฌป๊ณ , ์ž‘์—…์„ ์œ„์ž„ํ•˜๊ณ , ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ž๋™ํ™”ํ•˜์„ธ์š”.
![CLI-JAW Web UI](image/README/1772128366759.png)

> ๐Ÿ’ฌ *"์˜ค๋Š˜ ์ผ์ • ์ •๋ฆฌํ•ด์ค˜"* โ†’ ํ…”๋ ˆ๊ทธ๋žจ์œผ๋กœ ๋ฐ”๋กœ ์ •๋ฆฌํ•ด์„œ ๋ณด๋‚ด์ค˜์š”
> ๐Ÿ’ฌ *"์ด ๋ชจ๋“ˆ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋„ ์งœ์ค˜"* โ†’ ์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์•Œ์•„์„œ, ์ปคํ”ผ ํ•œ ์ž” ํ•˜๊ณ  ์˜ค๋ฉด ๋ผ์š”
> ๐Ÿ’ฌ *"์ € PDF ๋‹ค์šด๋ฐ›์•„์„œ ํ•ต์‹ฌ๋งŒ ๋…ธ์…˜์— ์ •๋ฆฌํ•ด"* โ†’ ๋ธŒ๋ผ์šฐ์ € + ๋…ธ์…˜ ์Šคํ‚ฌ ์กฐํ•ฉ์œผ๋กœ ๋š๋”ฑ

๋‹จ์ผ ๋ชจ๋ธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์กด ๋น„์„œ๋“ค๊ณผ ๋‹ฌ๋ฆฌ, CLI-JAW๋Š” 5๊ฐœ์˜ AI ์—”์ง„(Claude, Codex, Gemini, OpenCode, Copilot)์„ ๊ณต์‹ CLI๋ฅผ ํ†ตํ•ด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•˜์—ฌ ๋ชจ๋“  ์ œ๊ณต์—…์ฒด์˜ ์žฅ์ ์„ ํ†ตํ•ฉ๋œ ๊ฒฝํ—˜์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์—”์ง„ ์‚ฌ์šฉ๋Ÿ‰์ด ์ดˆ๊ณผ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ค์Œ ์—”์ง„์œผ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. 116๊ฐœ์˜ ๋‚ด์žฅ ์Šคํ‚ฌ์ด ๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™”๋ถ€ํ„ฐ ๋ฌธ์„œ ์ƒ์„ฑ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

| | ์™œ CLI-JAW์ธ๊ฐ€์š”? |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| ๐Ÿ›ก๏ธ **์•ˆ์ „ํ•œ ์„œ๋น„์Šค ์•ฝ๊ด€ ์ค€์ˆ˜** | ๊ณต์‹ CLI๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค โ€” API ํ‚ค ์Šคํฌ๋ž˜ํ•‘์ด๋‚˜ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์ด ์—†์œผ๋ฏ€๋กœ ๊ณ„์ • ์ •์ง€ ์œ„ํ—˜์ด ์—†์Šต๋‹ˆ๋‹ค. |
| ๐Ÿค– **๊ฒ€์ฆ๋œ ์—์ด์ „ํŠธ ๋„๊ตฌ** | ์‹ค์ „์—์„œ ๊ฒ€์ฆ๋œ 5๊ฐœ์˜ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ(Claude, Codex, Gemini, OpenCode, Copilot)๋ฅผ ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜์„ธ์š”. |
| โšก **๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์ž๋™ ์ „ํ™˜(Fallback)** | ์—”์ง„ ํ•˜๋‚˜๊ฐ€ ๋ฉˆ์ถฐ๋„ ๊ฑฑ์ • ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์—”์ง„์ด ์ฆ‰์‹œ ์ด์–ด๋ฐ›์•„ ์ค‘๋‹จ ์—†๋Š” ์ž‘์—…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. |
| ๐ŸŽญ **์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅ ๊ทน๋Œ€ํ™”** | ๋ณต์žกํ•œ ์ž‘์—…์€ ์ „๋ฌธํ™”๋œ ์„œ๋ธŒ ์—์ด์ „ํŠธ์—๊ฒŒ ๋ถ„์‚ฐ์‹œ์ผœ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. |
| ๐Ÿ“ฆ **116๊ฐœ์˜ ๋‚ด์žฅ ์Šคํ‚ฌ** | ๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™”, ๋ฌธ์„œ ์ƒ์„ฑ, ํ…”๋ ˆ๊ทธ๋žจ ์—ฐ๋™, ์˜๊ตฌ ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ์„ค์น˜ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. |
| ๐Ÿ–ฅ๏ธ **ํฌ๋กœ์Šค ํ”Œ๋žซํผ** | macOS, Linux, Windows โ€” ENOENT-safe CLI ์Šคํฐ, ์ž๋™ ๊ฐ์ง€, `.cmd` shim ์ง€์›, ๋„ค์ดํ‹ฐ๋ธŒ ์„ค์น˜ ์ „๋ถ€ ํฌ๋กœ์Šคํ”Œ๋žซํผ ๋™์ž‘. |

![CLI-JAW ํ„ฐ๋ฏธ๋„](docs/screenshots/terminal-cli.png)

---

## ๐Ÿ†• ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ (v1.4.0)

| ๊ธฐ๋Šฅ | ์„ค๋ช… |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ๐Ÿง  **๊ณ ๊ธ‰ ๋ฉ”๋ชจ๋ฆฌ** | 5๊ณ„์ธต ์ €์žฅ์†Œ (ํ”„๋กœํ•„, ์—ํ”ผ์†Œ๋“œ, ์‹œ๋งจํ‹ฑ, ํ”„๋กœ์‹œ์ €, ์„ธ์…˜). ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰: FTS5 + ์‹œ๋งจํ‹ฑ ๊ฒ€์ƒ‰ + ์ฟผ๋ฆฌ ํ™•์žฅ. Gemini Flash-Lite ์ž„๋ฒ ๋”ฉ. ๋ฆฌ์ธ๋ฑ์Šค/๊ฐ์‚ฌ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ UI ์šด์˜ ๋Œ€์‹œ๋ณด๋“œ. |
| ๐ŸŽจ **๋ชจ๋“ˆํ˜• ๊ฐœ๋ฐœ ์Šคํ‚ฌ** | `dev-frontend` (1,428์ค„, 13ํŒŒ์ผ)๊ณผ `dev-backend` (1,275์ค„, 9ํŒŒ์ผ)์„ ๋‹จ์ผ SKILL.md์—์„œ ๋ชจ๋“ˆ ๊ตฌ์กฐ๋กœ ํ™•์žฅ. ์ฝ”์–ด ๋ ˆํผ๋Ÿฐ์Šค (๋ฏธํ•™, ์•ˆํ‹ฐ์Šฌ๋กญ, ๋ณด์•ˆ, ์•„ํ‚คํ…์ฒ˜) + ์Šคํƒ๋ณ„ ๊ฐ€์ด๋“œ (React, Next.js, Node, Python, PostgreSQL). |
| ๐Ÿ“„ **์˜คํ”ผ์Šค ํ™•์žฅ** | HWP (ํ•œ๊ธ€ ๋ฌธ์„œ) ์ง€์› ์ถ”๊ฐ€. PPTX ์ƒ์„ฑ ๊ฐ•ํ™”. 21๊ฐœ ํ™œ์„ฑ ์Šคํ‚ฌ (๊ธฐ์กด 18๊ฐœ์—์„œ ์ฆ๊ฐ€). |
| โšก **ACP ์ง„ํ–‰ ํ•˜ํŠธ๋น„ํŠธ** | ์žฅ์‹œ๊ฐ„ ์—์ด์ „ํŠธ ์‹คํ–‰ ์ค‘ ์‹ค์‹œ๊ฐ„ `stderr_activity` ์ด๋ฒคํŠธ. UI ๋ชจ๋‹ฌ ์ œ์–ด๊ฐ€ ํฌํ•จ๋œ ์กฐ๊ฑด๋ถ€ ํ•˜ํŠธ๋น„ํŠธ ์Šค์ผ€์ค„๋ง. |
| ๐Ÿ”„ **์Šคํ‚ฌ ๋ฆฌ์…‹** | `jaw skill reset` โ€” `--soft` (๋ฆฌ๋กœ๋“œ), `--hard` (์ „์ฒด ์žฌ์„ค์น˜) ๋ชจ๋“œ. `JAW_HOME`๊ณผ `settings.json` ๋ถˆ์ผ์น˜ ์‹œ `workingDir` ์ž๋™ ๋ณด์ •. |
| ๐ŸŽฌ **๋น„๋””์˜ค ์Šคํ‚ฌ** | Remotion ๊ธฐ๋ฐ˜ JSON ํƒ€์ž„๋ผ์ธ ์ •์˜๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ์˜์ƒ ๋ Œ๋”๋ง. ์ปท๋ณ„ ๋‚˜๋ ˆ์ด์…˜ ๋™๊ธฐํ™” TTS ์—ฐ๋™. |
| ๐Ÿ“ **1M ์ปจํ…์ŠคํŠธ ํ† ๊ธ€** | ์ง€์› ๋ชจ๋ธ์šฉ `config.toml` ์ฃผ์ž…์œผ๋กœ 1M ํ† ํฐ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ ์ผœ๊ธฐ/๋„๊ธฐ. |
| ๐Ÿš€ **ํ”„๋ฆฌ๋ทฐ ๋ฆด๋ฆฌ์ฆˆ** | ํƒ€์ž„์Šคํƒฌํ”„ ๋ฒ„์ „(`v1.4.0-preview.YYYYMMDD`)์˜ ์ž๋™ํ™”๋œ ํ”„๋ฆฌ๋ทฐ ๋ฆด๋ฆฌ์ฆˆ ํŒŒ์ดํ”„๋ผ์ธ. GitHub prerelease ์—ฐ๋™. |

---

## ๋น„์„œ๊ฐ€ ์–ด๋–ค ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

```mermaid
graph LR
YOU["๐Ÿ‘ค ์‚ฌ์šฉ์ž"] -->|์›น / ํ„ฐ๋ฏธ๋„ / Telegram| JAW["๐Ÿฆˆ CLI-JAW"]
JAW -->|์ƒ์„ฑ| C["Claude"]
JAW -->|์ƒ์„ฑ| X["Codex"]
JAW -->|์ƒ์„ฑ| G["Gemini"]
JAW -->|์ƒ์„ฑ| O["OpenCode"]
JAW -->|์ƒ์„ฑ| P["Copilot"]
JAW -->|์ฃผ์ž…| SK["๐Ÿ“ฆ ์Šคํ‚ฌ"]
JAW -->|์ œ์–ด| BR["๐ŸŒ Chrome"]
JAW -->|์ „์†ก| TG["๐Ÿ“ฑ Telegram"]

style JAW fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
```

- ๐Ÿค– **5๊ฐœ์˜ AI ์—”์ง„, 1๋ช…์˜ ๋น„์„œ** โ€” Claude ยท Codex ยท Gemini ยท OpenCode ยท Copilot. `/cli` ๋ช…๋ น์–ด๋กœ ์ „ํ™˜ํ•˜์„ธ์š”.
- โšก **์ž๋™ ์ „ํ™˜(Fallback)** โ€” ์—”์ง„ ํ•˜๋‚˜๊ฐ€ ๋‹ค์šด๋˜๋ฉด ๋‹ค์Œ ์—”์ง„์ด ๋งค๋„๋Ÿฝ๊ฒŒ ์ด์–ด๋ฐ›์Šต๋‹ˆ๋‹ค.
- ๐ŸŽญ **๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜** โ€” ๋ณต์žกํ•œ ์ž‘์—…์€ ์ „๋ฌธํ™”๋œ ์„œ๋ธŒ ์—์ด์ „ํŠธ๋“ค์—๊ฒŒ ์ž๋™์œผ๋กœ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
- ๐ŸŽค **์Œ์„ฑ ์ž…๋ ฅ** โ€” ์›น ๋งˆ์ดํฌ ๋ฒ„ํŠผ + ํ…”๋ ˆ๊ทธ๋žจ ์Œ์„ฑ ๋ฉ”์‹œ์ง€. ๋ฉ€ํ‹ฐ ํ”„๋กœ๋ฐ”์ด๋” STT (OpenAI, Vertex AI).
- ๐Ÿ“ **ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ** โ€” ์‹œ๊ฐ์  ๋…ธ๋“œ๋งต ์—๋””ํ„ฐ๋กœ ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ, ๊ด€๋ฆฌ, ์žฌ์‚ฌ์šฉ.
- ๐Ÿ“ฆ **116๊ฐœ์˜ ์Šคํ‚ฌ** โ€” ๋ธŒ๋ผ์šฐ์ € ์ œ์–ด, ํŒŒ์ผ ํŽธ์ง‘, ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ์›น ๊ฒ€์ƒ‰ ์™ธ [๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ](#-์Šคํ‚ฌ-์‹œ์Šคํ…œ).
- ๐Ÿง  **์˜๊ตฌ ๋ฉ”๋ชจ๋ฆฌ** โ€” ์„ธ์…˜์„ ๋„˜๋‚˜๋“ค๋ฉฐ ๊ณผ๊ฑฐ์˜ ๋Œ€ํ™”์™€ ์‚ฌ์šฉ์ž ์„ ํ˜ธ๋„๋ฅผ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.
- ๐Ÿ“ฑ **ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡** โ€” ํœด๋Œ€ํฐ์œผ๋กœ ๋น„์„œ์™€ ์ฑ„ํŒ…ํ•˜๊ณ , ์Œ์„ฑ/์‚ฌ์ง„/ํŒŒ์ผ์„ ์ „์†กํ•˜์„ธ์š”.
- ๐ŸŒ **๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™”** โ€” ๋น„์„œ๊ฐ€ ์•Œ์•„์„œ ์›น์„ ํƒ์ƒ‰ํ•˜๊ณ , ํด๋ฆญํ•˜๊ณ , ํƒ€์ดํ•‘ํ•˜๊ณ , ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ๐Ÿ”Œ **MCP ์ƒํƒœ๊ณ„** โ€” ํ•œ ๋ฒˆ๋งŒ ์„ค์น˜ํ•˜๋ฉด 5๊ฐœ์˜ AI ์—”์ง„ ๋ชจ๋‘์—์„œ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
- ๐Ÿ” **์›น ๊ฒ€์ƒ‰** โ€” MCP ๋„๊ตฌ๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์ •๋ณด ๊ฒ€์ƒ‰.
- โฐ **ํ•˜ํŠธ๋น„ํŠธ ์ž‘์—…** โ€” ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ฐ˜๋ณต ์ผ์ •์„ ๋“ฑ๋กํ•˜์„ธ์š”.

---

### ๊ธฐํƒ€ ์‹คํ–‰ ๋ฐฉ๋ฒ•

```bash
jaw chat # ํ„ฐ๋ฏธ๋„ TUI (๋ธŒ๋ผ์šฐ์ € ํ•„์š” ์—†์Œ)
jaw service install # ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰ (systemd/launchd/docker ์ž๋™ ๊ฐ์ง€)
```

> โš ๏ธ **์„ค์น˜ ์‹œ ์ฐธ๊ณ :** `npm install -g cli-jaw`๋Š” postinstall ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์Šคํ‚ฌ ๋””๋ ‰ํ† ๋ฆฌ, ์ปค์Šคํ…€ ์ธ์ŠคํŠธ๋Ÿญ์…˜, MCP ์„ค์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„ค์ •์€ ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ณ  ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

---

## ๐Ÿ“ฆ ์Šคํ‚ฌ ์‹œ์Šคํ…œ

**116๊ฐœ ์Šคํ‚ฌ** ๋‚ด์žฅ โ€” ๋ธŒ๋ผ์šฐ์ €, GitHub, ๋…ธ์…˜, ํ…”๋ ˆ๊ทธ๋žจ, ๋ฉ”๋ชจ๋ฆฌ, PDF, ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋“ฑ [๋‹ค์–‘ํ•˜๊ฒŒ](#).

์ „์ฒด ์Šคํ‚ฌ ๋ชฉ๋ก ๋ณด๊ธฐ

| ํ‹ฐ์–ด | ์ˆ˜๋Ÿ‰ | ์ž‘๋™ ๋ฐฉ์‹ |
| ------------------ | :---: | ------------------------------------------------ |
| **Active ์Šคํ‚ฌ** | 22 | ๋งค๋ฒˆ AIํ•œํ…Œ ์ž๋™์œผ๋กœ ์ฃผ์ž…๋ผ์š”. ํ•ญ์ƒ ์ผœ์ ธ ์žˆ์–ด์š”. |
| **Reference ์Šคํ‚ฌ** | 94 | ๊ด€๋ จ ์ž‘์—…์„ ์‹œํ‚ค๋ฉด ๊ทธ๋•Œ AI๊ฐ€ ์ฝ์–ด์„œ ์จ์š”. |

#### Active ์Šคํ‚ฌ (ํ•ญ์ƒ ์ผœ์ง)

| ์Šคํ‚ฌ | ๊ธฐ๋Šฅ |
| ------------------------------------------------------------------- | -------------------------------------------------- |
| `browser` | Chrome ์ž๋™ํ™” โ€” ์Šค๋ƒ…์ƒท, ํด๋ฆญ, ๋„ค๋น„๊ฒŒ์ดํŠธ, ์Šคํฌ๋ฆฐ์ƒท |
| `github` | ์ด์Šˆ, PR, CI, ์ฝ”๋“œ ๋ฆฌ๋ทฐ (`gh` CLI ์‚ฌ์šฉ) |
| `notion` | Notion ํŽ˜์ด์ง€ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ |
| `memory` | ์„ธ์…˜ ๊ฐ„ ์˜์† ์žฅ๊ธฐ ๋ฉ”๋ชจ๋ฆฌ |
| `telegram-send` | Telegram์œผ๋กœ ์‚ฌ์ง„, ๋ฌธ์„œ, ์Œ์„ฑ ๋ฉ”์‹œ์ง€ ์ „์†ก |
| `vision-click` | ์Šคํฌ๋ฆฐ์ƒท โ†’ AI๊ฐ€ ์ขŒํ‘œ ์ฐพ๊ธฐ โ†’ ํด๋ฆญ (์›์ปค๋งจ๋“œ) |
| `pdf` / `pdf-expert` / `docx` / `xlsx` / `pptx` / `hwp` | ์˜คํ”ผ์Šค ๋ฐ PDF ๋ฌธ์„œ ์ฝ๊ธฐ, ์ƒ์„ฑ, ํŽธ์ง‘ (ํ•œ๊ธ€ HWP ํฌํ•จ) |
| `screen-capture` | macOS ์Šคํฌ๋ฆฐ์ƒท ๋ฐ ์นด๋ฉ”๋ผ ์บก์ฒ˜ |
| `video` | JSON ๊ธฐ๋ฐ˜ Remotion ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ๋น„๋””์˜ค ๋ Œ๋”๋ง |
| `dev` / `dev-frontend` / `dev-backend` / `dev-data` / `dev-testing` | ์„œ๋ธŒ์—์ด์ „ํŠธ์šฉ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ |
| `dev-pabcd` / `dev-scaffolding` / `dev-code-reviewer` | ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ์Šค์บํด๋”ฉ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ฐ€์ด๋“œ |

#### Reference ์Šคํ‚ฌ (ํ•„์š”ํ•  ๋•Œ๋งŒ)

94๊ฐœ ์Šคํ‚ฌ์ด ๋” ์žˆ์–ด์š” โ€” imagegen, openai-docs, spotify, ๋‚ ์”จ, ๋”ฅ๋ฆฌ์„œ์น˜, TTS, ๋น„๋””์˜ค ๋‹ค์šด๋กœ๋“œ, Apple ๋ฏธ๋ฆฌ์•Œ๋ฆผ, 1Password, Terraform, PostgreSQL, Jupyter ๋“ฑ.

```bash
jaw skill install # reference โ†’ active๋กœ ์˜๊ตฌ ํ™œ์„ฑํ™”
```

---

## ๐Ÿ“ฑ ํ…”๋ ˆ๊ทธ๋žจ โ€” ๋‚ด ์ฃผ๋จธ๋‹ˆ ์†์˜ ๋น„์„œ

๋น„์„œ๋Š” ์ฑ…์ƒ ์•ž์—๋งŒ ๋จธ๋ฌผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…”๋ ˆ๊ทธ๋žจ์„ ํ†ตํ•ด ์–ด๋””์„œ๋“  ๋Œ€ํ™”ํ•˜์„ธ์š”:

```
๐Ÿ“ฑ Telegram โ†โ†’ ๐Ÿฆˆ CLI-JAW โ†โ†’ ๐Ÿค– AI ์—”์ง„
```

๐Ÿ“‹ ํ…”๋ ˆ๊ทธ๋žจ ์„ค์ • (3๋‹จ๊ณ„)

1. **๋ด‡ ๋งŒ๋“ค๊ธฐ** โ€” [@BotFather](https://t.me/BotFather)์—๊ฒŒ `/newbot` โ†’ ํ† ํฐ ๋ณต์‚ฌ
2. **์„ค์ •** โ€” `jaw init --telegram-token ํ† ํฐ` ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ Web UI ์„ค์ •์—์„œ ์ž…๋ ฅ
3. **์ฑ„ํŒ… ์‹œ์ž‘** โ€” ๋ด‡์—๊ฒŒ ์•„๋ฌด ๋ฉ”์‹œ์ง€๋‚˜ ๋ณด๋‚ด์„ธ์š”. ์ฒซ ๋ฉ”์‹œ์ง€์—์„œ ์ฑ„ํŒ… ID๊ฐ€ ์ž๋™ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

**ํ…”๋ ˆ๊ทธ๋žจ์—์„œ ๊ฐ€๋Šฅํ•œ ์ž‘์—…:**
- ๐Ÿ’ฌ ๋น„์„œ์™€ ์ฑ„ํŒ… (5๊ฐœ AI ์—”์ง„ ์ค‘ ์„ ํƒ)
- ๐ŸŽค ์Œ์„ฑ ๋ฉ”์‹œ์ง€ ์ „์†ก (์ž๋™ ํ…์ŠคํŠธ ๋ณ€ํ™˜)
- ๐Ÿ“Ž ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํŒŒ์ผ ๋ฐ ์‚ฌ์ง„ ์ „์†ก
- ๐ŸŽ™๏ธ ์Œ์„ฑ + ํ…์ŠคํŠธ + ์ฒจ๋ถ€ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€์— ์กฐํ•ฉ ๊ฐ€๋Šฅ
- โšก ๋ช…๋ น์–ด ์‹คํ–‰ (`/cli`, `/model`, `/status`)
- ๐Ÿ”„ ์‹ค์‹œ๊ฐ„ AI ์—”์ง„ ์ „ํ™˜

**๋น„์„œ๊ฐ€ ๋ณด๋‚ด์ฃผ๋Š” ๋‚ด์šฉ:**
- ๋งˆํฌ๋‹ค์šด ์„œ์‹์ด ์ ์šฉ๋œ AI ์‘๋‹ต
- ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€, PDF, ๋ฌธ์„œ
- ์˜ˆ์•ฝ๋œ ์ž‘์—… ๊ฒฐ๊ณผ (ํ•˜ํŠธ๋น„ํŠธ ์ž‘์—…)
- ๋ธŒ๋ผ์šฐ์ € ์Šคํฌ๋ฆฐ์ƒท


ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡

---

## ๐ŸŽค ์Œ์„ฑ & STT โ€” ์Œ์„ฑ ์ธ์‹

CLI-JAW๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ๋ฐ”์ด๋” STT๋กœ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์Œ์„ฑ ์ž…๋ ฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

| ํ”„๋กœ๋ฐ”์ด๋” | ์„ค์ • ๋ฐฉ๋ฒ• |
| --------------------- | ---------------------------------------------- |
| **OpenAI ํ˜ธํ™˜** | Settings UI โ†’ STT โ†’ OpenAI ์—”๋“œํฌ์ธํŠธ + API ํ‚ค |
| **Google Vertex AI** | Settings UI โ†’ STT โ†’ Vertex AI ์ธ์ฆ ์ •๋ณด |
| **์ปค์Šคํ…€ ์—”๋“œํฌ์ธํŠธ** | OpenAI ํ˜ธํ™˜ STT API URL ์ง์ ‘ ์ž…๋ ฅ |

**์Œ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ:**

- ๐ŸŒ **์›น UI** โ€” ๋งˆ์ดํฌ ๋ฒ„ํŠผ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋…น์Œ ๋ฐ ์ „์‚ฌ
- ๐Ÿ“ฑ **ํ…”๋ ˆ๊ทธ๋žจ** โ€” ์Œ์„ฑ ๋ฉ”์‹œ์ง€ ์ „์†ก ์‹œ AI์— ์ „๋‹ฌ ์ „ ์ž๋™ ์ „์‚ฌ
- ๐ŸŽ™๏ธ **๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ** โ€” ์Œ์„ฑ + ํ…์ŠคํŠธ + ํŒŒ์ผ ์ฒจ๋ถ€๋ฅผ ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€์— ์กฐํ•ฉ ๊ฐ€๋Šฅ

๋ชจ๋“  STT ์„ค์ •(ํ”„๋กœ๋ฐ”์ด๋”, API ํ‚ค, ์–ธ์–ด)์€ **Settings UI**์—์„œ ๊ด€๋ฆฌ โ€” ์„ค์ • ํŒŒ์ผ ํŽธ์ง‘ ๋ถˆํ•„์š”.

---

## ๐ŸŽญ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

![์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋กœ๊ทธ](docs/screenshots/orchestration-log.png)

๋ณต์žกํ•œ ์ž‘์—…์˜ ๊ฒฝ์šฐ, ๋น„์„œ๊ฐ€ ์ „๋ฌธ ์„œ๋ธŒ ์—์ด์ „ํŠธ์—๊ฒŒ ์ž‘์—…์„ ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค:

```mermaid
graph TD
USER["๐Ÿ‘ค ์‚ฌ์šฉ์ž ์š”์ฒญ"] --> TRIAGE["๐Ÿ” ํŠธ๋ฆฌ์•„์ง€ โ€” ๋‹จ์ˆœ? ๋ณต์žก?"]

TRIAGE -->|๋‹จ์ˆœ| DIRECT["โšก ์ง์ ‘ ์‘๋‹ต"]
TRIAGE -->|๋ณต์žก| PLAN["๐Ÿ“ ๊ธฐํš"]

PLAN --> FE["๐ŸŽจ ํ”„๋ก ํŠธ์—”๋“œ"]
PLAN --> BE["โš™๏ธ ๋ฐฑ์—”๋“œ"]
PLAN --> DATA["๐Ÿ“Š ๋ฐ์ดํ„ฐ"]

FE --> GATE["๐Ÿšช ๊ฒŒ์ดํŠธ ๋ฆฌ๋ทฐ"]
BE --> GATE
DATA --> GATE

GATE -->|ํ†ต๊ณผ| NEXT["โœ… ์™„๋ฃŒ"]
GATE -->|์‹คํŒจ| RETRY["๐Ÿ”„ ๋””๋ฒ„๊ทธ & ์žฌ์‹œ๋„"]

style USER fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
style TRIAGE fill:#fdf2e9,stroke:#d4a574,color:#5c4033
style PLAN fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
style GATE fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
```

๋น„์„œ๋Š” ์ž‘์—…์— ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด ํ•„์š”ํ•œ์ง€ ์ง์ ‘ ์‘๋‹ต์ด ํ•„์š”ํ•œ์ง€ **์Šค์Šค๋กœ ๊ฒฐ์ •**ํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์„ค์ •์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

---

## ๐Ÿ”Œ MCP โ€” ๋‹จ์ผ ์„ค์ •, 6๊ฐœ์˜ AI ์—”์ง„

```bash
jaw mcp install @anthropic/context7 # ํ•œ ๋ฒˆ๋งŒ ์„ค์น˜
# โ†’ Claude, Codex, Gemini, OpenCode, Copilot, Antigravity ์ „๋ถ€ ์ž๋™ ๋™๊ธฐํ™”
```

```mermaid
graph LR
MJ["๐Ÿ“„ mcp.json"] -->|์ž๋™ ๋™๊ธฐํ™”| CL["Claude"]
MJ -->|์ž๋™ ๋™๊ธฐํ™”| CX["Codex"]
MJ -->|์ž๋™ ๋™๊ธฐํ™”| GM["Gemini"]
MJ -->|์ž๋™ ๋™๊ธฐํ™”| OC["OpenCode"]
MJ -->|์ž๋™ ๋™๊ธฐํ™”| CP["์ฝ”ํŒŒ์ผ๋Ÿฟ"]
MJ -->|์ž๋™ ๋™๊ธฐํ™”| AG["์•ˆํ‹ฐ๊ทธ๋ž˜๋น„ํ‹ฐ"]

style MJ fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
```

์„ค์ • ํŒŒ์ผ 6๊ฐœ๋ฅผ ๋ณ„๋„๋กœ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ๋งŒ ์„ค์น˜ํ•˜๋ฉด ๋ชจ๋“  AI ์—”์ง„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

---

## โŒจ๏ธ CLI ๋ช…๋ น์–ด

```bash
jaw serve # ์„œ๋ฒ„ ์‹œ์ž‘
jaw service install # ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰ (systemd/launchd/docker ์ž๋™ ๊ฐ์ง€)
jaw service status # ๋ฐ๋ชฌ ์ƒํƒœ ํ™•์ธ
jaw service unset # ์ž๋™ ์‹คํ–‰ ํ•ด์ œ
jaw service logs # ์„œ๋น„์Šค ๋กœ๊ทธ ๋ณด๊ธฐ
jaw chat # ํ„ฐ๋ฏธ๋„ TUI
jaw doctor # ์ง„๋‹จ (12๊ฐœ ์ฒดํฌ)
jaw skill install # ์Šคํ‚ฌ ์„ค์น˜
jaw mcp install # MCP ์„ค์น˜ โ†’ 6๊ฐœ CLI ์ „๋ถ€ ๋™๊ธฐํ™”
jaw memory search # ๋ฉ”๋ชจ๋ฆฌ ๊ฒ€์ƒ‰
jaw browser start # Chrome ์‹œ์ž‘ (CDP)
jaw browser vision-click "๋กœ๊ทธ์ธ" # AI๊ฐ€ ์•Œ์•„์„œ ํด๋ฆญ
jaw clone ~/my-project # ์ธ์Šคํ„ด์Šค ๋ณต์ œ
jaw --home ~/my-project serve --port 3458 # ๋‘ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค ์‹คํ–‰
jaw reset # ์ „์ฒด ์ดˆ๊ธฐํ™”
```

---

## ๐Ÿ—๏ธ ๋ฉ€ํ‹ฐ ์ธ์Šคํ„ด์Šค โ€” ํ”„๋กœ์ ํŠธ๋ณ„ ๋…๋ฆฝ ํ™˜๊ฒฝ

CLI-JAW์˜ ๋…๋ฆฝ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์š” โ€” ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ์„ค์ •, ๋ฉ”๋ชจ๋ฆฌ, ์Šคํ‚ฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

```bash
# ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ ํ”„๋กœ์ ํŠธ๋กœ ๋ณต์ œ
jaw clone ~/my-project

# ๋‹ค๋ฅธ ํฌํŠธ๋กœ ์‹คํ–‰
jaw --home ~/my-project serve --port 3458

# ๋˜๋Š” ๋‘˜ ๋‹ค ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰
jaw service install # ๊ธฐ๋ณธ โ†’ ํฌํŠธ 3457
jaw --home ~/my-project service install --port 3458 # ํ”„๋กœ์ ํŠธ โ†’ ํฌํŠธ 3458
```

๊ฐ ์ธ์Šคํ„ด์Šค๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค โ€” ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ, MCP ์„ค์ •์ด ๋ชจ๋‘ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์—…๋ฌด/๊ฐœ์ธ ์ปจํ…์ŠคํŠธ ๋ถ„๋ฆฌ๋‚˜ ํ”„๋กœ์ ํŠธ๋ณ„ AI ์„ค์ •์— ์•ˆ์„ฑ๋งž์ถค์ด์—์š”.

| ํ”Œ๋ž˜๊ทธ / ํ™˜๊ฒฝ๋ณ€์ˆ˜ | ๊ธฐ๋Šฅ |
| --------------------- | ---------------------------------------- |
| `--home <๊ฒฝ๋กœ>` | ์ด ์‹คํ–‰์— ์‚ฌ์šฉํ•  ์ปค์Šคํ…€ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ง€์ • |
| `--home=<๊ฒฝ๋กœ>` | ๋™์ผ (`=` ๊ตฌ๋ฌธ) |
| `CLI_JAW_HOME=<๊ฒฝ๋กœ>` | ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ง€์ • |
| `jaw clone <๋Œ€์ƒ>` | ํ˜„์žฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณต์ œ |
| `--port <ํฌํŠธ>` | `serve` / `service`์šฉ ์ปค์Šคํ…€ ํฌํŠธ |

---

## ๐Ÿค– ๋ชจ๋ธ

๊ฐ CLI๋งˆ๋‹ค ํ”„๋ฆฌ์…‹์ด ์žˆ์ง€๋งŒ, **์•„๋ฌด ๋ชจ๋ธ ID๋‚˜** ์ง์ ‘ ์ณ๋„ ๋ผ์š”.

์ „์ฒด ํ”„๋ฆฌ์…‹ ๋ณด๊ธฐ

| CLI | ๊ธฐ๋ณธ๊ฐ’ | ์ฃผ์š” ๋ชจ๋ธ |
| ------------ | -------------------------- | ---------------------------------------------- |
| **Claude** | `claude-sonnet-4-6` | opus-4-6, haiku-4-5, ํ™•์žฅ ์‚ฌ๊ณ  ๋ณ€ํ˜• |
| **Codex** | `gpt-5.3-codex` | spark, 5.2, 5.1-max, 5.1-mini |
| **Gemini** | `gemini-2.5-pro` | 3.0-pro-preview, 3-flash-preview, 2.5-flash |
| **OpenCode** | `claude-opus-4-6-thinking` | ๐Ÿ†“ big-pickle, GLM-5, MiniMax, Kimi, GPT-5-Nano |
| **Copilot** | `gpt-4.1` ๐Ÿ†“ | ๐Ÿ†“ gpt-5-mini, claude-sonnet-4.6, opus-4.6 |

> ๐Ÿ”ง ํ”„๋ฆฌ์…‹์— ๋ชจ๋ธ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด: `src/cli/registry.ts` ํ•˜๋‚˜๋งŒ ๊ณ ์น˜๋ฉด ์ „์ฒด ์ž๋™ ๋ฐ˜์˜.

---

## ๐Ÿณ Docker โ€” ์ปจํ…Œ์ด๋„ˆ ๊ฒฉ๋ฆฌ

๋ณด์•ˆ ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•ด Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ โ€” AI ์—์ด์ „ํŠธ๊ฐ€ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ์— ์ ‘๊ทผ ๋ถˆ๊ฐ€.

```bash
docker compose up -d # โ†’ http://localhost:3457
```

> ์ž์„ธํ•œ ๋‚ด์šฉ์€ [English README](README.md#-docker--container-isolation) ์ฐธ๊ณ .
> `Dockerfile` (npm ๋ฐฐํฌํŒ) / `Dockerfile.dev` (๋กœ์ปฌ ์†Œ์Šค) ๋‘ ๊ฐ€์ง€ ์ œ๊ณต.

---

## ๐Ÿ› ๏ธ ๊ฐœ๋ฐœ

๋นŒ๋“œ, ์‹คํ–‰, ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

```bash
# ๋นŒ๋“œ (TypeScript โ†’ JavaScript)
npm run build # tsc โ†’ dist/

# ์†Œ์Šค์—์„œ ์‹คํ–‰ (๊ฐœ๋ฐœ์šฉ)
npm run dev # tsx server.ts
npx tsx bin/cli-jaw.ts serve # .ts์—์„œ ์ง์ ‘ ์‹คํ–‰

# ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ๋กœ ์‹คํ–‰ (ํ”„๋กœ๋•์…˜)
node dist/bin/cli-jaw.js serve
```

**ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ:**

```
src/
โ”œโ”€โ”€ agent/ # AI ์—์ด์ „ํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด & ์Šคํฐ
โ”œโ”€โ”€ browser/ # Chrome CDP ์ž๋™ํ™”
โ”œโ”€โ”€ cli/ # CLI ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ & ๋ชจ๋ธ ํ”„๋ฆฌ์…‹
โ”œโ”€โ”€ core/ # DB, ์„ค์ •, ๋กœ๊น…
โ”œโ”€โ”€ http/ # Express ์„œ๋ฒ„ & ๋ฏธ๋“ค์›จ์–ด
โ”œโ”€โ”€ memory/ # ์˜์† ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ
โ”œโ”€โ”€ orchestrator/ # ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํŒŒ์ดํ”„๋ผ์ธ
โ”œโ”€โ”€ prompt/ # ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… & AGENTS.md ์ƒ์„ฑ
โ”œโ”€โ”€ routes/ # REST API ์—”๋“œํฌ์ธํŠธ (40+)
โ”œโ”€โ”€ security/ # ์ž…๋ ฅ ๊ฒ€์ฆ & ๊ฐ€๋“œ๋ ˆ์ผ
โ””โ”€โ”€ telegram/ # ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ์—ฐ๋™
```

> TypeScript โ€” `strict: true`, `NodeNext` ๋ชจ๋“ˆ ํ•ด์ƒ๋„, ES2022 ํƒ€๊ฒŸ.

---

## ๐Ÿงช ํ…Œ์ŠคํŠธ

888 pass ยท 2 skipped ยท ์™ธ๋ถ€ ์˜์กด์„ฑ 0

```bash
npm test
```

`tsx --test`๋กœ ์‹คํ–‰ (Node.js ๋„ค์ดํ‹ฐ๋ธŒ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ + TypeScript).

---

## ๐Ÿ“– ๋ฌธ์„œ

| ๋ฌธ์„œ | ๋‚ด์šฉ |
| --------------------------------------- | --------------------------------------------------- |
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | ์‹œ์Šคํ…œ ์„ค๊ณ„, ๋ชจ๋“ˆ ๊ทธ๋ž˜ํ”„, REST API (40+ ์—”๋“œํฌ์ธํŠธ) |
| [TESTS.md](TESTS.md) | ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€, ํ…Œ์ŠคํŠธ ๊ณ„ํš |

---

## ๐Ÿ”ง ๋ฌธ์ œ ํ•ด๊ฒฐ

| ์ฆ์ƒ | ์›์ธ | ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• |
| ---------------------------- | ---------------------------------- | --------------------------------------------------------------------------- |
| `command not found: cli-jaw` | npm ์ „์—ญ bin์ด PATH์— ์—†์Œ | `npm config get prefix` ํ™•์ธ ํ›„ `bin/`์„ PATH์— ์ถ”๊ฐ€ |
| `doctor`์—์„œ CLI ๋ˆ„๋ฝ ํ‘œ์‹œ | ํ•ด๋‹น CLI ๋ฏธ์„ค์น˜ | `npm i -g @anthropic-ai/claude-code` ๋“ฑ ์„ค์น˜ |
| ํฌํŠธ 3457 ์‚ฌ์šฉ ์ค‘ | ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ  | `PORT=4000 jaw serve` ๋˜๋Š” ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ |
| ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๋ฌด๋ฐ˜์‘ | ํ† ํฐ ๋ฏธ์„ค์ • ๋˜๋Š” Chat ID ๋ˆ„๋ฝ | `jaw init --telegram-token ...` ์žฌ์‹คํ–‰ |
| ํ…”๋ ˆ๊ทธ๋žจ โœ“โœ“ ์ง€์—ฐ ํ‘œ์‹œ | Telegram ์„œ๋ฒ„ ์ธก ์ „๋‹ฌ ํ™•์ธ ํƒ€์ด๋ฐ | ์ •์ƒ ๋™์ž‘ โ€” ์„œ๋ฒ„ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ์ˆ˜ ๋ถ„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ. ๋ฒ„๊ทธ ์•„๋‹˜ |
| `npm install -g` ๊ถŒํ•œ ์˜ค๋ฅ˜ | ๊ธ€๋กœ๋ฒŒ ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ ๋ฌธ์ œ | `sudo npm i -g cli-jaw` ๋˜๋Š” [nvm](https://github.com/nvm-sh/nvm) ์‚ฌ์šฉ ๊ถŒ์žฅ |
| ๋นŒ๋“œ ์‹คํŒจ (`tsc` ์—๋Ÿฌ) | Node 22 ๋ฏธ๋งŒ ๋ฒ„์ „ | `node -v` ํ™•์ธ โ†’ 22 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ |
| ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์„ธ์…˜ ๊ฐ„ ์œ ์ง€ ์•ˆ ๋จ | `~/.cli-jaw/memory/` ๋””๋ ‰ํ† ๋ฆฌ ์—†์Œ | `jaw init` ์žฌ์‹คํ–‰ํ•˜๋ฉด ์ž๋™ ์ƒ์„ฑ |

> ๐Ÿ“‹ ํด๋ฆฐ ์žฌ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? [์˜๋ฌธ README์˜ Fresh Start ๊ฐ€์ด๋“œ](README.md#-troubleshooting)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

---

## ๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•:

1. ๋ ˆํฌ๋ฅผ ํฌํฌํ•˜๊ณ  `master`์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ์„ธ์š”
2. `npm run build && npm test`๋กœ ๋นŒ๋“œ & ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธ
3. PR์„ ๋ณด๋‚ด์ฃผ์„ธ์š” โ€” ๋น ๋ฅด๊ฒŒ ๋ฆฌ๋ทฐํ• ๊ฒŒ์š”

> ๐Ÿ“‹ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•˜๊ฑฐ๋‚˜ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ์‹ ๊ฐ€์š”? [์ด์Šˆ ์—ด๊ธฐ](https://github.com/lidge-jun/cli-jaw/issues)

---

**โญ CLI-JAW๊ฐ€ ๋„์›€์ด ๋๋‹ค๋ฉด Star ํ•œ ๋ฒˆ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!**

Made with โค๏ธ by the CLI-JAW community

[ISC License](LICENSE)