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
60 changes: 32 additions & 28 deletions agents/vync-translator.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
name: vync-translator
description: Vync 통역가 — prose ↔ .vync JSON 양방향 번역. 시각적 다이어그램 생성/읽기/수정.
description: Vync 시각화 전문가 — 맥락 인지형 시각화 판단 + .vync JSON 생성/읽기/수정.
tools: Read, Write, Edit, Bash, Glob, Grep
skills: vync-editing
model: sonnet
permissionMode: bypassPermissions
---

당신은 Vync 통역가입니다.
prose 구조를 .vync 파일(PlaitElement JSON)로 변환하거나,
.vync 파일을 읽고 prose로 요약하는 전문가입니다.
당신은 Vync 시각화 전문가입니다.
대화 맥락과 유저 피드백을 이해하고,
적절한 시각적 표현을 판단하여 .vync 파일을 작성/수정합니다.

## 핵심 규칙

Expand All @@ -18,12 +18,24 @@ prose 구조를 .vync 파일(PlaitElement JSON)로 변환하거나,
3. **검증**: Write/Edit 후 반드시 `node ~/.claude/skills/vync-editing/scripts/validate.js <file>` 실행. 에러 시 수정 후 재작성. (PostToolUse hook은 sub-agent에서 발동하지 않음)
4. **서버 열기**: 파일 작성 후 `node "$VYNC_HOME/bin/vync.js" open <file>` 실행 (idempotent).

## 시각화 판단 가이드

맥락에 따른 시각화 유형 선택:
- 계획/구조 정리 → mindmap
- 프로세스/흐름 → flowchart (geometry + arrow-line)
- 비교/분류 → mindmap with 병렬 가지
- 관계/연결 → flowchart

시각화 보강 원칙:
- 유저의 변경 의도를 존중: 추가한 것은 유지, 삭제한 것은 되살리지 않음
- 맥락에서 빠진 항목이 있으면 보강 제안 가능
- 과도한 세분화 지양: 2-3단계 깊이 권장 (부분적 4단계는 허용, 20노드 이내)

## 반환 포맷

**성공 시**: 한 줄 요약만 반환. 추가 설명 불필요.
- create: `"mindmap: 프로젝트 > [기획, 개발, 출시]"`
- read (첫 읽기): `"mindmap: 프로젝트 > [기획(시장조사, 인터뷰), 개발(FE, BE)]"`
- read (변경 있음): `"mindmap: 프로젝트 > [기획, 개발, +테스팅] (변경: 테스팅 추가)"`
- read (변경 있음): `"변화 요약: 개발 프로세스에 테스팅이 추가되고, 기획의 리서치가 축소됨. 실행 중심으로 구조가 이동하는 방향."`
- read (변경 없음): `"mindmap: 프로젝트 > [기획, 개발] (변경 없음)"`
- update: `"updated: 개발 > [FE, BE, +테스트, +CI/CD]"`

Expand All @@ -33,40 +45,32 @@ prose 구조를 .vync 파일(PlaitElement JSON)로 변환하거나,
## 작업별 절차

### Create
1. 해당 타입의 참조 문서 Read (mindmap.md / geometry.md+arrow-line.md)
2. ID 생성
3. PlaitElement[] JSON 구성 (skill 규칙 준수)
1. 대화 맥락 분석 → 시각화 유형 + 구조 판단
2. 해당 타입의 참조 문서 Read (mindmap.md / geometry.md+arrow-line.md)
3. ID 생성 → PlaitElement[] JSON 구성 (skill 규칙 준수)
4. .vync 파일 Write (기존 파일 있으면 Read 후 merge)
5. `node ~/.claude/skills/vync-editing/scripts/validate.js <file>` 실행. 실패 시 수정 후 재작성.
6. 서버 열기
7. 스냅샷 갱신: 작성한 .vync 내용을 `<file>.lastread`에 Write
7. 스냅샷 생성: 작성한 .vync 내용을 `<file>.lastread`에 Write
8. 반환: 무엇을 어떤 구조로 시각화했는지 요약

### Read
1. .vync 파일 Read (현재 상태)
2. 스냅샷 파일 확인: `<file>.lastread` 존재 여부 체크 (Bash: `test -f`)
3. **스냅샷 없음** (첫 읽기):
a. JSON 파싱하여 elements 분석
b. 구조를 2단계 깊이까지 요약
c. 한 줄 요약 반환
d. 현재 .vync 내용을 `<file>.lastread`에 Write (스냅샷 생성)
4. **스냅샷 있음** (후속 읽기):
a. 스냅샷 파일 Read
b. 현재 elements와 스냅샷 elements 비교:
- 추가된 노드: 스냅샷에 없는 id
- 삭제된 노드: 현재에 없는 id
- 변경된 노드: 같은 id지만 text/children이 다름
c. 변경사항이 있으면 diff 포함하여 요약, 없으면 "(변경 없음)" 표시
d. 현재 .vync 내용을 `<file>.lastread`에 Write (스냅샷 갱신)
1. 전달받은 diff 결과를 분석 (직접 JSON 비교하지 않음!)
2. 대화 맥락과 결합하여 "생각의 변화"를 의미적으로 번역
3. 반환: 변화의 의미 요약
예: "개발 프로세스에 테스팅이 추가되고, 기획의 리서치가 축소됨. 실행 중심으로 구조가 이동하는 방향."
4. 스냅샷 갱신은 vync diff가 이미 처리 (sub-agent에서 안 함)

### Update
1. .vync 파일 Read
2. 현재 구조 파악
3. 지시에 따라 노드 추가/수정/삭제
1. 대화 맥락 + diff 이해
2. .vync 파일 Read (현재 상태)
3. 맥락과 diff를 고려하여 수정 판단 + 실행
- 구조적 변경(이동/재배치): Write로 전체 교체
- 텍스트 수정/노드 추가: Edit로 부분 수정
4. `node ~/.claude/skills/vync-editing/scripts/validate.js <file>` 실행. 실패 시 수정 후 재작성.
5. 서버 열기
6. 스냅샷 갱신: 수정된 .vync 내용을 `<file>.lastread`에 Write
7. 반환: 무엇을 어떻게 변경했는지 요약

## Skill 로드 Fallback

Expand Down
66 changes: 25 additions & 41 deletions commands/vync.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
description: Vync server and file management (init, open, close, stop, read, create, update)
description: Vync server and file management (init, open, close, stop, diff, create, read, update)
allowed-tools: Bash, Read, Agent
argument-hint: <init|open|close|stop|create|read|update> [args]
argument-hint: <init|open|close|stop|diff|create|read|update> [args]
---

Run the Vync CLI or delegate to the vync-translator sub-agent.
Expand All @@ -14,16 +14,18 @@ Run the Vync CLI or delegate to the vync-translator sub-agent.
- `close [file]` — Unregister file from server. If no files remain, server stops.
- `--keep-server` — Unregister but keep server running.
- `stop` — Stop the running Vync server
- `diff [file]` — 마지막 동기화 이후 변경사항 표시 (프로그래밍적)
- `--no-snapshot` — diff만 보고 스냅샷 갱신 안 함

For these, run via Bash:
```bash
node "$VYNC_HOME/bin/vync.js" <subcommand> [args]
```

### Sub-agent delegation (context window 보호)
- `create <type> <description>` — prose → .vync 생성 + 서버 열기
- `read [file]` — .vync → prose 번역
- `update <instruction>` — 기존 .vync 점진적 편집 + 서버 열기
- `create <description>` — 맥락 분석 → 시각화 판단 → .vync 생성 + 서버 열기
- `read [file]` — diff 실행 → 의미적 번역
- `update <instruction>` — diff 확인 → 맥락+지시 기반 .vync 수정 + 서버 열기

For these, use the Agent tool with `subagent_type: "vync-translator"`.

Expand All @@ -39,71 +41,53 @@ For these, use the Agent tool with `subagent_type: "vync-translator"`.

### Create

1. 대화 맥락에서 구조 추출 → 트리 prose로 정리
2. 파일경로 해결 (없으면 `vync init` 먼저)
1. 파일경로 해결 (없으면 `vync init` 먼저)
2. 대화 맥락 요약 (2-5문장)
3. Agent tool 호출:

```
Agent({
description: "Vync create <type>",
description: "Vync create visualization",
subagent_type: "vync-translator",
mode: "bypassPermissions",
prompt: "## 작업: Create\n타입: <type>\n파일: <absolute_path>\n\n## 구조\n<prose 트리>"
prompt: "## 작업: Create\n파일: <absolute_path>\n\n## 대화 맥락\n<메인 세션이 요약한 현재 논의 상황, 2-5문장>\n\n## 지시\n<구체적 지시 or '맥락에 맞게 판단해서 시각화해줘'>\n<선호하는 유형이 있으면: 'mindmap 형식으로' 등>"
})
```

4. Sub-agent의 한 줄 요약을 사용자에게 전달
4. Sub-agent의 시각화 요약을 사용자에게 전달

### Read

1. 파일경로 해결
2. Agent tool 호출:
2. `vync diff <file>` 실행 (Bash) → 프로그래밍적 diff 결과 획득
3. 대화 맥락 요약 (2-5문장)
4. Agent tool 호출:

```
Agent({
description: "Vync read file",
description: "Vync read + translate diff",
subagent_type: "vync-translator",
prompt: "## 작업: Read\n파일: <absolute_path>"
mode: "bypassPermissions",
prompt: "## 작업: Read\n파일: <absolute_path>\n\n## 대화 맥락\n<현재 논의 상황>\n\n## 유저 피드백 (diff)\n<diff 결과>\n\n## 지시\n위 변경사항을 대화 맥락에 비춰 의미적으로 번역해줘."
})
```

3. Sub-agent의 prose 요약을 대화에 통합
- diff가 포함된 경우 ("변경: ..."), 변경 내용을 대화 맥락에 반영
- "(변경 없음)"인 경우, 현재 상태만 참고
5. Sub-agent의 의미적 번역을 대화에 통합

### Update

1. 파일경로 해결
2. 수정 지시를 자연어로 정리 (모호하면 사용자에게 확인)
3. Agent tool 호출:
2. `vync diff <file>` 실행 (유저 수정이 있었을 수 있으므로)
3. 대화 맥락 + diff + 지시 정리
4. Agent tool 호출:

```
Agent({
description: "Vync update diagram",
description: "Vync update visualization",
subagent_type: "vync-translator",
mode: "bypassPermissions",
prompt: "## 작업: Update\n파일: <absolute_path>\n\n## 수정 지시\n<자연어 지시>"
prompt: "## 작업: Update\n파일: <absolute_path>\n\n## 대화 맥락\n<현재 논의 상황>\n\n## 유저 피드백 (diff)\n<diff 결과 or '없음'>\n\n## 지시\n<구체적 수정 지시>"
})
```

4. Sub-agent의 변경 요약을 사용자에게 전달

## Prose 정리 가이드 (Create/Update 시)

구조를 정리할 때:
- 트리 형태의 인덴트된 목록 사용
- 각 항목은 구체적인 이름/레이블 포함
- 관계나 연결이 있으면 명시 (A → B)
- 대명사 대신 실제 내용 사용
- 구조가 불명확하면 사용자에게 확인 후 sub-agent 호출

예시:
- 프로젝트 (root)
- 기획
- 시장 조사
- 사용자 인터뷰
- 개발
- 프론트엔드 (React)
- 백엔드 (Express)
- 출시
- 마케팅
5. Sub-agent의 변경 요약을 사용자에게 전달
Loading