---
domain: tools
last_rule_review_commit: 7ea0b484d2c5c73e85f4ef4b16cba20f25cb4b51
last_rule_updated_at: 2026-06-01
---

# tools

## 목적 / 책임

Proto 생성·동기화 스크립트를 담당한다. 현재 Dart/Go proto 바인딩 생성과 Go/Kotlin proto 스키마 동기화 검증 도구를 관리한다.

## 포함 경로

- `tools/` — proto 생성/검증 스크립트
- `PORTING_GUIDE.md` — 새 언어 구현 절차 가이드

## 제외 경로

- `*/crosstest/` — 각 언어 구현체 도메인에 속함
- `dart/lib/`, `go/*.go`, `kotlin/src/`, `python/proto_socket/`, `typescript/src/` — 각 언어 구현체 또는 protocol 도메인
- `proto/`, `*/packets/`, `kotlin/src/main/proto/` — protocol 도메인

## 주요 구성 요소

- `tools/generate_proto.sh` — Dart/Go proto 바인딩 생성 후 동기화 검사 실행
- `tools/check_proto_sync.sh` — `proto/message_common.proto`와 Go/Kotlin proto 복사본의 스키마 동기화 검증

## 유지할 패턴

- proto 변경 후 항상 generate → check_sync 순서로 실행
- Bash 스크립트는 `set -euo pipefail`과 repo root 기준 경로 계산 패턴을 유지
- 동기화 검사는 언어별 option 차이를 normalize한 뒤 schema 차이만 비교

## 다른 도메인과의 경계

- **protocol**: 스크립트가 proto 파일을 읽지만, proto 파일 자체는 protocol 도메인
- **dart/go/kotlin/python/typescript**: crosstest 코드는 각 언어 도메인에 속함. tools 도메인은 `tools/` 스크립트만 담당

## 금지 사항

- `check_proto_sync.sh` 실패를 무시하고 다음 단계로 진행하지 않는다
- tools 스크립트에 언어별 런타임 구현 로직을 넣지 않는다
