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.
- Host: GitHub
- URL: https://github.com/lidge-jun/cli-jaw
- Owner: lidge-jun
- License: mit
- Created: 2026-02-25T00:18:14.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2026-03-22T03:34:34.000Z (20 days ago)
- Last Synced: 2026-04-02T07:39:31.987Z (8 days ago)
- Topics: ai, assistant, automation, claude, cli, codex, copilot, gemini, mcp, multi-agent, opencode, orchestrator, telegram-bot, typescript
- Language: TypeScript
- Homepage: https://lidge-jun.github.io/cli-jaw/
- Size: 12.3 MB
- Stars: 61
- Watchers: 0
- Forks: 5
- Open Issues: 20
-
Metadata Files:
- Readme: README.ko.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# ๐ฆ CLI-JAW
### 5๋ AI ์์ง์ ํ์ ๋๋ง์ ๋ก์ปฌ ๋น์
*Claude, Codex, Gemini... ์ด์ ๋ฒ๊ฐ์ ์ฐ์ง ๋ง์ธ์.*
[](#-ํ
์คํธ)
[](https://typescriptlang.org)
[](https://nodejs.org)
[](LICENSE)
[](https://npmjs.com/package/cli-jaw)
[](#-๋์ปค--์ปจํ
์ด๋-๊ฒฉ๋ฆฌ)
[](#)
[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 ๋น์**์
๋๋ค. ๊ถ๊ธํ ๊ฒ์ ๋ฌป๊ณ , ์์
์ ์์ํ๊ณ , ์ํฌํ๋ก์ฐ๋ฅผ ์๋ํํ์ธ์.

> ๐ฌ *"์ค๋ ์ผ์ ์ ๋ฆฌํด์ค"* โ ํ
๋ ๊ทธ๋จ์ผ๋ก ๋ฐ๋ก ์ ๋ฆฌํด์ ๋ณด๋ด์ค์
> ๐ฌ *"์ด ๋ชจ๋ ๋ฆฌํฉํ ๋งํ๊ณ ํ
์คํธ๋ ์ง์ค"* โ ์๋ธ์์ด์ ํธ๊ฐ ์์์, ์ปคํผ ํ ์ ํ๊ณ ์ค๋ฉด ๋ผ์
> ๐ฌ *"์ 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 ์ง์, ๋ค์ดํฐ๋ธ ์ค์น ์ ๋ถ ํฌ๋ก์คํ๋ซํผ ๋์. |

---
## ๐ ์๋ก์ด ๊ธฐ๋ฅ (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**์์ ๊ด๋ฆฌ โ ์ค์ ํ์ผ ํธ์ง ๋ถํ์.
---
## ๐ญ ๋ฉํฐ ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ด์

๋ณต์กํ ์์
์ ๊ฒฝ์ฐ, ๋น์๊ฐ ์ ๋ฌธ ์๋ธ ์์ด์ ํธ์๊ฒ ์์
์ ์์ํฉ๋๋ค:
```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)