# pure-cad × Antigravity 사용자 매뉴얼

> **말로 도면을 그린다.** Antigravity(Gemini)에게 한국어로 요청 →
> 자동으로 CAD 스크립트 생성·실행 → 브라우저에 도면 즉시 표시.
>
> 이 매뉴얼만 따라 하면 처음부터 끝까지 동작한다. 코딩 지식 불필요.

---

## 전체 그림 (한 장)

```
[당신이 하는 것]                         [자동으로 일어나는 것]

Antigravity에 "방3개 84㎡ 평면도"  ──►  Gemini가 스크립트 작성
                                          │
                                          ▼
                                        pure-cad CLI 자동 실행 (out/x.dxf 생성)
                                          │
브라우저 pure-cad 페이지를 봄    ◄──────  Watch Folder가 감지 → 자동 표시
```

준비는 **딱 한 번**. 그 후로는 "말 → 도면"만 반복.

---

## 0. 준비물 체크리스트

| 항목 | 확인 방법 | 없으면 |
|------|----------|--------|
| Node.js 20 이상 | 터미널에 `node -v` | https://nodejs.org 에서 LTS 설치 |
| Chrome 또는 Edge | (Watch Folder용) | Safari/Firefox는 안 됨 |
| Antigravity IDE | 설치되어 있음 | https://antigravity.google 에서 설치 |
| GitHub 계정 | (CLI 다운로드용) | github.com 가입 |

---

## STEP 1 — CLI 설치 (한 번만)

pure-cad CLI는 공개 npm 패키지다. **토큰·`.npmrc` 설정 필요 없음.** Node.js 20+ 만 있으면 된다.

### 1-1. 설치

터미널(PowerShell)에서:

```bash
npm i -g @horu2day/pure-cad-cli
```

### 1-2. 동작 확인

```bash
pure-cad new --output empty.dxf
```

→ `{"ok":true,"output":"...empty.dxf","ms":...}` 나오면 성공.
(에러 나면 → 9번 트러블슈팅)

---

## STEP 2 — 작업 폴더 만들기 (한 번만)

도면 작업용 폴더 하나 만들고, 설정 파일 4개를 넣는다.

```bash
mkdir my-cad
cd my-cad
mkdir samples out .gemini .gemini\hooks
```

이 저장소의 [`docs/antigravity-template/`](antigravity-template/) 4개 파일을
`my-cad/` 안 같은 위치에 복사:

| 템플릿 원본 | 복사 위치 |
|------------|----------|
| `GEMINI.md` | `my-cad/GEMINI.md` |
| `.gemini/settings.json` | `my-cad/.gemini/settings.json` |
| `.gemini/hooks/post-write.mjs` | `my-cad/.gemini/hooks/post-write.mjs` |
| `samples/example-circle.js` | `my-cad/samples/example-circle.js` |

각 파일 역할:
- **GEMINI.md** — Gemini에게 "넌 CAD 스크립트 작성 도우미다" 알려주는 규칙서 (자동 로드)
- **.gemini/settings.json** — "파일 쓰면 자동으로 CLI 실행해" 등록 (AfterTool hook)
- **.gemini/hooks/post-write.mjs** — 실제 자동 실행 스크립트
- **samples/example-circle.js** — 데모

> 복사가 번거로우면 STEP 5 폴백 방식(직접 실행)으로 hook 없이도 쓸 수 있다.

---

## STEP 3 — 웹페이지 열고 폴더 감시 켜기

1. **Chrome/Edge**로 접속: **https://abcim.pages.dev/pure-cad/**
2. 좌측 상단 **File** 그룹 → **Watch** 버튼 클릭
3. 폴더 선택창 → `my-cad/out` 폴더 선택
4. "이 폴더 읽기 허용?" → **허용**
5. 버튼이 **Unwatch**로 바뀌고 하단에 `[watch] active — folder: out` 표시

이제 `out/` 안에 도면이 생기거나 바뀌면 페이지가 **1초 안에 자동 표시**.

> 페이지를 새로고침하면 권한을 다시 물을 수 있다. Watch 버튼 한 번 더 누르면 됨.

---

## STEP 4 — Antigravity로 말해서 그리기

### 4-1. (한 번만) IDE 전역 system prompt 등록 — 권장

Antigravity → **Settings → Agents → System Prompt** (또는 Custom Instructions)에
[`docs/ANTIGRAVITY_SYSTEM_PROMPT.md`](ANTIGRAVITY_SYSTEM_PROMPT.md)의 코드블록을
붙여넣으면 모든 세션에서 CAD 스크립트 품질이 좋아진다. (생략해도 GEMINI.md가 있어 동작)

### 4-2. 워크스페이스 열기

1. Antigravity → **File → Open Folder** → `my-cad/` 선택
2. **Agent Manager** → **New Agent Session**
3. 모델: **Gemini 2.5 Flash** (또는 최신 Flash)

### 4-3. 말로 요청

채팅창에 한국어로:

```
84㎡ 아파트 평면도 그려라.
방 3개, 거실, 주방, 욕실 2개, 발코니, 다용도실.
외벽 12000x7000, 구조벽 200mm, 문은 swing arc, 외곽에 치수선.
samples/apt84.js 로 저장해줘.
```

### 4-4. 자동으로 일어나는 일

```
1. Gemini가 samples/apt84.js 작성
2. (hook) pure-cad CLI 자동 실행 → out/apt84.dxf 생성
3. 브라우저(Watch 켜둔 상태)가 1초 안에 평면도 표시
4. Gemini: "108개 엔티티 생성, out/apt84.dxf 저장 완료"
```

끝. 다시 그리고 싶으면 또 말하면 된다:

```
방3을 더 크게, 발코니는 빼줘.
```

---

## STEP 5 — (폴백) hook 없이 쓰기

Antigravity hook이 안 켜지면, GEMINI.md에 이미 들어있는 지시 덕분에
Gemini가 **직접 터미널로 CLI를 실행**한다. 이때 "이 명령 실행할까요?" 가 뜨면
한 번 허용하거나, **Settings → Agents → Terminal Command Auto Execution**을
Agent-driven으로 두면 자동 실행된다.

또는 완전 수동: Gemini가 만든 `samples/x.js`를 보고 직접:

```bash
pure-cad run --script samples/x.js --output out/x.dxf
```

---

## 도면 명령 요약 (Gemini가 쓰는 것 — 참고용)

당신이 외울 필요 없음. Gemini가 알아서 씀. 무엇이 되는지 감만:

**그리기**: 선·원·호·사각형·폴리선·다각형·타원·문자·해치
**수정**: 이동·복사·회전·축척·대칭·오프셋·자르기·연장·지우기
**치수**: 선형·정렬·반지름·지름·각도 치수, 지시선

단위는 **mm**. 벽은 닫힌 폴리선, 문은 폴리선+호.

---

## 결과물 저장·활용

- 생성물은 `my-cad/out/*.dxf`
- 웹페이지에서 **File → DXF Export / Save**로 다시 받기 가능
- DXF는 AutoCAD·다른 CAD에서 그대로 열림

---

## 9. 트러블슈팅

| 증상 | 해결 |
|------|------|
| `npm ERR! 404 Not Found` | npm 캐시/일시 오류. `npm cache clean --force` 후 재시도. `npm config get registry`가 `https://registry.npmjs.org/` 인지 확인 |
| `pure-cad: command not found` | `npm i -g @horu2day/pure-cad-cli` 다시. `npm ls -g`로 확인 |
| `pure-cad new` 가 에러 | Node 20+ 인지 `node -v` 확인 |
| **Watch** 버튼이 회색 | Chrome/Edge 아님. (Safari/Firefox 미지원) |
| Watch 켰는데 도면 안 뜸 | `out` 폴더를 정확히 선택했나 확인. Unwatch→Watch 다시 |
| 같은 파일 다시 그렸는데 안 바뀜 | 내용 동일하면 skip됨. 다른 이름으로 저장 요청 |
| Gemini가 엉뚱한 코드 | 4-1 system prompt 등록 확인. GEMINI.md 있는지 확인 |
| hook이 자동 실행 안 됨 | STEP 5 폴백 사용. 또는 `.gemini/settings.json` 위치 확인 |
| `PATH_TRAVERSAL` 에러 | 출력 경로가 작업폴더 밖. `my-cad` 안에서 실행 |
| 큰 도면 3~5초 걸림 | 정상 (WASM 엔진). AI 응답 시간 대비 짧음 |

---

## 상세 문서

| 문서 | 내용 |
|------|------|
| [INSTALL_GITHUB_PACKAGES.md](INSTALL_GITHUB_PACKAGES.md) | CLI 설치 상세 (토큰·.npmrc) |
| [ANTIGRAVITY_TUTORIAL.md](ANTIGRAVITY_TUTORIAL.md) | Antigravity 연동 상세 (hook 구조) |
| [ANTIGRAVITY_SYSTEM_PROMPT.md](ANTIGRAVITY_SYSTEM_PROMPT.md) | IDE에 넣을 system prompt 전문 |
| [ai/SYSTEM_PROMPT.md](ai/SYSTEM_PROMPT.md) | pure-cad API 전체 레퍼런스 |

---

## 한 줄 요약

1. **한 번**: 토큰 발급 → `.npmrc` → `npm i -g @horu2day/pure-cad-cli` → `my-cad` 폴더에 템플릿 4개 → 웹페이지 Watch로 `out` 감시
2. **매번**: Antigravity에 말로 요청 → 도면 자동 생성·표시
